From edfeba6adb7e67c37e0e6925f8728e7763cce225 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Wed, 7 Jun 2023 12:23:57 +0100 Subject: [PATCH 01/36] upgrade esbuild to 0.17.19 to preserve directive `"use client"`for React Server Components support --- package.json | 4 +- packages/cli/package.json | 6 +- packages/cli/scripts/bundle.js | 48 ---------- packages/cli/scripts/bundle.mjs | 45 +++++++++ packages/components-labs/package.json | 4 +- packages/components/package.json | 4 +- packages/content-editor-plugin/package.json | 4 +- packages/create-site/package.json | 4 +- .../scripts/{bundle.js => bundle.mjs} | 46 ++++----- packages/layouts/package.json | 6 +- packages/open-api-component/package.json | 4 +- packages/site-components/package.json | 4 +- packages/site-preset-styles/package.json | 8 +- packages/site-preset-styles/scripts/bundle.js | 44 --------- .../site-preset-styles/scripts/bundle.mjs | 54 +++++++++++ packages/standard-generator/package.json | 4 +- .../scripts/{bundle.js => bundle.mjs} | 37 ++++---- packages/store/package.json | 4 +- packages/theme/package.json | 6 +- packages/theme/scripts/bundle.js | 80 ---------------- packages/theme/scripts/bundle.mjs | 93 +++++++++++++++++++ scripts/bundle.js | 64 ------------- scripts/bundle.mjs | 75 +++++++++++++++ 23 files changed, 341 insertions(+), 307 deletions(-) delete mode 100644 packages/cli/scripts/bundle.js create mode 100644 packages/cli/scripts/bundle.mjs rename packages/create-site/scripts/{bundle.js => bundle.mjs} (52%) delete mode 100644 packages/site-preset-styles/scripts/bundle.js create mode 100644 packages/site-preset-styles/scripts/bundle.mjs rename packages/standard-generator/scripts/{bundle.js => bundle.mjs} (54%) delete mode 100644 packages/theme/scripts/bundle.js create mode 100644 packages/theme/scripts/bundle.mjs delete mode 100644 scripts/bundle.js create mode 100644 scripts/bundle.mjs diff --git a/package.json b/package.json index 7655b8b01..16a190247 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "@vanilla-extract/esbuild-plugin": "^2.0.0", "concurrently": "^7.1.0", "del-cli": "^4.0.1", - "esbuild": "0.14.35", - "esbuild-node-externals": "^1.0.2", + "esbuild": "^0.17.19", + "esbuild-node-externals": "^1.7.0", "eslint": "^7.23.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.0.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index a0a371268..4f13f3472 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -25,7 +25,7 @@ "scripts": { "build": "npm-run-all --parallel build:*", "build:types": "tsc", - "build:cli": "node ./scripts/bundle.js", + "build:cli": "node ./scripts/bundle.mjs", "clean": "rm -fr dist", "docker:build": "docker build . --tag mosaic-fs:latest", "docker:start": "docker run -it --rm --ipc=host -p 8080:8080 --mount source=docs,destination=/app/docs --network mosaic-net --name mosaic-fs mosaic-fs:latest", @@ -38,8 +38,8 @@ }, "devDependencies": { "@jpmorganchase/mosaic-types": "^0.1.0-beta.51", - "esbuild": "0.14.35", - "esbuild-node-externals": "^1.0.2", + "esbuild": "0.17.19", + "esbuild-node-externals": "^1.7.0", "fast-glob": "^3.2.7" }, "dependencies": { diff --git a/packages/cli/scripts/bundle.js b/packages/cli/scripts/bundle.js deleted file mode 100644 index 21c6326f4..000000000 --- a/packages/cli/scripts/bundle.js +++ /dev/null @@ -1,48 +0,0 @@ -import esbuild from 'esbuild'; -import glob from 'fast-glob'; -import { nodeExternalsPlugin } from 'esbuild-node-externals'; - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -esbuild - .build({ - entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { - ignore: ['**/__tests__', 'src/labs'] - }), - outdir: './dist', - outExtension: { '.js': '.mjs' }, - bundle: true, - sourcemap: false, - splitting: true, - minify: true, - format: 'esm', - target: ['es2022', 'node18'], - platform: 'node', - plugins: [nodeExternalsPlugin()], - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/packages/cli/scripts/bundle.mjs b/packages/cli/scripts/bundle.mjs new file mode 100644 index 000000000..006ae7eab --- /dev/null +++ b/packages/cli/scripts/bundle.mjs @@ -0,0 +1,45 @@ +import fs from 'fs-extra'; +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__', 'src/labs'] + }), + outdir: './dist', + outExtension: { '.js': '.mjs' }, + bundle: true, + sourcemap: false, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022', 'node18'], + platform: 'node', + plugins: [nodeExternalsPlugin()] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/components-labs/package.json b/packages/components-labs/package.json index d638cd0f5..15186a516 100644 --- a/packages/components-labs/package.json +++ b/packages/components-labs/package.json @@ -23,11 +23,11 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:components": "node ../../scripts/bundle.js", + "build:components": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", diff --git a/packages/components/package.json b/packages/components/package.json index 9a19f518e..f5905f1c6 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -25,11 +25,11 @@ "scripts": { "build": "npm-run-all --parallel build:*", "build:types": "tsc", - "build:components": "node ../../scripts/bundle.js", + "build:components": "node ../../scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", "doc": "node ../../scripts/updateDocs.js", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", diff --git a/packages/content-editor-plugin/package.json b/packages/content-editor-plugin/package.json index db6f883dd..33d5cbf32 100644 --- a/packages/content-editor-plugin/package.json +++ b/packages/content-editor-plugin/package.json @@ -24,11 +24,11 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", diff --git a/packages/create-site/package.json b/packages/create-site/package.json index 5f181fd94..4006cf43e 100644 --- a/packages/create-site/package.json +++ b/packages/create-site/package.json @@ -11,10 +11,10 @@ "main": "./dist/index.js", "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ./scripts/bundle.js", + "build:bundle": "node ./scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "watch": "node ./scripts/bundle.js watch" + "watch": "node ./scripts/bundle.mjs watch" }, "bin": { "mosaic-create-site": "./bin/mosaic-create-site.js" diff --git a/packages/create-site/scripts/bundle.js b/packages/create-site/scripts/bundle.mjs similarity index 52% rename from packages/create-site/scripts/bundle.js rename to packages/create-site/scripts/bundle.mjs index b4d4984c1..42f0e23d5 100644 --- a/packages/create-site/scripts/bundle.js +++ b/packages/create-site/scripts/bundle.mjs @@ -1,37 +1,39 @@ -const fs = require('fs-extra'); -const esbuild = require('esbuild'); +import fs from 'fs-extra'; +import esbuild from 'esbuild'; const args = process.argv.slice(2); const watchEnabled = args[0] === 'watch'; const packageName = process.env.npm_package_name; -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - try { - esbuild.build({ + const context = await esbuild.context({ entryPoints: ['src/create.ts', 'src/init.ts'], bundle: false, outdir: 'dist', outExtension: { '.js': '.mjs' }, platform: 'node', format: 'esm', - watch: watchConfig - }); - esbuild.build({ - entryPoints: ['src/index.ts'], - bundle: false, - outdir: 'dist', - platform: 'node', - format: 'cjs', - watch: watchConfig + plugins: [ + { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } + } + ] }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); } catch (e) { if (e.errors && e.errors.length > 0) { console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); @@ -44,5 +46,5 @@ try { console.error(e.warnings); console.groupEnd(); } - return process.exit(1); + process.exit(1); } diff --git a/packages/layouts/package.json b/packages/layouts/package.json index 5c6d1710b..80461731b 100644 --- a/packages/layouts/package.json +++ b/packages/layouts/package.json @@ -24,15 +24,15 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "del-cli": "^4.0.1", - "esbuild-node-externals": "^1.0.2", + "esbuild-node-externals": "^1.7.0", "jest-fetch-mock": "^3.0.1", "typescript": "^4.8.3" }, diff --git a/packages/open-api-component/package.json b/packages/open-api-component/package.json index beea5bf48..e4034efba 100644 --- a/packages/open-api-component/package.json +++ b/packages/open-api-component/package.json @@ -24,11 +24,11 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "del-cli": "^4.0.1", diff --git a/packages/site-components/package.json b/packages/site-components/package.json index 5da9d76af..5f38e8a93 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -22,11 +22,11 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", diff --git a/packages/site-preset-styles/package.json b/packages/site-preset-styles/package.json index a595acf72..ba3b6b7ee 100644 --- a/packages/site-preset-styles/package.json +++ b/packages/site-preset-styles/package.json @@ -16,15 +16,15 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ./scripts/bundle.js", + "build:bundle": "node ./scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ./scripts/bundle.js watch" + "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { "del-cli": "^4.0.1", - "esbuild": "0.14.35", - "esbuild-node-externals": "^1.0.2" + "esbuild": "0.17.19", + "esbuild-node-externals": "^1.7.0" }, "dependencies": { "@salt-ds/theme": "^1.8.0", diff --git a/packages/site-preset-styles/scripts/bundle.js b/packages/site-preset-styles/scripts/bundle.js deleted file mode 100644 index 59e824865..000000000 --- a/packages/site-preset-styles/scripts/bundle.js +++ /dev/null @@ -1,44 +0,0 @@ -const esbuild = require('esbuild'); - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -esbuild - .build({ - entryPoints: ['src/index.js'], - bundle: true, - loader: { - '.png': 'dataurl', - '.woff': 'dataurl', - '.woff2': 'dataurl', - '.eot': 'dataurl', - '.ttf': 'dataurl', - '.svg': 'dataurl' - }, - outdir: './dist', - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/packages/site-preset-styles/scripts/bundle.mjs b/packages/site-preset-styles/scripts/bundle.mjs new file mode 100644 index 000000000..ad4413f92 --- /dev/null +++ b/packages/site-preset-styles/scripts/bundle.mjs @@ -0,0 +1,54 @@ +import esbuild from 'esbuild'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +try { + const context = await esbuild.context({ + entryPoints: ['src/index.js'], + bundle: true, + loader: { + '.png': 'dataurl', + '.woff': 'dataurl', + '.woff2': 'dataurl', + '.eot': 'dataurl', + '.ttf': 'dataurl', + '.svg': 'dataurl' + }, + outdir: './dist', + plugins: [ + { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } + } + ] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/standard-generator/package.json b/packages/standard-generator/package.json index ff4145139..91036ef37 100644 --- a/packages/standard-generator/package.json +++ b/packages/standard-generator/package.json @@ -11,10 +11,10 @@ }, "main": "./dist/index.js", "scripts": { - "build": "node ./scripts/bundle.js", + "build": "node ./scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "watch": "node ./scripts/bundle.js watch" + "watch": "node ./scripts/bundle.mjs watch" }, "files": [ "dist", diff --git a/packages/standard-generator/scripts/bundle.js b/packages/standard-generator/scripts/bundle.mjs similarity index 54% rename from packages/standard-generator/scripts/bundle.js rename to packages/standard-generator/scripts/bundle.mjs index f5ed10f97..9f03d5743 100644 --- a/packages/standard-generator/scripts/bundle.js +++ b/packages/standard-generator/scripts/bundle.mjs @@ -1,21 +1,12 @@ -const fs = require('fs-extra'); -const esbuild = require('esbuild'); +import fs from 'fs-extra'; +import esbuild from 'esbuild'; const args = process.argv.slice(2); const watchEnabled = args[0] === 'watch'; const packageName = process.env.npm_package_name; -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - try { - esbuild.build({ + const context = await esbuild.context({ entryPoints: ['src/fs.config.js', 'src/generator.config.js', 'src/generator.js'], bundle: false, outdir: 'dist', @@ -23,16 +14,26 @@ try { format: 'cjs', plugins: [ { - name: 'copy-additional-files', + name: 'on-end', setup(build) { - build.onEnd(() => { - fs.copySync('./src/templates', './dist/templates', { overwrite: true }); + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + fs.copySync('./src/templates', './dist/templates', { overwrite: true }); + } }); } } - ], - watch: watchConfig + ] }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); } catch (e) { if (e.errors && e.errors.length > 0) { console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); @@ -45,5 +46,5 @@ try { console.error(e.warnings); console.groupEnd(); } - return process.exit(1); + process.exit(1); } diff --git a/packages/store/package.json b/packages/store/package.json index 2cea6f9e0..0c88d3f6d 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -21,11 +21,11 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/react": "^13.4.0", diff --git a/packages/theme/package.json b/packages/theme/package.json index e9a449131..57c05a616 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -27,15 +27,15 @@ ], "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ./scripts/bundle.js", + "build:bundle": "node ./scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ./scripts/bundle.js watch" + "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { "@vanilla-extract/esbuild-plugin": "^2.0.0", - "esbuild": "0.14.35", + "esbuild": "0.17.19", "typescript": "^4.8.3", "fast-glob": "^3.2.7" }, diff --git a/packages/theme/scripts/bundle.js b/packages/theme/scripts/bundle.js deleted file mode 100644 index 2b1ec406a..000000000 --- a/packages/theme/scripts/bundle.js +++ /dev/null @@ -1,80 +0,0 @@ -const path = require('path'); -const esbuild = require('esbuild'); -const { vanillaExtractPlugin } = require('@vanilla-extract/esbuild-plugin'); -const glob = require('fast-glob'); - -const publicImageResolver = require('./publicImageResolver'); -const saltIconNames = require('./saltIconNames'); - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -const entries = glob.sync(['src/index.ts', 'src/**/index.ts'], { - dot: true -}); - -esbuild - .build({ - entryPoints: glob.sync(['../../node_modules/@salt-ds/icons/dist-es/components/*.js']), - bundle: false, - outdir: 'dist', - plugins: [saltIconNames] - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); - -esbuild - .build({ - entryPoints: entries, - loader: { - '.jpg': 'dataurl', - '.png': 'dataurl', - '.svg': 'text' - }, - outdir: 'dist', - bundle: true, - splitting: true, - sourcemap: false, - minify: true, - format: 'esm', - target: ['esnext'], - external: ['react', 'react-dom'], - plugins: [publicImageResolver, vanillaExtractPlugin()], - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/packages/theme/scripts/bundle.mjs b/packages/theme/scripts/bundle.mjs new file mode 100644 index 000000000..1ab94d497 --- /dev/null +++ b/packages/theme/scripts/bundle.mjs @@ -0,0 +1,93 @@ +import path from 'path'; +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; +import publicImageResolverPlugin from './publicImageResolver.js'; +import saltIconNamesPlugin from './saltIconNames.js'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +const onEndPlugin = { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } +}; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['../../node_modules/@salt-ds/icons/dist-es/components/*.js']), + bundle: false, + outdir: 'dist', + plugins: [saltIconNamesPlugin, onEndPlugin] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} + +try { + const entries = glob.sync(['src/index.ts', 'src/**/index.ts'], { + dot: true + }); + const context = await esbuild.context({ + entryPoints: entries, + loader: { + '.jpg': 'dataurl', + '.png': 'dataurl', + '.svg': 'text' + }, + outdir: 'dist', + bundle: true, + splitting: true, + sourcemap: false, + minify: true, + format: 'esm', + target: ['esnext'], + external: ['react', 'react-dom'], + plugins: [publicImageResolverPlugin, vanillaExtractPlugin(), onEndPlugin] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/scripts/bundle.js b/scripts/bundle.js deleted file mode 100644 index d40094b59..000000000 --- a/scripts/bundle.js +++ /dev/null @@ -1,64 +0,0 @@ -const esbuild = require('esbuild'); -const glob = require('fast-glob'); -const { nodeExternalsPlugin } = require('esbuild-node-externals'); -const { vanillaExtractPlugin } = require('@vanilla-extract/esbuild-plugin'); - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -esbuild - .build({ - entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { - ignore: ['**/__tests__', 'src/labs'] - }), - loader: { - '.jpg': 'dataurl', - '.png': 'dataurl', - '.svg': 'text' - }, - outdir: './dist', - bundle: true, - sourcemap: false, - splitting: true, - minify: true, - format: 'esm', - target: ['es2022'], - plugins: [nodeExternalsPlugin(), vanillaExtractPlugin({})], - external: [ - 'react', - 'react-dom', - 'next/*', - '@jpmorganchase/mosaic-components', - '@jpmorganchase/mosaic-components-lab', - '@jpmorganchase/mosaic-open-api-component', - '@jpmorganchase/mosaic-content-editor-plugin', - '@jpmorganchase/mosaic-site-components', - '@jpmorganchase/mosaic-layouts', - '@jpmorganchase/mosaic-store' - ], - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/scripts/bundle.mjs b/scripts/bundle.mjs new file mode 100644 index 000000000..f96c9a5b9 --- /dev/null +++ b/scripts/bundle.mjs @@ -0,0 +1,75 @@ +import esbuild from 'esbuild'; +import glob from 'fast-glob'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; +import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__', 'src/labs'] + }), + loader: { + '.jpg': 'dataurl', + '.png': 'dataurl', + '.svg': 'text' + }, + outdir: './dist', + bundle: true, + sourcemap: false, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022'], + plugins: [ + nodeExternalsPlugin(), + vanillaExtractPlugin({}), + { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } + } + ], + external: [ + 'react', + 'react-dom', + 'next/*', + '@jpmorganchase/mosaic-components', + '@jpmorganchase/mosaic-components-lab', + '@jpmorganchase/mosaic-open-api-component', + '@jpmorganchase/mosaic-content-editor-plugin', + '@jpmorganchase/mosaic-site-components', + '@jpmorganchase/mosaic-layouts', + '@jpmorganchase/mosaic-store' + ] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} From 854b5de121a93f7b1a552decf4577b3e3ac323b0 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Wed, 7 Jun 2023 13:42:15 +0100 Subject: [PATCH 02/36] update Next to 13.4.4 to resolve issue with loading React Server Components --- packages/layouts/package.json | 2 +- packages/site-components/package.json | 2 +- packages/site-middleware/package.json | 2 +- packages/site/package.json | 2 +- yarn.lock | 124 +++++++++++++------------- 5 files changed, 66 insertions(+), 66 deletions(-) diff --git a/packages/layouts/package.json b/packages/layouts/package.json index 80461731b..c916a2705 100644 --- a/packages/layouts/package.json +++ b/packages/layouts/package.json @@ -47,7 +47,7 @@ "@vanilla-extract/sprinkles": "^1.3.0", "clsx": "^2.0.0", "lodash": "^4.17.21", - "next": "^13.4.1", + "next": "^13.4.4", "react-transition-group": "^4.4.5" }, "peerDependencies": { diff --git a/packages/site-components/package.json b/packages/site-components/package.json index 5f38e8a93..009717e27 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -60,7 +60,7 @@ "https-proxy-agent": "^5.0.1", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", - "next": "^13.4.1", + "next": "^13.4.4", "next-mdx-remote": "^4.2.1", "node-cookie": "^2.1.2", "react-error-boundary": "^4.0.11", diff --git a/packages/site-middleware/package.json b/packages/site-middleware/package.json index 88c4fb826..5ec325bf9 100644 --- a/packages/site-middleware/package.json +++ b/packages/site-middleware/package.json @@ -41,7 +41,7 @@ "deepmerge": "^4.2.2", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", - "next": "^13.4.1", + "next": "^13.4.4", "next-mdx-remote": "^4.2.1", "node-cookie": "^2.1.2", "react-error-boundary": "^3.1.4", diff --git a/packages/site/package.json b/packages/site/package.json index 37fb1e2c8..1af3448a8 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -42,7 +42,7 @@ "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", "@philpl/buble": "^0.19.7", "@types/react": "^18.0.26", - "next": "^13.4.1", + "next": "^13.4.4", "next-auth": "^4.22.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 6fed605ae..d6df1c3c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2667,10 +2667,10 @@ strict-event-emitter "^0.2.4" web-encoding "^1.1.5" -"@next/env@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.1.tgz#57322da2630b6bb6d7204577b0a18f6f9324db0c" - integrity sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg== +"@next/env@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.4.tgz#46b620f6bef97fe67a1566bf570dbb791d40c50a" + integrity sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg== "@next/eslint-plugin-next@12.3.1": version "12.3.1" @@ -2686,50 +2686,50 @@ dependencies: glob "7.1.7" -"@next/swc-darwin-arm64@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.1.tgz#3748040d2dd0d89d3cdcc897f96aeda5130eed8f" - integrity sha512-eF8ARHtYfnoYtDa6xFHriUKA/Mfj/cCbmKb3NofeKhMccs65G6/loZ15a6wYCCx4rPAd6x4t1WmVYtri7EdeBg== - -"@next/swc-darwin-x64@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.1.tgz#c59fc270005f17e04eb7eab4fd68793d0e3409a4" - integrity sha512-7cmDgF9tGWTgn5Gw+vP17miJbH4wcraMHDCOHTYWkO/VeKT73dUWG23TNRLfgtCNSPgH4V5B4uLHoZTanx9bAw== - -"@next/swc-linux-arm64-gnu@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.1.tgz#1aef371bcef5d832d7f7e3aec3e68cfb98282393" - integrity sha512-qwJqmCri2ie8aTtE5gjTSr8S6O8B67KCYgVZhv9gKH44yvc/zXbAY8u23QGULsYOyh1islWE5sWfQNLOj9iryg== - -"@next/swc-linux-arm64-musl@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.1.tgz#2522927cb0af6918405a49f5a1d1687d6847f3ec" - integrity sha512-qcC54tWNGDv/VVIFkazxhqH1Bnagjfs4enzELVRlUOoJPD2BGJTPI7z08pQPbbgxLtRiu8gl2mXvpB8WlOkMeA== - -"@next/swc-linux-x64-gnu@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.1.tgz#5ec9418a35510048a5ceb79ed300463e1a9b312d" - integrity sha512-9TeWFlpLsBosZ+tsm/rWBaMwt5It9tPH8m3nawZqFUUrZyGRfGcI67js774vtx0k3rL9qbyY6+3pw9BCVpaYUA== - -"@next/swc-linux-x64-musl@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.1.tgz#3478b9c89b75c1d0e7def9f35a9a77cb15d1a115" - integrity sha512-sNDGaWmSqTS4QRUzw61wl4mVPeSqNIr1OOjLlQTRuyInxMxtqImRqdvzDvFTlDfdeUMU/DZhWGYoHrXLlZXe6A== - -"@next/swc-win32-arm64-msvc@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.1.tgz#efe53d48ff51d2485eabb910ab7caee78425fc01" - integrity sha512-+CXZC7u1iXdLRudecoUYbhbsXpglYv8KFYsFxKBPn7kg+bk7eJo738wAA4jXIl8grTF2mPdmO93JOQym+BlYGA== - -"@next/swc-win32-ia32-msvc@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.1.tgz#952cdf1c53df46a90d5151d99310195d2c384e55" - integrity sha512-vIoXVVc7UYO68VwVMDKwJC2+HqAZQtCYiVlApyKEeIPIQpz2gpufzGxk1z3/gwrJt/kJ5CDZjlhYDCzd3hdz+g== - -"@next/swc-win32-x64-msvc@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.1.tgz#447b7dcee5f5d4824cdff331a4ec34b13d0b449d" - integrity sha512-n8V5ImLQZibKTu10UUdI3nIeTLkliEXe628qxqW9v8My3BAH2a7H0SaCqkV2OgqFnn8sG1wxKYw9/SNJ632kSA== +"@next/swc-darwin-arm64@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz#8c14083c2478e2a9a8d140cce5900f76b75667ff" + integrity sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw== + +"@next/swc-darwin-x64@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz#5fe01c65c80fcb833c8789fd70f074ea99893864" + integrity sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg== + +"@next/swc-linux-arm64-gnu@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz#f2e071f38e8a6cdadf507cc5d28956f73360d064" + integrity sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA== + +"@next/swc-linux-arm64-musl@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz#23bf75c544e54562bc24ec1be036e4bd9cf89e2c" + integrity sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A== + +"@next/swc-linux-x64-gnu@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz#bd42590950a01957952206f89cf5622e7c9e4196" + integrity sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ== + +"@next/swc-linux-x64-musl@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz#907d81feb1abec3daec0ecb61e3f39b56e7aeafe" + integrity sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA== + +"@next/swc-win32-arm64-msvc@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz#1d754d2bb10bdf9907c0acc83711438697c3b5fe" + integrity sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A== + +"@next/swc-win32-ia32-msvc@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz#77b2c7f7534b675d46e46301869e08d504d23956" + integrity sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg== + +"@next/swc-win32-x64-msvc@13.4.4": + version "13.4.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz#faab69239f8a9d0be7cd473e65f5a07735ef7b0e" + integrity sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -10160,12 +10160,12 @@ next-router-mock@^0.9.2: resolved "https://registry.yarnpkg.com/next-router-mock/-/next-router-mock-0.9.2.tgz#750341ea0bab9fa04257fb38a85bbe5c25dc19e5" integrity sha512-rh6Mq1xhZ4Y0y9Z3seHZ04k4dAKnAyRcis7q3ZUF+Xp0uBeNqPC8Ydw5DldYncN3o1sYBqRyz25F/v/kfcg0/Q== -next@^13.4.1: - version "13.4.1" - resolved "https://registry.yarnpkg.com/next/-/next-13.4.1.tgz#8d23f94c81b3f9cc8b34165ad528457e5befd726" - integrity sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA== +next@^13.4.4: + version "13.4.4" + resolved "https://registry.yarnpkg.com/next/-/next-13.4.4.tgz#d1027c8d77f4c51be0b39f671b4820db03c93e60" + integrity sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA== dependencies: - "@next/env" "13.4.1" + "@next/env" "13.4.4" "@swc/helpers" "0.5.1" busboy "1.6.0" caniuse-lite "^1.0.30001406" @@ -10173,15 +10173,15 @@ next@^13.4.1: styled-jsx "5.1.1" zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.4.1" - "@next/swc-darwin-x64" "13.4.1" - "@next/swc-linux-arm64-gnu" "13.4.1" - "@next/swc-linux-arm64-musl" "13.4.1" - "@next/swc-linux-x64-gnu" "13.4.1" - "@next/swc-linux-x64-musl" "13.4.1" - "@next/swc-win32-arm64-msvc" "13.4.1" - "@next/swc-win32-ia32-msvc" "13.4.1" - "@next/swc-win32-x64-msvc" "13.4.1" + "@next/swc-darwin-arm64" "13.4.4" + "@next/swc-darwin-x64" "13.4.4" + "@next/swc-linux-arm64-gnu" "13.4.4" + "@next/swc-linux-arm64-musl" "13.4.4" + "@next/swc-linux-x64-gnu" "13.4.4" + "@next/swc-linux-x64-musl" "13.4.4" + "@next/swc-win32-arm64-msvc" "13.4.4" + "@next/swc-win32-ia32-msvc" "13.4.4" + "@next/swc-win32-x64-msvc" "13.4.4" nice-try@^1.0.4: version "1.0.5" From 1506787dee80fd5fb35bc383061263767f6d2896 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 11 Jun 2023 09:19:39 +0100 Subject: [PATCH 03/36] remove context from store for rsc support --- jest.config.client.js | 1 + packages/site/src/components/StoreProvider.tsx | 14 ++++++++++++++ packages/store/src/index.ts | 1 + 3 files changed, 16 insertions(+) create mode 100644 packages/site/src/components/StoreProvider.tsx diff --git a/jest.config.client.js b/jest.config.client.js index 2c41a6133..a073fcdd0 100644 --- a/jest.config.client.js +++ b/jest.config.client.js @@ -5,6 +5,7 @@ const moduleNameMapper = { '.+\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mocks__/file-stub.js', '@jpmorganchase/mosaic-components': '/packages/components/dist/index.js', + '@jpmorganchase/mosaic-icons': '/packages/icons/dist/index.js', '@jpmorganchase/mosaic-store': '/packages/store/dist/index.js', '@jpmorganchase/mosaic-theme': '/packages/theme/dist/index.js' }; diff --git a/packages/site/src/components/StoreProvider.tsx b/packages/site/src/components/StoreProvider.tsx new file mode 100644 index 000000000..4c4b3233c --- /dev/null +++ b/packages/site/src/components/StoreProvider.tsx @@ -0,0 +1,14 @@ +'use client'; +import React from 'react'; + +//import {useCreateStore, useStore} from '@jpmorganchase/mosaic-store'; +import type { SiteState } from '@jpmorganchase/mosaic-store'; + +function StoreProvider({ state }: { state: SiteState, children: React.ReactElement }) { + console.log(state); + // const storeProps = { sharedConfig, searchIndex, searchConfig, ...frontmatter }; + // const createStore = useCreateStore(storeProps); + return <>{children} +} + +export default StoreProvider; diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts index 5b6326dcb..af280b4b3 100644 --- a/packages/store/src/index.ts +++ b/packages/store/src/index.ts @@ -1,3 +1,4 @@ +'use client' export * from './store'; export * from './useAppHeader'; export * from './useBreadcrumbs'; From 55eea2267f42ed3664f5c2f5ef454a31fcf31b03 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 11 Jun 2023 09:37:05 +0100 Subject: [PATCH 04/36] convert site to use app router --- packages/site/next.config.js | 10 +++- packages/site/package.json | 1 + packages/site/src/app/[...slug]/layout.tsx | 52 ++++++++++++++++ packages/site/src/app/[...slug]/page.tsx | 28 +++++++++ .../{pages => app}/api/auth/[...nextauth].ts | 0 packages/site/src/app/layout.tsx | 16 +++++ .../site/src/components/ImageProvider.tsx | 8 +++ .../site/src/components/LayoutProvider.tsx | 8 +++ packages/site/src/components/LinkProvider.tsx | 8 +++ packages/site/src/components/Metadata.tsx | 8 +++ .../site/src/components/SessionProvider.tsx | 7 +++ .../site/src/components/StoreProvider.tsx | 12 ++-- packages/site/src/middleware.ts | 16 +++++ packages/site/src/pages/[...route].tsx | 33 ----------- packages/site/src/pages/_app.tsx | 59 ------------------- packages/site/src/pages/_document.tsx | 8 --- .../site/src/pages/api/content/preview.ts | 26 -------- packages/site/src/pages/index.tsx | 21 ------- packages/site/src/utils/getPage.ts | 23 ++++++++ packages/site/src/utils/getSharedConfig.ts | 10 ++++ packages/site/tsconfig.json | 10 +++- yarn.lock | 7 +++ 22 files changed, 213 insertions(+), 158 deletions(-) create mode 100644 packages/site/src/app/[...slug]/layout.tsx create mode 100644 packages/site/src/app/[...slug]/page.tsx rename packages/site/src/{pages => app}/api/auth/[...nextauth].ts (100%) create mode 100644 packages/site/src/app/layout.tsx create mode 100644 packages/site/src/components/ImageProvider.tsx create mode 100644 packages/site/src/components/LayoutProvider.tsx create mode 100644 packages/site/src/components/LinkProvider.tsx create mode 100644 packages/site/src/components/Metadata.tsx create mode 100644 packages/site/src/components/SessionProvider.tsx create mode 100644 packages/site/src/middleware.ts delete mode 100755 packages/site/src/pages/[...route].tsx delete mode 100755 packages/site/src/pages/_app.tsx delete mode 100644 packages/site/src/pages/_document.tsx delete mode 100644 packages/site/src/pages/api/content/preview.ts delete mode 100644 packages/site/src/pages/index.tsx create mode 100644 packages/site/src/utils/getPage.ts create mode 100644 packages/site/src/utils/getSharedConfig.ts diff --git a/packages/site/next.config.js b/packages/site/next.config.js index a38dc2ec1..7f060550c 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -1,6 +1,11 @@ const webpack = require('webpack'); +const withMDX = require('@next/mdx')(); -module.exports = { +const nextConfig = { + experimental: { + appDir: true, + mdxRs: true + }, reactStrictMode: true, output: 'standalone', swcMinify: true, @@ -44,6 +49,7 @@ module.exports = { } else { config.resolve.fallback = { fs: false }; } + config.experiments.topLevelAwait = true; return config; }, env: {}, @@ -67,3 +73,5 @@ module.exports = { ]; } }; + +module.exports = withMDX(nextConfig); diff --git a/packages/site/package.json b/packages/site/package.json index 1af3448a8..5fd24220b 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -47,6 +47,7 @@ }, "devDependencies": { "@next/eslint-plugin-next": "12.3.1", + "@next/mdx": "^13.4.4", "@playwright/test": "^1.33.0", "@types/node": "^16.0.0", "concurrently": "^7.1.0", diff --git a/packages/site/src/app/[...slug]/layout.tsx b/packages/site/src/app/[...slug]/layout.tsx new file mode 100644 index 000000000..2c6fb1aca --- /dev/null +++ b/packages/site/src/app/[...slug]/layout.tsx @@ -0,0 +1,52 @@ +import classnames from 'classnames'; +import { headers } from 'next/headers'; +import { PT_Mono, Open_Sans } from 'next/font/google'; +import { themeClassName } from '@jpmorganchase/mosaic-theme'; +import { BaseUrlProvider, ThemeProvider } from '@jpmorganchase/mosaic-site-components'; + +import StoreProvider from '../../components/StoreProvider'; +import { Metadata } from '../../components/Metadata'; +import { LinkProvider } from '../../components/LinkProvider'; +import { ImageProvider } from '../../components/ImageProvider'; +import { SessionProvider } from '../../components/SessionProvider'; +import { LayoutProvider } from '../../components/LayoutProvider'; +import { getPage } from '../../utils/getPage'; + +const ptMono = PT_Mono({ + weight: '400', + display: 'swap', + subsets: ['latin'], + variable: '--salt-typography-fontFamily:' +}); +const openSans = Open_Sans({ + subsets: ['latin'], + variable: '--salt-typography-fontFamily-code', + display: 'swap' +}); + +export default async function Layout({ children }) { + const pathname = headers().get('x-next-pathname') as string; + if (!pathname) { + return null; + } + + const { data } = await getPage(pathname); + return ( + + + + + + + + {children} + + + + + + + ); +} diff --git a/packages/site/src/app/[...slug]/page.tsx b/packages/site/src/app/[...slug]/page.tsx new file mode 100644 index 000000000..fd21cdea6 --- /dev/null +++ b/packages/site/src/app/[...slug]/page.tsx @@ -0,0 +1,28 @@ +import { headers } from 'next/headers'; +import { compileMDX } from 'next-mdx-remote/rsc'; +import remarkGfm from 'remark-gfm'; +import rehypeSlug from 'rehype-slug'; +import components from '@jpmorganchase/mosaic-mdx-components-server'; +import { getPage } from '../../utils/getPage'; + +export default async function Page() { + const pathname = headers().get('x-next-pathname') as string; + if (!pathname) { + return null; + } + const { source, data } = await getPage(pathname); + + const { content } = await compileMDX({ + source, + components, + options: { + scope: { meta: data }, + mdxOptions: { + rehypePlugins: [rehypeSlug], + remarkPlugins: [remarkGfm] + }, + parseFrontmatter: true + } + }); + return content; +} diff --git a/packages/site/src/pages/api/auth/[...nextauth].ts b/packages/site/src/app/api/auth/[...nextauth].ts similarity index 100% rename from packages/site/src/pages/api/auth/[...nextauth].ts rename to packages/site/src/app/api/auth/[...nextauth].ts diff --git a/packages/site/src/app/layout.tsx b/packages/site/src/app/layout.tsx new file mode 100644 index 000000000..a8e63b0fa --- /dev/null +++ b/packages/site/src/app/layout.tsx @@ -0,0 +1,16 @@ +import Head from 'next/head'; + +import '@jpmorganchase/mosaic-site-preset-styles/index.css'; + +export default async function RootLayout({ children }) { + return ( + + + Some title + + +
{children}
+ + + ); +} diff --git a/packages/site/src/components/ImageProvider.tsx b/packages/site/src/components/ImageProvider.tsx new file mode 100644 index 000000000..9cf750cfb --- /dev/null +++ b/packages/site/src/components/ImageProvider.tsx @@ -0,0 +1,8 @@ +'use client'; + +import { Image } from '@jpmorganchase/mosaic-site-components'; +import { ImageProvider as MosaicImageProvider } from '@jpmorganchase/mosaic-components'; + +export function ImageProvider({ children }) { + return {children}; +} diff --git a/packages/site/src/components/LayoutProvider.tsx b/packages/site/src/components/LayoutProvider.tsx new file mode 100644 index 000000000..fbcb10217 --- /dev/null +++ b/packages/site/src/components/LayoutProvider.tsx @@ -0,0 +1,8 @@ +'use client'; + +import { layouts } from '@jpmorganchase/mosaic-layouts'; + +export function LayoutProvider({ name, children }) { + const LayoutComponent = layouts[name]; + return {children}; +} diff --git a/packages/site/src/components/LinkProvider.tsx b/packages/site/src/components/LinkProvider.tsx new file mode 100644 index 000000000..02fdc480f --- /dev/null +++ b/packages/site/src/components/LinkProvider.tsx @@ -0,0 +1,8 @@ +'use client'; + +import { Link } from '@jpmorganchase/mosaic-site-components'; +import { LinkProvider as MosaicLinkProvider } from '@jpmorganchase/mosaic-components'; + +export function LinkProvider({ children }) { + return {children}; +} diff --git a/packages/site/src/components/Metadata.tsx b/packages/site/src/components/Metadata.tsx new file mode 100644 index 000000000..0d466e815 --- /dev/null +++ b/packages/site/src/components/Metadata.tsx @@ -0,0 +1,8 @@ +'use client'; + +import { Metadata as MosaicMetadata } from '@jpmorganchase/mosaic-site-components'; +import Head from 'next/head'; + +export function Metadata() { + return ; +} diff --git a/packages/site/src/components/SessionProvider.tsx b/packages/site/src/components/SessionProvider.tsx new file mode 100644 index 000000000..7567170e9 --- /dev/null +++ b/packages/site/src/components/SessionProvider.tsx @@ -0,0 +1,7 @@ +'use client'; + +import { SessionProvider as NextSessionProvider } from 'next-auth/react'; + +export function SessionProvider({ children }) { + return {children}; +} diff --git a/packages/site/src/components/StoreProvider.tsx b/packages/site/src/components/StoreProvider.tsx index 4c4b3233c..200bc93a7 100644 --- a/packages/site/src/components/StoreProvider.tsx +++ b/packages/site/src/components/StoreProvider.tsx @@ -1,14 +1,12 @@ 'use client'; -import React from 'react'; -//import {useCreateStore, useStore} from '@jpmorganchase/mosaic-store'; +import React from 'react'; +import { useCreateStore, StoreProvider as StoreProviderClient } from '@jpmorganchase/mosaic-store'; import type { SiteState } from '@jpmorganchase/mosaic-store'; -function StoreProvider({ state }: { state: SiteState, children: React.ReactElement }) { - console.log(state); - // const storeProps = { sharedConfig, searchIndex, searchConfig, ...frontmatter }; - // const createStore = useCreateStore(storeProps); - return <>{children} +function StoreProvider({ value, children }: { value: SiteState; children: React.ReactNode }) { + const createStore = useCreateStore(value); + return {children}; } export default StoreProvider; diff --git a/packages/site/src/middleware.ts b/packages/site/src/middleware.ts new file mode 100644 index 000000000..167d32395 --- /dev/null +++ b/packages/site/src/middleware.ts @@ -0,0 +1,16 @@ +import { NextResponse } from 'next/server'; +import type { NextRequest } from 'next/server'; + +export default function middleware(request: NextRequest) { + const requestHeaders = new Headers(request.headers); + requestHeaders.set('x-next-pathname', request.nextUrl.pathname); + return NextResponse.next({ + request: { + headers: requestHeaders + } + }); +} + +export const config = { + matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'] +}; diff --git a/packages/site/src/pages/[...route].tsx b/packages/site/src/pages/[...route].tsx deleted file mode 100755 index 5a88224ad..000000000 --- a/packages/site/src/pages/[...route].tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import type { GetServerSidePropsContext, GetServerSidePropsResult } from 'next'; -import { Body } from '@jpmorganchase/mosaic-site-components'; -import { - createMiddlewareRunner, - MiddlewareResult, - middlewarePresets -} from '@jpmorganchase/mosaic-site-middleware'; - -import type { MyAppProps, MyMiddlewareProps } from '../types/mosaic'; - -/** - * Extend props passed to MyApp by adding your own middleware ('withMyExampleMiddleware') functions. - * - const middlewareRunner = createMiddlewareRunner({}, - [ - ...middlewarePresets, - [withMyExampleMiddleware, { someProp: 20000 }] - ] - ); - */ -const middlewareRunner = createMiddlewareRunner({}, middlewarePresets); - -export async function getServerSideProps( - context: GetServerSidePropsContext -): Promise>>> { - const props = await middlewareRunner(context, {}); - return props; -} - -/** MyApp will be passed MyAppProps which is created by combining the result of all props created by Middleware */ -const MyApp = props => ; -export default MyApp; diff --git a/packages/site/src/pages/_app.tsx b/packages/site/src/pages/_app.tsx deleted file mode 100755 index 533842e6f..000000000 --- a/packages/site/src/pages/_app.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { AppProps } from 'next/app'; -import Head from 'next/head'; -import { PT_Mono, Open_Sans } from 'next/font/google'; -import { - BaseUrlProvider, - Image, - Link, - Metadata, - components as mosaicComponents -} from '@jpmorganchase/mosaic-site-components'; -import { ImageProvider, LinkProvider, ThemeProvider } from '@jpmorganchase/mosaic-components'; -import { useCreateStore, StoreProvider } from '@jpmorganchase/mosaic-store'; -import { LayoutProvider, layouts as mosaicLayouts } from '@jpmorganchase/mosaic-layouts'; -import { themeClassName } from '@jpmorganchase/mosaic-theme'; -import '@jpmorganchase/mosaic-site-preset-styles/index.css'; -import { SessionProvider } from 'next-auth/react'; -import classnames from 'clsx'; - -import { MyAppProps } from '../types/mosaic'; - -const ptMono = PT_Mono({ - weight: '400', - variable: '--salt-typography-fontFamily-code', - display: 'swap', - subsets: ['latin'] -}); -const openSans = Open_Sans({ - subsets: ['latin'], - variable: '--salt-typography-fontFamily', - display: 'swap' -}); - -const components = mosaicComponents; -const layoutComponents = mosaicLayouts; - -export default function MyApp({ Component, pageProps = {} }: AppProps) { - const { searchIndex, searchConfig, sharedConfig, source } = pageProps; - const frontmatter = source?.frontmatter || {}; - const storeProps = { sharedConfig, searchIndex, searchConfig, ...frontmatter }; - const createStore = useCreateStore(storeProps); - return ( - - - - - - - - - - - - - - - - - ); -} diff --git a/packages/site/src/pages/_document.tsx b/packages/site/src/pages/_document.tsx deleted file mode 100644 index f269951e6..000000000 --- a/packages/site/src/pages/_document.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { Document } from '@jpmorganchase/mosaic-site-components'; - -export default class CustomisableDocument extends Document { - /** - * Refer to https://nextjs.org/docs/advanced-features/custom-document#customizing-renderpage - * to customize - */ -} diff --git a/packages/site/src/pages/api/content/preview.ts b/packages/site/src/pages/api/content/preview.ts deleted file mode 100644 index b01889f4e..000000000 --- a/packages/site/src/pages/api/content/preview.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { compileMDX } from '@jpmorganchase/mosaic-site-middleware'; -import type { NextApiRequest, NextApiResponse } from 'next'; - -function getErrorMessage(error: unknown) { - if (error instanceof Error) return error.message; - return String(error); -} - -export default async function handler(req: NextApiRequest, res: NextApiResponse) { - try { - const { body } = req; - let compiledMdx; - try { - if (body.mode === 'markdown') { - compiledMdx = await compileMDX(body.text, false /** don't parse frontmatter */); - } - } catch (ex: unknown) { - return res - .status(200) - .json({ source: null, error: 'compilation error', exception: getErrorMessage(ex) }); - } - return res.status(200).json({ source: compiledMdx }); - } catch (ex) { - return res.status(500).send(getErrorMessage(ex)); - } -} diff --git a/packages/site/src/pages/index.tsx b/packages/site/src/pages/index.tsx deleted file mode 100644 index da034d318..000000000 --- a/packages/site/src/pages/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -export default function ContentIndex() { - throw new Error('This should never render.'); -} - -export const getServerSideProps = async function getServerSideProps() { - try { - return { - redirect: { - permanent: true, - destination: '/mosaic/' - } - }; - } catch (e: any) { - if (e.status === 404) { - throw new Error( - `No homepage found for this route. Cannot redirect to the correct destination.\n\n${e.statusText}` - ); - } - throw e; - } -}; diff --git a/packages/site/src/utils/getPage.ts b/packages/site/src/utils/getPage.ts new file mode 100644 index 000000000..8f278c3eb --- /dev/null +++ b/packages/site/src/utils/getPage.ts @@ -0,0 +1,23 @@ +import path from 'path'; +import nodeFetch from 'node-fetch'; +import matter from 'gray-matter'; +import type { SiteState } from '@jpmorganchase/mosaic-store'; +import { getSharedConfig } from './getSharedConfig'; + +type Page = { + /** Page body content */ + source: string; + /** Metadata that has been defined by page or added by plugins */ + data: SiteState; +}; +type GetPage = (pathname: string) => Promise; + +export const getPage: GetPage = async pathname => { + const url = path.join('http://localhost:8080', pathname); + const result = await nodeFetch(url); + const text = await result.text(); + const { data, content: source } = matter(text); + const metadata = data as SiteState; + const sharedConfig = await getSharedConfig(pathname); + return { data: { ...metadata, sharedConfig }, source }; +}; diff --git a/packages/site/src/utils/getSharedConfig.ts b/packages/site/src/utils/getSharedConfig.ts new file mode 100644 index 000000000..f9eeab99d --- /dev/null +++ b/packages/site/src/utils/getSharedConfig.ts @@ -0,0 +1,10 @@ +import path from 'path'; +import nodeFetch from 'node-fetch'; + +export const getSharedConfig = async route => { + const routeBase = path.dirname(route); + const url = path.join('http://localhost:8080', routeBase, 'shared-config.json'); + const res = await nodeFetch(url); + const resJson = await res.json(); + return resJson.config; +}; diff --git a/packages/site/tsconfig.json b/packages/site/tsconfig.json index 3f6d8f8b3..e079f0ac5 100644 --- a/packages/site/tsconfig.json +++ b/packages/site/tsconfig.json @@ -17,7 +17,6 @@ "noFallthroughCasesInSwitch": true, "skipLibCheck": true, "baseUrl": ".", - "rootDir": "./src", "outDir": "./dist", "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo", "forceConsistentCasingInFileNames": true, @@ -26,8 +25,13 @@ "resolveJsonModule": true, "noImplicitAny": false, "jsx": "preserve", - "module": "esnext" + "module": "esnext", + "plugins": [ + { + "name": "next" + } + ] }, - "include": ["src"], + "include": ["src", ".next/types/**/*.ts"], "exclude": ["node_modules", "dist/**/*"] } diff --git a/yarn.lock b/yarn.lock index d6df1c3c5..9c87e0e86 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2686,6 +2686,13 @@ dependencies: glob "7.1.7" +"@next/mdx@^13.4.4": + version "13.4.5" + resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-13.4.5.tgz#33bcaadb437560f40cadd9316bdffed74492f4a3" + integrity sha512-b8V7Jcv8+Px3vDDvbMomrHzLFDUABDMluX+ydgB7qCJjkM5/x/+oAdyKojAT/a50dWpIgQI0pXveRnaHvrQXQw== + dependencies: + source-map "^0.7.0" + "@next/swc-darwin-arm64@13.4.4": version "13.4.4" resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz#8c14083c2478e2a9a8d140cce5900f76b75667ff" From 5a6dcd3d239a9c7593fc0e8619cf03b8efde0d83 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 11 Jun 2023 11:49:05 +0100 Subject: [PATCH 05/36] update `next-mdx/remote' to support rsc --- packages/site-components/package.json | 2 +- packages/site-middleware/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/site-components/package.json b/packages/site-components/package.json index 009717e27..b3579d493 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -61,7 +61,7 @@ "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "next": "^13.4.4", - "next-mdx-remote": "^4.2.1", + "next-mdx-remote": "^4.4.1", "node-cookie": "^2.1.2", "react-error-boundary": "^4.0.11", "react-pro-sidebar": "^1.0.0", diff --git a/packages/site-middleware/package.json b/packages/site-middleware/package.json index 5ec325bf9..2bd21951e 100644 --- a/packages/site-middleware/package.json +++ b/packages/site-middleware/package.json @@ -42,7 +42,7 @@ "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "next": "^13.4.4", - "next-mdx-remote": "^4.2.1", + "next-mdx-remote": "^4.4.1", "node-cookie": "^2.1.2", "react-error-boundary": "^3.1.4", "react-pro-sidebar": "1.0.0-alpha.7", diff --git a/yarn.lock b/yarn.lock index 9c87e0e86..13f36f564 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10152,10 +10152,10 @@ next-auth@^4.22.1: preact-render-to-string "^5.1.19" uuid "^8.3.2" -next-mdx-remote@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/next-mdx-remote/-/next-mdx-remote-4.2.1.tgz#1aee0207b029487100ef49740be210595fe04e50" - integrity sha512-PcVF1r5XTBjiNVXw0GyaIcOwQsklHo36+7ycfmtJb52TIkT0nM4Hzv4wgJwNg7+jvTbap99qWsMwdKUYR9WxAA== +next-mdx-remote@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/next-mdx-remote/-/next-mdx-remote-4.4.1.tgz#96b16e2adc54dbcd0a7f204a9a3c3fd269d41abf" + integrity sha512-1BvyXaIou6xy3XoNF4yaMZUCb6vD2GTAa5ciOa6WoO+gAUTYsb1K4rI/HSC2ogAWLrb/7VSV52skz07vOzmqIQ== dependencies: "@mdx-js/mdx" "^2.2.1" "@mdx-js/react" "^2.2.1" From 805e9e36addc39c07336611a84a3fea4e82523c1 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 11 Jun 2023 17:24:34 +0100 Subject: [PATCH 06/36] add `'use client'` directive to components for app router support --- packages/components/src/Accordion/index.tsx | 1 + packages/components/src/AudioPlayer/index.tsx | 1 + packages/components/src/BrowserOnly.tsx | 1 + packages/components/src/Callout/index.tsx | 1 + packages/components/src/Card/index.tsx | 1 + packages/components/src/Cards.tsx | 1 + .../components/src/ComponentExample/index.tsx | 1 + packages/components/src/DataTable.tsx | 1 + .../components/src/EditionFilterView/index.tsx | 1 + packages/components/src/EditionTileLink/index.tsx | 1 + packages/components/src/Feature/index.tsx | 1 + packages/components/src/Features/index.tsx | 1 + packages/components/src/FilterToolbar/index.tsx | 1 + packages/components/src/FilterView/index.tsx | 1 + packages/components/src/FormattedContent.tsx | 1 + packages/components/src/Grid/index.tsx | 1 + packages/components/src/GridBase/index.tsx | 1 + packages/components/src/HelpLinks/index.tsx | 1 + packages/components/src/Hero/index.tsx | 1 + packages/components/src/Icon/index.tsx | 1 + packages/components/src/ImageProvider.ts | 1 + packages/components/src/Impact/index.tsx | 1 + packages/components/src/Impacts.tsx | 1 + packages/components/src/IsomorphicSuspense.tsx | 1 + packages/components/src/Label/index.tsx | 1 + packages/components/src/Link/index.tsx | 1 + packages/components/src/LinkBase/index.tsx | 1 + packages/components/src/LinkButton.tsx | 1 + packages/components/src/LinkProvider.ts | 1 + packages/components/src/LinkText/index.tsx | 1 + packages/components/src/Links/index.tsx | 1 + packages/components/src/List/index.tsx | 1 + packages/components/src/Markdown/index.tsx | 1 + packages/components/src/PageFilterView/index.tsx | 1 + packages/components/src/ReactLive/index.tsx | 1 + packages/components/src/SecondaryNavbar/index.tsx | 1 + packages/components/src/SectionHeading/index.tsx | 1 + packages/components/src/StickyHeader/index.tsx | 1 + packages/components/src/Story/index.tsx | 1 + packages/components/src/Tabs/index.tsx | 1 + packages/components/src/TabsBase/index.ts | 1 + packages/components/src/Tag/index.tsx | 1 + packages/components/src/ThemeProvider.tsx | 1 + packages/components/src/TileBase/index.ts | 1 + packages/components/src/TileButton/index.tsx | 1 + packages/components/src/TileContent/index.tsx | 1 + .../components/src/TileContentLabel/index.tsx | 1 + packages/components/src/TileLink/index.tsx | 1 + packages/components/src/Tiles.tsx | 1 + packages/components/src/Typography/index.tsx | 1 + packages/components/src/VideoPlayer/index.tsx | 1 + packages/components/src/ViewStack/index.tsx | 1 + packages/components/src/index.tsx | 1 + packages/components/src/useBreakpoint.ts | 1 + packages/components/src/useLockBodyScroll.ts | 1 + packages/components/src/useOutsideClick.ts | 1 + packages/components/src/useSize.ts | 1 + packages/components/src/useSpacing.ts | 1 + packages/components/src/utils/index.ts | 1 + packages/site-components/src/NavigationEvents.tsx | 15 +++++++++++++++ 60 files changed, 74 insertions(+) create mode 100644 packages/site-components/src/NavigationEvents.tsx diff --git a/packages/components/src/Accordion/index.tsx b/packages/components/src/Accordion/index.tsx index 98bc07508..c74f8ff87 100644 --- a/packages/components/src/Accordion/index.tsx +++ b/packages/components/src/Accordion/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; import { diff --git a/packages/components/src/AudioPlayer/index.tsx b/packages/components/src/AudioPlayer/index.tsx index 2ae8db57f..a2fb2ee74 100644 --- a/packages/components/src/AudioPlayer/index.tsx +++ b/packages/components/src/AudioPlayer/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { useEffect, useState, useCallback } from 'react'; import { ButtonBar, OrderedButton, Slider } from '@salt-ds/lab'; diff --git a/packages/components/src/BrowserOnly.tsx b/packages/components/src/BrowserOnly.tsx index a5c510a7f..e90e17957 100644 --- a/packages/components/src/BrowserOnly.tsx +++ b/packages/components/src/BrowserOnly.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import { canUseDOM } from './canUseDOM'; diff --git a/packages/components/src/Callout/index.tsx b/packages/components/src/Callout/index.tsx index 1b786e747..d83062cd2 100644 --- a/packages/components/src/Callout/index.tsx +++ b/packages/components/src/Callout/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; import { Icon } from '../Icon'; diff --git a/packages/components/src/Card/index.tsx b/packages/components/src/Card/index.tsx index 6cfc86168..9d6e1c759 100644 --- a/packages/components/src/Card/index.tsx +++ b/packages/components/src/Card/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import styles from './styles.css'; diff --git a/packages/components/src/Cards.tsx b/packages/components/src/Cards.tsx index ba5c36454..97436dcaf 100644 --- a/packages/components/src/Cards.tsx +++ b/packages/components/src/Cards.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { Children, cloneElement, ReactElement } from 'react'; import { Grid } from './Grid'; diff --git a/packages/components/src/ComponentExample/index.tsx b/packages/components/src/ComponentExample/index.tsx index 05d9a4b35..d0c1bcb19 100644 --- a/packages/components/src/ComponentExample/index.tsx +++ b/packages/components/src/ComponentExample/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/DataTable.tsx b/packages/components/src/DataTable.tsx index c705c8e90..59ee27d04 100644 --- a/packages/components/src/DataTable.tsx +++ b/packages/components/src/DataTable.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { ReactElement, Ref } from 'react'; import type { Column, PluginHook } from 'react-table'; import classnames from 'clsx'; diff --git a/packages/components/src/EditionFilterView/index.tsx b/packages/components/src/EditionFilterView/index.tsx index 490157418..3f95c8296 100644 --- a/packages/components/src/EditionFilterView/index.tsx +++ b/packages/components/src/EditionFilterView/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/EditionTileLink/index.tsx b/packages/components/src/EditionTileLink/index.tsx index 8307dba08..01b5fe423 100644 --- a/packages/components/src/EditionTileLink/index.tsx +++ b/packages/components/src/EditionTileLink/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { FC, ReactNode } from 'react'; import { LinkBase } from '../LinkBase'; diff --git a/packages/components/src/Feature/index.tsx b/packages/components/src/Feature/index.tsx index 8f9049bfc..031446db3 100644 --- a/packages/components/src/Feature/index.tsx +++ b/packages/components/src/Feature/index.tsx @@ -1,3 +1,4 @@ +'use client'; export { Feature } from './Feature'; export { FeatureContent } from './FeatureContent'; export type { FeatureContentProps } from './FeatureContent'; diff --git a/packages/components/src/Features/index.tsx b/packages/components/src/Features/index.tsx index e3d8708a5..9a23f883c 100644 --- a/packages/components/src/Features/index.tsx +++ b/packages/components/src/Features/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { Children, cloneElement, ReactElement } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/FilterToolbar/index.tsx b/packages/components/src/FilterToolbar/index.tsx index 1ba88b030..a953f17b3 100644 --- a/packages/components/src/FilterToolbar/index.tsx +++ b/packages/components/src/FilterToolbar/index.tsx @@ -1,3 +1,4 @@ +'use client'; export * from './FilterDropdown'; export * from './PillGroup'; export * from './SortDropdown'; diff --git a/packages/components/src/FilterView/index.tsx b/packages/components/src/FilterView/index.tsx index 169f81d72..bf6aea751 100644 --- a/packages/components/src/FilterView/index.tsx +++ b/packages/components/src/FilterView/index.tsx @@ -1,3 +1,4 @@ +'use client'; export * from './FilterView'; export * from './ResultCount'; export * from './NoResults'; diff --git a/packages/components/src/FormattedContent.tsx b/packages/components/src/FormattedContent.tsx index 23bde629a..7e046072b 100644 --- a/packages/components/src/FormattedContent.tsx +++ b/packages/components/src/FormattedContent.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { ReactElement } from 'react'; import ReactMarkdown from 'react-markdown'; diff --git a/packages/components/src/Grid/index.tsx b/packages/components/src/Grid/index.tsx index 489b360fb..9bba132bd 100644 --- a/packages/components/src/Grid/index.tsx +++ b/packages/components/src/Grid/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { forwardRef, ReactNode, Ref } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/GridBase/index.tsx b/packages/components/src/GridBase/index.tsx index 97b093250..056a84a51 100644 --- a/packages/components/src/GridBase/index.tsx +++ b/packages/components/src/GridBase/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { forwardRef, ReactElement, Ref } from 'react'; import classnames from 'clsx'; import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/HelpLinks/index.tsx b/packages/components/src/HelpLinks/index.tsx index 4f7781173..17f2518c7 100644 --- a/packages/components/src/HelpLinks/index.tsx +++ b/packages/components/src/HelpLinks/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; import { Icon } from '../Icon'; diff --git a/packages/components/src/Hero/index.tsx b/packages/components/src/Hero/index.tsx index d9a33ecb1..582c6a4c1 100644 --- a/packages/components/src/Hero/index.tsx +++ b/packages/components/src/Hero/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { ReactElement } from 'react'; import classnames from 'clsx'; import { LinkButton } from '../LinkButton'; diff --git a/packages/components/src/Icon/index.tsx b/packages/components/src/Icon/index.tsx index 01cb2d2ce..a98109d16 100644 --- a/packages/components/src/Icon/index.tsx +++ b/packages/components/src/Icon/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import { icons, IconNames } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/ImageProvider.ts b/packages/components/src/ImageProvider.ts index d6008c2a9..124dd8ea6 100644 --- a/packages/components/src/ImageProvider.ts +++ b/packages/components/src/ImageProvider.ts @@ -1,3 +1,4 @@ +'use client'; import { createContext, Context, ElementType, useContext } from 'react'; export type ImageProviderValue = ElementType; diff --git a/packages/components/src/Impact/index.tsx b/packages/components/src/Impact/index.tsx index 32860c322..2f29156d6 100644 --- a/packages/components/src/Impact/index.tsx +++ b/packages/components/src/Impact/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/Impacts.tsx b/packages/components/src/Impacts.tsx index 2d5396391..af6b6090a 100644 --- a/packages/components/src/Impacts.tsx +++ b/packages/components/src/Impacts.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { Children, cloneElement, ReactElement } from 'react'; import { Grid } from './Grid'; diff --git a/packages/components/src/IsomorphicSuspense.tsx b/packages/components/src/IsomorphicSuspense.tsx index 4cc03ccaa..bbc2e0716 100644 --- a/packages/components/src/IsomorphicSuspense.tsx +++ b/packages/components/src/IsomorphicSuspense.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; export function IsomorphicSuspense({ children, fallback }) { diff --git a/packages/components/src/Label/index.tsx b/packages/components/src/Label/index.tsx index 37dbafd07..e69642248 100644 --- a/packages/components/src/Label/index.tsx +++ b/packages/components/src/Label/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import { Tooltip, TooltipProps as SaltTooltipProps } from '@salt-ds/core'; diff --git a/packages/components/src/Link/index.tsx b/packages/components/src/Link/index.tsx index 1a3fc8c13..92d54be84 100644 --- a/packages/components/src/Link/index.tsx +++ b/packages/components/src/Link/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { forwardRef, Ref } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/LinkBase/index.tsx b/packages/components/src/LinkBase/index.tsx index dde976971..7d9a11a0c 100644 --- a/packages/components/src/LinkBase/index.tsx +++ b/packages/components/src/LinkBase/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { forwardRef, Ref } from 'react'; import { useLinkComponent } from '../LinkProvider'; diff --git a/packages/components/src/LinkButton.tsx b/packages/components/src/LinkButton.tsx index 9c1b0c16e..5551a680e 100644 --- a/packages/components/src/LinkButton.tsx +++ b/packages/components/src/LinkButton.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { FC } from 'react'; import classnames from 'clsx'; import { button as buttonStyles } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/LinkProvider.ts b/packages/components/src/LinkProvider.ts index eff307d09..f7cdce692 100644 --- a/packages/components/src/LinkProvider.ts +++ b/packages/components/src/LinkProvider.ts @@ -1,3 +1,4 @@ +'use client'; import { createContext, Context, ElementType, useContext } from 'react'; export type LinkProviderValue = ElementType; diff --git a/packages/components/src/LinkText/index.tsx b/packages/components/src/LinkText/index.tsx index db8667b99..cc8628e87 100644 --- a/packages/components/src/LinkText/index.tsx +++ b/packages/components/src/LinkText/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { forwardRef, isValidElement, ReactNode, Ref } from 'react'; import classnames from 'clsx'; import { Icon, IconProps } from '../Icon'; diff --git a/packages/components/src/Links/index.tsx b/packages/components/src/Links/index.tsx index eb504492f..b5dc3d62b 100644 --- a/packages/components/src/Links/index.tsx +++ b/packages/components/src/Links/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { Children } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/List/index.tsx b/packages/components/src/List/index.tsx index 94599e8e1..6fd0abf99 100644 --- a/packages/components/src/List/index.tsx +++ b/packages/components/src/List/index.tsx @@ -1,3 +1,4 @@ +'use client'; export * from './ListItem'; export * from './OrderedList'; export * from './UnorderedList'; diff --git a/packages/components/src/Markdown/index.tsx b/packages/components/src/Markdown/index.tsx index 351c38a9c..ea7c7a839 100644 --- a/packages/components/src/Markdown/index.tsx +++ b/packages/components/src/Markdown/index.tsx @@ -1,3 +1,4 @@ +'use client'; import type { Ref } from 'react'; import { action, diff --git a/packages/components/src/PageFilterView/index.tsx b/packages/components/src/PageFilterView/index.tsx index 7ecc06871..fa82ec469 100644 --- a/packages/components/src/PageFilterView/index.tsx +++ b/packages/components/src/PageFilterView/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import { TileContentLabel } from '../TileContentLabel'; diff --git a/packages/components/src/ReactLive/index.tsx b/packages/components/src/ReactLive/index.tsx index b49b77f24..044af8f0d 100644 --- a/packages/components/src/ReactLive/index.tsx +++ b/packages/components/src/ReactLive/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { useState } from 'react'; import classnames from 'clsx'; import { Switch } from '@salt-ds/lab'; diff --git a/packages/components/src/SecondaryNavbar/index.tsx b/packages/components/src/SecondaryNavbar/index.tsx index 3d638001c..ec38159fe 100644 --- a/packages/components/src/SecondaryNavbar/index.tsx +++ b/packages/components/src/SecondaryNavbar/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; import findLastIndex from 'lodash/findLastIndex'; diff --git a/packages/components/src/SectionHeading/index.tsx b/packages/components/src/SectionHeading/index.tsx index 68d1ce64e..99a1ed172 100644 --- a/packages/components/src/SectionHeading/index.tsx +++ b/packages/components/src/SectionHeading/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/StickyHeader/index.tsx b/packages/components/src/StickyHeader/index.tsx index 1b5b4017b..07cc95f55 100644 --- a/packages/components/src/StickyHeader/index.tsx +++ b/packages/components/src/StickyHeader/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { useRef, useState, useEffect, FC } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/Story/index.tsx b/packages/components/src/Story/index.tsx index 62f25b77c..d8a4d3796 100644 --- a/packages/components/src/Story/index.tsx +++ b/packages/components/src/Story/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/Tabs/index.tsx b/packages/components/src/Tabs/index.tsx index 3e1df1d4d..d144bf89a 100644 --- a/packages/components/src/Tabs/index.tsx +++ b/packages/components/src/Tabs/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/TabsBase/index.ts b/packages/components/src/TabsBase/index.ts index 57c791f64..70bfb6c92 100644 --- a/packages/components/src/TabsBase/index.ts +++ b/packages/components/src/TabsBase/index.ts @@ -1,3 +1,4 @@ +'use client'; export * from './TabsBase'; export * from './TabsButton'; export * from './TabsLink'; diff --git a/packages/components/src/Tag/index.tsx b/packages/components/src/Tag/index.tsx index 9101cfbd5..b429787cb 100644 --- a/packages/components/src/Tag/index.tsx +++ b/packages/components/src/Tag/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; import { Icon } from '../Icon'; diff --git a/packages/components/src/ThemeProvider.tsx b/packages/components/src/ThemeProvider.tsx index 8bf03d635..d468af063 100644 --- a/packages/components/src/ThemeProvider.tsx +++ b/packages/components/src/ThemeProvider.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { ReactNode, useEffect, useState } from 'react'; import { SaltProvider } from '@salt-ds/core'; import { useColorMode } from '@jpmorganchase/mosaic-store'; diff --git a/packages/components/src/TileBase/index.ts b/packages/components/src/TileBase/index.ts index 1d4da24c4..a5b450699 100644 --- a/packages/components/src/TileBase/index.ts +++ b/packages/components/src/TileBase/index.ts @@ -1,2 +1,3 @@ +'use client'; export * from './TileBase'; export * from './TileStateProvider'; diff --git a/packages/components/src/TileButton/index.tsx b/packages/components/src/TileButton/index.tsx index 61234a051..3418def2b 100644 --- a/packages/components/src/TileButton/index.tsx +++ b/packages/components/src/TileButton/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { FC, Ref, forwardRef } from 'react'; import { TileBase, TileBaseProps, useTileState } from '../TileBase'; diff --git a/packages/components/src/TileContent/index.tsx b/packages/components/src/TileContent/index.tsx index f9dc10c40..8eff10408 100644 --- a/packages/components/src/TileContent/index.tsx +++ b/packages/components/src/TileContent/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { FC, forwardRef, ReactNode, Ref } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/TileContentLabel/index.tsx b/packages/components/src/TileContentLabel/index.tsx index 101b91bb3..d37b8a2df 100644 --- a/packages/components/src/TileContentLabel/index.tsx +++ b/packages/components/src/TileContentLabel/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/TileLink/index.tsx b/packages/components/src/TileLink/index.tsx index 3fcdad8ef..f72221c61 100644 --- a/packages/components/src/TileLink/index.tsx +++ b/packages/components/src/TileLink/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { FC, Ref, forwardRef } from 'react'; import { TileBase, TileBaseProps, useTileState } from '../TileBase'; diff --git a/packages/components/src/Tiles.tsx b/packages/components/src/Tiles.tsx index 539800db2..1e3268195 100644 --- a/packages/components/src/Tiles.tsx +++ b/packages/components/src/Tiles.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { FC, forwardRef, ReactElement, Ref } from 'react'; import { TileBaseProps } from './TileBase'; diff --git a/packages/components/src/Typography/index.tsx b/packages/components/src/Typography/index.tsx index 99cdf2956..f8cab2f57 100644 --- a/packages/components/src/Typography/index.tsx +++ b/packages/components/src/Typography/index.tsx @@ -1,3 +1,4 @@ +'use client'; import { action, amount, diff --git a/packages/components/src/VideoPlayer/index.tsx b/packages/components/src/VideoPlayer/index.tsx index 15b41c347..18fb0f143 100644 --- a/packages/components/src/VideoPlayer/index.tsx +++ b/packages/components/src/VideoPlayer/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { useState, useEffect, useCallback } from 'react'; import { Spinner } from '@salt-ds/core'; import { ButtonBar, OrderedButton, Slider } from '@salt-ds/lab'; diff --git a/packages/components/src/ViewStack/index.tsx b/packages/components/src/ViewStack/index.tsx index 38fa735d3..4fa80906d 100644 --- a/packages/components/src/ViewStack/index.tsx +++ b/packages/components/src/ViewStack/index.tsx @@ -1,2 +1,3 @@ +'use client'; export * from './ViewStack'; export * from './View'; diff --git a/packages/components/src/index.tsx b/packages/components/src/index.tsx index e12a1470f..20eac19ff 100644 --- a/packages/components/src/index.tsx +++ b/packages/components/src/index.tsx @@ -1,3 +1,4 @@ +'use client'; export * from './Accordion'; export * from './AudioPlayer'; export * from './Button'; diff --git a/packages/components/src/useBreakpoint.ts b/packages/components/src/useBreakpoint.ts index 0f536253a..7f6df048e 100644 --- a/packages/components/src/useBreakpoint.ts +++ b/packages/components/src/useBreakpoint.ts @@ -1,3 +1,4 @@ +'use client'; import { useState, useLayoutEffect, useEffect } from 'react'; import { breakpoint as breakpoints } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/useLockBodyScroll.ts b/packages/components/src/useLockBodyScroll.ts index db5f02971..2a62f9bc9 100644 --- a/packages/components/src/useLockBodyScroll.ts +++ b/packages/components/src/useLockBodyScroll.ts @@ -1,3 +1,4 @@ +'use client'; /** * Copyright (c) Facebook, Inc. and its affiliates. * diff --git a/packages/components/src/useOutsideClick.ts b/packages/components/src/useOutsideClick.ts index dc083e145..db0b95538 100644 --- a/packages/components/src/useOutsideClick.ts +++ b/packages/components/src/useOutsideClick.ts @@ -1,3 +1,4 @@ +'use client'; import { RefObject, useEffect, useRef } from 'react'; export const useOutsideClick: ( triggerRef: RefObject, diff --git a/packages/components/src/useSize.ts b/packages/components/src/useSize.ts index b35372e46..50da3c72f 100644 --- a/packages/components/src/useSize.ts +++ b/packages/components/src/useSize.ts @@ -1,3 +1,4 @@ +'use client'; import { useState, useLayoutEffect, useEffect } from 'react'; import throttle from 'lodash/throttle'; diff --git a/packages/components/src/useSpacing.ts b/packages/components/src/useSpacing.ts index 2aadf1c05..3917cdcb6 100644 --- a/packages/components/src/useSpacing.ts +++ b/packages/components/src/useSpacing.ts @@ -1,3 +1,4 @@ +'use client'; import { GutterTop } from './common/types'; const multiplierAliases: { [key: string]: number } = { diff --git a/packages/components/src/utils/index.ts b/packages/components/src/utils/index.ts index d55bb32b3..17b306661 100644 --- a/packages/components/src/utils/index.ts +++ b/packages/components/src/utils/index.ts @@ -1 +1,2 @@ +'use client'; export { hasProtocol } from './hasProtocol'; diff --git a/packages/site-components/src/NavigationEvents.tsx b/packages/site-components/src/NavigationEvents.tsx new file mode 100644 index 000000000..de27417c9 --- /dev/null +++ b/packages/site-components/src/NavigationEvents.tsx @@ -0,0 +1,15 @@ +'use client'; +import { useEffect } from 'react'; +import { usePathname, useSearchParams } from 'next/navigation'; + +export function NavigationEvents({ onRouteChange }) { + const pathname = usePathname(); + const searchParams = useSearchParams(); + + useEffect(() => { + const url = pathname + searchParams.toString(); + onRouteChange(url); + }, [onRouteChange, pathname, searchParams]); + + return null; +} From 771de087f4c1474e606996c053f67b5272634108 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 11 Jun 2023 17:25:17 +0100 Subject: [PATCH 07/36] add `'use client'` directive to site components for app router support --- .../src/AppHeaderControls/index.tsx | 2 +- .../src/AppHeaderTabs/index.tsx | 30 +++---- .../src/DocPaginator/DocPaginator.tsx | 79 +++++++++---------- packages/site-components/src/Document.tsx | 9 ++- .../site-components/src/NavigationEvents.tsx | 5 +- .../src/SearchInput/Results.tsx | 2 +- packages/site-components/src/index.tsx | 2 + 7 files changed, 65 insertions(+), 64 deletions(-) diff --git a/packages/site-components/src/AppHeaderControls/index.tsx b/packages/site-components/src/AppHeaderControls/index.tsx index abaff7482..63b2641f5 100644 --- a/packages/site-components/src/AppHeaderControls/index.tsx +++ b/packages/site-components/src/AppHeaderControls/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Icon, Link } from '@jpmorganchase/mosaic-components'; import { MenuButton, MenuDescriptor } from '@salt-ds/lab'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { useContentEditor, EditorControls } from '@jpmorganchase/mosaic-content-editor-plugin'; import { useColorMode, useSearchIndex, useStoreActions } from '@jpmorganchase/mosaic-store'; import { useSession } from 'next-auth/react'; diff --git a/packages/site-components/src/AppHeaderTabs/index.tsx b/packages/site-components/src/AppHeaderTabs/index.tsx index 4e007b437..c061d0935 100644 --- a/packages/site-components/src/AppHeaderTabs/index.tsx +++ b/packages/site-components/src/AppHeaderTabs/index.tsx @@ -1,8 +1,9 @@ -import React, { useEffect, useState } from 'react'; -import { useRouter } from 'next/router'; +import React, { useEffect, useState, Suspense } from 'react'; +import { useRouter, usePathname } from 'next/navigation'; import { hasProtocol, TabsBase, TabMenuItemType } from '@jpmorganchase/mosaic-components'; import type { TabsMenu, TabsMenuButtonItem, TabsLinkItem } from '@jpmorganchase/mosaic-components'; +import { NavigationEvents } from '../NavigationEvents'; import { useWindowResize, Size } from './useWindowResize'; export type { TabsMenu } from '@jpmorganchase/mosaic-components'; @@ -49,6 +50,7 @@ export function AppHeaderTabs({ menu = [] }: { menu: TabsMenu }) { itemPath => resolveSelectedIndex(menu, itemPath), [menu] ); + const pathname = usePathname(); const [selectionIndex, setSelectionIndex] = useState(() => -1); @@ -60,20 +62,11 @@ export function AppHeaderTabs({ menu = [] }: { menu: TabsMenu }) { const handleRouteChangeComplete = (newRoute: string) => updateSelection(newRoute); useEffect(() => { - router.events.on('routeChangeComplete', handleRouteChangeComplete); - - return () => { - router.events.off('routeChangeComplete', handleRouteChangeComplete); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - useEffect(() => { - if (router.asPath && size?.width) { - updateSelection(router.asPath); + if (pathname && size?.width) { + updateSelection(pathname); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [router, size]); + }, [pathname, size]); const handleMenuSelect = (_event, sourceItem) => { const { link } = sourceItem as TabsLinkItem; @@ -89,5 +82,12 @@ export function AppHeaderTabs({ menu = [] }: { menu: TabsMenu }) { } return menuItem; }); - return ; + return ( + <> + + + + + + ); } diff --git a/packages/site-components/src/DocPaginator/DocPaginator.tsx b/packages/site-components/src/DocPaginator/DocPaginator.tsx index a1f2cecc3..12fbba28f 100644 --- a/packages/site-components/src/DocPaginator/DocPaginator.tsx +++ b/packages/site-components/src/DocPaginator/DocPaginator.tsx @@ -1,11 +1,10 @@ -import React, { useEffect } from 'react'; -import { Link, P6, P3, TileBase, Icon } from '@jpmorganchase/mosaic-components'; +import React, { Suspense } from 'react'; import classnames from 'clsx'; -import { useRouter } from 'next/router'; +import { Link, P6, P3, TileBase, Icon } from '@jpmorganchase/mosaic-components'; +import { NavigationLink } from '@jpmorganchase/mosaic-store'; import styles from './styles.css'; - -import { NavigationLink } from '@jpmorganchase/mosaic-store'; +import { NavigationEvents } from '../NavigationEvents'; export interface DocPaginatorProps { /** Link label suffix */ @@ -17,8 +16,6 @@ export interface DocPaginatorProps { } export const DocPaginator: React.FC = ({ linkSuffix, next, prev }) => { - const router = useRouter(); - const handleRouteChangeComplete = () => { setTimeout(() => { if (window.pageYOffset > 0) { @@ -31,43 +28,39 @@ export const DocPaginator: React.FC = ({ linkSuffix, next, pr }, 300); }; - useEffect(() => { - router.events.on('routeChangeComplete', handleRouteChangeComplete); - - return () => { - router.events.off('routeChangeComplete', handleRouteChangeComplete); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - return ( -
-
- {prev && ( - - - <> - Previous {linkSuffix} - - {prev.title} - - - - )} -
-
- {next && ( - - - <> - Next {linkSuffix} - - {next.title} - - - - )} + <> + + + +
+
+ {prev && ( + + + <> + Previous {linkSuffix} + + {prev.title} + + + + )} +
+
+ {next && ( + + + <> + Next {linkSuffix} + + {next.title} + + + + )} +
-
+ ); }; diff --git a/packages/site-components/src/Document.tsx b/packages/site-components/src/Document.tsx index 26152f16c..5d5640190 100644 --- a/packages/site-components/src/Document.tsx +++ b/packages/site-components/src/Document.tsx @@ -9,7 +9,14 @@ export class Document extends NextDocument { render() { return ( - + + + + +
diff --git a/packages/site-components/src/NavigationEvents.tsx b/packages/site-components/src/NavigationEvents.tsx index de27417c9..5e9c49d7c 100644 --- a/packages/site-components/src/NavigationEvents.tsx +++ b/packages/site-components/src/NavigationEvents.tsx @@ -1,13 +1,12 @@ -'use client'; import { useEffect } from 'react'; import { usePathname, useSearchParams } from 'next/navigation'; export function NavigationEvents({ onRouteChange }) { const pathname = usePathname(); - const searchParams = useSearchParams(); + const searchParams = useSearchParams() || ''; useEffect(() => { - const url = pathname + searchParams.toString(); + const url = `${pathname}${searchParams.toString()}`; onRouteChange(url); }, [onRouteChange, pathname, searchParams]); diff --git a/packages/site-components/src/SearchInput/Results.tsx b/packages/site-components/src/SearchInput/Results.tsx index 039f971f3..a2d117f0c 100644 --- a/packages/site-components/src/SearchInput/Results.tsx +++ b/packages/site-components/src/SearchInput/Results.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import classnames from 'clsx'; import { Caption6, P4, P6 } from '@jpmorganchase/mosaic-components'; import { Highlighter } from '@salt-ds/lab'; diff --git a/packages/site-components/src/index.tsx b/packages/site-components/src/index.tsx index 349069b3d..fdf18f5c3 100644 --- a/packages/site-components/src/index.tsx +++ b/packages/site-components/src/index.tsx @@ -1,3 +1,4 @@ +'use client'; export * from './AppHeader'; export * from './AppHeaderControls'; export * from './AppHeaderDrawer'; @@ -14,6 +15,7 @@ export * from './HTMLView'; export * from './Link'; export * from './Image'; export * from './Metadata'; +export * from './NavigationEvents'; export * from './PageNavigation'; export * from './Sidebar'; export * from './TableOfContents'; From f5f63c1b669a5a39a5b3f0a07ea5a1324d0adfbb Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 11 Jun 2023 18:14:45 +0100 Subject: [PATCH 08/36] refactor layouts to work with app router --- packages/layouts/src/Fade.tsx | 9 ++-- packages/layouts/src/LayoutBase/index.tsx | 24 ++++++----- .../layouts/src/LayoutFullWidth/index.tsx | 1 + packages/layouts/src/hooks/useIsLoading.ts | 41 ------------------- packages/layouts/src/index.ts | 2 +- packages/layouts/src/layouts/Edit/index.tsx | 39 +++++++----------- 6 files changed, 33 insertions(+), 83 deletions(-) delete mode 100644 packages/layouts/src/hooks/useIsLoading.ts diff --git a/packages/layouts/src/Fade.tsx b/packages/layouts/src/Fade.tsx index bdce40fcb..ecd9b6735 100644 --- a/packages/layouts/src/Fade.tsx +++ b/packages/layouts/src/Fade.tsx @@ -14,25 +14,22 @@ type FadeProps = { enter: number; exit: number; }; - in: boolean; - style?: React.CSSProperties; }; -export const Fade: React.FC = ({ children, duration, in: inProp, style }) => { +export const Fade: React.FC = ({ children, duration }) => { const nodeRef = useRef(null); const defaultStyle = { transition: `opacity ${duration?.enter}ms ease-in-out`, opacity: 0 }; return ( - + {state => (
{children} diff --git a/packages/layouts/src/LayoutBase/index.tsx b/packages/layouts/src/LayoutBase/index.tsx index 4e60ca917..d80d6a44a 100644 --- a/packages/layouts/src/LayoutBase/index.tsx +++ b/packages/layouts/src/LayoutBase/index.tsx @@ -1,12 +1,20 @@ -import React from 'react'; +import React, { Suspense } from 'react'; import { Spinner } from '@salt-ds/core'; import classnames from 'clsx'; import { SidebarProvider } from '@jpmorganchase/mosaic-site-components'; -import { useIsLoading } from '../hooks/useIsLoading'; import { Fade } from '../Fade'; import styles from './styles.css'; +const Loading = () => ( + +
+
+ +
+ +); + export const LayoutBase = ({ Header, children, @@ -16,20 +24,14 @@ export const LayoutBase = ({ className?: string; children?: React.ReactNode; }) => { - // Add a delay before showing loading state, so loading screen doesn't appear if page loads quickly - const isLoading = useIsLoading({ loadingDelay: 50 }); return (
{Header}
- -
-
- -
- - {children} + }> + {children} +
diff --git a/packages/layouts/src/LayoutFullWidth/index.tsx b/packages/layouts/src/LayoutFullWidth/index.tsx index 8186b360c..dae3b4be6 100644 --- a/packages/layouts/src/LayoutFullWidth/index.tsx +++ b/packages/layouts/src/LayoutFullWidth/index.tsx @@ -4,6 +4,7 @@ import classnames from 'clsx'; import styles from './styles.css'; export interface LayoutFullWidthProps { + Header?: React.ReactElement; Footer?: React.ReactElement; children: React.ReactNode; className?: string; diff --git a/packages/layouts/src/hooks/useIsLoading.ts b/packages/layouts/src/hooks/useIsLoading.ts deleted file mode 100644 index 981d03648..000000000 --- a/packages/layouts/src/hooks/useIsLoading.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { useState, useEffect } from 'react'; -import { useRouter } from 'next/router'; -import debounce from 'lodash/debounce'; - -// Unexported type from next/dist/shared/lib/mitt.d.ts -declare type Handler = (...evts: any[]) => void; - -export function useIsLoading({ loadingDelay }: { loadingDelay?: number } = {}) { - const router = useRouter(); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const start = debounce(() => { - setIsLoading(true); - }, loadingDelay); - - const handleRouteChangeStart: Handler = (_url, { shallow }) => { - if (!shallow) { - start(); - } - }; - - const handleRouteChangeDone: Handler = (_url, { shallow }) => { - if (!shallow) { - setIsLoading(false); - } - }; - - router.events.on('routeChangeStart', handleRouteChangeStart); - router.events.on('routeChangeError', handleRouteChangeDone); - router.events.on('routeChangeComplete', handleRouteChangeDone); - - return () => { - router.events.off('routeChangeStart', handleRouteChangeStart); - router.events.off('routeChangeError', handleRouteChangeDone); - router.events.off('routeChangeComplete', handleRouteChangeDone); - }; - }, [router]); - - return isLoading; -} diff --git a/packages/layouts/src/index.ts b/packages/layouts/src/index.ts index f30ff3ca9..27d999c55 100644 --- a/packages/layouts/src/index.ts +++ b/packages/layouts/src/index.ts @@ -1,7 +1,7 @@ +'use client'; export * from './LayoutBase'; export * from './LayoutColumns'; export * from './LayoutFullWidth'; -export * from './hooks/useIsLoading'; export * from './LayoutConfigProvider'; export * from './LayoutProvider'; diff --git a/packages/layouts/src/layouts/Edit/index.tsx b/packages/layouts/src/layouts/Edit/index.tsx index fca7f7d13..f3aa488e3 100644 --- a/packages/layouts/src/layouts/Edit/index.tsx +++ b/packages/layouts/src/layouts/Edit/index.tsx @@ -1,35 +1,26 @@ -import React, { useEffect } from 'react'; -import { useRouter } from 'next/router'; +import React from 'react'; import { useContentEditor } from '@jpmorganchase/mosaic-content-editor-plugin'; -import { AppHeader } from '@jpmorganchase/mosaic-site-components'; +import { AppHeader, NavigationEvents } from '@jpmorganchase/mosaic-site-components'; import { LayoutBase } from '../../LayoutBase'; import type { LayoutProps } from '../../types'; import styles from './styles.css'; export const EditLayout: React.FC = ({ children }) => { - const router = useRouter(); const { pageState, stopEditing } = useContentEditor(); - - useEffect(() => { - const handleRouteChange = () => { - if (pageState === 'EDIT') { - stopEditing(); - } - }; - - router.events.on('routeChangeStart', handleRouteChange); - - return () => { - router.events.off('routeChangeStart', handleRouteChange); - }; - }, [pageState, router.events, stopEditing]); - + const handleRouteChange = () => { + if (pageState === 'EDIT') { + stopEditing(); + } + }; return ( - }> -
- {children} -
-
+ <> + + }> +
+ {children} +
+
+ ); }; From 8ef1943b3f3a71bf34402ec7b7e75d34963d574a Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Mon, 19 Jun 2023 12:11:56 +0100 Subject: [PATCH 09/36] remove markdown components into `@jpmorganchase/mosaic-components-client` package --- packages/components/README.md | 4 +- packages/components/package.json | 1 - packages/components/src/Accordion/index.tsx | 1 - packages/components/src/AudioPlayer/index.tsx | 1 - packages/components/src/BrowserOnly.tsx | 1 - packages/components/src/Callout/index.tsx | 1 - packages/components/src/Card/index.tsx | 1 - packages/components/src/Cards.tsx | 1 - .../components/src/ComponentExample/index.tsx | 1 - packages/components/src/DataTable.tsx | 1 - .../src/EditionFilterView/index.tsx | 31 ++- .../components/src/EditionTileLink/index.tsx | 1 - packages/components/src/Feature/index.tsx | 1 - packages/components/src/Features/index.tsx | 1 - .../components/src/FilterToolbar/index.tsx | 1 - packages/components/src/FilterView/index.tsx | 1 - packages/components/src/FormattedContent.tsx | 76 ------- packages/components/src/Grid/index.tsx | 1 - packages/components/src/GridBase/index.tsx | 1 - packages/components/src/HelpLinks/index.tsx | 1 - packages/components/src/Hero/index.tsx | 1 - packages/components/src/Icon/index.tsx | 1 - packages/components/src/ImageProvider.ts | 1 - packages/components/src/Impact/index.tsx | 1 - packages/components/src/Impacts.tsx | 1 - .../components/src/IsomorphicSuspense.tsx | 1 - packages/components/src/Label/index.tsx | 1 - packages/components/src/Link/index.tsx | 1 - packages/components/src/LinkBase/index.tsx | 1 - packages/components/src/LinkButton.tsx | 1 - packages/components/src/LinkProvider.ts | 1 - packages/components/src/LinkText/index.tsx | 1 - packages/components/src/Links/index.tsx | 1 - packages/components/src/List/index.tsx | 1 - .../AnchorHeading/__tests__/index.test.tsx | 56 ----- .../src/Markdown/AnchorHeading/index.css.ts | 64 ------ .../src/Markdown/AnchorHeading/index.tsx | 97 -------- .../src/Markdown/BlockQuote/index.css.ts | 6 - .../src/Markdown/BlockQuote/index.tsx | 21 -- packages/components/src/Markdown/Heading.tsx | 39 ---- .../components/src/Markdown/InlineCode.tsx | 10 - packages/components/src/Markdown/Link.tsx | 11 - .../components/src/Markdown/Pre/index.css.ts | 35 --- .../components/src/Markdown/Pre/index.tsx | 155 ------------- packages/components/src/Markdown/Table.tsx | 11 - packages/components/src/Markdown/Tbody.tsx | 9 - packages/components/src/Markdown/Td.tsx | 9 - packages/components/src/Markdown/Th.tsx | 9 - packages/components/src/Markdown/Thead.tsx | 9 - .../src/Markdown/ThematicBreak/index.css.ts | 5 - .../src/Markdown/ThematicBreak/index.tsx | 10 - packages/components/src/Markdown/Tr.tsx | 9 - .../src/Markdown/__tests__/Heading.test.tsx | 56 ----- packages/components/src/Markdown/index.tsx | 211 ------------------ .../src/Markdown/markdownElements.tsx | 52 ----- .../Markdown/withMarkdownSpacing/index.tsx | 33 --- .../withMarkdownSpacing/styles.css.ts | 7 - .../components/src/PageFilterView/index.tsx | 1 - packages/components/src/ReactLive/index.tsx | 72 ------ .../components/src/ReactLive/styles.css.ts | 28 --- .../components/src/SecondaryNavbar/index.tsx | 1 - .../components/src/SectionHeading/index.tsx | 1 - .../components/src/StickyHeader/index.tsx | 1 - packages/components/src/Story/index.tsx | 1 - packages/components/src/Tabs/index.tsx | 1 - packages/components/src/TabsBase/index.ts | 1 - packages/components/src/Tag/index.tsx | 1 - packages/components/src/ThemeProvider.tsx | 1 - packages/components/src/TileBase/index.ts | 1 - packages/components/src/TileButton/index.tsx | 1 - packages/components/src/TileContent/index.tsx | 1 - .../components/src/TileContentLabel/index.tsx | 1 - packages/components/src/TileLink/index.tsx | 1 - packages/components/src/Tiles.tsx | 1 - packages/components/src/Typography/index.tsx | 2 +- packages/components/src/VideoPlayer/index.tsx | 1 - packages/components/src/ViewStack/index.tsx | 1 - .../src/__tests__/ReactLive.test.tsx | 21 -- packages/components/src/index.tsx | 4 +- packages/components/src/styles.ts | 5 - packages/components/src/useBreakpoint.ts | 1 - packages/components/src/useLockBodyScroll.ts | 1 - packages/components/src/useOutsideClick.ts | 1 - packages/components/src/useSize.ts | 1 - packages/components/src/useSpacing.ts | 1 - packages/components/src/utils/index.ts | 1 - 86 files changed, 18 insertions(+), 1203 deletions(-) delete mode 100644 packages/components/src/FormattedContent.tsx delete mode 100644 packages/components/src/Markdown/AnchorHeading/__tests__/index.test.tsx delete mode 100644 packages/components/src/Markdown/AnchorHeading/index.css.ts delete mode 100644 packages/components/src/Markdown/AnchorHeading/index.tsx delete mode 100644 packages/components/src/Markdown/BlockQuote/index.css.ts delete mode 100644 packages/components/src/Markdown/BlockQuote/index.tsx delete mode 100644 packages/components/src/Markdown/Heading.tsx delete mode 100644 packages/components/src/Markdown/InlineCode.tsx delete mode 100644 packages/components/src/Markdown/Link.tsx delete mode 100644 packages/components/src/Markdown/Pre/index.css.ts delete mode 100644 packages/components/src/Markdown/Pre/index.tsx delete mode 100644 packages/components/src/Markdown/Table.tsx delete mode 100644 packages/components/src/Markdown/Tbody.tsx delete mode 100644 packages/components/src/Markdown/Td.tsx delete mode 100644 packages/components/src/Markdown/Th.tsx delete mode 100644 packages/components/src/Markdown/Thead.tsx delete mode 100644 packages/components/src/Markdown/ThematicBreak/index.css.ts delete mode 100644 packages/components/src/Markdown/ThematicBreak/index.tsx delete mode 100644 packages/components/src/Markdown/Tr.tsx delete mode 100644 packages/components/src/Markdown/__tests__/Heading.test.tsx delete mode 100644 packages/components/src/Markdown/index.tsx delete mode 100644 packages/components/src/Markdown/markdownElements.tsx delete mode 100644 packages/components/src/Markdown/withMarkdownSpacing/index.tsx delete mode 100644 packages/components/src/Markdown/withMarkdownSpacing/styles.css.ts delete mode 100644 packages/components/src/ReactLive/index.tsx delete mode 100644 packages/components/src/ReactLive/styles.css.ts delete mode 100644 packages/components/src/__tests__/ReactLive.test.tsx diff --git a/packages/components/README.md b/packages/components/README.md index d13df85a3..c747f247c 100644 --- a/packages/components/README.md +++ b/packages/components/README.md @@ -2,9 +2,6 @@ `@jpmorganchase/mosaic-components` contains re-usable UI components that conform to the Mosaic Design language. -All the Mosaic UI components are available within the MDX context of a Mosaic site but equally could be used outside a -Mosaic site. - ## Installation `yarn add @jpmorganchase/mosaic-components` @@ -15,3 +12,4 @@ The criteria for a component within `@jpmorganchase/mosaic-components` is - It can be used outside the Mosaic site with only Mosaic theme dependencies. - It **should not** contain any Mosaic Store, NextJS or other site specific dependencies. +- Should be client-side only components diff --git a/packages/components/package.json b/packages/components/package.json index f5905f1c6..a59fbe285 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -53,7 +53,6 @@ "lodash": "^4.17.21", "prism-react-renderer": "^1.1.1", "react-live": "^2.2.3", - "react-markdown": "^6.0.2", "react-responsive-carousel": "3.2.10", "react-table": "^7.8.0", "swagger-ui-react": "^5.0.0", diff --git a/packages/components/src/Accordion/index.tsx b/packages/components/src/Accordion/index.tsx index c74f8ff87..98bc07508 100644 --- a/packages/components/src/Accordion/index.tsx +++ b/packages/components/src/Accordion/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; import { diff --git a/packages/components/src/AudioPlayer/index.tsx b/packages/components/src/AudioPlayer/index.tsx index a2fb2ee74..2ae8db57f 100644 --- a/packages/components/src/AudioPlayer/index.tsx +++ b/packages/components/src/AudioPlayer/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { useEffect, useState, useCallback } from 'react'; import { ButtonBar, OrderedButton, Slider } from '@salt-ds/lab'; diff --git a/packages/components/src/BrowserOnly.tsx b/packages/components/src/BrowserOnly.tsx index e90e17957..a5c510a7f 100644 --- a/packages/components/src/BrowserOnly.tsx +++ b/packages/components/src/BrowserOnly.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import { canUseDOM } from './canUseDOM'; diff --git a/packages/components/src/Callout/index.tsx b/packages/components/src/Callout/index.tsx index d83062cd2..1b786e747 100644 --- a/packages/components/src/Callout/index.tsx +++ b/packages/components/src/Callout/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; import { Icon } from '../Icon'; diff --git a/packages/components/src/Card/index.tsx b/packages/components/src/Card/index.tsx index 9d6e1c759..6cfc86168 100644 --- a/packages/components/src/Card/index.tsx +++ b/packages/components/src/Card/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import styles from './styles.css'; diff --git a/packages/components/src/Cards.tsx b/packages/components/src/Cards.tsx index 97436dcaf..ba5c36454 100644 --- a/packages/components/src/Cards.tsx +++ b/packages/components/src/Cards.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { Children, cloneElement, ReactElement } from 'react'; import { Grid } from './Grid'; diff --git a/packages/components/src/ComponentExample/index.tsx b/packages/components/src/ComponentExample/index.tsx index d0c1bcb19..05d9a4b35 100644 --- a/packages/components/src/ComponentExample/index.tsx +++ b/packages/components/src/ComponentExample/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/DataTable.tsx b/packages/components/src/DataTable.tsx index 59ee27d04..c705c8e90 100644 --- a/packages/components/src/DataTable.tsx +++ b/packages/components/src/DataTable.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { ReactElement, Ref } from 'react'; import type { Column, PluginHook } from 'react-table'; import classnames from 'clsx'; diff --git a/packages/components/src/EditionFilterView/index.tsx b/packages/components/src/EditionFilterView/index.tsx index 3f95c8296..2ac82d912 100644 --- a/packages/components/src/EditionFilterView/index.tsx +++ b/packages/components/src/EditionFilterView/index.tsx @@ -1,11 +1,10 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; import { FilterResultCount, FilterView } from '../FilterView'; import { FilterDropdown, FilterSortDropdown } from '../FilterToolbar'; import { EditionTileLink } from '../EditionTileLink'; -import { FormattedContent } from '../FormattedContent'; +import { useBreakpoint } from '../useBreakpoint'; import styles from './styles.css'; export const createCustomFilter = (view, filters) => @@ -59,20 +58,20 @@ export type EditionFilterViewProps = { ItemRenderer: EditionFilterViewRenderer; }; -export const DefaultEditionFilterViewRenderer: EditionFilterViewRenderer = (item, itemIndex) => ( - {item.formattedDescription} - ) : null - } - eyebrow={item.eyebrow} - image={item.image} - key={`editionTile-${itemIndex}`} - link={item.link} - title={item.title} - /> -); +export const DefaultEditionFilterViewRenderer: EditionFilterViewRenderer = (item, itemIndex) => { + const breakpoint = useBreakpoint(); + return ( + + ); +}; export const EditionFilterView: React.FC> = ({ className, ItemRenderer = DefaultEditionFilterViewRenderer, diff --git a/packages/components/src/EditionTileLink/index.tsx b/packages/components/src/EditionTileLink/index.tsx index 01b5fe423..8307dba08 100644 --- a/packages/components/src/EditionTileLink/index.tsx +++ b/packages/components/src/EditionTileLink/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { FC, ReactNode } from 'react'; import { LinkBase } from '../LinkBase'; diff --git a/packages/components/src/Feature/index.tsx b/packages/components/src/Feature/index.tsx index 031446db3..8f9049bfc 100644 --- a/packages/components/src/Feature/index.tsx +++ b/packages/components/src/Feature/index.tsx @@ -1,4 +1,3 @@ -'use client'; export { Feature } from './Feature'; export { FeatureContent } from './FeatureContent'; export type { FeatureContentProps } from './FeatureContent'; diff --git a/packages/components/src/Features/index.tsx b/packages/components/src/Features/index.tsx index 9a23f883c..e3d8708a5 100644 --- a/packages/components/src/Features/index.tsx +++ b/packages/components/src/Features/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { Children, cloneElement, ReactElement } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/FilterToolbar/index.tsx b/packages/components/src/FilterToolbar/index.tsx index a953f17b3..1ba88b030 100644 --- a/packages/components/src/FilterToolbar/index.tsx +++ b/packages/components/src/FilterToolbar/index.tsx @@ -1,4 +1,3 @@ -'use client'; export * from './FilterDropdown'; export * from './PillGroup'; export * from './SortDropdown'; diff --git a/packages/components/src/FilterView/index.tsx b/packages/components/src/FilterView/index.tsx index bf6aea751..169f81d72 100644 --- a/packages/components/src/FilterView/index.tsx +++ b/packages/components/src/FilterView/index.tsx @@ -1,4 +1,3 @@ -'use client'; export * from './FilterView'; export * from './ResultCount'; export * from './NoResults'; diff --git a/packages/components/src/FormattedContent.tsx b/packages/components/src/FormattedContent.tsx deleted file mode 100644 index 7e046072b..000000000 --- a/packages/components/src/FormattedContent.tsx +++ /dev/null @@ -1,76 +0,0 @@ -'use client'; -import React, { ReactElement } from 'react'; -import ReactMarkdown from 'react-markdown'; - -import { getMarkdownElements } from './Markdown'; - -const { - h1: H1, - h2: H2, - h3: H3, - h4: H4, - h5: H5, - h6: H6, - ol: Ol, - ul: Ul, - li: ListItem, - em: Emphasis, - p: P, - strong: Strong -} = getMarkdownElements(); - -type FormattedContentProps = { - className?: string; - children: string; - components?: { - h1?: () => ReactElement; - h2?: () => ReactElement; - h3?: () => ReactElement; - h4?: () => ReactElement; - h5?: () => ReactElement; - h6?: () => ReactElement; - p?: () => ReactElement; - em?: () => ReactElement; - strong?: () => ReactElement; - ul?: () => ReactElement; - ol?: () => ReactElement; - li?: () => ReactElement; - }; -}; - -const renderers = { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h1: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h2: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h3: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h4: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h5: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h6: ({ node, ...props }) =>
, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - p: ({ node, children, ...props }) =>

{children}

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - emphasis: ({ node, children, ...props }) => {children}, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - strong: ({ node, children, ...props }) => {children}, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ul: ({ node, children, ...props }) =>
    {children}
, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ol: ({ node, children, ...props }) =>
    {children}
, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - listItem: ({ node, children, ...props }) => {children} -}; - -export const FormattedContent: React.FC> = ({ - children, - components = {}, - ...rest -}) => ( - - {children} - -); diff --git a/packages/components/src/Grid/index.tsx b/packages/components/src/Grid/index.tsx index 9bba132bd..489b360fb 100644 --- a/packages/components/src/Grid/index.tsx +++ b/packages/components/src/Grid/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { forwardRef, ReactNode, Ref } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/GridBase/index.tsx b/packages/components/src/GridBase/index.tsx index 056a84a51..97b093250 100644 --- a/packages/components/src/GridBase/index.tsx +++ b/packages/components/src/GridBase/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { forwardRef, ReactElement, Ref } from 'react'; import classnames from 'clsx'; import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/HelpLinks/index.tsx b/packages/components/src/HelpLinks/index.tsx index 17f2518c7..4f7781173 100644 --- a/packages/components/src/HelpLinks/index.tsx +++ b/packages/components/src/HelpLinks/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; import { Icon } from '../Icon'; diff --git a/packages/components/src/Hero/index.tsx b/packages/components/src/Hero/index.tsx index 582c6a4c1..d9a33ecb1 100644 --- a/packages/components/src/Hero/index.tsx +++ b/packages/components/src/Hero/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { ReactElement } from 'react'; import classnames from 'clsx'; import { LinkButton } from '../LinkButton'; diff --git a/packages/components/src/Icon/index.tsx b/packages/components/src/Icon/index.tsx index a98109d16..01cb2d2ce 100644 --- a/packages/components/src/Icon/index.tsx +++ b/packages/components/src/Icon/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import { icons, IconNames } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/ImageProvider.ts b/packages/components/src/ImageProvider.ts index 124dd8ea6..d6008c2a9 100644 --- a/packages/components/src/ImageProvider.ts +++ b/packages/components/src/ImageProvider.ts @@ -1,4 +1,3 @@ -'use client'; import { createContext, Context, ElementType, useContext } from 'react'; export type ImageProviderValue = ElementType; diff --git a/packages/components/src/Impact/index.tsx b/packages/components/src/Impact/index.tsx index 2f29156d6..32860c322 100644 --- a/packages/components/src/Impact/index.tsx +++ b/packages/components/src/Impact/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/Impacts.tsx b/packages/components/src/Impacts.tsx index af6b6090a..2d5396391 100644 --- a/packages/components/src/Impacts.tsx +++ b/packages/components/src/Impacts.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { Children, cloneElement, ReactElement } from 'react'; import { Grid } from './Grid'; diff --git a/packages/components/src/IsomorphicSuspense.tsx b/packages/components/src/IsomorphicSuspense.tsx index bbc2e0716..4cc03ccaa 100644 --- a/packages/components/src/IsomorphicSuspense.tsx +++ b/packages/components/src/IsomorphicSuspense.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; export function IsomorphicSuspense({ children, fallback }) { diff --git a/packages/components/src/Label/index.tsx b/packages/components/src/Label/index.tsx index e69642248..37dbafd07 100644 --- a/packages/components/src/Label/index.tsx +++ b/packages/components/src/Label/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import { Tooltip, TooltipProps as SaltTooltipProps } from '@salt-ds/core'; diff --git a/packages/components/src/Link/index.tsx b/packages/components/src/Link/index.tsx index 92d54be84..1a3fc8c13 100644 --- a/packages/components/src/Link/index.tsx +++ b/packages/components/src/Link/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { forwardRef, Ref } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/LinkBase/index.tsx b/packages/components/src/LinkBase/index.tsx index 7d9a11a0c..dde976971 100644 --- a/packages/components/src/LinkBase/index.tsx +++ b/packages/components/src/LinkBase/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { forwardRef, Ref } from 'react'; import { useLinkComponent } from '../LinkProvider'; diff --git a/packages/components/src/LinkButton.tsx b/packages/components/src/LinkButton.tsx index 5551a680e..9c1b0c16e 100644 --- a/packages/components/src/LinkButton.tsx +++ b/packages/components/src/LinkButton.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { FC } from 'react'; import classnames from 'clsx'; import { button as buttonStyles } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/LinkProvider.ts b/packages/components/src/LinkProvider.ts index f7cdce692..eff307d09 100644 --- a/packages/components/src/LinkProvider.ts +++ b/packages/components/src/LinkProvider.ts @@ -1,4 +1,3 @@ -'use client'; import { createContext, Context, ElementType, useContext } from 'react'; export type LinkProviderValue = ElementType; diff --git a/packages/components/src/LinkText/index.tsx b/packages/components/src/LinkText/index.tsx index cc8628e87..db8667b99 100644 --- a/packages/components/src/LinkText/index.tsx +++ b/packages/components/src/LinkText/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { forwardRef, isValidElement, ReactNode, Ref } from 'react'; import classnames from 'clsx'; import { Icon, IconProps } from '../Icon'; diff --git a/packages/components/src/Links/index.tsx b/packages/components/src/Links/index.tsx index b5dc3d62b..eb504492f 100644 --- a/packages/components/src/Links/index.tsx +++ b/packages/components/src/Links/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { Children } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/List/index.tsx b/packages/components/src/List/index.tsx index 6fd0abf99..94599e8e1 100644 --- a/packages/components/src/List/index.tsx +++ b/packages/components/src/List/index.tsx @@ -1,4 +1,3 @@ -'use client'; export * from './ListItem'; export * from './OrderedList'; export * from './UnorderedList'; diff --git a/packages/components/src/Markdown/AnchorHeading/__tests__/index.test.tsx b/packages/components/src/Markdown/AnchorHeading/__tests__/index.test.tsx deleted file mode 100644 index b3058cc1e..000000000 --- a/packages/components/src/Markdown/AnchorHeading/__tests__/index.test.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; -import { render, screen } from '@testing-library/react'; -import userEvents from '@testing-library/user-event'; - -import { withAnchorHeading } from '../index'; -import * as Heading from '../../Heading'; - -describe('GIVEN an AnchoredHeading', () => { - describe('WHEN rendered', () => { - test('THEN the Heading is rendered', () => { - // arrange - const TestHeading = withAnchorHeading(Heading.H1); - render(Mosaic Heading); - // assert - expect(screen.getByText('Mosaic Heading')).toBeInTheDocument(); - }); - }); - describe('WHEN clicked', () => { - test('THEN the Heading is copied to the clipboard', async () => { - // arrange - let clipboardData = ''; // initalizing clipboard data so it can be used in testing - const mockClipboard = { - writeText: jest.fn(data => { - clipboardData = data; - }), - readText: jest.fn(() => clipboardData) - }; - (global.navigator as any).clipboard = mockClipboard; - - const TestHeading = withAnchorHeading(Heading.H1); - render( - - Mosaic Heading - - ); - // assert - expect(screen.queryByLabelText('copied anchor link to clipboard')).not.toBeInTheDocument(); - expect( - screen.queryByLabelText('click to copy anchor link to clipboard') - ).not.toBeInTheDocument(); - expect(screen.queryByText('Mosaic Heading')).toBeInTheDocument(); - // act - await userEvents.hover(screen.getByTitle('Mosaic Title')); - // assert - expect(screen.queryByLabelText('copied anchor link to clipboard')).not.toBeInTheDocument(); - expect(screen.queryByLabelText('click to copy anchor link to clipboard')).toBeInTheDocument(); - // act - await userEvents.click(screen.getByTitle('Mosaic Title')); - // assert - expect(screen.queryByLabelText('copied anchor link to clipboard')).toBeInTheDocument(); - expect( - screen.queryByLabelText('click to copy anchor link to clipboard') - ).not.toBeInTheDocument(); - }); - }); -}); diff --git a/packages/components/src/Markdown/AnchorHeading/index.css.ts b/packages/components/src/Markdown/AnchorHeading/index.css.ts deleted file mode 100644 index d320df6bc..000000000 --- a/packages/components/src/Markdown/AnchorHeading/index.css.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { createVar, style } from '@vanilla-extract/css'; -import { backgroundColor, responsiveSprinkles, vars } from '@jpmorganchase/mosaic-theme'; - -export const badgeCopiedHeight = createVar(); -export const badgeCopiedBorderRadius = createVar(); -export const badgeCopiedOffset = createVar(); -export const badgeLinkHeight = createVar(); -export const badgeLinkBorderRadius = createVar(); -export const badgeLinkOffset = createVar(); - -export default { - root: style({ - vars: { - [badgeLinkHeight]: '28px', - [badgeLinkBorderRadius]: '14px', - [badgeLinkOffset]: '-28', - [badgeCopiedHeight]: '28px', - [badgeCopiedBorderRadius]: '36px', - [badgeCopiedOffset]: '-74' - }, - display: 'block' - }), - link: style({ - display: 'inline', - textDecorationLine: 'none', - lineHeight: 'inherit' - }), - badgeContainer: style({ - verticalAlign: 'text-bottom', - position: 'absolute' - }), - badge: style([ - backgroundColor({ variant: 'emphasis' }), - responsiveSprinkles({ - marginLeft: ['x2', 'x2', 'x2', 'x2'], - paddingX: ['x2', 'x2', 'x2', 'x2'], - paddingY: ['x2', 'x2', 'x2', 'x2'] - }), - { - color: vars.color.light.navigable.link.hover, - verticalAlign: 'middle', - display: 'inline-flex', - borderRadius: badgeLinkBorderRadius, - textDecoration: 'none' - } - ]), - badgeLink: style({ - height: badgeLinkHeight, - borderRadius: badgeCopiedBorderRadius, - right: badgeLinkOffset - }), - badgeCopied: style({ - height: badgeCopiedHeight, - borderRadius: badgeCopiedBorderRadius, - right: badgeCopiedOffset - }), - badgeIcon: style({ - color: vars.color.light.navigable.link.hover, - display: 'inline-flex' - }), - badgeLabel: responsiveSprinkles({ - paddingLeft: ['x1', 'x1', 'x1', 'x1'] - }) -}; diff --git a/packages/components/src/Markdown/AnchorHeading/index.tsx b/packages/components/src/Markdown/AnchorHeading/index.tsx deleted file mode 100644 index a2364129e..000000000 --- a/packages/components/src/Markdown/AnchorHeading/index.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React, { useEffect, useRef, useState } from 'react'; -import classnames from 'clsx'; -import { Icon } from '../../Icon'; - -import { Link, LinkProps } from '../../Link'; -import { Caption6, TypographyProps } from '../../Typography'; -import styles from './index.css'; - -export interface AnchorHeadingProps extends React.HTMLProps { - children: React.ReactNode[]; - Component: React.FC>; - LinkProps?: LinkProps; -} - -export const AnchorHeading: React.FC> = ({ - Component, - children, - className, - id, - LinkProps: LinkPropsProp = {}, - ...rest -}) => { - const timerRef = useRef(null); - useEffect( - () => () => { - if (timerRef.current) { - clearTimeout(timerRef.current); - } - }, - [] - ); - - const [hovered, setHovered] = useState(false); - const [copied, setCopied] = useState(false); - - const handleMouseEnter = () => { - setHovered(true); - }; - const handleMouseLeave = () => { - setHovered(false); - }; - const handleMouseClick = event => { - const anchor = event.currentTarget.getAttribute('href'); - navigator.clipboard.writeText(`${window.location.origin}${anchor}`); - setCopied(true); - timerRef.current = setTimeout(() => setCopied(false), 1000); - event.preventDefault(); - }; - - const { link } = LinkPropsProp; - const anchorLink = link || `#${id}`; - return ( -
- - - {children} - - {!copied && hovered ? ( - - - - ) : null} - {copied ? ( - - - - Copied - - - ) : null} - - - -
- ); -}; - -export const withAnchorHeading = Component => props => - ; diff --git a/packages/components/src/Markdown/BlockQuote/index.css.ts b/packages/components/src/Markdown/BlockQuote/index.css.ts deleted file mode 100644 index 2e95f3105..000000000 --- a/packages/components/src/Markdown/BlockQuote/index.css.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { blockquote, watermark } from '@jpmorganchase/mosaic-theme'; - -export default { - root: blockquote({ context: 'markdown' }), - watermark: watermark({ variant: 'blockquote' }) -}; diff --git a/packages/components/src/Markdown/BlockQuote/index.tsx b/packages/components/src/Markdown/BlockQuote/index.tsx deleted file mode 100644 index 34b8d51f5..000000000 --- a/packages/components/src/Markdown/BlockQuote/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; - -import { P2 } from '../../Typography'; -import styles from './index.css'; - -export interface BlockQuoteProps extends React.HTMLProps {} - -export const BlockQuote: React.FC> = ({ - children, - className -}) => { - const rawChildren = - React.isValidElement(children) && children.props ? children.props.children : children; - return ( -
-
- {rawChildren} -
- ); -}; diff --git a/packages/components/src/Markdown/Heading.tsx b/packages/components/src/Markdown/Heading.tsx deleted file mode 100644 index a77965b96..000000000 --- a/packages/components/src/Markdown/Heading.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { heading } from '@jpmorganchase/mosaic-theme'; - -import { withStyledTypography } from '../Typography/withStyledTypography'; - -export const H0 = withStyledTypography( - heading({ variant: 'heading0', context: 'markdown' }), - 'h1', - { role: 'heading' } -); -export const H1 = withStyledTypography( - heading({ variant: 'heading1', context: 'markdown' }), - 'h1', - { role: 'heading' } -); -export const H2 = withStyledTypography( - heading({ variant: 'heading2', context: 'markdown' }), - 'h2', - { role: 'heading' } -); -export const H3 = withStyledTypography( - heading({ variant: 'heading3', context: 'markdown' }), - 'h3', - { role: 'heading' } -); -export const H4 = withStyledTypography( - heading({ variant: 'heading4', context: 'markdown' }), - 'h4', - { role: 'heading' } -); -export const H5 = withStyledTypography( - heading({ variant: 'heading5', context: 'markdown' }), - 'h5', - { role: 'heading' } -); -export const H6 = withStyledTypography( - heading({ variant: 'heading6', context: 'markdown' }), - 'h6', - { role: 'heading' } -); diff --git a/packages/components/src/Markdown/InlineCode.tsx b/packages/components/src/Markdown/InlineCode.tsx deleted file mode 100644 index b068f9a3e..000000000 --- a/packages/components/src/Markdown/InlineCode.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { code } from '@jpmorganchase/mosaic-theme'; - -export interface InlineCodeProps extends React.HTMLProps {} - -export const InlineCode: React.FC> = ({ - className, - ...rest -}) => ; diff --git a/packages/components/src/Markdown/Link.tsx b/packages/components/src/Markdown/Link.tsx deleted file mode 100644 index f10d1de22..000000000 --- a/packages/components/src/Markdown/Link.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; - -import { Link as LinkComponent, LinkProps } from '../Link'; - -export interface MarkdownLinkProps extends LinkProps { - href?: string; -} - -export const Link: React.FC> = ({ href, ...rest }) => ( - -); diff --git a/packages/components/src/Markdown/Pre/index.css.ts b/packages/components/src/Markdown/Pre/index.css.ts deleted file mode 100644 index d3f01eb5e..000000000 --- a/packages/components/src/Markdown/Pre/index.css.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { backgroundColor, foregroundColor, responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -const root = style({ - position: 'relative' -}); - -export default { - button: style({ - top: '0px', - right: '0px', - selectors: { - [`${root} &`]: { - position: 'absolute' - } - } - }), - filename: style([ - backgroundColor({ variant: 'emphasis' }), - foregroundColor({ variant: 'low' }), - responsiveSprinkles({ - paddingLeft: ['x4', 'x4', 'x4', 'x4'] - }) - ]), - pre: style({ - selectors: { - [`${root} &`]: { - fontSize: '85%', - margin: 0, - whiteSpace: 'pre-wrap' - } - } - }), - root -}; diff --git a/packages/components/src/Markdown/Pre/index.tsx b/packages/components/src/Markdown/Pre/index.tsx deleted file mode 100644 index aae3e0d75..000000000 --- a/packages/components/src/Markdown/Pre/index.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import React, { useEffect, useState, useRef } from 'react'; -import classnames from 'clsx'; -import Highlight, { defaultProps as defaultPrismProps } from 'prism-react-renderer'; -import type { Language } from 'prism-react-renderer'; -import { Icon } from '../../Icon'; - -import { Button } from '../../Button'; -import { Link } from '../../Link'; -import { ReactLive } from '../../ReactLive'; -import { P2 } from '../../Typography'; -import styles from './index.css'; - -export type CodeBlockPropsType = { - components?: Record; -}; -export type CodeBlockMeta = { - code?: string; - filename?: string; - language?: Language; - live?: boolean; -}; - -export type PreProps = CodeBlockMeta & - React.HTMLProps & { CodeBlockProps?: CodeBlockPropsType }; - -const httpPattern = /^((http[s]?):\/\/)/; - -/** - * Supported syntax: - * - * ```jsx live - *
I will be live editable!
- * ``` - */ -export const Pre: React.FC> = ({ - children, - className, - code: codeProp = '', - CodeBlockProps, - filename, - language: languageProp, - live, - ...rest -}) => { - const preRef = useRef(null); - const [hovered, setHovered] = useState(false); - - const handleMouseEnter = () => { - setHovered(true); - }; - const handleMouseLeave = () => { - setHovered(false); - }; - const handleClickCopy = () => { - if (preRef.current && preRef.current.textContent) { - navigator.clipboard.writeText(preRef.current.textContent); - } - }; - - let code: string | undefined = codeProp.replace(/
/g, '\n'); - let language: Language | undefined = languageProp; - if (children) { - const codeBlock = (children as React.ReactElement<{ className?: string; children: string }>) - .props; - code = codeBlock.children; - language = codeBlock.className?.replace('language-', '') as Language; - } - - if (typeof code !== 'string') { - return null; - } - - let FilenameElement; - if (!filename) { - FilenameElement = null; - } else if (httpPattern.test(filename)) { - const basename = filename.substring(filename.lastIndexOf('/') + 1); - FilenameElement = ( - - {basename} - - ); - } else { - FilenameElement = {filename}; - } - - // If a language other than JSX or TSX is specified, bail out - const isLive = live && (language === 'tsx' || language === 'jsx'); - - return ( -
-
- {FilenameElement} - {hovered && ( - - )} -
- -
- ); -}; - -const CodeBlock = React.memo( - React.forwardRef< - HTMLPreElement | null, - { isLive?: boolean; code: string; components?: Record; language?: Language } - >(({ code, components, isLive = false, language = '' }, ref) => - isLive ? ( - - {code} - - ) : ( -
-        
-      
- ) - ) -); - -const CodeHighlight: React.FC> = - function CodeHighlight({ code, language }) { - const [isClient, setIsClient] = useState(false); - useEffect(() => { - setIsClient(true); - }, []); - - if (!isClient) { - return null; - } - let trimmedCode = code.replace(/\n+$/, ''); - return ( - - {({ tokens, getLineProps, getTokenProps }) => ( - <> - {tokens.map((line, i) => ( - // eslint-disable-next-line react/jsx-key -
- {line.map((token, key) => ( - // eslint-disable-next-line react/jsx-key - - ))} -
- ))} - - )} -
- ); - }; diff --git a/packages/components/src/Markdown/Table.tsx b/packages/components/src/Markdown/Table.tsx deleted file mode 100644 index e6d2917e5..000000000 --- a/packages/components/src/Markdown/Table.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { table, tableContainer } from '@jpmorganchase/mosaic-theme'; - -export interface TableProps extends React.HTMLProps {} - -export const Table: React.FC> = ({ className, ...rest }) => ( -
- - -); diff --git a/packages/components/src/Markdown/Tbody.tsx b/packages/components/src/Markdown/Tbody.tsx deleted file mode 100644 index b6a630286..000000000 --- a/packages/components/src/Markdown/Tbody.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { tbody } from '@jpmorganchase/mosaic-theme'; - -export interface TbodyProps extends React.HTMLProps {} - -export const Tbody: React.FC> = ({ className, ...rest }) => ( - -); diff --git a/packages/components/src/Markdown/Td.tsx b/packages/components/src/Markdown/Td.tsx deleted file mode 100644 index d889e2c27..000000000 --- a/packages/components/src/Markdown/Td.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { td } from '@jpmorganchase/mosaic-theme'; - -export interface TdProps extends React.HTMLProps {} - -export const Td: React.FC> = ({ className, ...rest }) => ( - -); diff --git a/packages/components/src/Markdown/ThematicBreak/index.css.ts b/packages/components/src/Markdown/ThematicBreak/index.css.ts deleted file mode 100644 index 745dac577..000000000 --- a/packages/components/src/Markdown/ThematicBreak/index.css.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { thematicBreak } from '@jpmorganchase/mosaic-theme'; - -export default { - root: thematicBreak({}) -}; diff --git a/packages/components/src/Markdown/ThematicBreak/index.tsx b/packages/components/src/Markdown/ThematicBreak/index.tsx deleted file mode 100644 index 8d93e6d2a..000000000 --- a/packages/components/src/Markdown/ThematicBreak/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; - -import styles from './index.css'; - -export interface ThematicBreakProps extends React.HTMLProps {} - -export const ThematicBreak: React.FC> = ({ - className -}) =>
; diff --git a/packages/components/src/Markdown/Tr.tsx b/packages/components/src/Markdown/Tr.tsx deleted file mode 100644 index 1d4cf1332..000000000 --- a/packages/components/src/Markdown/Tr.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { tr } from '@jpmorganchase/mosaic-theme'; - -export interface TrProps extends React.HTMLProps {} - -export const Tr: React.FC> = ({ className, ...rest }) => ( -
-); diff --git a/packages/components/src/Markdown/__tests__/Heading.test.tsx b/packages/components/src/Markdown/__tests__/Heading.test.tsx deleted file mode 100644 index 3a8d87733..000000000 --- a/packages/components/src/Markdown/__tests__/Heading.test.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; -import { render, screen } from '@testing-library/react'; - -import * as Heading from '../Heading'; - -describe('GIVEN a Heading', () => { - test('THEN a H0 can be rendered', () => { - // arrange - render(H0); - // assert - expect(screen.getByText('H0')).toBeInTheDocument(); - expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument(); - }); - test('THEN a H1 can be rendered', () => { - // arrange - render(H1); - // assert - expect(screen.getByText('H1')).toBeInTheDocument(); - expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument(); - }); - test('THEN a H1 can be rendered', () => { - // arrange - render(H2); - // assert - expect(screen.getByText('H2')).toBeInTheDocument(); - expect(screen.getByRole('heading', { level: 2 })).toBeInTheDocument(); - }); - test('THEN a H3 can be rendered', () => { - // arrange - render(H3); - // assert - expect(screen.getByText('H3')).toBeInTheDocument(); - expect(screen.getByRole('heading', { level: 3 })).toBeInTheDocument(); - }); - test('THEN a H4 can be rendered', () => { - // arrange - render(H4); - // assert - expect(screen.getByText('H4')).toBeInTheDocument(); - expect(screen.getByRole('heading', { level: 4 })).toBeInTheDocument(); - }); - test('THEN a H5 can be rendered', () => { - // arrange - render(H5); - // assert - expect(screen.getByText('H5')).toBeInTheDocument(); - expect(screen.getByRole('heading', { level: 5 })).toBeInTheDocument(); - }); - test('THEN a H6 can be rendered', () => { - // arrange - render(H6); - // assert - expect(screen.getByText('H6')).toBeInTheDocument(); - expect(screen.getByRole('heading', { level: 6 })).toBeInTheDocument(); - }); -}); diff --git a/packages/components/src/Markdown/index.tsx b/packages/components/src/Markdown/index.tsx deleted file mode 100644 index ea7c7a839..000000000 --- a/packages/components/src/Markdown/index.tsx +++ /dev/null @@ -1,211 +0,0 @@ -'use client'; -import type { Ref } from 'react'; -import { - action, - amount, - caption, - eyebrow, - heading, - paragraph, - subtitle, - watermark -} from '@jpmorganchase/mosaic-theme'; -import { Icon, IconProps } from '../Icon'; -import { getMarkdownElements } from './markdownElements'; -import { Accordion, AccordionSection, AccordionDetails, AccordionSummary } from '../Accordion'; -import type { AccordionProps } from '../Accordion'; -import { AudioPlayer } from '../AudioPlayer'; -import { Button } from '../Button'; -import { Callout } from '../Callout'; -import type { CalloutProps } from '../Callout'; -import { Card } from '../Card'; -import type { CardProps } from '../Card'; -import { Cards } from '../Cards'; -import type { CardsProps } from '../Cards'; -import { ComponentExample } from '../ComponentExample'; -import type { ComponentExampleProps } from '../ComponentExample'; -import { DataTable } from '../DataTable'; -import type { DataTableProps } from '../DataTable'; -import { Feature, FeatureActions, FeatureContent, FeatureTitle, FeatureEyebrow } from '../Feature'; -import type { FeatureProps } from '../Feature'; -import type { FeaturesProps } from '../Features'; -import { Features } from '../Features'; -import { - FilterDropdown, - FilterPillGroup, - FilterSearch, - FilterSortDropdown, - FilterToolbar -} from '../FilterToolbar'; -import type { - FilterDropdownProps, - FilterPillGroupProps, - FilterSearchProps, - FilterSortDropdownProps, - FilterToolbarProps -} from '../FilterToolbar'; -import { FilterNoResults, FilterResultCount, FilterView } from '../FilterView'; -import type { FilterViewProps, FilterResultCountProps, FilterNoResultsProps } from '../FilterView'; -import { HelpLinks } from '../HelpLinks'; -import type { HelpLinksProps } from '../HelpLinks'; -import { Hero } from '../Hero'; -import { Impact } from '../Impact'; -import type { ImpactProps } from '../Impact'; -import { Impacts } from '../Impacts'; -import type { ImpactsProps } from '../Impacts'; -import { Label } from '../Label'; -import type { LabelProps } from '../Label'; -import { Link } from '../Link'; -import { LinkBase, LinkBaseProps } from '../LinkBase'; -import { LinkText, LinkTextProps } from '../LinkText'; -import { Links } from '../Links'; -import type { LinksProps } from '../Links'; -import { Tag } from '../Tag'; -import type { TagProps } from '../Tag'; -import { EditionFilterView } from '../EditionFilterView'; -import type { EditionTileLinkProps } from '../EditionTileLink'; -import { EditionTileLink } from '../EditionTileLink'; -import { GridBase } from '../GridBase'; -import type { GridBaseProps } from '../GridBase'; -import { Grid } from '../Grid'; -import type { GridProps } from '../Grid'; -import { PageFilterView } from '../PageFilterView'; -import { SecondaryNavbar } from '../SecondaryNavbar'; -import type { SecondaryNavbarProps } from '../SecondaryNavbar'; -import { SectionHeading } from '../SectionHeading'; -import { StickyHeader } from '../StickyHeader'; -import { Story } from '../Story'; -import type { StoryProps } from '../Story'; -import { TabsBase } from '../TabsBase'; -import { Tabs, Tab } from '../Tabs'; -import type { TabsProps } from '../Tabs'; -import { Tiles } from '../Tiles'; -import type { TilesProps } from '../Tiles'; -import { TileBase } from '../TileBase'; -import type { TileBaseProps } from '../TileBase'; -import { TileButton } from '../TileButton'; -import type { TileButtonProps } from '../TileButton'; -import { TileContent } from '../TileContent'; -import type { TileContentProps } from '../TileContent'; -import { TileContentLabel } from '../TileContentLabel'; -import type { TileContentLabelProps } from '../TileContentLabel'; -import { TileLink } from '../TileLink'; -import type { TileLinkProps } from '../TileLink'; -import { VideoPlayer } from '../VideoPlayer'; -import { ViewStack, View } from '../ViewStack'; -import type { ViewStackProps } from '../ViewStack'; -import { withStyledTypography } from '../Typography/withStyledTypography'; -import { withMarkdownSpacing } from './withMarkdownSpacing'; -import { ListItem, OrderedList, UnorderedList } from '../List'; -import type { ListItemProps, OrderedListProps, UnOrderedListProps } from '../List'; -import { LinkButton, LinkButtonProps } from '../LinkButton'; - -export { getMarkdownElements } from './markdownElements'; - -export { withMarkdownSpacing } from './withMarkdownSpacing'; -export * from './Pre'; - -const markdownElements = getMarkdownElements(); -export const getMarkdownComponents = () => ({ - Accordion: withMarkdownSpacing(Accordion), - AccordionDetails, - AccordionSection, - AccordionSummary, - AudioPlayer, - Button, - Callout: withMarkdownSpacing(Callout), - Card: withMarkdownSpacing(Card), - Cards: withMarkdownSpacing(Cards), - ComponentExample: withMarkdownSpacing(ComponentExample), - DataTable: withMarkdownSpacing & { ref?: Ref }>(DataTable), - EditionFilterView, - EditionTileLink: withMarkdownSpacing(EditionTileLink), - Feature: withMarkdownSpacing(Feature), - FeatureActions, - FeatureContent, - FeatureEyebrow, - FeatureTitle, - Features: withMarkdownSpacing(Features), - FilterView: withMarkdownSpacing>(FilterView), - FilterDropdown: withMarkdownSpacing(FilterDropdown), - FilterToolbar: withMarkdownSpacing(FilterToolbar), - FilterNoResults: withMarkdownSpacing(FilterNoResults), - FilterPillGroup: withMarkdownSpacing(FilterPillGroup), - FilterSortDropdown: withMarkdownSpacing(FilterSortDropdown), - FilterSearch: withMarkdownSpacing(FilterSearch), - FilterResultCount: withMarkdownSpacing(FilterResultCount), - Grid: withMarkdownSpacing(Grid), - GridBase: withMarkdownSpacing(GridBase), - Hero, - HelpLinks: withMarkdownSpacing(HelpLinks), - Icon: withMarkdownSpacing(Icon, 'regular', true), - Impact: withMarkdownSpacing(Impact), - Impacts: withMarkdownSpacing(Impacts), - Label: withMarkdownSpacing(Label), - Link, - LinkBase: withMarkdownSpacing(LinkBase), - LinkButton: withMarkdownSpacing(LinkButton), - LinkText: withMarkdownSpacing(LinkText), - Links: withMarkdownSpacing(Links), - ListItem: withMarkdownSpacing(ListItem), - OrderedList: withMarkdownSpacing(OrderedList), - PageFilterView, - Tag: withMarkdownSpacing(Tag), - SecondaryNavbar: withMarkdownSpacing(SecondaryNavbar), - SectionHeading, - StickyHeader, - Story: withMarkdownSpacing(Story), - Tabs: withMarkdownSpacing(Tabs), - Tab, - TabsBase, - Tiles: withMarkdownSpacing(Tiles), - TileBase: withMarkdownSpacing(TileBase), - TileButton: withMarkdownSpacing(TileButton), - TileContent: withMarkdownSpacing(TileContent), - TileContentLabel: withMarkdownSpacing(TileContentLabel), - TileLink: withMarkdownSpacing(TileLink), - UnorderedList: withMarkdownSpacing(UnorderedList), - ViewStack: withMarkdownSpacing>(ViewStack), - VideoPlayer, - View, - Action1: withStyledTypography(action({ variant: 'action1', context: 'markdown' })), - Action2: withStyledTypography(action({ variant: 'action2', context: 'markdown' })), - Action3: withStyledTypography(action({ variant: 'action3', context: 'markdown' })), - Action4: withStyledTypography(action({ variant: 'action4', context: 'markdown' })), - Action5: withStyledTypography(action({ variant: 'action5', context: 'markdown' })), - Action6: withStyledTypography(action({ variant: 'action6', context: 'markdown' })), - Action7: withStyledTypography(action({ variant: 'action7', context: 'markdown' })), - Action8: withStyledTypography(action({ variant: 'action8', context: 'markdown' })), - Caption1: withStyledTypography(caption({ variant: 'caption1', context: 'markdown' })), - Caption2: withStyledTypography(caption({ variant: 'caption2', context: 'markdown' })), - Caption3: withStyledTypography(caption({ variant: 'caption3', context: 'markdown' })), - Caption4: withStyledTypography(caption({ variant: 'caption4', context: 'markdown' })), - Caption5: withStyledTypography(caption({ variant: 'caption5', context: 'markdown' })), - Caption6: withStyledTypography(caption({ variant: 'caption6', context: 'markdown' })), - Hr: markdownElements.hr, - H0: withStyledTypography(heading({ variant: 'heading0', context: 'markdown' }), 'h1'), - H1: markdownElements.h1, - H2: markdownElements.h2, - H3: markdownElements.h3, - H4: markdownElements.h4, - H5: markdownElements.h5, - H6: markdownElements.h6, - P1: markdownElements.p, - P2: withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })), - P3: withStyledTypography(paragraph({ variant: 'paragraph3', context: 'markdown' })), - P4: withStyledTypography(paragraph({ variant: 'paragraph4', context: 'markdown' })), - P5: withStyledTypography(paragraph({ variant: 'paragraph5', context: 'markdown' })), - P6: withStyledTypography(paragraph({ variant: 'paragraph6', context: 'markdown' })), - Subtitle1: withStyledTypography(subtitle({ variant: 'subtitle1', context: 'markdown' })), - Subtitle2: withStyledTypography(subtitle({ variant: 'subtitle2', context: 'markdown' })), - Subtitle3: withStyledTypography(subtitle({ variant: 'subtitle3', context: 'markdown' })), - Subtitle4: withStyledTypography(subtitle({ variant: 'subtitle4', context: 'markdown' })), - Subtitle5: withStyledTypography(subtitle({ variant: 'subtitle5', context: 'markdown' })), - Subtitle6: withStyledTypography(subtitle({ variant: 'subtitle6', context: 'markdown' })), - Amount: withStyledTypography(amount({ context: 'markdown' })), - Eyebrow: withStyledTypography(eyebrow({ context: 'markdown' })), - Watermark: withStyledTypography(watermark({ context: 'markdown' })), - Emphasis: markdownElements.em, - Strong: markdownElements.strong, - ...markdownElements -}); diff --git a/packages/components/src/Markdown/markdownElements.tsx b/packages/components/src/Markdown/markdownElements.tsx deleted file mode 100644 index fc79f39a5..000000000 --- a/packages/components/src/Markdown/markdownElements.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { emphasis, link, paragraph } from '@jpmorganchase/mosaic-theme'; - -import { withAnchorHeading } from './AnchorHeading'; -import { BlockQuote } from './BlockQuote'; -import * as Heading from './Heading'; -import { ListItem, OrderedList, UnorderedList } from '../List'; -import { InlineCode } from './InlineCode'; -import { Link } from './Link'; -import { Pre } from './Pre'; -import { Table } from './Table'; -import { Tbody } from './Tbody'; -import { Thead } from './Thead'; -import { Th } from './Th'; -import { Td } from './Td'; -import { Tr } from './Tr'; -import { withStyledTypography } from '../Typography/withStyledTypography'; -import { withMarkdownSpacing } from './withMarkdownSpacing'; -import { ThematicBreak } from './ThematicBreak'; - -export const getMarkdownElements = () => ({ - a: withMarkdownSpacing(Link, link({ context: 'markdown', variant: 'document' })), - blockquote: withMarkdownSpacing(BlockQuote), - code: withMarkdownSpacing(InlineCode), - ol: withMarkdownSpacing(OrderedList), - ul: withMarkdownSpacing(UnorderedList), - li: withMarkdownSpacing(ListItem, 'none'), - hr: ThematicBreak, - h1: withAnchorHeading(Heading.H1), - h2: withAnchorHeading(Heading.H2), - h3: withAnchorHeading(Heading.H3), - h4: withAnchorHeading(Heading.H4), - h5: withAnchorHeading(Heading.H5), - h6: withAnchorHeading(Heading.H6), - p: withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })), - pre: withMarkdownSpacing(Pre), - Pre: withMarkdownSpacing(Pre), - inlineCode: withMarkdownSpacing(InlineCode, 'none'), - table: withMarkdownSpacing(Table), - Table: withMarkdownSpacing(Table), - tbody: withMarkdownSpacing(Tbody, 'none'), - Tbody: withMarkdownSpacing(Tbody, 'none'), - thead: withMarkdownSpacing(Thead, 'none'), - Thead: withMarkdownSpacing(Thead, 'none'), - th: withMarkdownSpacing(Th, 'none'), - Th: withMarkdownSpacing(Th, 'none'), - td: withMarkdownSpacing(Td, 'none'), - Td: withMarkdownSpacing(Td, 'none'), - tr: withMarkdownSpacing(Tr, 'none'), - Tr: withMarkdownSpacing(Tr, 'none'), - em: withStyledTypography(emphasis({ variant: 'regular', context: 'markdown' }), 'span'), - strong: withStyledTypography(emphasis({ variant: 'strong', context: 'markdown' }), 'span') -}); diff --git a/packages/components/src/Markdown/withMarkdownSpacing/index.tsx b/packages/components/src/Markdown/withMarkdownSpacing/index.tsx deleted file mode 100644 index cd17f9b35..000000000 --- a/packages/components/src/Markdown/withMarkdownSpacing/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import hoistNonReactStatics from 'hoist-non-react-statics'; - -import styles from './styles.css'; - -export interface MarkdownComponentProps { - /** Additional class name for root class override */ - className?: string; - /** Spacing */ - spacing?: 'none' | 'regular'; - /** Whether element is inline */ - inline?: boolean; -} - -export function withMarkdownSpacing( - Component: React.ComponentType>, - spacing = 'regular', - inline = false -): React.FC> { - const MarkdownComponent: React.FC> = ({ - className = '', - spacing: spacingProp, - ...rest - }) => ( - - ); - hoistNonReactStatics(MarkdownComponent, Component); - return MarkdownComponent; -} diff --git a/packages/components/src/Markdown/withMarkdownSpacing/styles.css.ts b/packages/components/src/Markdown/withMarkdownSpacing/styles.css.ts deleted file mode 100644 index f2ce965b7..000000000 --- a/packages/components/src/Markdown/withMarkdownSpacing/styles.css.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -export default { - none: responsiveSprinkles({ marginTop: ['none', 'none', 'none', 'none'] }), - regular: responsiveSprinkles({ marginTop: ['x6', 'x6', 'x6', 'x6'] }), - inline: responsiveSprinkles({ paddingLeft: ['x1', 'x1', 'x1', 'x1'] }) -}; diff --git a/packages/components/src/PageFilterView/index.tsx b/packages/components/src/PageFilterView/index.tsx index fa82ec469..7ecc06871 100644 --- a/packages/components/src/PageFilterView/index.tsx +++ b/packages/components/src/PageFilterView/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import { TileContentLabel } from '../TileContentLabel'; diff --git a/packages/components/src/ReactLive/index.tsx b/packages/components/src/ReactLive/index.tsx deleted file mode 100644 index 044af8f0d..000000000 --- a/packages/components/src/ReactLive/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -'use client'; -import React, { useState } from 'react'; -import classnames from 'clsx'; -import { Switch } from '@salt-ds/lab'; - -import { ComponentExample } from '../ComponentExample'; -import { getMarkdownComponents } from '../Markdown'; -import { IsomorphicSuspense } from '../IsomorphicSuspense'; -import styles from './styles.css'; - -type ReactLiveProps = { - /** Contents */ - children: string; - /** className determines the type of language flagged in the MD codeblock */ - className: string; - /** Scope (including components) for live editor */ - scope?: Record; -}; - -const LazyPreviewComponent = React.lazy(() => - import('react-live').then(reactLive => ({ - default: ({ className, codeString, scope }) => ( - - ) - })) -); - -function PreviewComponent({ - codeString, - className, - scope = getMarkdownComponents(), - LiveProvider, - LiveEditor, - LiveError, - LivePreview: ReactLivePreview -}) { - const [hidden, setHidden] = useState(true); - - return ( - - `${code.replace(/import(?:["'\s]*([\w*{}\n, ]+)from\s*)["'\s]*([@\w/_-]+)["'\s]*;?/gm, '')}` - } - > -
- - - -
-
- setHidden(!hidden)} /> -
-
- - {hidden ? null : } -
-
- ); -} - -export const ReactLive: React.FC = ({ children: codeString, className, scope }) => ( - - - -); diff --git a/packages/components/src/ReactLive/styles.css.ts b/packages/components/src/ReactLive/styles.css.ts deleted file mode 100644 index f18b2781e..000000000 --- a/packages/components/src/ReactLive/styles.css.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { responsiveSprinkles, vars } from '@jpmorganchase/mosaic-theme'; - -const root = style({}); - -export default { - root, - liveError: style([ - { - backgroundColor: 'red', - color: 'white' - }, - responsiveSprinkles({ - marginBottom: ['none', 'none', 'none', 'none'], - padding: ['x4', 'x4', 'x4', 'x4'] - }) - ]), - liveEditor: style([{ backgroundColor: 'black', color: 'white', overflow: 'scroll' }]), - showLiveCodeContainer: style({ - position: 'relative' - }), - showLiveCode: style({ - right: vars.space.horizontal.x4, - bottom: '0px', - position: 'absolute', - lineHeight: 'initial' - }) -}; diff --git a/packages/components/src/SecondaryNavbar/index.tsx b/packages/components/src/SecondaryNavbar/index.tsx index ec38159fe..3d638001c 100644 --- a/packages/components/src/SecondaryNavbar/index.tsx +++ b/packages/components/src/SecondaryNavbar/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; import findLastIndex from 'lodash/findLastIndex'; diff --git a/packages/components/src/SectionHeading/index.tsx b/packages/components/src/SectionHeading/index.tsx index 99a1ed172..68d1ce64e 100644 --- a/packages/components/src/SectionHeading/index.tsx +++ b/packages/components/src/SectionHeading/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/StickyHeader/index.tsx b/packages/components/src/StickyHeader/index.tsx index 07cc95f55..1b5b4017b 100644 --- a/packages/components/src/StickyHeader/index.tsx +++ b/packages/components/src/StickyHeader/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { useRef, useState, useEffect, FC } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/Story/index.tsx b/packages/components/src/Story/index.tsx index d8a4d3796..62f25b77c 100644 --- a/packages/components/src/Story/index.tsx +++ b/packages/components/src/Story/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/Tabs/index.tsx b/packages/components/src/Tabs/index.tsx index d144bf89a..3e1df1d4d 100644 --- a/packages/components/src/Tabs/index.tsx +++ b/packages/components/src/Tabs/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/TabsBase/index.ts b/packages/components/src/TabsBase/index.ts index 70bfb6c92..57c791f64 100644 --- a/packages/components/src/TabsBase/index.ts +++ b/packages/components/src/TabsBase/index.ts @@ -1,4 +1,3 @@ -'use client'; export * from './TabsBase'; export * from './TabsButton'; export * from './TabsLink'; diff --git a/packages/components/src/Tag/index.tsx b/packages/components/src/Tag/index.tsx index b429787cb..9101cfbd5 100644 --- a/packages/components/src/Tag/index.tsx +++ b/packages/components/src/Tag/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; import { Icon } from '../Icon'; diff --git a/packages/components/src/ThemeProvider.tsx b/packages/components/src/ThemeProvider.tsx index d468af063..8bf03d635 100644 --- a/packages/components/src/ThemeProvider.tsx +++ b/packages/components/src/ThemeProvider.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { ReactNode, useEffect, useState } from 'react'; import { SaltProvider } from '@salt-ds/core'; import { useColorMode } from '@jpmorganchase/mosaic-store'; diff --git a/packages/components/src/TileBase/index.ts b/packages/components/src/TileBase/index.ts index a5b450699..1d4da24c4 100644 --- a/packages/components/src/TileBase/index.ts +++ b/packages/components/src/TileBase/index.ts @@ -1,3 +1,2 @@ -'use client'; export * from './TileBase'; export * from './TileStateProvider'; diff --git a/packages/components/src/TileButton/index.tsx b/packages/components/src/TileButton/index.tsx index 3418def2b..61234a051 100644 --- a/packages/components/src/TileButton/index.tsx +++ b/packages/components/src/TileButton/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { FC, Ref, forwardRef } from 'react'; import { TileBase, TileBaseProps, useTileState } from '../TileBase'; diff --git a/packages/components/src/TileContent/index.tsx b/packages/components/src/TileContent/index.tsx index 8eff10408..f9dc10c40 100644 --- a/packages/components/src/TileContent/index.tsx +++ b/packages/components/src/TileContent/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { FC, forwardRef, ReactNode, Ref } from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/TileContentLabel/index.tsx b/packages/components/src/TileContentLabel/index.tsx index d37b8a2df..101b91bb3 100644 --- a/packages/components/src/TileContentLabel/index.tsx +++ b/packages/components/src/TileContentLabel/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; diff --git a/packages/components/src/TileLink/index.tsx b/packages/components/src/TileLink/index.tsx index f72221c61..3fcdad8ef 100644 --- a/packages/components/src/TileLink/index.tsx +++ b/packages/components/src/TileLink/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { FC, Ref, forwardRef } from 'react'; import { TileBase, TileBaseProps, useTileState } from '../TileBase'; diff --git a/packages/components/src/Tiles.tsx b/packages/components/src/Tiles.tsx index 1e3268195..539800db2 100644 --- a/packages/components/src/Tiles.tsx +++ b/packages/components/src/Tiles.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { FC, forwardRef, ReactElement, Ref } from 'react'; import { TileBaseProps } from './TileBase'; diff --git a/packages/components/src/Typography/index.tsx b/packages/components/src/Typography/index.tsx index f8cab2f57..878505976 100644 --- a/packages/components/src/Typography/index.tsx +++ b/packages/components/src/Typography/index.tsx @@ -1,4 +1,3 @@ -'use client'; import { action, amount, @@ -12,6 +11,7 @@ import { } from '@jpmorganchase/mosaic-theme'; import { withStyledTypography } from './withStyledTypography'; +export { withStyledTypography } from './withStyledTypography'; export const Action1 = withStyledTypography(action({ variant: 'action1' })); export const Action2 = withStyledTypography(action({ variant: 'action2' })); diff --git a/packages/components/src/VideoPlayer/index.tsx b/packages/components/src/VideoPlayer/index.tsx index 18fb0f143..15b41c347 100644 --- a/packages/components/src/VideoPlayer/index.tsx +++ b/packages/components/src/VideoPlayer/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { useState, useEffect, useCallback } from 'react'; import { Spinner } from '@salt-ds/core'; import { ButtonBar, OrderedButton, Slider } from '@salt-ds/lab'; diff --git a/packages/components/src/ViewStack/index.tsx b/packages/components/src/ViewStack/index.tsx index 4fa80906d..38fa735d3 100644 --- a/packages/components/src/ViewStack/index.tsx +++ b/packages/components/src/ViewStack/index.tsx @@ -1,3 +1,2 @@ -'use client'; export * from './ViewStack'; export * from './View'; diff --git a/packages/components/src/__tests__/ReactLive.test.tsx b/packages/components/src/__tests__/ReactLive.test.tsx deleted file mode 100644 index b36592c3e..000000000 --- a/packages/components/src/__tests__/ReactLive.test.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { fireEvent, render, screen, waitFor } from '@testing-library/react'; -import { ReactLive } from '../ReactLive'; - -describe('GIVEN a ReactLive view', () => - it('THEN it should render code in a live view', async () => { - // arrange - const { getAllByRole } = render({'

Hello World

'}
); - - // assert - await waitFor(() => { - expect(screen.getByText('Show Live Code')).toBeInTheDocument(); - expect(screen.getByText('Hello World')).toBeInTheDocument(); - }); - // act - const showLiveCode = screen.getByText('Show Live Code'); - fireEvent.click(showLiveCode); - - // assert - expect(getAllByRole('textbox')[0]).toHaveAttribute('class', 'liveEditor'); - })); diff --git a/packages/components/src/index.tsx b/packages/components/src/index.tsx index 20eac19ff..79a2bff74 100644 --- a/packages/components/src/index.tsx +++ b/packages/components/src/index.tsx @@ -13,7 +13,6 @@ export * from './Feature'; export * from './Features'; export * from './FilterToolbar'; export * from './FilterView'; -export * from './FormattedContent'; export * from './Grid'; export * from './GridBase'; export * from './HelpLinks'; @@ -22,6 +21,7 @@ export * from './Icon'; export * from './ImageProvider'; export * from './Impact'; export * from './Impacts'; +export * from './IsomorphicSuspense'; export * from './Label'; export * from './Link'; export * from './LinkBase'; @@ -30,9 +30,7 @@ export * from './LinkProvider'; export * from './Links'; export * from './LinkText'; export * from './List'; -export * from './Markdown'; export * from './PageFilterView'; -export * from './ReactLive'; export * from './SecondaryNavbar'; export * from './SectionHeading'; export * from './StickyHeader'; diff --git a/packages/components/src/styles.ts b/packages/components/src/styles.ts index 6b225edfa..b4a3d5605 100644 --- a/packages/components/src/styles.ts +++ b/packages/components/src/styles.ts @@ -27,11 +27,6 @@ import './Impact/styles.css'; import './Link/styles.css'; import './LinkText/styles.css'; import './Links/styles.css'; -import './Markdown/AnchorHeading/index.css'; -import './Markdown/BlockQuote/index.css'; -import './Markdown/Pre/index.css'; -import './Markdown/withMarkdownSpacing/styles.css'; -import './ReactLive/styles.css'; import './SecondaryNavbar/styles.css'; import './SectionHeading/styles.css'; import './StickyHeader/styles.css'; diff --git a/packages/components/src/useBreakpoint.ts b/packages/components/src/useBreakpoint.ts index 7f6df048e..0f536253a 100644 --- a/packages/components/src/useBreakpoint.ts +++ b/packages/components/src/useBreakpoint.ts @@ -1,4 +1,3 @@ -'use client'; import { useState, useLayoutEffect, useEffect } from 'react'; import { breakpoint as breakpoints } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/useLockBodyScroll.ts b/packages/components/src/useLockBodyScroll.ts index 2a62f9bc9..db5f02971 100644 --- a/packages/components/src/useLockBodyScroll.ts +++ b/packages/components/src/useLockBodyScroll.ts @@ -1,4 +1,3 @@ -'use client'; /** * Copyright (c) Facebook, Inc. and its affiliates. * diff --git a/packages/components/src/useOutsideClick.ts b/packages/components/src/useOutsideClick.ts index db0b95538..dc083e145 100644 --- a/packages/components/src/useOutsideClick.ts +++ b/packages/components/src/useOutsideClick.ts @@ -1,4 +1,3 @@ -'use client'; import { RefObject, useEffect, useRef } from 'react'; export const useOutsideClick: ( triggerRef: RefObject, diff --git a/packages/components/src/useSize.ts b/packages/components/src/useSize.ts index 50da3c72f..b35372e46 100644 --- a/packages/components/src/useSize.ts +++ b/packages/components/src/useSize.ts @@ -1,4 +1,3 @@ -'use client'; import { useState, useLayoutEffect, useEffect } from 'react'; import throttle from 'lodash/throttle'; diff --git a/packages/components/src/useSpacing.ts b/packages/components/src/useSpacing.ts index 3917cdcb6..2aadf1c05 100644 --- a/packages/components/src/useSpacing.ts +++ b/packages/components/src/useSpacing.ts @@ -1,4 +1,3 @@ -'use client'; import { GutterTop } from './common/types'; const multiplierAliases: { [key: string]: number } = { diff --git a/packages/components/src/utils/index.ts b/packages/components/src/utils/index.ts index 17b306661..d55bb32b3 100644 --- a/packages/components/src/utils/index.ts +++ b/packages/components/src/utils/index.ts @@ -1,2 +1 @@ -'use client'; export { hasProtocol } from './hasProtocol'; From 2b78e3c5770487c45a8007f4269d888de60cc2e2 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Mon, 19 Jun 2023 12:14:12 +0100 Subject: [PATCH 10/36] move mdx export from `@jpmorganchase/mosaic-site-components` to `@jpmorganchase/mosaic-components-server` --- packages/components-labs/src/index.ts | 11 +--------- .../site-components/src/AppHeader/index.ts | 1 + .../site-components/src/BackLink/index.tsx | 1 + .../site-components/src/BaseUrlProvider.tsx | 1 + .../src/Breadcrumbs/Breadcrumb.tsx | 1 + .../site-components/src/Breadcrumbs/index.ts | 1 + .../site-components/src/DocPaginator/index.ts | 1 + packages/site-components/src/Footer/index.ts | 1 + packages/site-components/src/HTMLView.tsx | 2 ++ packages/site-components/src/Home/index.tsx | 1 + packages/site-components/src/Image/index.tsx | 1 + packages/site-components/src/Link.tsx | 1 + packages/site-components/src/Metadata.tsx | 1 + .../site-components/src/PageNavigation.tsx | 1 + .../site-components/src/UserProfile/index.tsx | 1 + .../src/VerticalNavigation.tsx | 1 + packages/site-components/src/index.tsx | 2 -- packages/site-components/src/mdx.tsx | 22 ------------------- 18 files changed, 17 insertions(+), 34 deletions(-) delete mode 100644 packages/site-components/src/mdx.tsx diff --git a/packages/components-labs/src/index.ts b/packages/components-labs/src/index.ts index a9b2953f2..e2efa0e51 100644 --- a/packages/components-labs/src/index.ts +++ b/packages/components-labs/src/index.ts @@ -1,13 +1,4 @@ -import { withMarkdownSpacing } from '@jpmorganchase/mosaic-components'; -import { Diagram } from './Diagram'; -import { Sitemap } from './Sitemap'; -import type { SitemapProps } from './Sitemap'; -import type { DiagramProps } from './Diagram'; +'use client'; export * from './Diagram'; export * from './Sitemap'; - -export const getLabMarkdownComponents = () => ({ - Diagram: withMarkdownSpacing(Diagram), - Sitemap: withMarkdownSpacing(Sitemap) -}); diff --git a/packages/site-components/src/AppHeader/index.ts b/packages/site-components/src/AppHeader/index.ts index dc1ce3b80..092ba6aec 100644 --- a/packages/site-components/src/AppHeader/index.ts +++ b/packages/site-components/src/AppHeader/index.ts @@ -1,3 +1,4 @@ +'use client'; import { withAppHeaderAdapter } from './withAppHeaderAdapter'; import { AppHeader as OriginalAppHeader } from './AppHeader'; diff --git a/packages/site-components/src/BackLink/index.tsx b/packages/site-components/src/BackLink/index.tsx index e333640fb..c1dc9c889 100644 --- a/packages/site-components/src/BackLink/index.tsx +++ b/packages/site-components/src/BackLink/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import { Action6, Link } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/BaseUrlProvider.tsx b/packages/site-components/src/BaseUrlProvider.tsx index 79a895fb4..b52350551 100644 --- a/packages/site-components/src/BaseUrlProvider.tsx +++ b/packages/site-components/src/BaseUrlProvider.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { createContext, Context, useContext } from 'react'; import { hasProtocol } from '@jpmorganchase/mosaic-components'; import { useRoute } from '@jpmorganchase/mosaic-store'; diff --git a/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx b/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx index e8ade21d9..9391eb886 100644 --- a/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx +++ b/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { forwardRef, ReactNode } from 'react'; import { Link } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/Breadcrumbs/index.ts b/packages/site-components/src/Breadcrumbs/index.ts index f9c87f55e..b1601227e 100644 --- a/packages/site-components/src/Breadcrumbs/index.ts +++ b/packages/site-components/src/Breadcrumbs/index.ts @@ -1,3 +1,4 @@ +'use client'; import { withBreadcrumbsAdapter } from './withBreadcrumbsAdapter'; import { Breadcrumbs as OriginalBreadcrumbs } from './Breadcrumbs'; diff --git a/packages/site-components/src/DocPaginator/index.ts b/packages/site-components/src/DocPaginator/index.ts index 78fe6cd07..0462be571 100644 --- a/packages/site-components/src/DocPaginator/index.ts +++ b/packages/site-components/src/DocPaginator/index.ts @@ -1,3 +1,4 @@ +'use client'; import { withNavigationAdapter } from './withNavigationAdapter'; import { DocPaginator as OriginalDocPaginator } from './DocPaginator'; diff --git a/packages/site-components/src/Footer/index.ts b/packages/site-components/src/Footer/index.ts index f6a7f6cd7..b68bd6c70 100644 --- a/packages/site-components/src/Footer/index.ts +++ b/packages/site-components/src/Footer/index.ts @@ -1,3 +1,4 @@ +'use client'; import { withFooterAdapter } from './withFooterAdapter'; import { Footer as OriginalFooter } from './Footer'; diff --git a/packages/site-components/src/HTMLView.tsx b/packages/site-components/src/HTMLView.tsx index 681eff611..39b7a06b9 100644 --- a/packages/site-components/src/HTMLView.tsx +++ b/packages/site-components/src/HTMLView.tsx @@ -1,3 +1,5 @@ +'use client'; + import React, { useEffect } from 'react'; const embeddedWebViewInitialized = false; diff --git a/packages/site-components/src/Home/index.tsx b/packages/site-components/src/Home/index.tsx index 3075ada1f..3e2c8bcc0 100644 --- a/packages/site-components/src/Home/index.tsx +++ b/packages/site-components/src/Home/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import classnames from 'clsx'; import { useImageComponent } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/Image/index.tsx b/packages/site-components/src/Image/index.tsx index b1772c16b..699b3fa8b 100644 --- a/packages/site-components/src/Image/index.tsx +++ b/packages/site-components/src/Image/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { FC, forwardRef, Ref } from 'react'; import NextImage, { type ImageProps as NextImageProps } from 'next/image'; import classnames from 'clsx'; diff --git a/packages/site-components/src/Link.tsx b/packages/site-components/src/Link.tsx index 008b3fe1d..0c7fbfd60 100644 --- a/packages/site-components/src/Link.tsx +++ b/packages/site-components/src/Link.tsx @@ -1,3 +1,4 @@ +'use client'; import NextLink from 'next/link'; import React, { Ref } from 'react'; diff --git a/packages/site-components/src/Metadata.tsx b/packages/site-components/src/Metadata.tsx index 5b4924b57..b8415ccb2 100644 --- a/packages/site-components/src/Metadata.tsx +++ b/packages/site-components/src/Metadata.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { ElementType } from 'react'; import { useMeta } from '@jpmorganchase/mosaic-store'; import type { MetaSlice } from '@jpmorganchase/mosaic-store'; diff --git a/packages/site-components/src/PageNavigation.tsx b/packages/site-components/src/PageNavigation.tsx index 851baa057..06205713a 100644 --- a/packages/site-components/src/PageNavigation.tsx +++ b/packages/site-components/src/PageNavigation.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import { useSidebar } from '@jpmorganchase/mosaic-store'; import { VerticalNavigation } from './VerticalNavigation'; diff --git a/packages/site-components/src/UserProfile/index.tsx b/packages/site-components/src/UserProfile/index.tsx index dc5adf872..273de73c2 100644 --- a/packages/site-components/src/UserProfile/index.tsx +++ b/packages/site-components/src/UserProfile/index.tsx @@ -1,3 +1,4 @@ +'use client'; import React, { ReactElement } from 'react'; import classnames from 'clsx'; import { Avatar } from '@salt-ds/core'; diff --git a/packages/site-components/src/VerticalNavigation.tsx b/packages/site-components/src/VerticalNavigation.tsx index 41a4ad3d3..d3b8c8611 100644 --- a/packages/site-components/src/VerticalNavigation.tsx +++ b/packages/site-components/src/VerticalNavigation.tsx @@ -1,3 +1,4 @@ +'use client'; import React from 'react'; import { ElementStyles, Sidebar as SidebarPro, Menu, MenuItem, SubMenu } from 'react-pro-sidebar'; import { link } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/site-components/src/index.tsx b/packages/site-components/src/index.tsx index fdf18f5c3..de9e3ec31 100644 --- a/packages/site-components/src/index.tsx +++ b/packages/site-components/src/index.tsx @@ -23,5 +23,3 @@ export * from './UserProfile'; export * from './VerticalNavigation'; export * from './404'; export * from './500'; - -export { default as components } from './mdx'; diff --git a/packages/site-components/src/mdx.tsx b/packages/site-components/src/mdx.tsx deleted file mode 100644 index fdc72dc9d..000000000 --- a/packages/site-components/src/mdx.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { Pre, getMarkdownComponents, withMarkdownSpacing } from '@jpmorganchase/mosaic-components'; -import type { PreProps } from '@jpmorganchase/mosaic-components'; -import { getLabMarkdownComponents } from '@jpmorganchase/mosaic-labs-components'; -import { OpenAPI } from '@jpmorganchase/mosaic-open-api-component'; -import type { OpenAPIProps } from '@jpmorganchase/mosaic-open-api-component'; -import type {} from '@salt-ds/lab'; - -import { Home } from './Home'; -import { Image } from './Image'; -import type { ImageProps } from './Image'; - -const components = { - ...getMarkdownComponents(), - Labs: getLabMarkdownComponents(), - Home, - img: withMarkdownSpacing(Image), - pre: withMarkdownSpacing(props =>
),
-  OpenAPI: withMarkdownSpacing(OpenAPI)
-};
-
-export default components;

From 342328d62a5d266c8adc713833b7af2152c68217 Mon Sep 17 00:00:00 2001
From: Mark Tate <143323+mark-tate@users.noreply.github.com>
Date: Mon, 19 Jun 2023 12:15:32 +0100
Subject: [PATCH 11/36] new packages for client-side MDX components called
 `@jpmorganchase/mosaic-components-client`

---
 packages/mdx-components-client/README.md      |  18 ++
 packages/mdx-components-client/package.json   |  56 ++++++
 .../src/BlockQuote/index.css.ts               |   6 +
 .../src/BlockQuote/index.tsx                  |  21 +++
 .../src/FormattedContent.tsx                  |  72 ++++++++
 .../src/Heading/AnchorHeading.css.ts          |  64 +++++++
 .../src/Heading/AnchorHeading.tsx             |  94 +++++++++++
 .../src/Heading/__tests__/Heading.test.tsx    |  56 ++++++
 .../src/Heading/__tests__/index.test.tsx      |  51 ++++++
 .../src/Heading/index.tsx                     |  35 ++++
 .../mdx-components-client/src/InlineCode.tsx  |  10 ++
 packages/mdx-components-client/src/Link.tsx   |  10 ++
 .../src/Pre/index.css.ts                      |  35 ++++
 .../mdx-components-client/src/Pre/index.tsx   | 152 +++++++++++++++++
 .../ReactLive/__tests__/ReactLive.test.tsx    |  21 +++
 .../src/ReactLive/index.tsx                   |  70 ++++++++
 .../src/ReactLive/styles.css.ts               |  28 +++
 packages/mdx-components-client/src/Table.tsx  |  11 ++
 packages/mdx-components-client/src/Tbody.tsx  |   9 +
 packages/mdx-components-client/src/Td.tsx     |   9 +
 packages/mdx-components-client/src/Th.tsx     |   9 +
 packages/mdx-components-client/src/Thead.tsx  |   9 +
 .../src/ThematicBreak/index.css.ts            |   5 +
 .../src/ThematicBreak/index.tsx               |  10 ++
 packages/mdx-components-client/src/Tr.tsx     |   9 +
 .../mdx-components-client/src/components.ts   | 159 ++++++++++++++++++
 packages/mdx-components-client/src/index.tsx  |   3 +
 .../src/markdownElements.tsx                  |  61 +++++++
 packages/mdx-components-client/src/styles.ts  |   6 +
 .../mdx-components-client/src/typography.tsx  |  55 ++++++
 .../src/withMarkdownSpacing/index.tsx         |  33 ++++
 .../src/withMarkdownSpacing/styles.css.ts     |   7 +
 packages/mdx-components-client/tsconfig.json  |   8 +
 packages/site-preset-styles/src/index.js      |   1 +
 34 files changed, 1203 insertions(+)
 create mode 100644 packages/mdx-components-client/README.md
 create mode 100644 packages/mdx-components-client/package.json
 create mode 100644 packages/mdx-components-client/src/BlockQuote/index.css.ts
 create mode 100644 packages/mdx-components-client/src/BlockQuote/index.tsx
 create mode 100644 packages/mdx-components-client/src/FormattedContent.tsx
 create mode 100644 packages/mdx-components-client/src/Heading/AnchorHeading.css.ts
 create mode 100644 packages/mdx-components-client/src/Heading/AnchorHeading.tsx
 create mode 100644 packages/mdx-components-client/src/Heading/__tests__/Heading.test.tsx
 create mode 100644 packages/mdx-components-client/src/Heading/__tests__/index.test.tsx
 create mode 100644 packages/mdx-components-client/src/Heading/index.tsx
 create mode 100644 packages/mdx-components-client/src/InlineCode.tsx
 create mode 100644 packages/mdx-components-client/src/Link.tsx
 create mode 100644 packages/mdx-components-client/src/Pre/index.css.ts
 create mode 100644 packages/mdx-components-client/src/Pre/index.tsx
 create mode 100644 packages/mdx-components-client/src/ReactLive/__tests__/ReactLive.test.tsx
 create mode 100644 packages/mdx-components-client/src/ReactLive/index.tsx
 create mode 100644 packages/mdx-components-client/src/ReactLive/styles.css.ts
 create mode 100644 packages/mdx-components-client/src/Table.tsx
 create mode 100644 packages/mdx-components-client/src/Tbody.tsx
 create mode 100644 packages/mdx-components-client/src/Td.tsx
 create mode 100644 packages/mdx-components-client/src/Th.tsx
 create mode 100644 packages/mdx-components-client/src/Thead.tsx
 create mode 100644 packages/mdx-components-client/src/ThematicBreak/index.css.ts
 create mode 100644 packages/mdx-components-client/src/ThematicBreak/index.tsx
 create mode 100644 packages/mdx-components-client/src/Tr.tsx
 create mode 100644 packages/mdx-components-client/src/components.ts
 create mode 100644 packages/mdx-components-client/src/index.tsx
 create mode 100644 packages/mdx-components-client/src/markdownElements.tsx
 create mode 100644 packages/mdx-components-client/src/styles.ts
 create mode 100644 packages/mdx-components-client/src/typography.tsx
 create mode 100644 packages/mdx-components-client/src/withMarkdownSpacing/index.tsx
 create mode 100644 packages/mdx-components-client/src/withMarkdownSpacing/styles.css.ts
 create mode 100644 packages/mdx-components-client/tsconfig.json

diff --git a/packages/mdx-components-client/README.md b/packages/mdx-components-client/README.md
new file mode 100644
index 000000000..74ef1335f
--- /dev/null
+++ b/packages/mdx-components-client/README.md
@@ -0,0 +1,18 @@
+# Mosaic MDX Component Library (Client)
+
+`@jpmorganchase/mosaic-components-client` contains re-usable MDX components that conform to the Mosaic Design language.
+
+All the Mosaic MDX components are wrapped with default spacing so they can be composed within a MDX page
+
+This package is intended to be used with a Mosaic site and should export "client side" components
+
+## Installation
+
+`yarn add @jpmorganchase/mosaic-components-client`
+
+## Criteria
+
+The criteria for a component within `@jpmorganchase/mosaic-components-client` is
+
+- Should only export React client-side components
+- It can contain any Mosaic Store, NextJS or other site specific dependencies.
diff --git a/packages/mdx-components-client/package.json b/packages/mdx-components-client/package.json
new file mode 100644
index 000000000..2017ef1ab
--- /dev/null
+++ b/packages/mdx-components-client/package.json
@@ -0,0 +1,56 @@
+{
+  "name": "@jpmorganchase/mosaic-mdx-components-client",
+  "description": "Mosaic - Markdown Components",
+  "version": "0.1.0-beta.36",
+  "author": "",
+  "license": "Apache-2.0",
+  "repository": {
+    "type": "git",
+    "url": "git@github.com:jpmorganchase/mosaic.git",
+    "directory": "packages/mdx-components-client"
+  },
+  "type": "module",
+  "main": "./dist/index.js",
+  "types": "./dist/index.d.ts",
+  "style": "./dist/index.css",
+  "exports": {
+    "./index.css": "./dist/index.css",
+    ".": {
+      "style": "./dist/index.css",
+      "types": "./dist/index.d.ts",
+      "import": "./dist/index.js",
+      "node": "./dist/index.js"
+    }
+  },
+  "scripts": {
+    "build": "npm-run-all --parallel build:*",
+    "build:types": "tsc",
+    "build:components": "node  ../../scripts/bundle.mjs",
+    "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete",
+    "lint": "eslint --ignore-pattern \"**/__tests__/**\"",
+    "doc": "node ../../scripts/updateDocs.js",
+    "dev": "node ../../scripts/bundle.mjs watch"
+  },
+  "devDependencies": {
+    "@testing-library/jest-dom": "^5.16.5",
+    "@testing-library/react": "^13.4.0",
+    "@testing-library/user-event": "^14.0.0",
+    "react": "^18.2.0",
+    "del-cli": "^4.0.1",
+    "typescript": "^4.8.3"
+  },
+  "dependencies": {
+    "@jpmorganchase/mosaic-components": "^0.1.0-beta.36",
+    "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.36",
+    "@jpmorganchase/mosaic-theme": "^0.1.0-beta.36",
+    "clsx": "^1.2.1",
+    "hoist-non-react-statics": "^3.3.2",
+    "prism-react-renderer": "^1.1.1",
+    "react-markdown": "^6.0.2"
+  },
+  "peerDependencies": {
+    "@types/react": "^18.0.26",
+    "react": "^18.2.0",
+    "react-dom": "^18.2.0"
+  }
+}
diff --git a/packages/mdx-components-client/src/BlockQuote/index.css.ts b/packages/mdx-components-client/src/BlockQuote/index.css.ts
new file mode 100644
index 000000000..2e95f3105
--- /dev/null
+++ b/packages/mdx-components-client/src/BlockQuote/index.css.ts
@@ -0,0 +1,6 @@
+import { blockquote, watermark } from '@jpmorganchase/mosaic-theme';
+
+export default {
+  root: blockquote({ context: 'markdown' }),
+  watermark: watermark({ variant: 'blockquote' })
+};
diff --git a/packages/mdx-components-client/src/BlockQuote/index.tsx b/packages/mdx-components-client/src/BlockQuote/index.tsx
new file mode 100644
index 000000000..5b84fc1a7
--- /dev/null
+++ b/packages/mdx-components-client/src/BlockQuote/index.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import classnames from 'clsx';
+
+import { P2 } from '@jpmorganchase/mosaic-components';
+import styles from './index.css';
+
+export interface BlockQuoteProps extends React.HTMLProps {}
+
+export const BlockQuote: React.FC> = ({
+  children,
+  className
+}) => {
+  const rawChildren =
+    React.isValidElement(children) && children.props ? children.props.children : children;
+  return (
+    
+
+ {rawChildren} +
+ ); +}; diff --git a/packages/mdx-components-client/src/FormattedContent.tsx b/packages/mdx-components-client/src/FormattedContent.tsx new file mode 100644 index 000000000..216e4f432 --- /dev/null +++ b/packages/mdx-components-client/src/FormattedContent.tsx @@ -0,0 +1,72 @@ +import React, { ReactElement } from 'react'; +import ReactMarkdown from 'react-markdown'; +import { ListItem } from '@jpmorganchase/mosaic-components'; +import { + em as Emphasis, + h1 as H1, + h2 as H2, + h3 as H3, + h4 as H4, + h5 as H5, + h6 as H6, + ol as Ol, + ul as Ul, + p as P, + strong as Strong +} from './markdownElements'; + +type FormattedContentProps = { + className?: string; + children: string; + components?: { + h1?: () => ReactElement; + h2?: () => ReactElement; + h3?: () => ReactElement; + h4?: () => ReactElement; + h5?: () => ReactElement; + h6?: () => ReactElement; + p?: () => ReactElement; + em?: () => ReactElement; + strong?: () => ReactElement; + ul?: () => ReactElement; + ol?: () => ReactElement; + li?: () => ReactElement; + }; +}; + +const renderers = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + h1: ({ node, ...props }) =>

, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + h2: ({ node, ...props }) =>

, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + h3: ({ node, ...props }) =>

, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + h4: ({ node, ...props }) =>

, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + h5: ({ node, ...props }) =>

, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + h6: ({ node, ...props }) =>
, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + p: ({ node, children, ...props }) =>

{children}

, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + emphasis: ({ node, children, ...props }) => {children}, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + strong: ({ node, children, ...props }) => {children}, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ul: ({ node, children, ...props }) =>
    {children}
, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ol: ({ node, children, ...props }) =>
    {children}
, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + listItem: ({ node, children, ...props }) => {children} +}; + +export const FormattedContent: React.FC> = ({ + children, + components = {}, + ...rest +}) => ( + + {children} + +); diff --git a/packages/mdx-components-client/src/Heading/AnchorHeading.css.ts b/packages/mdx-components-client/src/Heading/AnchorHeading.css.ts new file mode 100644 index 000000000..d320df6bc --- /dev/null +++ b/packages/mdx-components-client/src/Heading/AnchorHeading.css.ts @@ -0,0 +1,64 @@ +import { createVar, style } from '@vanilla-extract/css'; +import { backgroundColor, responsiveSprinkles, vars } from '@jpmorganchase/mosaic-theme'; + +export const badgeCopiedHeight = createVar(); +export const badgeCopiedBorderRadius = createVar(); +export const badgeCopiedOffset = createVar(); +export const badgeLinkHeight = createVar(); +export const badgeLinkBorderRadius = createVar(); +export const badgeLinkOffset = createVar(); + +export default { + root: style({ + vars: { + [badgeLinkHeight]: '28px', + [badgeLinkBorderRadius]: '14px', + [badgeLinkOffset]: '-28', + [badgeCopiedHeight]: '28px', + [badgeCopiedBorderRadius]: '36px', + [badgeCopiedOffset]: '-74' + }, + display: 'block' + }), + link: style({ + display: 'inline', + textDecorationLine: 'none', + lineHeight: 'inherit' + }), + badgeContainer: style({ + verticalAlign: 'text-bottom', + position: 'absolute' + }), + badge: style([ + backgroundColor({ variant: 'emphasis' }), + responsiveSprinkles({ + marginLeft: ['x2', 'x2', 'x2', 'x2'], + paddingX: ['x2', 'x2', 'x2', 'x2'], + paddingY: ['x2', 'x2', 'x2', 'x2'] + }), + { + color: vars.color.light.navigable.link.hover, + verticalAlign: 'middle', + display: 'inline-flex', + borderRadius: badgeLinkBorderRadius, + textDecoration: 'none' + } + ]), + badgeLink: style({ + height: badgeLinkHeight, + borderRadius: badgeCopiedBorderRadius, + right: badgeLinkOffset + }), + badgeCopied: style({ + height: badgeCopiedHeight, + borderRadius: badgeCopiedBorderRadius, + right: badgeCopiedOffset + }), + badgeIcon: style({ + color: vars.color.light.navigable.link.hover, + display: 'inline-flex' + }), + badgeLabel: responsiveSprinkles({ + paddingLeft: ['x1', 'x1', 'x1', 'x1'] + }) +}; diff --git a/packages/mdx-components-client/src/Heading/AnchorHeading.tsx b/packages/mdx-components-client/src/Heading/AnchorHeading.tsx new file mode 100644 index 000000000..e1dacee87 --- /dev/null +++ b/packages/mdx-components-client/src/Heading/AnchorHeading.tsx @@ -0,0 +1,94 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { usePathname } from 'next/navigation'; +import classnames from 'clsx'; +import { Caption6, Icon, Link, LinkProps, TypographyProps } from '@jpmorganchase/mosaic-components'; + +import styles from './AnchorHeading.css'; + +export interface AnchorHeadingProps extends React.HTMLProps { + children: React.ReactNode; + Component: React.FC>; + LinkProps?: LinkProps; +} + +export const AnchorHeading: React.FC> = ({ + Component, + children, + className, + id, + LinkProps: LinkPropsProp = {}, + ...rest +}) => { + const route = usePathname(); + const timerRef = useRef(null); + useEffect( + () => () => { + if (timerRef.current) { + clearTimeout(timerRef.current); + } + }, + [] + ); + + const [hovered, setHovered] = useState(false); + const [copied, setCopied] = useState(false); + + const handleMouseEnter = () => { + setHovered(true); + }; + const handleMouseLeave = () => { + setHovered(false); + }; + const handleMouseClick = event => { + const anchor = event.currentTarget.getAttribute('href'); + navigator.clipboard.writeText(`${window.location.origin}${route}/${anchor}`); + setCopied(true); + timerRef.current = setTimeout(() => setCopied(false), 1000); + event.preventDefault(); + }; + + const { link } = LinkPropsProp; + const anchorLink = link || `#${id}`; + return ( +
+ + + {children} + + {!copied && hovered ? ( + + + + ) : null} + {copied ? ( + + + + Copied + + + ) : null} + + + +
+ ); +}; diff --git a/packages/mdx-components-client/src/Heading/__tests__/Heading.test.tsx b/packages/mdx-components-client/src/Heading/__tests__/Heading.test.tsx new file mode 100644 index 000000000..c04bdf0cc --- /dev/null +++ b/packages/mdx-components-client/src/Heading/__tests__/Heading.test.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; + +import { H0, H1, H2, H3, H4, H5, H6 } from '../index'; + +describe('GIVEN a Heading', () => { + test('THEN a H0 can be rendered', () => { + // arrange + render(H0); + // assert + expect(screen.getByText('H0')).toBeInTheDocument(); + expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument(); + }); + test('THEN a H1 can be rendered', () => { + // arrange + render(

H1

); + // assert + expect(screen.getByText('H1')).toBeInTheDocument(); + expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument(); + }); + test('THEN a H1 can be rendered', () => { + // arrange + render(

H2

); + // assert + expect(screen.getByText('H2')).toBeInTheDocument(); + expect(screen.getByRole('heading', { level: 2 })).toBeInTheDocument(); + }); + test('THEN a H3 can be rendered', () => { + // arrange + render(

H3

); + // assert + expect(screen.getByText('H3')).toBeInTheDocument(); + expect(screen.getByRole('heading', { level: 3 })).toBeInTheDocument(); + }); + test('THEN a H4 can be rendered', () => { + // arrange + render(

H4

); + // assert + expect(screen.getByText('H4')).toBeInTheDocument(); + expect(screen.getByRole('heading', { level: 4 })).toBeInTheDocument(); + }); + test('THEN a H5 can be rendered', () => { + // arrange + render(
H5
); + // assert + expect(screen.getByText('H5')).toBeInTheDocument(); + expect(screen.getByRole('heading', { level: 5 })).toBeInTheDocument(); + }); + test('THEN a H6 can be rendered', () => { + // arrange + render(
H6
); + // assert + expect(screen.getByText('H6')).toBeInTheDocument(); + expect(screen.getByRole('heading', { level: 6 })).toBeInTheDocument(); + }); +}); diff --git a/packages/mdx-components-client/src/Heading/__tests__/index.test.tsx b/packages/mdx-components-client/src/Heading/__tests__/index.test.tsx new file mode 100644 index 000000000..40b4b13ca --- /dev/null +++ b/packages/mdx-components-client/src/Heading/__tests__/index.test.tsx @@ -0,0 +1,51 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import userEvents from '@testing-library/user-event'; + +import { H1 } from '../index'; + +describe('GIVEN an AnchoredHeading', () => { + describe('WHEN rendered', () => { + test('THEN the Heading is rendered', () => { + // arrange + render(

Mosaic Heading

); + // assert + expect(screen.getByText('Mosaic Heading')).toBeInTheDocument(); + }); + }); + describe('WHEN clicked', () => { + test('THEN the Heading is copied to the clipboard', async () => { + // arrange + let clipboardData = ''; // initalizing clipboard data so it can be used in testing + const mockClipboard = { + writeText: jest.fn(data => { + clipboardData = data; + }), + readText: jest.fn(() => clipboardData) + }; + (global.navigator as any).clipboard = mockClipboard; + + render( +

Mosaic Heading

+ ); + // assert + expect(screen.queryByLabelText('copied anchor link to clipboard')).not.toBeInTheDocument(); + expect( + screen.queryByLabelText('click to copy anchor link to clipboard') + ).not.toBeInTheDocument(); + expect(screen.queryByText('Mosaic Heading')).toBeInTheDocument(); + // act + await userEvents.hover(screen.getByTitle('Mosaic Title')); + // assert + expect(screen.queryByLabelText('copied anchor link to clipboard')).not.toBeInTheDocument(); + expect(screen.queryByLabelText('click to copy anchor link to clipboard')).toBeInTheDocument(); + // act + await userEvents.click(screen.getByTitle('Mosaic Title')); + // assert + expect(screen.queryByLabelText('copied anchor link to clipboard')).toBeInTheDocument(); + expect( + screen.queryByLabelText('click to copy anchor link to clipboard') + ).not.toBeInTheDocument(); + }); + }); +}); diff --git a/packages/mdx-components-client/src/Heading/index.tsx b/packages/mdx-components-client/src/Heading/index.tsx new file mode 100644 index 000000000..f7556a1ac --- /dev/null +++ b/packages/mdx-components-client/src/Heading/index.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import classnames from 'clsx'; +import { Typography } from '@jpmorganchase/mosaic-components'; +import { heading } from '@jpmorganchase/mosaic-theme'; +import { AnchorHeading } from './AnchorHeading'; + +const createHeading = + (variant, component) => + ({ children, className, ...props }) => + ( + + {children} + + ); + +const Heading0 = createHeading('heading0', 'h1'); +const Heading1 = createHeading('heading1', 'h1'); +const Heading2 = createHeading('heading2', 'h2'); +const Heading3 = createHeading('heading3', 'h3'); +const Heading4 = createHeading('heading4', 'h4'); +const Heading5 = createHeading('heading5', 'h5'); +const Heading6 = createHeading('heading6', 'h6'); + +export const H0 = props => ; +export const H1 = props => ; +export const H2 = props => ; +export const H3 = props => ; +export const H4 = props => ; +export const H5 = props => ; +export const H6 = props => ; diff --git a/packages/mdx-components-client/src/InlineCode.tsx b/packages/mdx-components-client/src/InlineCode.tsx new file mode 100644 index 000000000..b068f9a3e --- /dev/null +++ b/packages/mdx-components-client/src/InlineCode.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import classnames from 'clsx'; +import { code } from '@jpmorganchase/mosaic-theme'; + +export interface InlineCodeProps extends React.HTMLProps {} + +export const InlineCode: React.FC> = ({ + className, + ...rest +}) => ; diff --git a/packages/mdx-components-client/src/Link.tsx b/packages/mdx-components-client/src/Link.tsx new file mode 100644 index 000000000..1b2ad2968 --- /dev/null +++ b/packages/mdx-components-client/src/Link.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { Link as LinkComponent, LinkProps } from '@jpmorganchase/mosaic-components'; + +export interface MarkdownLinkProps extends LinkProps { + href?: string; +} + +export const Link: React.FC> = ({ href, ...rest }) => ( + +); diff --git a/packages/mdx-components-client/src/Pre/index.css.ts b/packages/mdx-components-client/src/Pre/index.css.ts new file mode 100644 index 000000000..d3f01eb5e --- /dev/null +++ b/packages/mdx-components-client/src/Pre/index.css.ts @@ -0,0 +1,35 @@ +import { style } from '@vanilla-extract/css'; +import { backgroundColor, foregroundColor, responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; + +const root = style({ + position: 'relative' +}); + +export default { + button: style({ + top: '0px', + right: '0px', + selectors: { + [`${root} &`]: { + position: 'absolute' + } + } + }), + filename: style([ + backgroundColor({ variant: 'emphasis' }), + foregroundColor({ variant: 'low' }), + responsiveSprinkles({ + paddingLeft: ['x4', 'x4', 'x4', 'x4'] + }) + ]), + pre: style({ + selectors: { + [`${root} &`]: { + fontSize: '85%', + margin: 0, + whiteSpace: 'pre-wrap' + } + } + }), + root +}; diff --git a/packages/mdx-components-client/src/Pre/index.tsx b/packages/mdx-components-client/src/Pre/index.tsx new file mode 100644 index 000000000..cf4020e96 --- /dev/null +++ b/packages/mdx-components-client/src/Pre/index.tsx @@ -0,0 +1,152 @@ +import React, { useEffect, useState, useRef } from 'react'; +import classnames from 'clsx'; +import Highlight, { defaultProps as defaultPrismProps } from 'prism-react-renderer'; +import type { Language } from 'prism-react-renderer'; +import { Button, Icon, Link, P2 } from '@jpmorganchase/mosaic-components'; + +import { ReactLive } from '../ReactLive'; +import styles from './index.css'; + +export type CodeBlockPropsType = { + components?: Record; +}; +export type CodeBlockMeta = { + code?: string; + filename?: string; + language?: Language; + live?: boolean; +}; + +export type PreProps = CodeBlockMeta & + React.HTMLProps & { CodeBlockProps?: CodeBlockPropsType }; + +const httpPattern = /^((http[s]?):\/\/)/; + +/** + * Supported syntax: + * + * ```jsx live + *
I will be live editable!
+ * ``` + */ +export const Pre: React.FC> = ({ + children, + className, + code: codeProp = '', + CodeBlockProps, + filename, + language: languageProp, + live, + ...rest +}) => { + const preRef = useRef(null); + const [hovered, setHovered] = useState(false); + + const handleMouseEnter = () => { + setHovered(true); + }; + const handleMouseLeave = () => { + setHovered(false); + }; + const handleClickCopy = () => { + if (preRef.current && preRef.current.textContent) { + navigator.clipboard.writeText(preRef.current.textContent); + } + }; + + let code: string | undefined = codeProp.replace(/
/g, '\n'); + let language: Language | undefined = languageProp; + if (children) { + const codeBlock = (children as React.ReactElement<{ className?: string; children: string }>) + .props; + code = codeBlock.children; + language = codeBlock.className?.replace('language-', '') as Language; + } + + if (typeof code !== 'string') { + return null; + } + + let FilenameElement; + if (!filename) { + FilenameElement = null; + } else if (httpPattern.test(filename)) { + const basename = filename.substring(filename.lastIndexOf('/') + 1); + FilenameElement = ( + + {basename} + + ); + } else { + FilenameElement = {filename}; + } + + // If a language other than JSX or TSX is specified, bail out + const isLive = live && (language === 'tsx' || language === 'jsx'); + + return ( +
+
+ {FilenameElement} + {hovered && ( + + )} +
+ +
+ ); +}; + +const CodeBlock = React.memo( + React.forwardRef< + HTMLPreElement | null, + { isLive?: boolean; code: string; components?: Record; language?: Language } + >(({ code, components, isLive = false, language = '' }, ref) => + isLive ? ( + + {code} + + ) : ( +
+        
+      
+ ) + ) +); + +const CodeHighlight: React.FC> = + function CodeHighlight({ code, language }) { + const [isClient, setIsClient] = useState(false); + useEffect(() => { + setIsClient(true); + }, []); + + if (!isClient) { + return null; + } + let trimmedCode = code.replace(/\n+$/, ''); + return ( + + {({ tokens, getLineProps, getTokenProps }) => ( + <> + {tokens.map((line, i) => ( + // eslint-disable-next-line react/jsx-key +
+ {line.map((token, key) => ( + // eslint-disable-next-line react/jsx-key + + ))} +
+ ))} + + )} +
+ ); + }; diff --git a/packages/mdx-components-client/src/ReactLive/__tests__/ReactLive.test.tsx b/packages/mdx-components-client/src/ReactLive/__tests__/ReactLive.test.tsx new file mode 100644 index 000000000..b36592c3e --- /dev/null +++ b/packages/mdx-components-client/src/ReactLive/__tests__/ReactLive.test.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import { fireEvent, render, screen, waitFor } from '@testing-library/react'; +import { ReactLive } from '../ReactLive'; + +describe('GIVEN a ReactLive view', () => + it('THEN it should render code in a live view', async () => { + // arrange + const { getAllByRole } = render({'

Hello World

'}
); + + // assert + await waitFor(() => { + expect(screen.getByText('Show Live Code')).toBeInTheDocument(); + expect(screen.getByText('Hello World')).toBeInTheDocument(); + }); + // act + const showLiveCode = screen.getByText('Show Live Code'); + fireEvent.click(showLiveCode); + + // assert + expect(getAllByRole('textbox')[0]).toHaveAttribute('class', 'liveEditor'); + })); diff --git a/packages/mdx-components-client/src/ReactLive/index.tsx b/packages/mdx-components-client/src/ReactLive/index.tsx new file mode 100644 index 000000000..f2fa86ad2 --- /dev/null +++ b/packages/mdx-components-client/src/ReactLive/index.tsx @@ -0,0 +1,70 @@ +import React, { useState } from 'react'; +import classnames from 'clsx'; +import { Switch } from '@salt-ds/lab'; + +import { ComponentExample, IsomorphicSuspense } from '@jpmorganchase/mosaic-components'; +import * as components from '../components'; +import styles from './styles.css'; + +type ReactLiveProps = { + /** Contents */ + children: string; + /** className determines the type of language flagged in the MD codeblock */ + className: string; + /** Scope (including components) for live editor */ + scope?: Record; +}; + +const LazyPreviewComponent = React.lazy(() => + import('react-live').then(reactLive => ({ + default: ({ className, codeString, scope }) => ( + + ) + })) +); + +function PreviewComponent({ + codeString, + className, + scope = components, + LiveProvider, + LiveEditor, + LiveError, + LivePreview: ReactLivePreview +}) { + const [hidden, setHidden] = useState(true); + + return ( + + `${code.replace(/import(?:["'\s]*([\w*{}\n, ]+)from\s*)["'\s]*([@\w/_-]+)["'\s]*;?/gm, '')}` + } + > +
+ + + +
+
+ setHidden(!hidden)} /> +
+
+ + {hidden ? null : } +
+
+ ); +} + +export const ReactLive: React.FC = ({ children: codeString, className, scope }) => ( + + + +); diff --git a/packages/mdx-components-client/src/ReactLive/styles.css.ts b/packages/mdx-components-client/src/ReactLive/styles.css.ts new file mode 100644 index 000000000..f18b2781e --- /dev/null +++ b/packages/mdx-components-client/src/ReactLive/styles.css.ts @@ -0,0 +1,28 @@ +import { style } from '@vanilla-extract/css'; +import { responsiveSprinkles, vars } from '@jpmorganchase/mosaic-theme'; + +const root = style({}); + +export default { + root, + liveError: style([ + { + backgroundColor: 'red', + color: 'white' + }, + responsiveSprinkles({ + marginBottom: ['none', 'none', 'none', 'none'], + padding: ['x4', 'x4', 'x4', 'x4'] + }) + ]), + liveEditor: style([{ backgroundColor: 'black', color: 'white', overflow: 'scroll' }]), + showLiveCodeContainer: style({ + position: 'relative' + }), + showLiveCode: style({ + right: vars.space.horizontal.x4, + bottom: '0px', + position: 'absolute', + lineHeight: 'initial' + }) +}; diff --git a/packages/mdx-components-client/src/Table.tsx b/packages/mdx-components-client/src/Table.tsx new file mode 100644 index 000000000..e6d2917e5 --- /dev/null +++ b/packages/mdx-components-client/src/Table.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import classnames from 'clsx'; +import { table, tableContainer } from '@jpmorganchase/mosaic-theme'; + +export interface TableProps extends React.HTMLProps {} + +export const Table: React.FC> = ({ className, ...rest }) => ( +
+
-); diff --git a/packages/components/src/Markdown/Th.tsx b/packages/components/src/Markdown/Th.tsx deleted file mode 100644 index 8e6daadcc..000000000 --- a/packages/components/src/Markdown/Th.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { th } from '@jpmorganchase/mosaic-theme'; - -export interface ThProps extends React.HTMLProps {} - -export const Th: React.FC> = ({ className, ...rest }) => ( - -); diff --git a/packages/components/src/Markdown/Thead.tsx b/packages/components/src/Markdown/Thead.tsx deleted file mode 100644 index a355e5a3a..000000000 --- a/packages/components/src/Markdown/Thead.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { thead } from '@jpmorganchase/mosaic-theme'; - -export interface TheadProps extends React.HTMLProps {} - -export const Thead: React.FC> = ({ className, ...rest }) => ( -
+ +); diff --git a/packages/mdx-components-client/src/Tbody.tsx b/packages/mdx-components-client/src/Tbody.tsx new file mode 100644 index 000000000..b6a630286 --- /dev/null +++ b/packages/mdx-components-client/src/Tbody.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import classnames from 'clsx'; +import { tbody } from '@jpmorganchase/mosaic-theme'; + +export interface TbodyProps extends React.HTMLProps {} + +export const Tbody: React.FC> = ({ className, ...rest }) => ( + +); diff --git a/packages/mdx-components-client/src/Td.tsx b/packages/mdx-components-client/src/Td.tsx new file mode 100644 index 000000000..d889e2c27 --- /dev/null +++ b/packages/mdx-components-client/src/Td.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import classnames from 'clsx'; +import { td } from '@jpmorganchase/mosaic-theme'; + +export interface TdProps extends React.HTMLProps {} + +export const Td: React.FC> = ({ className, ...rest }) => ( + +); diff --git a/packages/mdx-components-client/src/ThematicBreak/index.css.ts b/packages/mdx-components-client/src/ThematicBreak/index.css.ts new file mode 100644 index 000000000..745dac577 --- /dev/null +++ b/packages/mdx-components-client/src/ThematicBreak/index.css.ts @@ -0,0 +1,5 @@ +import { thematicBreak } from '@jpmorganchase/mosaic-theme'; + +export default { + root: thematicBreak({}) +}; diff --git a/packages/mdx-components-client/src/ThematicBreak/index.tsx b/packages/mdx-components-client/src/ThematicBreak/index.tsx new file mode 100644 index 000000000..8d93e6d2a --- /dev/null +++ b/packages/mdx-components-client/src/ThematicBreak/index.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import classnames from 'clsx'; + +import styles from './index.css'; + +export interface ThematicBreakProps extends React.HTMLProps {} + +export const ThematicBreak: React.FC> = ({ + className +}) =>
; diff --git a/packages/mdx-components-client/src/Tr.tsx b/packages/mdx-components-client/src/Tr.tsx new file mode 100644 index 000000000..1d4cf1332 --- /dev/null +++ b/packages/mdx-components-client/src/Tr.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import classnames from 'clsx'; +import { tr } from '@jpmorganchase/mosaic-theme'; + +export interface TrProps extends React.HTMLProps {} + +export const Tr: React.FC> = ({ className, ...rest }) => ( +
+); diff --git a/packages/mdx-components-client/src/components.ts b/packages/mdx-components-client/src/components.ts new file mode 100644 index 000000000..47119d31f --- /dev/null +++ b/packages/mdx-components-client/src/components.ts @@ -0,0 +1,159 @@ +import { Ref } from 'react'; +import { + Accordion as MosaicAccordion, + AccordionProps, + Callout as MosaicCallout, + CalloutProps, + Card as MosaicCard, + CardProps, + Cards as MosaicCards, + CardsProps, + ComponentExample as MosaicComponentExample, + ComponentExampleProps, + DataTable as MosaicDataTable, + DataTableProps, + EditionTileLink as MosaicEditionTileLink, + EditionTileLinkProps, + Feature as MosaicFeature, + FeatureProps, + Features as MosaicFeatures, + FeaturesProps, + FilterDropdown as MosaicFilterDropdown, + FilterDropdownProps, + FilterNoResults as MosaicFilterNoResults, + FilterNoResultsProps, + FilterPillGroup as MosaicFilterPillGroup, + FilterPillGroupProps, + FilterResultCount as MosaicFilterResultCount, + FilterResultCountProps, + FilterSearch as MosaicFilterSearch, + FilterSearchProps, + FilterSortDropdown as MosaicFilterSortDropdown, + FilterSortDropdownProps, + FilterToolbar as MosaicFilterToolbar, + FilterToolbarProps, + FilterView as MosaicFilterView, + FilterViewProps, + Grid as MosaicGrid, + GridBase as MosaicGridBase, + GridBaseProps, + GridProps, + HelpLinks as MosaicHelpLinks, + HelpLinksProps, + Icon as MosaicIcon, + IconProps, + Impact as MosaicImpact, + ImpactProps, + Impacts as MosaicImpacts, + ImpactsProps, + Label as MosaicLabel, + LabelProps, + LinkBase as MosaicLinkBase, + LinkBaseProps, + Links as MosaicLinks, + LinksProps, + LinkText as MosaicLinkText, + LinkTextProps, + ListItem as MosaicListItem, + ListItemProps, + OrderedList as MosaicOrderedList, + OrderedListProps, + SecondaryNavbar as MosaicSecondaryNavbar, + SecondaryNavbarProps, + Story as MosaicStory, + StoryProps, + Tabs as MosaicTabs, + TabsProps, + Tag as MosaicTag, + TagProps, + TileBase as MosaicTileBase, + TileBaseProps, + TileButton as MosaicTileButton, + TileButtonProps, + TileContent as MosaicTileContent, + TileContentLabel as MosaicTileContentLabel, + TileContentLabelProps, + TileContentProps, + TileLink as MosaicTileLink, + TileLinkProps, + Tiles as MosaicTiles, + TilesProps, + UnorderedList as MosaicUnorderedList, + UnOrderedListProps, + ViewStack as MosaicViewStack, + ViewStackProps +} from '@jpmorganchase/mosaic-components'; +import { OpenAPI as MosaicOpenAPI, OpenAPIProps } from '@jpmorganchase/mosaic-open-api-component'; +import { withMarkdownSpacing } from './withMarkdownSpacing'; + +export { + AudioPlayer, + AccordionDetails, + AccordionSection, + AccordionSummary, + Button, + EditionFilterView, + FeatureActions, + FeatureContent, + FeatureEyebrow, + FeatureTitle, + Hero, + Link, + SectionHeading, + StickyHeader, + Tab, + TabsBase, + PageFilterView, + VideoPlayer, + View +} from '@jpmorganchase/mosaic-components'; +export * from './FormattedContent'; +export * from './markdownElements'; +export * from './typography'; + +export const Accordion = withMarkdownSpacing(MosaicAccordion); +export const Callout = withMarkdownSpacing(MosaicCallout); +export const Card = withMarkdownSpacing(MosaicCard); +export const Cards = withMarkdownSpacing(MosaicCards); +export const ComponentExample = withMarkdownSpacing(MosaicComponentExample); +export const DataTable = withMarkdownSpacing & { ref?: Ref }>( + MosaicDataTable +); +export const EditionTileLink = withMarkdownSpacing(MosaicEditionTileLink); +export const Feature = withMarkdownSpacing(MosaicFeature); +export const Features = withMarkdownSpacing(MosaicFeatures); +export const FilterView = withMarkdownSpacing>(MosaicFilterView); +export const FilterDropdown = withMarkdownSpacing(MosaicFilterDropdown); +export const FilterToolbar = withMarkdownSpacing(MosaicFilterToolbar); +export const FilterNoResults = withMarkdownSpacing(MosaicFilterNoResults); +export const FilterPillGroup = withMarkdownSpacing(MosaicFilterPillGroup); +export const FilterSortDropdown = + withMarkdownSpacing(MosaicFilterSortDropdown); +export const FilterSearch = withMarkdownSpacing(MosaicFilterSearch); +export const FilterResultCount = + withMarkdownSpacing(MosaicFilterResultCount); +export const Grid = withMarkdownSpacing(MosaicGrid); +export const GridBase = withMarkdownSpacing(MosaicGridBase); +export const HelpLinks = withMarkdownSpacing(MosaicHelpLinks); +export const Icon = withMarkdownSpacing(MosaicIcon, 'regular', true); +export const Impact = withMarkdownSpacing(MosaicImpact); +export const Impacts = withMarkdownSpacing(MosaicImpacts); +export const Label = withMarkdownSpacing(MosaicLabel); +export const LinkBase = withMarkdownSpacing(MosaicLinkBase); +export const LinkText = withMarkdownSpacing(MosaicLinkText); +export const Links = withMarkdownSpacing(MosaicLinks); +export const ListItem = withMarkdownSpacing(MosaicListItem); +export const OpenAPI = withMarkdownSpacing(MosaicOpenAPI); +export const OrderedList = withMarkdownSpacing(MosaicOrderedList); +export const Tag = withMarkdownSpacing(MosaicTag); +export const SecondaryNavbar = withMarkdownSpacing(MosaicSecondaryNavbar); +export const Story = withMarkdownSpacing(MosaicStory); +export const Tabs = withMarkdownSpacing(MosaicTabs); +export const Tiles = withMarkdownSpacing(MosaicTiles); +export const TileBase = withMarkdownSpacing(MosaicTileBase); +export const TileButton = withMarkdownSpacing(MosaicTileButton); +export const TileContent = withMarkdownSpacing(MosaicTileContent); +export const TileContentLabel = withMarkdownSpacing(MosaicTileContentLabel); +export const TileLink = withMarkdownSpacing(MosaicTileLink); +export const UnorderedList = withMarkdownSpacing(MosaicUnorderedList); +export const ViewStack = withMarkdownSpacing>(MosaicViewStack); diff --git a/packages/mdx-components-client/src/index.tsx b/packages/mdx-components-client/src/index.tsx new file mode 100644 index 000000000..a80b51053 --- /dev/null +++ b/packages/mdx-components-client/src/index.tsx @@ -0,0 +1,3 @@ +'use client'; +export * from './components'; +export * from './ReactLive'; diff --git a/packages/mdx-components-client/src/markdownElements.tsx b/packages/mdx-components-client/src/markdownElements.tsx new file mode 100644 index 000000000..df6f9304e --- /dev/null +++ b/packages/mdx-components-client/src/markdownElements.tsx @@ -0,0 +1,61 @@ +import { emphasis, link, paragraph } from '@jpmorganchase/mosaic-theme'; +import { + ListItem, + OrderedList, + UnorderedList, + withStyledTypography +} from '@jpmorganchase/mosaic-components'; +import { Image as MosaicImage, ImageProps } from '@jpmorganchase/mosaic-site-components'; + +import { BlockQuote } from './BlockQuote'; +import { InlineCode } from './InlineCode'; +import * as Heading from './Heading'; +import { Link } from './Link'; +import { Pre as MosaicPre } from './Pre'; +import { Table as MosaicTable } from './Table'; +import { Tbody as MosaicTbody } from './Tbody'; +import { Thead as MosaicThead } from './Thead'; +import { Th as MosaicTh } from './Th'; +import { Td as MosaicTd } from './Td'; +import { Tr as MosaicTr } from './Tr'; +import { ThematicBreak } from './ThematicBreak'; +import { withMarkdownSpacing } from './withMarkdownSpacing'; + +export const a = withMarkdownSpacing(Link, link({ context: 'markdown', variant: 'document' })); +export const blockquote = withMarkdownSpacing(BlockQuote); +export const ol = withMarkdownSpacing(OrderedList); +export const ul = withMarkdownSpacing(UnorderedList); +export const li = withMarkdownSpacing(ListItem, 'none'); +export const hr = ThematicBreak; +export const h1 = Heading.H1; +export const h2 = Heading.H2; +export const h3 = Heading.H3; +export const h4 = Heading.H4; +export const h5 = Heading.H5; +export const h6 = Heading.H6; +export const img = withMarkdownSpacing(MosaicImage); +export const Image = img; +export const p = withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })); +export const pre = withMarkdownSpacing(MosaicPre); +export const Pre = withMarkdownSpacing(MosaicPre); +export const inlineCode = withMarkdownSpacing(InlineCode, 'none'); +export const table = withMarkdownSpacing(MosaicTable); +export const Table = table; +export const tbody = withMarkdownSpacing(MosaicTbody, 'none'); +export const Tbody = tbody; +export const thead = withMarkdownSpacing(MosaicThead, 'none'); +export const Thead = thead; +export const th = withMarkdownSpacing(MosaicTh, 'none'); +export const Th = th; +export const td = withMarkdownSpacing(MosaicTd, 'none'); +export const Td = MosaicTd; +export const tr = withMarkdownSpacing(MosaicTr, 'none'); +export const Tr = tr; +export const em = withStyledTypography( + emphasis({ variant: 'regular', context: 'markdown' }), + 'span' +); +export const strong = withStyledTypography( + emphasis({ variant: 'strong', context: 'markdown' }), + 'span' +); diff --git a/packages/mdx-components-client/src/styles.ts b/packages/mdx-components-client/src/styles.ts new file mode 100644 index 000000000..e5906f1b1 --- /dev/null +++ b/packages/mdx-components-client/src/styles.ts @@ -0,0 +1,6 @@ +import './BlockQuote/index.css'; +import './Heading/AnchorHeading.css'; +import './Pre/index.css'; +import './ReactLive/styles.css'; +import './ThematicBreak/index.css'; +import './withMarkdownSpacing/styles.css'; diff --git a/packages/mdx-components-client/src/typography.tsx b/packages/mdx-components-client/src/typography.tsx new file mode 100644 index 000000000..ca0ec0544 --- /dev/null +++ b/packages/mdx-components-client/src/typography.tsx @@ -0,0 +1,55 @@ +import { + action, + amount, + caption, + eyebrow, + paragraph, + subtitle, + watermark +} from '@jpmorganchase/mosaic-theme'; +import { withStyledTypography } from '@jpmorganchase/mosaic-components'; +import * as markdownElements from './markdownElements'; + +export const Action1 = withStyledTypography(action({ variant: 'action1', context: 'markdown' })); +export const Action2 = withStyledTypography(action({ variant: 'action2', context: 'markdown' })); +export const Action3 = withStyledTypography(action({ variant: 'action3', context: 'markdown' })); +export const Action4 = withStyledTypography(action({ variant: 'action4', context: 'markdown' })); +export const Action5 = withStyledTypography(action({ variant: 'action5', context: 'markdown' })); +export const Action6 = withStyledTypography(action({ variant: 'action6', context: 'markdown' })); +export const Action7 = withStyledTypography(action({ variant: 'action7', context: 'markdown' })); +export const Action8 = withStyledTypography(action({ variant: 'action8', context: 'markdown' })); +export const Caption1 = withStyledTypography(caption({ variant: 'caption1', context: 'markdown' })); +export const Caption2 = withStyledTypography(caption({ variant: 'caption2', context: 'markdown' })); +export const Caption3 = withStyledTypography(caption({ variant: 'caption3', context: 'markdown' })); +export const Caption4 = withStyledTypography(caption({ variant: 'caption4', context: 'markdown' })); +export const Caption5 = withStyledTypography(caption({ variant: 'caption5', context: 'markdown' })); +export const Caption6 = withStyledTypography(caption({ variant: 'caption6', context: 'markdown' })); +export const Hr = markdownElements.hr; +export * from './Heading'; +export const P1 = markdownElements.p; +export const P2 = withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })); +export const P3 = withStyledTypography(paragraph({ variant: 'paragraph3', context: 'markdown' })); +export const P4 = withStyledTypography(paragraph({ variant: 'paragraph4', context: 'markdown' })); +export const P5 = withStyledTypography(paragraph({ variant: 'paragraph5', context: 'markdown' })); +export const P6 = withStyledTypography(paragraph({ variant: 'paragraph6', context: 'markdown' })); +export const Subtitle1 = withStyledTypography( + subtitle({ variant: 'subtitle1', context: 'markdown' }) +); +export const Subtitle2 = withStyledTypography( + subtitle({ variant: 'subtitle2', context: 'markdown' }) +); +export const Subtitle3 = withStyledTypography( + subtitle({ variant: 'subtitle3', context: 'markdown' }) +); +export const Subtitle4 = withStyledTypography( + subtitle({ variant: 'subtitle4', context: 'markdown' }) +); +export const Subtitle5 = withStyledTypography( + subtitle({ variant: 'subtitle5', context: 'markdown' }) +); +export const Subtitle6 = withStyledTypography( + subtitle({ variant: 'subtitle6', context: 'markdown' }) +); +export const Amount = withStyledTypography(amount({ context: 'markdown' })); +export const Eyebrow = withStyledTypography(eyebrow({ context: 'markdown' })); +export const Watermark = withStyledTypography(watermark({ context: 'markdown' })); diff --git a/packages/mdx-components-client/src/withMarkdownSpacing/index.tsx b/packages/mdx-components-client/src/withMarkdownSpacing/index.tsx new file mode 100644 index 000000000..cd17f9b35 --- /dev/null +++ b/packages/mdx-components-client/src/withMarkdownSpacing/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import classnames from 'clsx'; +import hoistNonReactStatics from 'hoist-non-react-statics'; + +import styles from './styles.css'; + +export interface MarkdownComponentProps { + /** Additional class name for root class override */ + className?: string; + /** Spacing */ + spacing?: 'none' | 'regular'; + /** Whether element is inline */ + inline?: boolean; +} + +export function withMarkdownSpacing( + Component: React.ComponentType>, + spacing = 'regular', + inline = false +): React.FC> { + const MarkdownComponent: React.FC> = ({ + className = '', + spacing: spacingProp, + ...rest + }) => ( + + ); + hoistNonReactStatics(MarkdownComponent, Component); + return MarkdownComponent; +} diff --git a/packages/mdx-components-client/src/withMarkdownSpacing/styles.css.ts b/packages/mdx-components-client/src/withMarkdownSpacing/styles.css.ts new file mode 100644 index 000000000..f2ce965b7 --- /dev/null +++ b/packages/mdx-components-client/src/withMarkdownSpacing/styles.css.ts @@ -0,0 +1,7 @@ +import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; + +export default { + none: responsiveSprinkles({ marginTop: ['none', 'none', 'none', 'none'] }), + regular: responsiveSprinkles({ marginTop: ['x6', 'x6', 'x6', 'x6'] }), + inline: responsiveSprinkles({ paddingLeft: ['x1', 'x1', 'x1', 'x1'] }) +}; diff --git a/packages/mdx-components-client/tsconfig.json b/packages/mdx-components-client/tsconfig.json new file mode 100644 index 000000000..a179de405 --- /dev/null +++ b/packages/mdx-components-client/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.bundle.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/packages/site-preset-styles/src/index.js b/packages/site-preset-styles/src/index.js index 6aea1782a..7b945061d 100644 --- a/packages/site-preset-styles/src/index.js +++ b/packages/site-preset-styles/src/index.js @@ -6,6 +6,7 @@ import '@jpmorganchase/mosaic-theme/salt.css'; import '@jpmorganchase/mosaic-layouts/index.css'; import '@jpmorganchase/mosaic-site-components/index.css'; import '@jpmorganchase/mosaic-components/index.css'; +import '@jpmorganchase/mosaic-mdx-components-client/index.css'; import '@jpmorganchase/mosaic-labs-components/index.css'; import '@jpmorganchase/mosaic-content-editor-plugin/index.css'; import 'prismjs/themes/prism.css'; From 186680f23e5ca0dfdd5e470d73da519a4e7af6d7 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Mon, 19 Jun 2023 12:17:14 +0100 Subject: [PATCH 12/36] new `@jpmorganchase/mosaic-components-server` package to support Remote Server Components and App Router in site --- packages/mdx-components-server/README.md | 18 ++ packages/mdx-components-server/package.json | 51 +++++ packages/mdx-components-server/src/index.tsx | 202 +++++++++++++++++++ packages/mdx-components-server/tsconfig.json | 8 + packages/site/package.json | 5 +- packages/site/tsconfig.json | 2 +- scripts/bundle.mjs | 2 + yarn.lock | 28 +++ 8 files changed, 314 insertions(+), 2 deletions(-) create mode 100644 packages/mdx-components-server/README.md create mode 100644 packages/mdx-components-server/package.json create mode 100644 packages/mdx-components-server/src/index.tsx create mode 100644 packages/mdx-components-server/tsconfig.json diff --git a/packages/mdx-components-server/README.md b/packages/mdx-components-server/README.md new file mode 100644 index 000000000..229aa2a77 --- /dev/null +++ b/packages/mdx-components-server/README.md @@ -0,0 +1,18 @@ +# Mosaic MDX Component Library (Server) + +`@jpmorganchase/mosaic-components-server` contains re-usable MDX components that conform to the Mosaic Design language. + +All the Mosaic MDX components are wrapped with default spacing so they can be composed within a MDX page + +This package is intended to be used with a Mosaic site and should export "server side" components + +## Installation + +`yarn add @jpmorganchase/mosaic-components-server` + +## Criteria + +The criteria for a component within `@jpmorganchase/mosaic-components-server` is + +- Should only export React server-side components (RSCs) +- It can contain any Mosaic Store, NextJS or other site specific dependencies. diff --git a/packages/mdx-components-server/package.json b/packages/mdx-components-server/package.json new file mode 100644 index 000000000..8f09aeb9b --- /dev/null +++ b/packages/mdx-components-server/package.json @@ -0,0 +1,51 @@ +{ + "name": "@jpmorganchase/mosaic-mdx-components-server", + "description": "Mosaic - MDX Components", + "version": "0.1.0-beta.36", + "author": "", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:jpmorganchase/mosaic.git", + "directory": "packages/mdx-components-server" + }, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "style": "./dist/index.css", + "exports": { + "./index.css": "./dist/index.css", + ".": { + "style": "./dist/index.css", + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "node": "./dist/index.js" + } + }, + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:types": "tsc", + "build:components": "node ../../scripts/bundle.mjs", + "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", + "lint": "eslint --ignore-pattern \"**/__tests__/**\"", + "doc": "node ../../scripts/updateDocs.js", + "dev": "node ../../scripts/bundle.mjs watch" + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.0.0", + "react": "^18.2.0", + "del-cli": "^4.0.1", + "typescript": "^4.8.3" + }, + "dependencies": { + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.36", + "@mdx-js/mdx": "^2.3.0" + }, + "peerDependencies": { + "@types/react": "^18.0.26", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/mdx-components-server/src/index.tsx b/packages/mdx-components-server/src/index.tsx new file mode 100644 index 000000000..034325f13 --- /dev/null +++ b/packages/mdx-components-server/src/index.tsx @@ -0,0 +1,202 @@ +import { MDXProvider } from '@mdx-js/react'; + +import { + a, + AccordionDetails, + AccordionSection, + AccordionSummary, + AudioPlayer, + Button, + blockquote, + Callout, + Card, + Cards, + ComponentExample, + DataTable, + em, + EditionFilterView, + EditionTileLink, + Feature, + FeatureActions, + FeatureContent, + FeatureEyebrow, + FeatureTitle, + Features, + FilterView, + FilterDropdown, + FilterToolbar, + FilterNoResults, + FilterPillGroup, + FilterSortDropdown, + FilterSearch, + FilterResultCount, + Grid, + GridBase, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + H0, + H1, + H2, + H3, + H4, + H5, + H6, + HelpLinks, + Hero, + inlineCode, + Icon, + Impact, + Impacts, + li, + Label, + Link, + LinkBase, + LinkText, + Links, + ListItem, + ol, + OrderedList, + p, + PageFilterView, + pre, + Pre, + // ReactLive, + SecondaryNavbar, + SectionHeading, + strong, + StickyHeader, + Story, + table, + Table, + Tag, + Tabs, + Tab, + TabsBase, + tbody, + Tbody, + td, + Td, + thead, + Thead, + th, + Th, + Tiles, + TileBase, + TileButton, + TileContent, + TileContentLabel, + TileLink, + tr, + Tr, + ul, + UnorderedList, + View, + ViewStack, + VideoPlayer +} from '@jpmorganchase/mosaic-mdx-components-client'; + +const components = { + a, + AccordionDetails, + AccordionSection, + AccordionSummary, + AudioPlayer, + Button, + blockquote, + Callout, + Card, + Cards, + ComponentExample, + DataTable, + em, + EditionFilterView, + EditionTileLink, + Feature, + FeatureActions, + FeatureContent, + FeatureEyebrow, + FeatureTitle, + Features, + FilterView, + FilterDropdown, + FilterToolbar, + FilterNoResults, + FilterPillGroup, + FilterSortDropdown, + FilterSearch, + FilterResultCount, + Grid, + GridBase, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + H0, + H1, + H2, + H3, + H4, + H5, + H6, + HelpLinks, + Hero, + inlineCode, + Icon, + Impact, + Impacts, + li, + Label, + Link, + LinkBase, + LinkText, + Links, + ListItem, + ol, + OrderedList, + p, + PageFilterView, + pre, + Pre, + // ReactLive, + SecondaryNavbar, + SectionHeading, + strong, + StickyHeader, + Story, + table, + Table, + Tag, + Tabs, + Tab, + TabsBase, + tbody, + Tbody, + td, + Td, + thead, + Thead, + th, + Th, + Tiles, + TileBase, + TileButton, + TileContent, + TileContentLabel, + TileLink, + tr, + Tr, + ul, + UnorderedList, + View, + VideoPlayer, + ViewStack +}; +export default components as React.ComponentProps['components']; diff --git a/packages/mdx-components-server/tsconfig.json b/packages/mdx-components-server/tsconfig.json new file mode 100644 index 000000000..a179de405 --- /dev/null +++ b/packages/mdx-components-server/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.bundle.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/packages/site/package.json b/packages/site/package.json index 5fd24220b..0967bc4be 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -32,6 +32,7 @@ "@jpmorganchase/mosaic-cli": "^0.1.0-beta.51", "@jpmorganchase/mosaic-components": "^0.1.0-beta.51", "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-mdx-components-server": "^0.1.0-beta.51", "@jpmorganchase/mosaic-layouts": "^0.1.0-beta.51", "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.51", "@jpmorganchase/mosaic-site-preset-styles": "^0.1.0-beta.51", @@ -43,7 +44,9 @@ "@philpl/buble": "^0.19.7", "@types/react": "^18.0.26", "next": "^13.4.4", - "next-auth": "^4.22.1" + "next-auth": "^4.22.1", + "remark-gfm": "3.0.1", + "rehype-slug": "^5.0.1" }, "devDependencies": { "@next/eslint-plugin-next": "12.3.1", diff --git a/packages/site/tsconfig.json b/packages/site/tsconfig.json index e079f0ac5..ad7984295 100644 --- a/packages/site/tsconfig.json +++ b/packages/site/tsconfig.json @@ -33,5 +33,5 @@ ] }, "include": ["src", ".next/types/**/*.ts"], - "exclude": ["node_modules", "dist/**/*"] + "exclude": ["node_modules"] } diff --git a/scripts/bundle.mjs b/scripts/bundle.mjs index f96c9a5b9..c5769c453 100644 --- a/scripts/bundle.mjs +++ b/scripts/bundle.mjs @@ -46,6 +46,8 @@ try { 'next/*', '@jpmorganchase/mosaic-components', '@jpmorganchase/mosaic-components-lab', + '@jpmorganchase/mosaic-mdx-components-client', + '@jpmorganchase/mosaic-mdx-components-server', '@jpmorganchase/mosaic-open-api-component', '@jpmorganchase/mosaic-content-editor-plugin', '@jpmorganchase/mosaic-site-components', diff --git a/yarn.lock b/yarn.lock index 13f36f564..a3c37fdc1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2637,6 +2637,29 @@ unist-util-visit "^4.0.0" vfile "^5.0.0" +"@mdx-js/mdx@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.3.0.tgz#d65d8c3c28f3f46bb0e7cb3bf7613b39980671a9" + integrity sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/mdx" "^2.0.0" + estree-util-build-jsx "^2.0.0" + estree-util-is-identifier-name "^2.0.0" + estree-util-to-js "^1.1.0" + estree-walker "^3.0.0" + hast-util-to-estree "^2.0.0" + markdown-extensions "^1.0.0" + periscopic "^3.0.0" + remark-mdx "^2.0.0" + remark-parse "^10.0.0" + remark-rehype "^10.0.0" + unified "^10.0.0" + unist-util-position-from-estree "^1.0.0" + unist-util-stringify-position "^3.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + "@mdx-js/react@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.2.1.tgz#5a70592418d52b1b01538c37e795034601c96ec5" @@ -3636,6 +3659,11 @@ resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e" integrity sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ== +"@types/mdx@^2.0.3": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.5.tgz#9a85a8f70c7c4d9e695a21d5ae5c93645eda64b1" + integrity sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg== + "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" From b3dadf572f4f820700f191bef9806df8e69827cc Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 20 Jun 2023 00:29:00 +0100 Subject: [PATCH 13/36] new package for icons assets `@jpmorganchase/mosaic-icons` previously icons were exported from theme as components but theme is now CSS only --- packages/components/src/Icon/index.tsx | 2 +- packages/icons/README.md | 15 +++ packages/icons/package.json | 52 +++++++++ packages/icons/scripts/bundle.mjs | 104 ++++++++++++++++++ .../{theme => icons}/scripts/saltIconNames.js | 6 +- .../src/icon/icons.ts => icons/src/index.ts} | 3 +- packages/icons/tsconfig.json | 8 ++ .../{theme => icons}/types/saltIconNames.d.ts | 0 packages/theme/scripts/bundle.mjs | 29 ----- packages/theme/src/icon/index.ts | 1 + yarn.lock | 5 - 11 files changed, 186 insertions(+), 39 deletions(-) create mode 100644 packages/icons/README.md create mode 100644 packages/icons/package.json create mode 100644 packages/icons/scripts/bundle.mjs rename packages/{theme => icons}/scripts/saltIconNames.js (90%) rename packages/{theme/src/icon/icons.ts => icons/src/index.ts} (92%) create mode 100644 packages/icons/tsconfig.json rename packages/{theme => icons}/types/saltIconNames.d.ts (100%) diff --git a/packages/components/src/Icon/index.tsx b/packages/components/src/Icon/index.tsx index 01cb2d2ce..fe2a75ca3 100644 --- a/packages/components/src/Icon/index.tsx +++ b/packages/components/src/Icon/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { icons, IconNames } from '@jpmorganchase/mosaic-theme'; +import { icons, IconNames } from '@jpmorganchase/mosaic-icons'; export interface IconProps { /** Additional class name for root class override. */ diff --git a/packages/icons/README.md b/packages/icons/README.md new file mode 100644 index 000000000..c93007ccf --- /dev/null +++ b/packages/icons/README.md @@ -0,0 +1,15 @@ +# Mosaic Icon Library + +`@jpmorganchase/mosaic-icons`contains icons used by the Mosaic. + +## Installation + +`yarn add @jpmorganchase/mosaic-icons` + +## Criteria + +The criteria for a component within `@jpmorganchase/mosaic-icons` is + +- It can be used outside the Mosaic site with only Mosaic theme dependencies. +- It **should not** contain any Mosaic Store, NextJS or other site specific dependencies. +- Should be client-side only components diff --git a/packages/icons/package.json b/packages/icons/package.json new file mode 100644 index 000000000..a395667ac --- /dev/null +++ b/packages/icons/package.json @@ -0,0 +1,52 @@ +{ + "name": "@jpmorganchase/mosaic-icons", + "description": "Mosaic - Icons", + "version": "0.1.0-beta.36", + "author": "", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:jpmorganchase/mosaic.git", + "directory": "packages/icons" + }, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "style": "./dist/index.css", + "exports": { + "./index.css": "./dist/index.css", + ".": { + "style": "./dist/index.css", + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "node": "./dist/index.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:types": "tsc", + "build:components": "node ./scripts/bundle.mjs", + "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", + "lint": "eslint --ignore-pattern \"**/__tests__/**\"", + "dev": "node ./scripts/bundle.mjs watch" + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.0.0", + "del-cli": "^4.0.1", + "typescript": "^4.8.3" + }, + "dependencies": { + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.36", + "@salt-ds/core": "^1.8.0-rc.0" + }, + "peerDependencies": { + "@types/react": "^18.0.26", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/icons/scripts/bundle.mjs b/packages/icons/scripts/bundle.mjs new file mode 100644 index 000000000..136660f1a --- /dev/null +++ b/packages/icons/scripts/bundle.mjs @@ -0,0 +1,104 @@ +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; +import saltIconNamesPlugin from './saltIconNames.js'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +const onEndPlugin = { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } +}; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['../../node_modules/@salt-ds/icons/dist-es/components/*.js']), + bundle: false, + outdir: 'dist', + plugins: [saltIconNamesPlugin, onEndPlugin] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__'] + }), + loader: { + '.jpg': 'dataurl', + '.png': 'dataurl', + '.svg': 'text' + }, + outdir: './dist', + bundle: true, + sourcemap: false, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022'], + plugins: [ + nodeExternalsPlugin(), + { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } + } + ], + external: ['react', 'react-dom'] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/theme/scripts/saltIconNames.js b/packages/icons/scripts/saltIconNames.js similarity index 90% rename from packages/theme/scripts/saltIconNames.js rename to packages/icons/scripts/saltIconNames.js index 0d59020fe..e854f5797 100644 --- a/packages/theme/scripts/saltIconNames.js +++ b/packages/icons/scripts/saltIconNames.js @@ -1,5 +1,5 @@ -const fs = require('fs'); -const path = require('path'); +import fs from 'fs'; +import path from 'path'; const typesPath = path.join(process.cwd(), 'types/saltIconNames.d.ts'); @@ -32,4 +32,4 @@ const saltIconNames = { } }; -module.exports = saltIconNames; +export default saltIconNames; diff --git a/packages/theme/src/icon/icons.ts b/packages/icons/src/index.ts similarity index 92% rename from packages/theme/src/icon/icons.ts rename to packages/icons/src/index.ts index 59623831a..064f37cf8 100644 --- a/packages/theme/src/icon/icons.ts +++ b/packages/icons/src/index.ts @@ -1,7 +1,8 @@ +'use client'; import React from 'react'; import * as SaltIcons from '@salt-ds/icons'; import type { IconProps as SaltIconProps } from '@salt-ds/icons'; -import type { saltIconNames } from '../../types/saltIconNames'; +import type { saltIconNames } from '../types/saltIconNames'; const { DEFAULT_ICON_SIZE: DEDEFAULT_ICON_SIZE, diff --git a/packages/icons/tsconfig.json b/packages/icons/tsconfig.json new file mode 100644 index 000000000..a179de405 --- /dev/null +++ b/packages/icons/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.bundle.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/packages/theme/types/saltIconNames.d.ts b/packages/icons/types/saltIconNames.d.ts similarity index 100% rename from packages/theme/types/saltIconNames.d.ts rename to packages/icons/types/saltIconNames.d.ts diff --git a/packages/theme/scripts/bundle.mjs b/packages/theme/scripts/bundle.mjs index 1ab94d497..b15bccafc 100644 --- a/packages/theme/scripts/bundle.mjs +++ b/packages/theme/scripts/bundle.mjs @@ -3,7 +3,6 @@ import glob from 'fast-glob'; import esbuild from 'esbuild'; import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; import publicImageResolverPlugin from './publicImageResolver.js'; -import saltIconNamesPlugin from './saltIconNames.js'; const args = process.argv.slice(2); const watchEnabled = args[0] === 'watch'; @@ -22,34 +21,6 @@ const onEndPlugin = { } }; -try { - const context = await esbuild.context({ - entryPoints: glob.sync(['../../node_modules/@salt-ds/icons/dist-es/components/*.js']), - bundle: false, - outdir: 'dist', - plugins: [saltIconNamesPlugin, onEndPlugin] - }); - await context.rebuild(); - if (watchEnabled) { - await context.watch(); - } - await context.serve(); - context.dispose(); -} catch (e) { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - process.exit(1); -} - try { const entries = glob.sync(['src/index.ts', 'src/**/index.ts'], { dot: true diff --git a/packages/theme/src/icon/index.ts b/packages/theme/src/icon/index.ts index 838008a0b..dc6364acf 100644 --- a/packages/theme/src/icon/index.ts +++ b/packages/theme/src/icon/index.ts @@ -1 +1,2 @@ +export * from './icons.css'; export * from './icons'; diff --git a/yarn.lock b/yarn.lock index a3c37fdc1..ba7624a27 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3659,11 +3659,6 @@ resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e" integrity sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ== -"@types/mdx@^2.0.3": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.5.tgz#9a85a8f70c7c4d9e695a21d5ae5c93645eda64b1" - integrity sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg== - "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" From 97a5e5a617922274eb6fc582f0e6641ef96caae4 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 20 Jun 2023 00:31:42 +0100 Subject: [PATCH 14/36] move ThemeProvider to `@jpmorganchase/site-components` to remove dependency on store in components package --- packages/components/src/index.tsx | 1 - packages/{components => site-components}/src/ThemeProvider.tsx | 0 packages/site-components/src/index.tsx | 1 + 3 files changed, 1 insertion(+), 1 deletion(-) rename packages/{components => site-components}/src/ThemeProvider.tsx (100%) diff --git a/packages/components/src/index.tsx b/packages/components/src/index.tsx index 79a2bff74..0affd2b26 100644 --- a/packages/components/src/index.tsx +++ b/packages/components/src/index.tsx @@ -38,7 +38,6 @@ export * from './Story'; export * from './Tabs'; export * from './TabsBase'; export * from './Tag'; -export * from './ThemeProvider'; export * from './TileBase'; export * from './TileButton'; export * from './TileContent'; diff --git a/packages/components/src/ThemeProvider.tsx b/packages/site-components/src/ThemeProvider.tsx similarity index 100% rename from packages/components/src/ThemeProvider.tsx rename to packages/site-components/src/ThemeProvider.tsx diff --git a/packages/site-components/src/index.tsx b/packages/site-components/src/index.tsx index de9e3ec31..b34c618b3 100644 --- a/packages/site-components/src/index.tsx +++ b/packages/site-components/src/index.tsx @@ -19,6 +19,7 @@ export * from './NavigationEvents'; export * from './PageNavigation'; export * from './Sidebar'; export * from './TableOfContents'; +export * from './ThemeProvider'; export * from './UserProfile'; export * from './VerticalNavigation'; export * from './404'; From 85433abc348986431705e2d1b03f1373c61bd921 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Fri, 23 Jun 2023 23:28:09 +0100 Subject: [PATCH 15/36] simplify the configuration of site by moving providers to site components --- .../src}/ImageProvider.tsx | 3 +- .../src}/LinkProvider.tsx | 3 +- packages/site-components/src/Metadata.tsx | 5 ++- .../src}/SessionProvider.tsx | 3 +- .../src}/StoreProvider.tsx | 12 +++--- packages/site-components/src/index.tsx | 4 ++ packages/site/src/app/[...slug]/fonts.ts | 15 ++++++++ packages/site/src/app/[...slug]/layout.tsx | 38 +++++++------------ .../site/src/components/LayoutProvider.tsx | 8 ---- packages/site/src/components/Metadata.tsx | 8 ---- packages/site/src/utils/getPage.ts | 9 ++++- packages/site/src/utils/getSharedConfig.ts | 10 ----- 12 files changed, 53 insertions(+), 65 deletions(-) rename packages/{site/src/components => site-components/src}/ImageProvider.tsx (91%) rename packages/{site/src/components => site-components/src}/LinkProvider.tsx (90%) rename packages/{site/src/components => site-components/src}/SessionProvider.tsx (87%) rename packages/{site/src/components => site-components/src}/StoreProvider.tsx (69%) create mode 100644 packages/site/src/app/[...slug]/fonts.ts delete mode 100644 packages/site/src/components/LayoutProvider.tsx delete mode 100644 packages/site/src/components/Metadata.tsx delete mode 100644 packages/site/src/utils/getSharedConfig.ts diff --git a/packages/site/src/components/ImageProvider.tsx b/packages/site-components/src/ImageProvider.tsx similarity index 91% rename from packages/site/src/components/ImageProvider.tsx rename to packages/site-components/src/ImageProvider.tsx index 9cf750cfb..abbaff610 100644 --- a/packages/site/src/components/ImageProvider.tsx +++ b/packages/site-components/src/ImageProvider.tsx @@ -1,5 +1,4 @@ -'use client'; - +import React from 'react'; import { Image } from '@jpmorganchase/mosaic-site-components'; import { ImageProvider as MosaicImageProvider } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site/src/components/LinkProvider.tsx b/packages/site-components/src/LinkProvider.tsx similarity index 90% rename from packages/site/src/components/LinkProvider.tsx rename to packages/site-components/src/LinkProvider.tsx index 02fdc480f..ce3fb63bd 100644 --- a/packages/site/src/components/LinkProvider.tsx +++ b/packages/site-components/src/LinkProvider.tsx @@ -1,5 +1,4 @@ -'use client'; - +import React from 'react'; import { Link } from '@jpmorganchase/mosaic-site-components'; import { LinkProvider as MosaicLinkProvider } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/Metadata.tsx b/packages/site-components/src/Metadata.tsx index b8415ccb2..829708964 100644 --- a/packages/site-components/src/Metadata.tsx +++ b/packages/site-components/src/Metadata.tsx @@ -3,14 +3,15 @@ import React, { ElementType } from 'react'; import { useMeta } from '@jpmorganchase/mosaic-store'; import type { MetaSlice } from '@jpmorganchase/mosaic-store'; import { useSession } from 'next-auth/react'; +import Head from 'next/head'; export interface HTMLMeta extends MetaSlice {} export type MetadataProps = { - Component: ElementType; + Component?: ElementType; }; -export const Metadata: React.FC = ({ Component = 'head' }) => { +export const Metadata: React.FC = ({ Component = Head }) => { const { meta } = useMeta(); const { data: session } = useSession(); return ( diff --git a/packages/site/src/components/SessionProvider.tsx b/packages/site-components/src/SessionProvider.tsx similarity index 87% rename from packages/site/src/components/SessionProvider.tsx rename to packages/site-components/src/SessionProvider.tsx index 7567170e9..1e664aaf3 100644 --- a/packages/site/src/components/SessionProvider.tsx +++ b/packages/site-components/src/SessionProvider.tsx @@ -1,5 +1,4 @@ -'use client'; - +import React from 'react'; import { SessionProvider as NextSessionProvider } from 'next-auth/react'; export function SessionProvider({ children }) { diff --git a/packages/site/src/components/StoreProvider.tsx b/packages/site-components/src/StoreProvider.tsx similarity index 69% rename from packages/site/src/components/StoreProvider.tsx rename to packages/site-components/src/StoreProvider.tsx index 200bc93a7..6d56d755f 100644 --- a/packages/site/src/components/StoreProvider.tsx +++ b/packages/site-components/src/StoreProvider.tsx @@ -1,12 +1,14 @@ -'use client'; - import React from 'react'; import { useCreateStore, StoreProvider as StoreProviderClient } from '@jpmorganchase/mosaic-store'; import type { SiteState } from '@jpmorganchase/mosaic-store'; -function StoreProvider({ value, children }: { value: SiteState; children: React.ReactNode }) { +export function StoreProvider({ + value, + children +}: { + value: SiteState; + children: React.ReactNode; +}) { const createStore = useCreateStore(value); return {children}; } - -export default StoreProvider; diff --git a/packages/site-components/src/index.tsx b/packages/site-components/src/index.tsx index b34c618b3..cf1bcd01f 100644 --- a/packages/site-components/src/index.tsx +++ b/packages/site-components/src/index.tsx @@ -12,11 +12,15 @@ export * from './DocPaginator'; export * from './Drawer'; export * from './Footer'; export * from './HTMLView'; +export * from './ImageProvider'; +export * from './LinkProvider'; export * from './Link'; export * from './Image'; export * from './Metadata'; export * from './NavigationEvents'; export * from './PageNavigation'; +export * from './SessionProvider'; +export * from './StoreProvider'; export * from './Sidebar'; export * from './TableOfContents'; export * from './ThemeProvider'; diff --git a/packages/site/src/app/[...slug]/fonts.ts b/packages/site/src/app/[...slug]/fonts.ts new file mode 100644 index 000000000..f5b2fcd45 --- /dev/null +++ b/packages/site/src/app/[...slug]/fonts.ts @@ -0,0 +1,15 @@ +import { Open_Sans, PT_Mono } from 'next/font/google'; + +const ptMono = PT_Mono({ + weight: '400', + display: 'swap', + subsets: ['latin'], + variable: '--salt-typography-fontFamily:' +}); +const openSans = Open_Sans({ + subsets: ['latin'], + variable: '--salt-typography-fontFamily-code', + display: 'swap' +}); + +export default [ptMono.variable, openSans.variable]; diff --git a/packages/site/src/app/[...slug]/layout.tsx b/packages/site/src/app/[...slug]/layout.tsx index 2c6fb1aca..77512170d 100644 --- a/packages/site/src/app/[...slug]/layout.tsx +++ b/packages/site/src/app/[...slug]/layout.tsx @@ -1,35 +1,25 @@ import classnames from 'classnames'; import { headers } from 'next/headers'; -import { PT_Mono, Open_Sans } from 'next/font/google'; +import { + BaseUrlProvider, + ImageProvider, + LinkProvider, + Metadata, + SessionProvider, + StoreProvider, + ThemeProvider +} from '@jpmorganchase/mosaic-site-components'; +import { LayoutProvider } from '@jpmorganchase/mosaic-layouts'; import { themeClassName } from '@jpmorganchase/mosaic-theme'; -import { BaseUrlProvider, ThemeProvider } from '@jpmorganchase/mosaic-site-components'; -import StoreProvider from '../../components/StoreProvider'; -import { Metadata } from '../../components/Metadata'; -import { LinkProvider } from '../../components/LinkProvider'; -import { ImageProvider } from '../../components/ImageProvider'; -import { SessionProvider } from '../../components/SessionProvider'; -import { LayoutProvider } from '../../components/LayoutProvider'; +import fontClassNames from './fonts'; import { getPage } from '../../utils/getPage'; -const ptMono = PT_Mono({ - weight: '400', - display: 'swap', - subsets: ['latin'], - variable: '--salt-typography-fontFamily:' -}); -const openSans = Open_Sans({ - subsets: ['latin'], - variable: '--salt-typography-fontFamily-code', - display: 'swap' -}); - export default async function Layout({ children }) { const pathname = headers().get('x-next-pathname') as string; if (!pathname) { return null; } - const { data } = await getPage(pathname); return ( @@ -37,11 +27,9 @@ export default async function Layout({ children }) { - + - {children} + {children} diff --git a/packages/site/src/components/LayoutProvider.tsx b/packages/site/src/components/LayoutProvider.tsx deleted file mode 100644 index fbcb10217..000000000 --- a/packages/site/src/components/LayoutProvider.tsx +++ /dev/null @@ -1,8 +0,0 @@ -'use client'; - -import { layouts } from '@jpmorganchase/mosaic-layouts'; - -export function LayoutProvider({ name, children }) { - const LayoutComponent = layouts[name]; - return {children}; -} diff --git a/packages/site/src/components/Metadata.tsx b/packages/site/src/components/Metadata.tsx deleted file mode 100644 index 0d466e815..000000000 --- a/packages/site/src/components/Metadata.tsx +++ /dev/null @@ -1,8 +0,0 @@ -'use client'; - -import { Metadata as MosaicMetadata } from '@jpmorganchase/mosaic-site-components'; -import Head from 'next/head'; - -export function Metadata() { - return ; -} diff --git a/packages/site/src/utils/getPage.ts b/packages/site/src/utils/getPage.ts index 8f278c3eb..b00224663 100644 --- a/packages/site/src/utils/getPage.ts +++ b/packages/site/src/utils/getPage.ts @@ -2,7 +2,6 @@ import path from 'path'; import nodeFetch from 'node-fetch'; import matter from 'gray-matter'; import type { SiteState } from '@jpmorganchase/mosaic-store'; -import { getSharedConfig } from './getSharedConfig'; type Page = { /** Page body content */ @@ -12,6 +11,14 @@ type Page = { }; type GetPage = (pathname: string) => Promise; +export const getSharedConfig = async route => { + const routeBase = path.dirname(route); + const url = path.join('http://localhost:8080', routeBase, 'shared-config.json'); + const res = await nodeFetch(url); + const resJson = await res.json(); + return resJson.config; +}; + export const getPage: GetPage = async pathname => { const url = path.join('http://localhost:8080', pathname); const result = await nodeFetch(url); diff --git a/packages/site/src/utils/getSharedConfig.ts b/packages/site/src/utils/getSharedConfig.ts deleted file mode 100644 index f9eeab99d..000000000 --- a/packages/site/src/utils/getSharedConfig.ts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path'; -import nodeFetch from 'node-fetch'; - -export const getSharedConfig = async route => { - const routeBase = path.dirname(route); - const url = path.join('http://localhost:8080', routeBase, 'shared-config.json'); - const res = await nodeFetch(url); - const resJson = await res.json(); - return resJson.config; -}; From d1d4b78b63fa1b5580727af8d25d7137b1a47e4b Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Fri, 23 Jun 2023 23:47:41 +0100 Subject: [PATCH 16/36] remove un-necessary 'use client' directives from site-components --- packages/site-components/src/AppHeader/index.ts | 1 - packages/site-components/src/BackLink/index.tsx | 1 - packages/site-components/src/BaseUrlProvider.tsx | 1 - packages/site-components/src/Breadcrumbs/Breadcrumb.tsx | 1 - packages/site-components/src/Breadcrumbs/index.ts | 1 - packages/site-components/src/DocPaginator/index.ts | 1 - packages/site-components/src/Footer/index.ts | 1 - packages/site-components/src/HTMLView.tsx | 2 -- packages/site-components/src/Home/index.tsx | 1 - packages/site-components/src/Image/index.tsx | 1 - packages/site-components/src/Link.tsx | 1 - packages/site-components/src/Metadata.tsx | 1 - packages/site-components/src/PageNavigation.tsx | 1 - packages/site-components/src/UserProfile/index.tsx | 1 - packages/site-components/src/VerticalNavigation.tsx | 1 - 15 files changed, 16 deletions(-) diff --git a/packages/site-components/src/AppHeader/index.ts b/packages/site-components/src/AppHeader/index.ts index 092ba6aec..dc1ce3b80 100644 --- a/packages/site-components/src/AppHeader/index.ts +++ b/packages/site-components/src/AppHeader/index.ts @@ -1,4 +1,3 @@ -'use client'; import { withAppHeaderAdapter } from './withAppHeaderAdapter'; import { AppHeader as OriginalAppHeader } from './AppHeader'; diff --git a/packages/site-components/src/BackLink/index.tsx b/packages/site-components/src/BackLink/index.tsx index c1dc9c889..e333640fb 100644 --- a/packages/site-components/src/BackLink/index.tsx +++ b/packages/site-components/src/BackLink/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import { Action6, Link } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/BaseUrlProvider.tsx b/packages/site-components/src/BaseUrlProvider.tsx index b52350551..79a895fb4 100644 --- a/packages/site-components/src/BaseUrlProvider.tsx +++ b/packages/site-components/src/BaseUrlProvider.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { createContext, Context, useContext } from 'react'; import { hasProtocol } from '@jpmorganchase/mosaic-components'; import { useRoute } from '@jpmorganchase/mosaic-store'; diff --git a/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx b/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx index 9391eb886..e8ade21d9 100644 --- a/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx +++ b/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { forwardRef, ReactNode } from 'react'; import { Link } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/Breadcrumbs/index.ts b/packages/site-components/src/Breadcrumbs/index.ts index b1601227e..f9c87f55e 100644 --- a/packages/site-components/src/Breadcrumbs/index.ts +++ b/packages/site-components/src/Breadcrumbs/index.ts @@ -1,4 +1,3 @@ -'use client'; import { withBreadcrumbsAdapter } from './withBreadcrumbsAdapter'; import { Breadcrumbs as OriginalBreadcrumbs } from './Breadcrumbs'; diff --git a/packages/site-components/src/DocPaginator/index.ts b/packages/site-components/src/DocPaginator/index.ts index 0462be571..78fe6cd07 100644 --- a/packages/site-components/src/DocPaginator/index.ts +++ b/packages/site-components/src/DocPaginator/index.ts @@ -1,4 +1,3 @@ -'use client'; import { withNavigationAdapter } from './withNavigationAdapter'; import { DocPaginator as OriginalDocPaginator } from './DocPaginator'; diff --git a/packages/site-components/src/Footer/index.ts b/packages/site-components/src/Footer/index.ts index b68bd6c70..f6a7f6cd7 100644 --- a/packages/site-components/src/Footer/index.ts +++ b/packages/site-components/src/Footer/index.ts @@ -1,4 +1,3 @@ -'use client'; import { withFooterAdapter } from './withFooterAdapter'; import { Footer as OriginalFooter } from './Footer'; diff --git a/packages/site-components/src/HTMLView.tsx b/packages/site-components/src/HTMLView.tsx index 39b7a06b9..681eff611 100644 --- a/packages/site-components/src/HTMLView.tsx +++ b/packages/site-components/src/HTMLView.tsx @@ -1,5 +1,3 @@ -'use client'; - import React, { useEffect } from 'react'; const embeddedWebViewInitialized = false; diff --git a/packages/site-components/src/Home/index.tsx b/packages/site-components/src/Home/index.tsx index 3e2c8bcc0..3075ada1f 100644 --- a/packages/site-components/src/Home/index.tsx +++ b/packages/site-components/src/Home/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import classnames from 'clsx'; import { useImageComponent } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/Image/index.tsx b/packages/site-components/src/Image/index.tsx index 699b3fa8b..b1772c16b 100644 --- a/packages/site-components/src/Image/index.tsx +++ b/packages/site-components/src/Image/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { FC, forwardRef, Ref } from 'react'; import NextImage, { type ImageProps as NextImageProps } from 'next/image'; import classnames from 'clsx'; diff --git a/packages/site-components/src/Link.tsx b/packages/site-components/src/Link.tsx index 0c7fbfd60..008b3fe1d 100644 --- a/packages/site-components/src/Link.tsx +++ b/packages/site-components/src/Link.tsx @@ -1,4 +1,3 @@ -'use client'; import NextLink from 'next/link'; import React, { Ref } from 'react'; diff --git a/packages/site-components/src/Metadata.tsx b/packages/site-components/src/Metadata.tsx index 829708964..c5a4a9c62 100644 --- a/packages/site-components/src/Metadata.tsx +++ b/packages/site-components/src/Metadata.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { ElementType } from 'react'; import { useMeta } from '@jpmorganchase/mosaic-store'; import type { MetaSlice } from '@jpmorganchase/mosaic-store'; diff --git a/packages/site-components/src/PageNavigation.tsx b/packages/site-components/src/PageNavigation.tsx index 06205713a..851baa057 100644 --- a/packages/site-components/src/PageNavigation.tsx +++ b/packages/site-components/src/PageNavigation.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import { useSidebar } from '@jpmorganchase/mosaic-store'; import { VerticalNavigation } from './VerticalNavigation'; diff --git a/packages/site-components/src/UserProfile/index.tsx b/packages/site-components/src/UserProfile/index.tsx index 273de73c2..dc5adf872 100644 --- a/packages/site-components/src/UserProfile/index.tsx +++ b/packages/site-components/src/UserProfile/index.tsx @@ -1,4 +1,3 @@ -'use client'; import React, { ReactElement } from 'react'; import classnames from 'clsx'; import { Avatar } from '@salt-ds/core'; diff --git a/packages/site-components/src/VerticalNavigation.tsx b/packages/site-components/src/VerticalNavigation.tsx index d3b8c8611..41a4ad3d3 100644 --- a/packages/site-components/src/VerticalNavigation.tsx +++ b/packages/site-components/src/VerticalNavigation.tsx @@ -1,4 +1,3 @@ -'use client'; import React from 'react'; import { ElementStyles, Sidebar as SidebarPro, Menu, MenuItem, SubMenu } from 'react-pro-sidebar'; import { link } from '@jpmorganchase/mosaic-theme'; From db735835894eeeddeb4b04882d716d703a904556 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 27 Jun 2023 22:15:11 +0100 Subject: [PATCH 17/36] remove open-api and lab components from default component packages if you require these components, add them into your configuration --- packages/mdx-components-client/src/components.ts | 2 -- packages/site-preset-styles/package.json | 2 -- packages/site-preset-styles/src/index.js | 1 - packages/site/next.config.js | 2 -- 4 files changed, 7 deletions(-) diff --git a/packages/mdx-components-client/src/components.ts b/packages/mdx-components-client/src/components.ts index 47119d31f..16cf153f0 100644 --- a/packages/mdx-components-client/src/components.ts +++ b/packages/mdx-components-client/src/components.ts @@ -83,7 +83,6 @@ import { ViewStack as MosaicViewStack, ViewStackProps } from '@jpmorganchase/mosaic-components'; -import { OpenAPI as MosaicOpenAPI, OpenAPIProps } from '@jpmorganchase/mosaic-open-api-component'; import { withMarkdownSpacing } from './withMarkdownSpacing'; export { @@ -143,7 +142,6 @@ export const LinkBase = withMarkdownSpacing(MosaicLinkBase); export const LinkText = withMarkdownSpacing(MosaicLinkText); export const Links = withMarkdownSpacing(MosaicLinks); export const ListItem = withMarkdownSpacing(MosaicListItem); -export const OpenAPI = withMarkdownSpacing(MosaicOpenAPI); export const OrderedList = withMarkdownSpacing(MosaicOrderedList); export const Tag = withMarkdownSpacing(MosaicTag); export const SecondaryNavbar = withMarkdownSpacing(MosaicSecondaryNavbar); diff --git a/packages/site-preset-styles/package.json b/packages/site-preset-styles/package.json index ba3b6b7ee..a310fc1f5 100644 --- a/packages/site-preset-styles/package.json +++ b/packages/site-preset-styles/package.json @@ -30,8 +30,6 @@ "@salt-ds/theme": "^1.8.0", "@salt-ds/icons": "^1.6.0", "@jpmorganchase/mosaic-components": "0.1.0-beta.51", - "@jpmorganchase/mosaic-labs-components": "0.1.0-beta.51", - "@jpmorganchase/mosaic-open-api-component": "0.1.0-beta.51", "@jpmorganchase/mosaic-content-editor-plugin": "0.1.0-beta.51", "@jpmorganchase/mosaic-site-components": "0.1.0-beta.51", "@jpmorganchase/mosaic-layouts": "0.1.0-beta.51", diff --git a/packages/site-preset-styles/src/index.js b/packages/site-preset-styles/src/index.js index 7b945061d..b4957c00a 100644 --- a/packages/site-preset-styles/src/index.js +++ b/packages/site-preset-styles/src/index.js @@ -7,6 +7,5 @@ import '@jpmorganchase/mosaic-layouts/index.css'; import '@jpmorganchase/mosaic-site-components/index.css'; import '@jpmorganchase/mosaic-components/index.css'; import '@jpmorganchase/mosaic-mdx-components-client/index.css'; -import '@jpmorganchase/mosaic-labs-components/index.css'; import '@jpmorganchase/mosaic-content-editor-plugin/index.css'; import 'prismjs/themes/prism.css'; diff --git a/packages/site/next.config.js b/packages/site/next.config.js index 7f060550c..1dc065391 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -12,9 +12,7 @@ const nextConfig = { transpilePackages: [ '@jpmorganchase/mosaic-components', '@jpmorganchase/mosaic-content-editor-plugin', - '@jpmorganchase/mosaic-labs-components', '@jpmorganchase/mosaic-layouts', - '@jpmorganchase/mosaic-open-api-component', '@jpmorganchase/mosaic-site-components', '@jpmorganchase/mosaic-site-middleware', '@jpmorganchase/mosaic-theme', From 268181ff68e7808ae187609d3bbeb4ca66505126 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 27 Jun 2023 22:19:29 +0100 Subject: [PATCH 18/36] add `@jpmorganchase/site-loaders` which add loaders to site for supported modes --- packages/schemas/src/ActiveEnvSchema.ts | 7 ++ packages/schemas/src/index.ts | 1 + .../site-components/src/StoreProvider.tsx | 2 +- packages/site-loaders/README.md | 13 ++++ packages/site-loaders/package.json | 45 +++++++++++ packages/site-loaders/scripts/bundle.mjs | 45 +++++++++++ packages/site-loaders/src/index.ts | 20 +++++ packages/site-loaders/src/loadActivePage.ts | 65 ++++++++++++++++ packages/site-loaders/src/loadSnapshotFile.ts | 76 +++++++++++++++++++ packages/site-loaders/src/types/index.ts | 5 ++ packages/site-loaders/tsconfig.json | 10 +++ packages/site/package.json | 1 + packages/site/src/app/[...slug]/fonts.ts | 3 +- packages/site/src/app/[...slug]/layout.tsx | 4 +- packages/site/src/app/[...slug]/page.tsx | 5 +- packages/site/src/utils/getPage.ts | 30 -------- yarn.lock | 5 ++ 17 files changed, 300 insertions(+), 37 deletions(-) create mode 100644 packages/schemas/src/ActiveEnvSchema.ts create mode 100644 packages/site-loaders/README.md create mode 100644 packages/site-loaders/package.json create mode 100644 packages/site-loaders/scripts/bundle.mjs create mode 100644 packages/site-loaders/src/index.ts create mode 100644 packages/site-loaders/src/loadActivePage.ts create mode 100644 packages/site-loaders/src/loadSnapshotFile.ts create mode 100644 packages/site-loaders/src/types/index.ts create mode 100644 packages/site-loaders/tsconfig.json delete mode 100644 packages/site/src/utils/getPage.ts diff --git a/packages/schemas/src/ActiveEnvSchema.ts b/packages/schemas/src/ActiveEnvSchema.ts new file mode 100644 index 000000000..dd8e99cfc --- /dev/null +++ b/packages/schemas/src/ActiveEnvSchema.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; + +export const activeEnvSchema = z.object({ + MOSAIC_ACTIVE_MODE_URL: z.string() +}); + +export type ActiveEnvSchema = z.infer; diff --git a/packages/schemas/src/index.ts b/packages/schemas/src/index.ts index e114869b9..3736bdb0f 100644 --- a/packages/schemas/src/index.ts +++ b/packages/schemas/src/index.ts @@ -3,6 +3,7 @@ export * from './credentialsSchema.js'; export * from './fileExtensionSchema.js'; export * from './validate.js'; +export * from './ActiveEnvSchema.js'; export * from './SnapshotFileEnvSchema.js'; export * from './MosaicConfigSchema.js'; export * from './PluginModuleSchema.js'; diff --git a/packages/site-components/src/StoreProvider.tsx b/packages/site-components/src/StoreProvider.tsx index 6d56d755f..6c4c68457 100644 --- a/packages/site-components/src/StoreProvider.tsx +++ b/packages/site-components/src/StoreProvider.tsx @@ -6,7 +6,7 @@ export function StoreProvider({ value, children }: { - value: SiteState; + value: Partial; children: React.ReactNode; }) { const createStore = useCreateStore(value); diff --git a/packages/site-loaders/README.md b/packages/site-loaders/README.md new file mode 100644 index 000000000..312ce50db --- /dev/null +++ b/packages/site-loaders/README.md @@ -0,0 +1,13 @@ +# Mosaic Site Loaders (Server) + +`@jpmorganchase/mosaic-site-loaders` contains Next JS loaders for Mosaic content served by Mosaic Core. + +## Installation + +`yarn add @jpmorganchase/mosaic-site-loaders` + +## Criteria + +The criteria for a component within `@jpmorganchase/mosaic-site-loaders` is + +- Should only export server side code diff --git a/packages/site-loaders/package.json b/packages/site-loaders/package.json new file mode 100644 index 000000000..500a9f129 --- /dev/null +++ b/packages/site-loaders/package.json @@ -0,0 +1,45 @@ +{ + "name": "@jpmorganchase/mosaic-site-loaders", + "description": "Mosaic - Site Loaders", + "version": "0.1.0-beta.36", + "author": "", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:jpmorganchase/mosaic.git", + "directory": "packages/site-loaders" + }, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + "./index.css": "./dist/index.css", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "node": "./dist/index.js" + } + }, + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:types": "tsc", + "build:components": "node ./scripts/bundle.mjs", + "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", + "lint": "eslint --ignore-pattern \"**/__tests__/**\"", + "dev": "node ./scripts/bundle.mjs watch" + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.0.0", + "react": "^18.2.0", + "del-cli": "^4.0.1", + "typescript": "^4.8.3" + }, + "dependencies": { + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.36", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.36", + "@types/node": "^18.15.3", + "zod": "^3.19.1" + } +} diff --git a/packages/site-loaders/scripts/bundle.mjs b/packages/site-loaders/scripts/bundle.mjs new file mode 100644 index 000000000..006ae7eab --- /dev/null +++ b/packages/site-loaders/scripts/bundle.mjs @@ -0,0 +1,45 @@ +import fs from 'fs-extra'; +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__', 'src/labs'] + }), + outdir: './dist', + outExtension: { '.js': '.mjs' }, + bundle: true, + sourcemap: false, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022', 'node18'], + platform: 'node', + plugins: [nodeExternalsPlugin()] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/site-loaders/src/index.ts b/packages/site-loaders/src/index.ts new file mode 100644 index 000000000..1a31849fd --- /dev/null +++ b/packages/site-loaders/src/index.ts @@ -0,0 +1,20 @@ +import { load as loadActivePage } from './loadActivePage.js'; +import { load as loadSnapshotFile } from './loadSnapshotFile.js'; +import type { LoaderPage } from './types/index.js'; + +const pageLoaders = { + /** Load pages and update with live changes */ + active: loadActivePage, + /** Load immutable snapshots of content from the local file-system */ + 'snapshot-file': loadSnapshotFile +}; + +export async function loadPage(route: string): Promise { + const { MOSAIC_MODE: mosaicMode = 'active' } = process.env; + const loader = pageLoaders[mosaicMode] || pageLoaders.active; + return await loader(route); +} + +export const config = { + matcher: ['/mosaic/**/*'] +}; diff --git a/packages/site-loaders/src/loadActivePage.ts b/packages/site-loaders/src/loadActivePage.ts new file mode 100644 index 000000000..8e41ddae3 --- /dev/null +++ b/packages/site-loaders/src/loadActivePage.ts @@ -0,0 +1,65 @@ +import path from 'path'; +import { activeEnvSchema } from '@jpmorganchase/mosaic-schemas'; +import type { SafeParseError } from 'zod'; + +import type { LoaderPage, LoaderData, LoaderSource } from './types/index.js'; + +const normalizePageUrl = (url: string): string => (/\/index$/.test(url) ? `${url}.mdx` : url); + +type ActiveEnv = { + MOSAIC_ACTIVE_MODE_URL: string; +}; + +export const getActiveConfig = (url: string): Record => { + const env = activeEnvSchema.safeParse(process.env); + if (!env.success) { + const error = (env as SafeParseError).error; + error.issues.forEach(issue => { + console.error( + `Missing process.env.${issue.path.join()} environment variable required to load path ${url}` + ); + }); + throw new Error(`Environment variables missing for loading of ${url} for active mode`); + } + return { + activeModelUrl: env.data.MOSAIC_ACTIVE_MODE_URL + }; +}; + +const loadData = async (url: string): Promise => { + const response = await fetch(url, { + headers: { + 'Content-Type': 'application/json' + } + }); + if (response.ok) { + const sharedConfig = await response.json(); + return { data: { sharedConfig: sharedConfig.config } }; + } else if (response.status !== 404) { + throw new Error(`Could not load data : ${response.status} - ${response.statusText}`); + } + return undefined; +}; + +export const loadPage = async (url: string): Promise => { + const response = await fetch(url); + console.log('....', url); + if (response.ok) { + const source = await response.text(); + return { source }; + } + throw new Error(`Could not load page : ${response.status} - ${response.statusText}`); +}; + +export function load(route: string): Promise { + const { activeModelUrl } = getActiveConfig(route); + const page = normalizePageUrl(`${activeModelUrl}${route}`); + const sharedConfig = path.join( + 'http://localhost:8080', + path.dirname(route), + 'shared-config.json' + ); + return Promise.all([loadPage(page), loadData(sharedConfig)]).then(results => + results.reduce((page, result) => ({ ...page, ...result }), {}) + ); +} diff --git a/packages/site-loaders/src/loadSnapshotFile.ts b/packages/site-loaders/src/loadSnapshotFile.ts new file mode 100644 index 000000000..87607983a --- /dev/null +++ b/packages/site-loaders/src/loadSnapshotFile.ts @@ -0,0 +1,76 @@ +import path from 'path'; +import fs from 'fs'; +import { snapshotFileEnvSchema } from '@jpmorganchase/mosaic-schemas'; +import { SafeParseError } from 'zod'; + +import type { LoaderPage, LoaderData, LoaderSource } from './types/index.js'; + +const normalizePageUrl = (url: string): string => (/\/index$/.test(url) ? `${url}.mdx` : url); + +type SnapshotFileEnv = { + MOSAIC_SNAPSHOT_DIR: string; +}; + +export const getSnapshotFileConfig = (url: string): Record => { + const env = snapshotFileEnvSchema.safeParse(process.env); + if (!env.success) { + const error = (env as SafeParseError).error; + error.issues.forEach(issue => { + console.error( + `Missing process.env.${issue.path.join()} environment variable required to load path ${url} from file snapshot` + ); + }); + throw new Error(`Environment variables missing for loading of ${url} for local snapshot`); + } + return { + snapshotDir: env.data.MOSAIC_SNAPSHOT_DIR + }; +}; + +export const loadFile = async (filePath: string): Promise => { + let localPath = filePath; + if ((await fs.promises.stat(filePath)).isDirectory()) { + localPath = path.posix.join(localPath, 'index'); + } + const realPath = await fs.promises.realpath(localPath); + const data = await fs.promises.readFile(realPath, 'utf-8'); + return data.toString(); +}; + +const loadData = async (filePath: string): Promise => { + let fileExists = false; + try { + await fs.promises.stat(filePath); + fileExists = true; + } catch {} + if (!fileExists) { + return undefined; + } + try { + const rawSharedConfig = await loadFile(filePath); + const sharedConfig = JSON.parse(rawSharedConfig); + return { data: { sharedConfig: sharedConfig.config } }; + } catch (error: any) { + throw new Error(`Could not load snapshot data : ${error.message}`); + } +}; + +export const loadPage = async (filePath: string): Promise => { + try { + const source = await loadFile(filePath); + return { source }; + } catch (error: any) { + throw new Error(`Could not load shapshot page : ${error.message}`); + } +}; + +export function load(route: string): Promise { + const { snapshotDir } = getSnapshotFileConfig(route); + const normalizedUrl = normalizePageUrl(route); + const page = path.posix.join(process.cwd(), snapshotDir, normalizedUrl); + const snapshotDirname = path.dirname(route); + const sharedConfig = path.join(process.cwd(), snapshotDir, snapshotDirname, 'shared-config.json'); + return Promise.all([loadPage(page), loadData(sharedConfig)]).then(results => + results.reduce((page, result) => ({ ...page, ...result }), {}) + ); +} diff --git a/packages/site-loaders/src/types/index.ts b/packages/site-loaders/src/types/index.ts new file mode 100644 index 000000000..fbb685c5b --- /dev/null +++ b/packages/site-loaders/src/types/index.ts @@ -0,0 +1,5 @@ +import type { SiteState } from '@jpmorganchase/mosaic-store'; + +export type LoaderSource = { source?: string }; +export type LoaderData = { data?: Partial }; +export type LoaderPage = LoaderSource & LoaderData; diff --git a/packages/site-loaders/tsconfig.json b/packages/site-loaders/tsconfig.json new file mode 100644 index 000000000..df2d92f30 --- /dev/null +++ b/packages/site-loaders/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.bundle.json", + "compilerOptions": { + "emitDeclarationOnly": false, + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"], + "exclude": ["src/**/__tests__/**/*", "src/__tests__/**/*"] +} diff --git a/packages/site/package.json b/packages/site/package.json index 0967bc4be..e5783e66b 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -35,6 +35,7 @@ "@jpmorganchase/mosaic-mdx-components-server": "^0.1.0-beta.51", "@jpmorganchase/mosaic-layouts": "^0.1.0-beta.51", "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-site-loaders": "^0.1.0-beta.51", "@jpmorganchase/mosaic-site-preset-styles": "^0.1.0-beta.51", "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.51", "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.51", diff --git a/packages/site/src/app/[...slug]/fonts.ts b/packages/site/src/app/[...slug]/fonts.ts index f5b2fcd45..31f862db5 100644 --- a/packages/site/src/app/[...slug]/fonts.ts +++ b/packages/site/src/app/[...slug]/fonts.ts @@ -12,4 +12,5 @@ const openSans = Open_Sans({ display: 'swap' }); -export default [ptMono.variable, openSans.variable]; +const fonts = [ptMono.variable, openSans.variable]; +export default fonts; diff --git a/packages/site/src/app/[...slug]/layout.tsx b/packages/site/src/app/[...slug]/layout.tsx index 77512170d..c13151f75 100644 --- a/packages/site/src/app/[...slug]/layout.tsx +++ b/packages/site/src/app/[...slug]/layout.tsx @@ -11,16 +11,16 @@ import { } from '@jpmorganchase/mosaic-site-components'; import { LayoutProvider } from '@jpmorganchase/mosaic-layouts'; import { themeClassName } from '@jpmorganchase/mosaic-theme'; +import { loadPage } from '@jpmorganchase/mosaic-site-loaders'; import fontClassNames from './fonts'; -import { getPage } from '../../utils/getPage'; export default async function Layout({ children }) { const pathname = headers().get('x-next-pathname') as string; if (!pathname) { return null; } - const { data } = await getPage(pathname); + const { data = {} } = await loadPage(pathname); return ( diff --git a/packages/site/src/app/[...slug]/page.tsx b/packages/site/src/app/[...slug]/page.tsx index fd21cdea6..f10840dae 100644 --- a/packages/site/src/app/[...slug]/page.tsx +++ b/packages/site/src/app/[...slug]/page.tsx @@ -3,15 +3,14 @@ import { compileMDX } from 'next-mdx-remote/rsc'; import remarkGfm from 'remark-gfm'; import rehypeSlug from 'rehype-slug'; import components from '@jpmorganchase/mosaic-mdx-components-server'; -import { getPage } from '../../utils/getPage'; +import { loadPage } from '@jpmorganchase/mosaic-site-loaders'; export default async function Page() { const pathname = headers().get('x-next-pathname') as string; if (!pathname) { return null; } - const { source, data } = await getPage(pathname); - + const { source = '', data = {} } = await loadPage(pathname); const { content } = await compileMDX({ source, components, diff --git a/packages/site/src/utils/getPage.ts b/packages/site/src/utils/getPage.ts deleted file mode 100644 index b00224663..000000000 --- a/packages/site/src/utils/getPage.ts +++ /dev/null @@ -1,30 +0,0 @@ -import path from 'path'; -import nodeFetch from 'node-fetch'; -import matter from 'gray-matter'; -import type { SiteState } from '@jpmorganchase/mosaic-store'; - -type Page = { - /** Page body content */ - source: string; - /** Metadata that has been defined by page or added by plugins */ - data: SiteState; -}; -type GetPage = (pathname: string) => Promise; - -export const getSharedConfig = async route => { - const routeBase = path.dirname(route); - const url = path.join('http://localhost:8080', routeBase, 'shared-config.json'); - const res = await nodeFetch(url); - const resJson = await res.json(); - return resJson.config; -}; - -export const getPage: GetPage = async pathname => { - const url = path.join('http://localhost:8080', pathname); - const result = await nodeFetch(url); - const text = await result.text(); - const { data, content: source } = matter(text); - const metadata = data as SiteState; - const sharedConfig = await getSharedConfig(pathname); - return { data: { ...metadata, sharedConfig }, source }; -}; diff --git a/yarn.lock b/yarn.lock index ba7624a27..9d67a59d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3702,6 +3702,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha1-LA+v14cF56GLeQa1IBpSJxncUZA= +"@types/node@^18.15.3": + version "18.16.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.18.tgz#85da09bafb66d4bc14f7c899185336d0c1736390" + integrity sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw== + "@types/node@^18.7.19": version "18.11.10" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.10.tgz#4c64759f3c2343b7e6c4b9caf761c7a3a05cee34" From 7c5a203533e51d89243fd3108d3e1fa51fe4730e Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Thu, 6 Jul 2023 18:12:09 +0100 Subject: [PATCH 19/36] rebase on beta.38 --- packages/icons/package.json | 4 +- packages/mdx-components-client/package.json | 8 +- packages/mdx-components-server/package.json | 4 +- packages/site-components/package.json | 2 +- packages/site-loaders/package.json | 6 +- yarn.lock | 302 ++++++++++---------- 6 files changed, 169 insertions(+), 157 deletions(-) diff --git a/packages/icons/package.json b/packages/icons/package.json index a395667ac..500c5704d 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-icons", "description": "Mosaic - Icons", - "version": "0.1.0-beta.36", + "version": "0.1.0-beta.38", "author": "", "license": "Apache-2.0", "repository": { @@ -41,7 +41,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.36", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.38", "@salt-ds/core": "^1.8.0-rc.0" }, "peerDependencies": { diff --git a/packages/mdx-components-client/package.json b/packages/mdx-components-client/package.json index 2017ef1ab..a9086e8cc 100644 --- a/packages/mdx-components-client/package.json +++ b/packages/mdx-components-client/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-client", "description": "Mosaic - Markdown Components", - "version": "0.1.0-beta.36", + "version": "0.1.0-beta.38", "author": "", "license": "Apache-2.0", "repository": { @@ -40,9 +40,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-components": "^0.1.0-beta.36", - "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.36", - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.36", + "@jpmorganchase/mosaic-components": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.38", "clsx": "^1.2.1", "hoist-non-react-statics": "^3.3.2", "prism-react-renderer": "^1.1.1", diff --git a/packages/mdx-components-server/package.json b/packages/mdx-components-server/package.json index 8f09aeb9b..9dffe0905 100644 --- a/packages/mdx-components-server/package.json +++ b/packages/mdx-components-server/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-server", "description": "Mosaic - MDX Components", - "version": "0.1.0-beta.36", + "version": "0.1.0-beta.38", "author": "", "license": "Apache-2.0", "repository": { @@ -40,7 +40,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.36", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.38", "@mdx-js/mdx": "^2.3.0" }, "peerDependencies": { diff --git a/packages/site-components/package.json b/packages/site-components/package.json index b3579d493..dbd0272a1 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -42,11 +42,11 @@ "dependencies": { "@jpmorganchase/mosaic-components": "^0.1.0-beta.51", "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-labs-components": "^0.1.0-beta.51", "@jpmorganchase/mosaic-open-api-component": "^0.1.0-beta.51", "@jpmorganchase/mosaic-site-middleware": "^0.1.0-beta.51", "@jpmorganchase/mosaic-store": "^0.1.0-beta.51", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", + "@salt-ds/core": "^1.8.1", "@salt-ds/lab": "1.0.0-alpha.16", "@types/mdast": "^3.0.0", "@vanilla-extract/css": "^1.6.0", diff --git a/packages/site-loaders/package.json b/packages/site-loaders/package.json index 500a9f129..e588d3a14 100644 --- a/packages/site-loaders/package.json +++ b/packages/site-loaders/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-site-loaders", "description": "Mosaic - Site Loaders", - "version": "0.1.0-beta.36", + "version": "0.1.0-beta.38", "author": "", "license": "Apache-2.0", "repository": { @@ -37,8 +37,8 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.36", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.36", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.38", "@types/node": "^18.15.3", "zod": "^3.19.1" } diff --git a/yarn.lock b/yarn.lock index 9d67a59d6..1bdea3029 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1927,6 +1927,116 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== +"@esbuild/android-arm64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" + integrity sha1-uvt1I0pdPRtpDnwpVqWZNF6Eov0= + +"@esbuild/android-arm@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" + integrity sha1-WJj3gywimLx9CrU3AcV763TXi00= + +"@esbuild/android-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" + integrity sha1-ZYNo75IGeGbZX7JocZ+Y82PROuE= + +"@esbuild/darwin-arm64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" + integrity sha1-WEw0xZkbldTUjTMzALGk4v974nY= + +"@esbuild/darwin-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" + integrity sha1-d1HSNt/mzhNszjQ9zmn1LXa39ss= + +"@esbuild/freebsd-arm64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" + integrity sha1-ys0XFmXdHVAPRcFn1QxrflOdX9I= + +"@esbuild/freebsd-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" + integrity sha1-B2lFbu4qCLjZJdfAC3noYcsxYuQ= + +"@esbuild/linux-arm64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" + integrity sha1-OOFi7Lcjhixr4cJ9Y4n0iWC2jts= + +"@esbuild/linux-arm@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" + integrity sha1-GizTmcUAQBhKgFF0ptiQl9nRVZo= + +"@esbuild/linux-ia32@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" + integrity sha1-4owlJmsDbOHKvKPDAVUiKEHcA1o= + +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha1-D4h7i7P5BljRoBFyg+VdvUydz3I= + +"@esbuild/linux-mips64el@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" + integrity sha1-9dKguAR+qaXZ9ZKheOoFQFOnAok= + +"@esbuild/linux-ppc64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" + integrity sha1-h2WQ46y9n6f1eix9hvg3F9u6yMc= + +"@esbuild/linux-riscv64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" + integrity sha1-f0k3PfRjzZ9B3DT5siYtdxaIvwk= + +"@esbuild/linux-s390x@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" + integrity sha1-4q/Rr8r2Ov4sfZzqzSjsV8d/iCk= + +"@esbuild/linux-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" + integrity sha1-ig6XOLFjXwxTOJ5RWug4Jt7CKqQ= + +"@esbuild/netbsd-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" + integrity sha1-wp+yRTxrfd75o14sGLN72hrlxGI= + +"@esbuild/openbsd-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" + integrity sha1-ledaORQDyxApcoDVJNZs4EySBpE= + +"@esbuild/sunos-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" + integrity sha1-ci6vBXuDwldZN9P/5a6xZUDacnM= + +"@esbuild/win32-arm64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" + integrity sha1-mqncB0OZKIvc3Sg0Q+mutrlVK28= + +"@esbuild/win32-ia32@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" + integrity sha1-la1DxirWJIXiEPYpnHslceSNKwM= + +"@esbuild/win32-x64@0.17.19": + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" + integrity sha1-jPry/2A+mqu5EOnAVYwmzzJ0QGE= + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -6153,139 +6263,41 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.35.tgz#b72b194d264afeb79217b69f228ef856e7914206" - integrity sha512-R11Eu5NDc5YpbmpXSczxnwrqIsaslE08I+gf/QUVxiuPid5DLQHRWKnkPiSXUgQGPZVjn4aASsAdq8L4uhcyXQ== - -esbuild-android-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.35.tgz#b05b7055baef71e7e790c46daf7783c4cc2cef6a" - integrity sha512-fOjTdzEvZer2+5xNWP2bUmpWccuHQBm/aPoTqoiLiS3VErvxOpbY2808UUEHHxRJucRxMUxHi+apKUpdj8NBjA== - -esbuild-darwin-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.35.tgz#b648713752f794afa8af80fe74f4620cf9ba2e48" - integrity sha512-cN7ejc3Q0+5hFYXSLKd7GfnrY3hEjx/QxYUiU5f8KEJpH1CJsQEl69ALS5WYYrPrlgKHGKusRVKOkK1x20fe6g== - -esbuild-darwin-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.35.tgz#964c8ac93a65441fe17049bf09983b39a163571e" - integrity sha512-x4AK8UY14p2AYQNXQ5hd0HNnmcmBjd6bpFkmPmtrm8Khh/HT96JfVa06bYFute25aUOTHgWv5kU/k+JrqDTO2A== - -esbuild-freebsd-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.35.tgz#6b9941dd0e1594d7e19af14b9b5104f699f4999a" - integrity sha512-S83TQ+LgeQt9n9sc7LVELBlpRzaSWGaMvPHtE/91AxEKBuqx47RhuII60LVUzwfOMXHbgroOuSMqA1D2C+vuxQ== - -esbuild-freebsd-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.35.tgz#da1cd9c11274b3f7f4820cafeb6370d88a08fd16" - integrity sha512-D7NDa9ZquQkgz6nwH/HJ1E9wvcb4EEWw7L+uY7jGG4N7Z2Y/wWxQ5dH207gp0TsRCXuE9cYN5HfnHwgav7zAdw== - -esbuild-linux-32@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.35.tgz#1c5a12d94a190e229dd0a0a73d6fed7b9676c08c" - integrity sha512-0/bt6wQzZmBYv+NY9r7OHxPzs5H4ktz0UK/x7iUs5pAEnj+NkdR/uCzhYVFgNRIO/b22O5P0Vs9LIcj0Z5Uc9A== - -esbuild-linux-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.35.tgz#90d0192e2455bc64ce3f62359acdfc1ee34ea188" - integrity sha512-50FLXlOdEfyc9NFR9lavX3W75zJNi5FTEU25EZY87MQlHlUqmoSfd/0BaO2xefcZK9XV7lTPZ+b8Wj/jFRMB2A== - -esbuild-linux-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.35.tgz#69920874ffe7a4dcf6382d217cb15fe798c321aa" - integrity sha512-Kknr+jl0dNVTyuUTczfaXlsmuGKPBZsNNDuUnLMEDi6Y6bi8ccC4QE4nwUDtkGyB1elr6BQYvb78wYhtfPVLew== - -esbuild-linux-arm@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.35.tgz#a637e65f0a618bd2a092a831c6320880d90c03af" - integrity sha512-VIH+bxbk7NM0ZSAeFHOdFWsdVIw2RnrZEG340yFlf7PI9DLUkn0m5+Q8mgZiIZW29VBtpCQ7aiieFo+ZykhoUA== - -esbuild-linux-mips64le@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.35.tgz#144941551c20138d536946650f761561dfe3db91" - integrity sha512-urTrLRUAbH3e91vu3/20Sc+qCvokgB4gepHk41AkS/nnM1PBSdRl8SKP3TkRXaJjb4LRGu6I2JAxLOmQWGzo/g== - -esbuild-linux-ppc64le@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.35.tgz#6a0c90494d482576cc7b86733c2f4a5044e384ed" - integrity sha512-B98j5OMZQHTw/MnjOQgxYDt+sJfLmvHSI6GhCcf55l11voyyR66SYTBFiz4RvEB1F8V6TQTpHwFhBWo/p5Fq8w== - -esbuild-linux-riscv64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.35.tgz#56564eb9c4f3b210ff1146ef50315f688b62d88f" - integrity sha512-SP41XnWjMOK0WcaXKzfcGr0jA5vMoXu36Oe/SeHrdRrffuHr5/5IboLqCKCQeGAjoGRPSgSLTKB7T8ENXQpgCg== - -esbuild-linux-s390x@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.35.tgz#ef0060e29be1460260733728b4e1be04d72aaff0" - integrity sha512-H0K7+0i0crGrXul8q0RlOdatputTj299JGSvyhXXSMNCTqNd5hd8JOONS2Fbbgrv2Hu9bwkP57g8X94V8GeyMA== - -esbuild-netbsd-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.35.tgz#164c8b80ac35a5234d0b16f0257ff17b9a39cd6e" - integrity sha512-Z+DdBPbSWlOgFdXDhpyqDBTy5NKtTjSFwXfjs95BROJYXFu+ciF85bT10Olg3/EywvDDdpfSeGh+ExeOQ3fugA== - -esbuild-node-externals@^1.0.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esbuild-node-externals/-/esbuild-node-externals-1.5.0.tgz#56674e3d102efeb704e931574b1866cf1f79c7b8" - integrity sha512-9394Ne2t2Z243BWeNBRkXEYVMOVbQuzp7XSkASZTOQs0GSXDuno5aH5OmzEXc6GMuln5zJjpkZpgwUPW0uRKgw== - dependencies: - find-up "5.0.0" - tslib "2.3.1" - -esbuild-openbsd-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.35.tgz#aff91d9fd21155bedc530225156737c89bf27821" - integrity sha512-uNWRf9p69irg4X2yZ5M5GrPi7+F54+DsmYKBXGTIImtyanSAy0nEH6ejmHD2/uypPrlKFf+U746bMwZFIxy5zw== - -esbuild-sunos-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.35.tgz#07c3ee0dcdc9c9dba11b48ed25ebef439f9fc635" - integrity sha512-WwAS084DuK2AHe+9z0DGbLbv3Cf9H4H7YsBhS7sBIIZ9iY2r0Oikrw11p1VSPDXjgtB/6AYIckJDCRAFEX07rQ== - -esbuild-windows-32@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.35.tgz#494e548ede75cbfdf3e316333a9138386bf55f70" - integrity sha512-XQgY0pLopKMuRvNsMlc4RuN8wKku4w/LGGhonYEOxibVx/aNMl6vS0P0xbZoUpej4EP8Gras0JihAxigvPqaiA== - -esbuild-windows-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.35.tgz#902ac455e5b22dd4ababb0ad1ece8683628557d2" - integrity sha512-7PaFQb5QDNWQGNmbXBNHewuXq5iDtgTjT3ILif3oGeMd9IVD2hvQ6Twc3s3NDqj5NJFZL1ZK+l9WZ8BZidv7Vw== - -esbuild-windows-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.35.tgz#cbe4c64fe3d387b1f60dc103a568c2af97c26bd9" - integrity sha512-TxVKDkjlRxoCJQpCYS7FbHA249WdCfWKhLhNYk6PtT0CQmD7Ogp51MG7Plx57/jtxE9/aZVOcAf3igGKyGijHw== - -esbuild@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.35.tgz#6061df12cab96c9ce66203ea0dc9196f1e71ddc8" - integrity sha512-0aeHPwXVVUUo9qOWnu/zILmTexFYE+RJ3o4owjbEUIJuBhLUgL4wBuS94++4+t7sykSABsNyyMZEAZ2r+1qZ4A== +esbuild-node-externals@^1.7.0: + version "1.7.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/esbuild-node-externals/-/esbuild-node-externals-1.7.0.tgz#f6d755c577aec1ffa8548b0a648f13df27551805" + integrity sha1-9tdVxXeuwf+oVIsKZI8T3ydVGAU= + dependencies: + find-up "^5.0.0" + tslib "^2.4.1" + +esbuild@0.17.19, esbuild@^0.17.19: + version "0.17.19" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" + integrity sha1-CHpyfpgpnwRio9C83ZzX/xAL2VU= optionalDependencies: - esbuild-android-64 "0.14.35" - esbuild-android-arm64 "0.14.35" - esbuild-darwin-64 "0.14.35" - esbuild-darwin-arm64 "0.14.35" - esbuild-freebsd-64 "0.14.35" - esbuild-freebsd-arm64 "0.14.35" - esbuild-linux-32 "0.14.35" - esbuild-linux-64 "0.14.35" - esbuild-linux-arm "0.14.35" - esbuild-linux-arm64 "0.14.35" - esbuild-linux-mips64le "0.14.35" - esbuild-linux-ppc64le "0.14.35" - esbuild-linux-riscv64 "0.14.35" - esbuild-linux-s390x "0.14.35" - esbuild-netbsd-64 "0.14.35" - esbuild-openbsd-64 "0.14.35" - esbuild-sunos-64 "0.14.35" - esbuild-windows-32 "0.14.35" - esbuild-windows-64 "0.14.35" - esbuild-windows-arm64 "0.14.35" + "@esbuild/android-arm" "0.17.19" + "@esbuild/android-arm64" "0.17.19" + "@esbuild/android-x64" "0.17.19" + "@esbuild/darwin-arm64" "0.17.19" + "@esbuild/darwin-x64" "0.17.19" + "@esbuild/freebsd-arm64" "0.17.19" + "@esbuild/freebsd-x64" "0.17.19" + "@esbuild/linux-arm" "0.17.19" + "@esbuild/linux-arm64" "0.17.19" + "@esbuild/linux-ia32" "0.17.19" + "@esbuild/linux-loong64" "0.17.19" + "@esbuild/linux-mips64el" "0.17.19" + "@esbuild/linux-ppc64" "0.17.19" + "@esbuild/linux-riscv64" "0.17.19" + "@esbuild/linux-s390x" "0.17.19" + "@esbuild/linux-x64" "0.17.19" + "@esbuild/netbsd-x64" "0.17.19" + "@esbuild/openbsd-x64" "0.17.19" + "@esbuild/sunos-x64" "0.17.19" + "@esbuild/win32-arm64" "0.17.19" + "@esbuild/win32-ia32" "0.17.19" + "@esbuild/win32-x64" "0.17.19" esbuild@^0.11.16: version "0.11.23" @@ -7034,14 +7046,6 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -7050,6 +7054,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-yarn-workspace-root2@1.2.16: version "1.2.16" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" @@ -13031,11 +13043,6 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -13051,6 +13058,11 @@ tslib@^2.1.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha1-fOyqfwc85oCgWEeqd76UEJjzbcM= +tslib@^2.4.1: + version "2.6.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha1-spWFRoTb2hZOGB0lmiLNd53Ne8M= + tslib@^2.5.0: version "2.5.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" From 42da9eb9d7193f53db0d48010db801866a01d49e Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sat, 8 Jul 2023 23:41:22 +0100 Subject: [PATCH 20/36] move favicon from static images to app dir and don't reuse for logo instead we create a `logo.png` that makes it obvious that someone can replace with a logo and that favicon.ico is separate --- .prettierignore | 1 + docs/index.mdx | 2 +- docs/test/layouts/detail-highlight.mdx | 2 +- docs/test/layouts/detail-overview.mdx | 2 +- docs/test/layouts/detail-technical.mdx | 2 +- docs/test/layouts/edit.mdx | 2 +- docs/test/layouts/full-width.mdx | 2 +- docs/test/layouts/landing.mdx | 2 +- docs/test/layouts/newsletter.mdx | 2 +- docs/test/layouts/product-discover.mdx | 2 +- docs/test/layouts/product-preview.mdx | 2 +- .../site/public/img/{favicon.png => logo.png} | Bin packages/site/src/app/favicon.ico | Bin 0 -> 15662 bytes 13 files changed, 11 insertions(+), 10 deletions(-) rename packages/site/public/img/{favicon.png => logo.png} (100%) create mode 100644 packages/site/src/app/favicon.ico diff --git a/.prettierignore b/.prettierignore index d095b5daa..e9381c67a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,6 +10,7 @@ patches LICENSE *.png *.hbs +*.ico **/build **/dist diff --git a/docs/index.mdx b/docs/index.mdx index 3cfa3a1fb..adf2829d7 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -5,7 +5,7 @@ sharedConfig: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Getting Started diff --git a/docs/test/layouts/detail-highlight.mdx b/docs/test/layouts/detail-highlight.mdx index a8db8a7da..a92944828 100644 --- a/docs/test/layouts/detail-highlight.mdx +++ b/docs/test/layouts/detail-highlight.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/detail-overview.mdx b/docs/test/layouts/detail-overview.mdx index e9e2bf075..e682a6d75 100644 --- a/docs/test/layouts/detail-overview.mdx +++ b/docs/test/layouts/detail-overview.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/detail-technical.mdx b/docs/test/layouts/detail-technical.mdx index 1b6732010..3b418ed1f 100644 --- a/docs/test/layouts/detail-technical.mdx +++ b/docs/test/layouts/detail-technical.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/edit.mdx b/docs/test/layouts/edit.mdx index 2d05e588d..32870ee87 100644 --- a/docs/test/layouts/edit.mdx +++ b/docs/test/layouts/edit.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/full-width.mdx b/docs/test/layouts/full-width.mdx index b8bf8781e..40cd76079 100644 --- a/docs/test/layouts/full-width.mdx +++ b/docs/test/layouts/full-width.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/landing.mdx b/docs/test/layouts/landing.mdx index a63537ac9..e19d30521 100644 --- a/docs/test/layouts/landing.mdx +++ b/docs/test/layouts/landing.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/newsletter.mdx b/docs/test/layouts/newsletter.mdx index ce01f0ace..c323b60c3 100644 --- a/docs/test/layouts/newsletter.mdx +++ b/docs/test/layouts/newsletter.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/product-discover.mdx b/docs/test/layouts/product-discover.mdx index 1706b0e3d..70eb48ad8 100644 --- a/docs/test/layouts/product-discover.mdx +++ b/docs/test/layouts/product-discover.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/docs/test/layouts/product-preview.mdx b/docs/test/layouts/product-preview.mdx index 54ea9cd90..88fe06a1d 100644 --- a/docs/test/layouts/product-preview.mdx +++ b/docs/test/layouts/product-preview.mdx @@ -5,7 +5,7 @@ frameOverrides: header: homeLink: /mosaic/index title: Mosaic (BETA) - logo: /img/favicon.png + logo: /img/logo.png searchNamespace: mosaic menu: - title: Docs diff --git a/packages/site/public/img/favicon.png b/packages/site/public/img/logo.png similarity index 100% rename from packages/site/public/img/favicon.png rename to packages/site/public/img/logo.png diff --git a/packages/site/src/app/favicon.ico b/packages/site/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b4c425b32cd6c0a55c72307f88612eeb4cebc8cd GIT binary patch literal 15662 zcmds8^+Ocj*PdM#L_%2UUXbpVW@!;Akp^jyZV(W5L0Tk4Qo6eokPuKL1SF(ELQoo| zo85Q#eE*Age%Rfad-pl#-Z^vbxz9NhqobupOh8Kj006Q21Lem600n*)E! z1^7kdqhjQv=Wg%gZ{=kNDA>AN+ac6ltsLwg+gaHLcz&~!0RWj%b!CMo&*yfsWnEa+ z8rJpR3lAHY{mDk-PQ3KZxvyCTWau58R58C68@3*Y@6jiTj<7gpt3NKG7ysT(yHo#n z*!s0U^g}x1zpS1KYQj$r<+xRzi)}>0PBTgk@)g|gxp@vxacDIi&&E=i;MnN6A<-KR z|Nk5abGgFXUw&7*chb!@=VKh2*5(~f#L@&p&NutArf|@yyOTPmv53f%x1XjwIk-rGUm!9`CbFj!7RHo z&1qXlYJAtm8Af`Sf%pDB5(Q=u62>3&yD2d)`7}5?5+40QkYe zc2XI=vX>hX!P#@S#q+5kZ|d}|3*$AVH-m3v1ojCeb8Vj&3VsGwn)Er=_@yN`_H8Un zNdbjN?7AZk>^n!s3%C7jIcDBI#Y3#9;Uj?M`Zsd%S3=&Ga}GSrNcY`|2QT09dP%cE z2ICmjfU_JO;UxZhdOs=?3Cy_2W%5rUfi|Uhw0ZRGM>C}}TrfaaeilGa6k@i+!``ac zJC*k1A%HB+vV5&F-4#ut>2E5o05ZMlAqz&tWW`T?Im;dih-T|#NMRw>`$^u?E%DFr z(3U%IXE=;Af98wH3F|UOU zdZZ!P0zjMeR*u|>Xa@9$Cbe{_@?;8cdtmN-6qBP31%P3BWjs)!#6(Efd0`#I19PMA z@|C&n%rxa71du=}BWLPh=tKYSqd$vh1s?(uSRE@#G*MR}h@b0(y01fxzuc!4(;xEc z&_DI|^PGxo790=xaz77@7S{;lEx_OJVV2x_(#H`P>ue4_a43`=dFVf4q|J&0+&7~= zIVY=Y#xX62^Y}T|2yXr6_>Em~ede|r;qzQdt z*(YyJT?F#p`pBD1)bL{-f)}Z0MFTn$)q~~8(fql0s4FW;acZ>v;6qo>b+doAe8;?6D>T1TRibL#?`y`F@P*asyzN-%Vl~( zT+WLtWAj+y6_KMq`eB{Vlx|%Zkmvn5p_TCm5#WrIQlF1(;SqL4!H~Ae5AR%kqh4Bw z1u_B4;%r($?K(Ytpa4rv*!IS)E+>Y}=F!B5*9#b z@|SP{HR&>Cmi+ZgU@xy?)_eFX6rmH!-mVBNo8_@}pY|1Y=FCi|uZ0@bt)7o|G;lyu zAfXS>I#`?R(B!Z#jb7KixYS2gF~R00F9U2WsMR*!ua4|&f4V+c{^x-DcKZoFCmish z{&~pB-4NNJ14m#_41}SgWJg2$Bs&`MOr1jh^Osux>&8dAz4-kr`&7YanWo+&zFA;H zV?yA|x_y0`Q?Pv7S~FWnQJT8V%t0oF{O{ zTZBTpLg1SAk|q!&#L@?9*{YiKUZ1qp4>PE|F{FxpPtgh8e`py40B?^QP@~peG%P^i z+EqlQSZAcrynqpO17ZtY^tC?NaC({BX)g&ty)a*X>`+Ww;Xr}q_+Oc*k^5H+6EGy_ zaOda_#TZKYYr|Li_rO`06>SN{cma!HTY0bm+N)#V>r&|KpnfUD4k_~aMknC8ff zH)~;cvOD)84RBxpny!L+LWlz|%x0Jyk7^s{teOmk0+u576rI>N*^p(WgD8XaMlg z&|P)7a~x=Zt{B6{lp8*Igoj4JAi#1u37@KGV$&g0=EZEG<`mZ3goYIOYjsIXgN`B+ z%f#8^r#+_B0AN5Do=c`MAMMp^90I6S_l8By@%Lx9k-!m2)6%GeHuEqxt|XH9nXuLz z>HAT5=hcx-JP>^^GaPdpU83q;<=h4g7GUcg{dTuiZDytJ!T%&m6>3M?AYl6jz4W!`JGfz%D{W78n(FDuMU3QXd$mq8|%k?RFNfKzCA#WgZEd%MP8+`i2f5WdPfQNmF-7|-__}@ z*6VF6N=xg%vG2bMnVE8UX^Q8i>0)2ENKac_xE0K1N7*uBUg+lsswAjTlp%l(3DAo~ zG0OD`-}2Z;=pkm&ac%HL@ z63cdXmVeD8aXxm!(b{Ou%kHc?w#d{Tzc_!hu{51t@wWVj9iWVq2_=9c5bSZkmN}nf zxyJRGUggA1RdpLRh5PVoMY4r1(__0j1{yI@X1p|dh2nh^v_^RN$()yLY!Hvn)bZAj z?Q-M>J$eFw!QNq`_mF6`U{+bd)}40Obxwatf`j=N%#n3J+_h|i>l|WyS;=_l zw`$7m80E*g)jS$iCE6`KyNG!KhLIiN)5aHq=H|M1^DtE`a2Tmeqd#V z?=@;;U!?kCVY@*MM;P*13Tv&hpDPrSfUV}`e?m=GMJmby$as8B|GRiT-LBJpY9*sl z*)$niC0&LKC(SurQf@yV`e`fnFH?epa8$D41QiBE^AI9bUwoPQ8`tWLZ7kr5q5+tf zmi=|eNK+4~TIFsPHF!+&0-qoDg+AONIph5muVU^`b#3St^tzx`F5X{Hjb(WAP0h*L z)vdLCMr?7|;iY@WkYQY<6(Lj06q{1($+(2@=*ct}hxlQkB;{SN_>6UoYjO*RvKNKjA zQruQ=jPRX1JQyR!{yzC8&~le@bB7 zdha;4#9^cT&kH|d70-|R{siCo8fVIcJak#_g!mX(oNHRk!SSe;CwHDSDjhS)Kr`9=uq&)`2Ky zV7ODgjRGR~cw7isx1x5&(egD6_(%m2#`kl)?eK`6b88iuTU`TL98(mZp*NN)rxUBK zo<6&rwKz!4btrY?13t&zAIqI+m4{lM{~jRj5wFQY75Ys`&-I1MS&-Ry4(-iITu}9) zNPiWI(c;inx!i+h4Xy4*YP`iq_bYe7;G+^!e)aDQUik#j1@#sqJca~kXLQA96PH&V3<^ueXEG6f1pnX(iu7!j^xgp6*kEB6R${T!mT~%QqJy)voxZ zP@a+If0IX~&)(TWa!Pg!bKA0}l~y;lHgMrxRtmX~`L!uUaiMvCe{=6>C8Am4nk?5}f%%*lHjROwg zhcXp!`ArwKu_6rZTD6K}4*y9pJhdats~nNC)UaG1L#Z$Bd*_NR(4KW^Wj_-~OqLnu z1o8B&2Ezf23R<~iMAM|aNwF}bw3)-C(4Xc3>(3ON=RI*3qO^WzZ58;9_aQQu#rzR1 z4SK>QdP62TbW@jbAV&q6;q=PfPNPJL;5w&L!E^J9ZI?z7CUXfIOogqF8Na^mP>HmU zbJ1W^^+B5=>ES_uJN+wkOY8|b0c=pQ^WI|&KDsF!$v-^yv$~~6e1lyoU&{<@U42IK z$195`A?c4v;YbF+6tH=A>S|V*?+Y;FpND#W5Lv!0%{GgsZWhz%+zm3yR0g_w$sT3d z@+uZv4tu6SJ|1{-Y%Qo z5NMtrT+o6Ps#b#1z&H$W{{S-7g_PMIw` zt}yQelErL0<|dmq9Vq%Xg2oTTzY-Vxbd^^9RMHe=Sql3$YSuCrLe%?0i|qLbLBHkA z&QfRnlp7sgYn1+Iae9dIMdr3~{bOoNQLS25=#OTm+ivX^iNIK9MbUq`ZE?jnIQ1obBCr3uGe|HS-VecHDB6*&&(458(>-uVQ7S>k4GH2JnU7kwcA zA_h)Z&K`7W`(T%L^46tTcqO5<{#v@1Yp zcoC1|HusZuY&TZxA#Cn-?T8J-q+hI!86mKA8O!O~CRZyF5*)&4sCy8izdu*-dcXk2 zuF4>rBnt(sm1^&Q61Adu+!BjXnV`S8KPia_Fyy{^;9HqV8c=1j8VWhR{PQ;BR+bpng1Ut7*n44zQtJ}WEwxr zie?tRZds^l@SGNHoK{r5yssLgMYsgbJ5bQzCM}h9l;$FBAKNi~)O7bV$WRb!PVasT zS(PIU#qAStF79LhsVHwahN4@s?;_eyhLi<_t?DM^=w=m1qn(+eZZ*1?_69O`N9S)- zH9`EkJEXKE4=;`G{cvQOI{1Km7(S?=&0w(b@KQFi`hJI-5-dH|L9YLHl3#mnMc3}@ znWVJqpDbS5N?hbWS@T9m_+9zL?bm_^@9Ds1{-EUpEREKj@@ih>Ug#elp8P7R^Nm)J zDZfz4shpsit$F@TlYHjHwQ$+Ze%`OL#3s=BORcl9s?|}^2q_NHcLVw|b7LaTrc0Km zq=1h9-YY8_zKjosnH1^1XXmz$I|8k}PT(<|OR z=Pvi*qK$FY(xa?xJldF8 zN6o;>`1Bu*tEYU8J>|YS9Od6%QsN?ayHj_5KGT3T^%Q9C(>gj+7JuMbIg4`MS)eqf zg9GK!fY6!#6t$i8kk3J?#Ym+@bHtWOfPgmR5R2QINjb__%VvCWH$rVnfvx%PYypt& zOlkSlCg&uW%aTk1A^!Vi2bFIaaUTEfpI-62h@zND~jw{@;J<<_#g&F zlBM^qxmy=!G>p3Ho!zXU4OOLtQ3TKBW79Gv*%@3?yteqlS8?p0ibtEOx6^y!YA?#Y zEH97SwJ4DdE?zvjjso|{30!BAxrRG~C2k=ApHCX}6x&b#esmp=bdKp0wc+_-yum%T zW%aT}N@%h+G4lAjQ(FW9Jf?&^f;R8mpH;9b{Hj!dojR+2$=j9p*(@bMs(3yOzJ&&& z6=9Fykl`$pD^B%r{_%!<&oMUMW32PCWMN39Y8W-YKFkj8hBRT1NFlGYu|>cBZH$lg z3XMkWNxFEQhN)J~N27a(b5E22fCWLcUTZk+SHDE3G$WTryw1e}tS10q?94ihvTUu~ z)AA$!&|RF6w0lUVe6!vH%&!0fTLU_BDo0d)dvp=uBI{y;iW=(l z2@m-@uxo?sT>fR07Jk92iygaBF@*u#tDAF0!KvXAFC-UFe*!ds$6c%F)nv9%md||x zqHjC`^f!t(F*)Hf$DR!RH27)U%4S1)-!}S>$IGQUGlunV#sIErG776KBdvc9N(7yE zdd~mB_FUYlCqLuoZgpyEVyN}zm z4ajxxzDeYP?;-1Q*%8Y*-sRe;JUql*%=05dPkVDW8*k10q_1C(1*S|fiY;TVC)f8a z+=Rm1FWHK={oMW2XF4(@b4rEfi{l+Q3Tl#D0w;c-xgr5Tv8!^`ki+{Kz5Wa7m3}Fj zDfNGs>%mBy=~wup0hyaJ-$^&YjW(0wa+ikiv^Y3>zJDJ1e~D1>rK__(O)Ff^<(-TZ3}lY518kfTRtxEYodh@0jYh(P8$=DSt1p zv;7itIz*dPaF4^w`tOv1(w_;bBr?^-9~i=N>b>&%j(?T>d0%9L>jl+riRD<;40nvS zJahsrdepg(xmPfJ{Mvvy@-)Cy*H-(|)8)%-#Vj4Xw2d%T*N3ei0PD8rbZJ1XMU-71462G zpN$G+CmoEWh^Jl5kRW%$_rjg ztGph-2D1DsabRj|RXfd_qMl!Vrnl>O_xBm%Uj?cYk9H2rA;8VetP zGdT`;9b94@>d0vfSrB@^)5ZL^3<)5=s_MsWUQ(zwlH=6Q$C*sdXpkTL2oHGSx$rETHh&_aOQ(P(atnm@EX zKN;y)xRvto%4H^4MfS}c+WXz826?8&(p)baJ4l?H-17xC5B(3^dOlaZ+^5}wf7aym zaa(Ar)Tpm!LG6DX(Y!;%atwNlaAjmN-NC^4*WcI8x2*Gj=Z`yj1sXFYDb^LH(qmSV z>Rsu>-=-zG(1lsPtkQo}kY|)`_=nz9g)44APiA{q;BP57Iz=er_n_BByt0oeBSXj0 z!V0do`N94QH4k11W1qAAMKe#HfXh>iZh_qPP> zI>&+}+G67yqb^lJZJqt`NVQ6s|Jp*jv40MXy#ld7udI?qq3fu-lo8|X5H7-uye1fC zA_dU+(F5nEee#d{a#emB{LoS}z#pQE*T3=0PG4Nnd-%TAPjLKKue68E`BW(bf@1n# zxaXeM{WALGYioZkF4=XCLjxelmVc%*iuqz_k1g0~zpb4#&a=|xWdM%yPEZdF=rz<> zkSw}fP1djSIBY6(_h?)Lc%TQ7t0@bR!6eVtgu`1f;E7NLms)9M+@@RdJ-uT@t_b}U z$Ai#i_3r)Hyue2_t0~nXXaGH+nnJ!UOXi(+QtSGt8f5j_h6oCr)Gx)&?)DR9R3;P* z#7~lCf;8di6Z|-_)`w$tu}X99t$h~Lm+l@~JV``@O)pykIK;TXRbskK-a!Ha1S+E~zqKE5$;CaMCdk^nb zi{GFMs$_VMxa??w!p62X%S_IWy`*vQx$8#oKX@#r=CV_4-&KS#=_dhtH@?p)gNAddQ*cnkR9IDBhWfq8)B)%!Ng)P6zm-VT z2W98}Y{9h3Iu?p_iAK` zxB%FhHT<=BUnCh;aR@rf0b+xR6j(kx4%m5_?;?#;q>wGl_7NG#`2sKMmB?U&T?C>R zw{BW-e_*W+W7%&oBvi(+^p|wvw!jUxL>ep!q!VeuVRUf`I6}j3ej#LqGl6_OGypun z*W~d&5>O-tLC|`kUAS~N;IxNf>>CuIc#uvfixh=~-83gM(r6;V6fgwD6(@Irg8ef0 z!ObT8IvE@baC3mjxRIg?ScEqY8u;%T;^s1_1^}RMK0rY5K-_%X-~cz%_bg)^6a%V~ z0OEH-5a89oE&=)L2Wxm>A0%rAHLm7OJK~Kp*aY4UN=eO8p8mNTm}pM2-#GuZcI796 zfZzo4d1dCw-+1;TDzGyUrFcYgGm#Cz5!uZ-_g*A>Uha)bn?l96zpSU_h7|pGs>SfC zijV38jOD+nco|yvT=Rbu?V$orG<_%@sKOp}5Ks{Lvxs*yG1~mk!Vt{THzVB}`1-T> z9W%W>{S@rxG`1we*!d1&gYeDx3?zzghvnB5xG0L;s65vXC0}#n0!VFc)S@RLy~$+& zkNcqrXzQQo|L&mA=N2n9q~Y(ZOA-)mgPTy0gMjVg#+Zt@pzM*-8}n;VwC!N%Sa4?! zNZ2iPEY3}%OZMXFFTC##M4kUyw@{-y3EBtaF-jjMpYIN$5SX=0)QRTPVt8=9<)d2{ zSa~7LTF7_v#ih;5DrcNa@GidIooD;Bm0jIbh?3SCtWW2Q8>?EYy_9(Bdo{fC@%yF$ z5EzQf}_UuObGKrJ6>2d(x?VGqF-EIxkxkxGTT?azVd!LJeE zG=07MD=pHev@k(PUqSFVo4F2(r0@GqmO=Pz_^T8)ctp$M>wG2N*e4BUX?>wCEpU)X z_pA^a*`vx`QO!NCZc?~+G>qo!-VGfjE$#f%b)K8v=9=EEJg?ik6GUZ0 z*$=MK!xlfTqdt7)TNkfzdV!Pe27kNpwma-^i+Q(O!=$zzW;%vo(ysqa*X{4%D9fB4 zNsj&9qifc)1c$4fD*pl$H-#go5qSL^vo)zrYl`dW?=zj$4zgZ-^6{q@1?SsIuhSxTWadgXW$kk2jf(&zVpm8(){LWp4iG z)uH=OsuANmp!qLf;lx!`ky2OSQ>%@NQ=Rz!-4bS6SVeW$Im5&tppNIOS4tERlJG9A zk&7}x|7reQ>5iU+{aAd^5+wvntd)z=P7jn#itMLk7`zOXEMn%+k4Mj0S7sGu<3ge{|hWvG4=`0&a6gLlpK zwL*uVr;0n_YNNng@2zZ*1rW$FNq4uyCJe37koked6$r?B=cd$_3-iFcmXE~$Vn&1? z-#S)Yih_$ZQvcv%+BHxjC!(bP{7iER6(?i9GwJTxe!|s|yVX7rEN$l6`A7tBJ2kH4 zHmToD|v+k@d_hR#GslE?Cf3c>KL z@*wVyBtxa9kBkYxM=8Ab$co$dZi8pw7dU--$P}@q&UV7IoSQD+6CLe~AM0~dQH0iQ zjVw2ANIJQ_J@7=4Uprz@qnK!G%cn9zu+`oAHGi0rdVq z!_9F|61fWHOEunqAV!{al&AGY68~CV%5kvd#D=^rtMFo}Kz=RgfV=dr_BU#~BccO6 zv1cqyB#^r{XQ%Hw$<0ITC3`2N;>+!E6c^<Dvk_8N8+kiCiuM2JN1h^3{c+M(@^>`HQDedW50Hu9MH9K9poq5!EEvWTrHUfott`x#}8OLJV{#1boN8E3_v6KC3zi6`vzycc6_{@E){4_ zsb|~sWQs6o`}O^NyA@Nv`R`jQ=pJ`l&!|WN35;|fsw}>9`^ z8~zq^x^flt_bhkCECQf`zyP1+tDgMqjOR5E`6AHNDTn-t z`fz;t+eY!%uOmnB4ICJaUmcmqi(?6S#6>OR^~q2Y0qUn{C3f3A0 zu3rs`ZdzF<@Q+*?yl1SL5lhfk-~O_17q?^D>J~L0jJdPEl|MYG8y3tp5>j|VKng66 z<`I#(hUL?ykf|k|nyDbCbsrvpK^ELcn$m3NFpVfX_*>KX`>$=jMFqie$EpB;*F(|Q zBOeQZB zyK2a78GQKSM^SJ4#-4lbHnqo}tId(VIM>T|U*iWtA$%dDDg6unf`&ck z$t!NgAHe#Kb&_KIk8UO|Ma}Km>}!B@Y4=WF!1%js4@@-ZmY1)(mm3_}yQIR&y#3SF zsaV+cTSr)RJ38knrm6*OYl_Bb9twRKiVUOUFU7zV3r^S z{!JRoJiL@4;`sLIhj`}u{?p{ikY^+C59(vTY3&(Iryq$q1Z$hJ0B`&-e}a!CQ2xUo z90T{G?c-8|*PL{0v&hiEgADQ!0urf)(Um&&SGiPCKkkTp-u9}lV!S<-7o$^kckY&mSw`^3(<;dW-Gu5S6 zC1fgu8Ie*}YH+&d-PY;krT``Lie_ljbK<(HYk7C8nv)1c228c){;%ha3&M>;8OFJ? zNh9?U{s^2z==Rj75-CYwJx@E=H%)KXJ<*7l(Gy>CJbv-C1+WO|)Do_#`*| zi^TN{KiZA6_BbV`#rf8S_oWocG8$!9P==d#O^cjE_UjY0bCM6-*Bt$&2Z*@U0= zltS>4*SJPY0{sm>RR-4|A%N(V!J|wTr^n zP1#fFmC_{^$4temOC(&A7WYPH44DOOoz5cI&?mTEh~E!7*F>_@+m6hcQt{TDSb2^= zlgMKOHzaARQVQZB^Gz$Z?uyQ)(lw^#*B)r)^U~m$lTadL!`HQ|;|#5#;4OY1<)R6$ zjRRM+B{mtp7b7tPo2c&-#6hEOYMJU^&%pnNX3*S+EX znU;ULRjUdwNSJc(O)8-&=fp%p{Gcv|E!P60dRTT7i`99p6fG2e8PNJn2SSy&+c@KR`k@(D5~0gLeN%I4Uy45m=lb2`=0YeyXD+etYM<@@dab z_r~w?5jx)=BHEq)dh4BJ>4!_Ff3BEj%08AIjw-;Aw{hmM&Kj zfrQr??q6n8K@HS()wCA({{>N`ANtE_v()Rc;e%-^(qZ}3+sAK7J>=@4WRQD&S6kdT zf_8YpzkPvKIoPnQB-Yc`Z!4cvVvLO#34B;N6S<7_ROF*o79ishgzNO|wNV1@>FWN^ z*lib8=C|BZNDKPa7n~~%XUg-V1H7AAY2Lpim%cK1MFW8>f8W=j)of~7NEhX=;^asj z$5&TD;@?91WL&V}kg5iSlU}daOkeG0r7#e?Yj*OBIfc!vI@gcb;*bJQ3qrDW%F7>R z7&WjiUnpjg#^3qNjgx37Tg(rsk-BITkPdN!e;MX~`2(Q>eXB#Va_~JKkMCXyIkaoC zNJ^b^%c3{mHLAJB3FpX?Oz4IA-(3b5lUvI(Ru)2)jE(M#Nr;^vx<7NWHn$R)h#xO< zkRR6)m@GO`!bpMFlSe|;`(s8@rgujRH4~&lN}68VwdB$;djHxubzx;a%B$d4xlXEF z4Q?F$$39kuqH$=@L)#;Pi42{4**Y}U`;HSXe^X(-@ycCaeN4$`nsCw$W(#wuYkEJI zWQ6k1Yj>@}fwG+|V>OfEVkO_;n>F-V5b@dD{6kUhI5UZ!q5adA zHSyzrqvr`Uvd$5U#4G?rr{`S6NL+9FwF)xel_iu0&DDcaxLqV56{yOwjgi0(u%K6v zAoV1#15bSCmI@WW3k2E+>+w_bJHH21UajU4Iv`9jwA1M2E9a48IxQ0An++2=1Y{fX zj*s_={h^}1l#*&#ybRoDvKM{l{;@Nszem96d-*Cj8m;Pp`^@CSE6$eJ(U!T)kGTjv z7MBfQeEM~2$0t7*kV41liCKKm!45z?SJAa6K3@K|;jk`0%rDvLf9A(}Mli_HWc>ra~cKJFp-F-K)SD z3M67`KNaPBZ)U=OMRb!3z#l#Zo>c@6ot;wZ-WM~mna*mobzP51<9BlRGoe`fK7>>vbs?pz2~h>q#d zmMp6+S2u|fDG>bl1?QH5M3pH?9$b%f?EP!@D6!r_xd_y-a#vBW(Q|lz-^jKB#yRhc zEbA^VF9$yQtPn-+J7`_`+3%gso#Aq+r$t-2gs7h^#%OM;b=%Mvf7$QLdv&1N=t~>O z6N`Y+VHMrxS04hZoh8M*G8^}3rmtUfpW+Tx9m*HXXFEU!*itmpA{0r_4_m1)q-8!- zbzmK$8NQmaMdRN2lw^u#p*oy*-lzFK9HHpyKmHF3I@PwCzcneiKjLN~vWvHk3EH4< z$beSLY@v=Ijt(i!;_VA8ds2FIw0YB202QQVw*8}*`5OD_m8Zq@l_XbAv1++=fdHwt z5Lkr0^r@kSx68x?kCRpvyK>YlrihDWv24i4-w=IM>Ajg?KhS&RRZ8?O=UFU(&vTJB zOfOs`UFvq-GJp<0LWePx(CD~shbEONQbaNUiALE3iGY2V}fOd zEL5#Z*J3Q{^80FEkkXMhSR+0feAKCQwB#;ifA2`^#{3E3b>m5OL-Xl$$mM9jhcRJ(bnftZ{)pK3{^^rl&pezvfPy{%OR=eBeOa>o zT?x=^HfmaD^VXFXbu38w)~s&90EtB(>2{ zetDB??*gMMojoIlfA`nJJNHz&es&bGTb?TTbn+82>HK*oruVHJbq0r_c|M#a zyfyjQUUBd}hX9gxJ=}e3=`id4br1)vs59r?<;$X8jRt_(7Kp}l+mk>@TV94vl_#5c zX9uF*vtGy>MPD?lpPx$6)m6@-SIT+O6saPsa&1q1+ii~wM&qp8SUGVaNEO!?!M|Jg z_$}^UYe!!c4&s3+kSK!Hyc8l}6T3*7^59ZtE$2tj2X$=Jh=$&Ej=zIy;J4f8b>%Bh zdz_v5Z*Nek$?SbKm{bNs{a%tWl>GC_{Aw1^N)jr>-Sip_dFXLj!*gbr^gG`_Q3rY4 zW#)$PJsJZu)63;O_vFPWmDbq553r{%L+w++WgM*@(eQNhYT68dZF>IMIQ{)Dq%d}g zSu?>x0gwng#xCv`^z|~bDEQ<2=EE98DO@O^T|%5rPmZ}`rA|NK7=zo08(ZQ~=)Bwx zV~=7pM#nfleP+T21SnM6RFVR2R*#QgDZFxU)hIpdXM%Vl?w-2ptJ7CTHMi_<1CO^&g|^m3nLqr;%_l<8XqJ4v0#sQdZvQssiYWop z>L=6pyvK!w2o3<(nJ+}dwt#$FNdFTSkY47G*(_rBkUEclCRLV>n@EIQV7s?NiU6e0 zA54mF7z5weTP?KSXencKLGMVg<~T?N=FM+(3X=OMT=SwQ;&wn*9i+3HCxj~6$T12^ z@Wg4-Bzyp5!6b^dh!fNTJEW0%a1ZOHinwBhmux&YonMwcbi1?}k^g8r|1+Caof6a| zRPienGp!~ucU)+&2{F9`WQ{_lOT&bi6yQ4;)Ru2pq~n;4T;jMMX_Y^_3t{0;FpD#G zuJkf_iy(slbs?3L>|+zI;r6e66uiUK;DSQ$?9wAAAj<0GpH+sSz%5eUT;qG(<=AZE zYSPh+Ux@;w=H`TIty{ZQbM5lcii~X`hm~{!>b{%q!9{-=y^A* z>~Yn~|Ku*On04TS%>v(GGVRjK&m*c8VF*xrR|$#@Fy45+Cu>Uo zk5Cp4<;W!F>}w*&iLclHR8kklm)Rxk2ic3lpuw>WD#S z#LY*zbO|-Zf+g=rhtIOLX;)aA-EO|uCBQ`%@pFFo?>D?aQ^itKMcNC>Aot+oU4M7t z`(6>lQ{5uKKsBoM69IzO)CPk{yu`SFoWP@aPi?WjC3gljaoJ;TTu2+5;(M;;$BNTCVrc}gQ#5RcZHQ0(~V z5UtQOb2&$Q}(on1WHp0*>|&e4}U#9Eg`xG$y;oIYPpsb@-pf49_H7Lvq<9%8e|x z??|4UhT8*Ow{eFZt5UG#4nUj~^PRlU>5y=@O0RCe*(n@~JOK%^2F z?;_kHabozD!%@quSkd$guZLSqXf&J08W$e-NcxlJl$@gJt3_xzCbJ z*-wrwBv+^qoThB1uv((QG`720S5(fW7%I(u>Qpe*2IiHBznjPM{aHbJo~fCH5&^&F zDwQt%QlBS!DJO;j9(U)hhtm(p#9AwUUv*>hogZ%j1 z+qk4@p9Y@b+a}GF>p8t41vp*U$$=tf82E-7IxnItlpwT&m-s;uO5qo{Uk@GBBH5XI z0=^VC!VDf^% zDM}n~{ju7Z6Nn{_P@-=lO(H&4Op6I5K&TVdj~_2Z Date: Sat, 8 Jul 2023 23:45:00 +0100 Subject: [PATCH 21/36] move next-auth to page router to avoid clash with dynamic routes in app router When running locally this causes api urls to be passed to `app/[...slug]/page` --- packages/site/src/{app => pages}/api/auth/[...nextauth].ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/site/src/{app => pages}/api/auth/[...nextauth].ts (100%) diff --git a/packages/site/src/app/api/auth/[...nextauth].ts b/packages/site/src/pages/api/auth/[...nextauth].ts similarity index 100% rename from packages/site/src/app/api/auth/[...nextauth].ts rename to packages/site/src/pages/api/auth/[...nextauth].ts From cf3e24ceb1ac15767e37609930f8de449d55a1a8 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sat, 8 Jul 2023 23:54:45 +0100 Subject: [PATCH 22/36] refactor MDX loader to support static site exports - renamed `@mosaic-site-loaders` to `@mosaic-site-mdx-loader` - added support for static export of sites with `yarn export:static` - added serve command for static site with `yarn serve:static` - refactored page loader to support redirects - static site exports use GENERATE_STATIC_PARAMS_URL env var to define the FS Url --- .gitignore | 1 + package.json | 2 + packages/cli/src/build.ts | 105 ------------------ packages/cli/src/exportStatic.ts | 22 ++++ packages/cli/src/index.ts | 48 ++++---- packages/cli/src/serveStatic.ts | 10 ++ packages/site-loaders/README.md | 13 --- packages/site-loaders/src/index.ts | 20 ---- packages/site-loaders/src/loadActivePage.ts | 65 ----------- packages/site-loaders/src/loadSnapshotFile.ts | 76 ------------- packages/site-loaders/src/types/index.ts | 5 - packages/site-mdx-loader/README.md | 13 +++ .../package.json | 17 +-- .../scripts/bundle.mjs | 0 packages/site-mdx-loader/src/index.ts | 65 +++++++++++ packages/site-mdx-loader/src/types/index.ts | 10 ++ .../tsconfig.json | 0 packages/site/next-env.d.ts | 1 + packages/site/next.config.js | 34 +----- packages/site/package.json | 6 +- packages/site/src/app/[...slug]/layout.tsx | 12 +- packages/site/src/app/[...slug]/page.tsx | 25 +++-- packages/site/src/app/layout.tsx | 9 +- packages/site/src/middleware.ts | 16 --- turbo.json | 11 +- 25 files changed, 197 insertions(+), 389 deletions(-) delete mode 100644 packages/cli/src/build.ts create mode 100644 packages/cli/src/exportStatic.ts create mode 100644 packages/cli/src/serveStatic.ts delete mode 100644 packages/site-loaders/README.md delete mode 100644 packages/site-loaders/src/index.ts delete mode 100644 packages/site-loaders/src/loadActivePage.ts delete mode 100644 packages/site-loaders/src/loadSnapshotFile.ts delete mode 100644 packages/site-loaders/src/types/index.ts create mode 100644 packages/site-mdx-loader/README.md rename packages/{site-loaders => site-mdx-loader}/package.json (72%) rename packages/{site-loaders => site-mdx-loader}/scripts/bundle.mjs (100%) create mode 100644 packages/site-mdx-loader/src/index.ts create mode 100644 packages/site-mdx-loader/src/types/index.ts rename packages/{site-loaders => site-mdx-loader}/tsconfig.json (100%) delete mode 100644 packages/site/src/middleware.ts diff --git a/.gitignore b/.gitignore index cb4e1a210..994d90810 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ tsconfig.tsbuildinfo # Deployment packages/rig +packages/site/out # Test Results coverage diff --git a/package.json b/package.json index 16a190247..247ece0a1 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "e2e:codegen": "turbo run e2e:codegen --filter=@jpmorganchase/mosaic-site", "e2e:setup": "npx playwright install", "e2e": "turbo run e2e --filter=@jpmorganchase/mosaic-site", + "export:static": "turbo run export:static --filter=@jpmorganchase/mosaic-site", "gen:rig": "turbo run create:rig copy:rig:images --filter=//", "gen:site": "turbo run create:site copy:site:images --filter=//", "gen:snapshot": "turbo run gen:snapshot --filter=@jpmorganchase/mosaic-site", @@ -41,6 +42,7 @@ "serve:snapshot:file": "turbo run serve:snapshot:file --filter=@jpmorganchase/mosaic-site", "serve:snapshot:s3": "turbo run serve:snapshot:s3 --filter=@jpmorganchase/mosaic-site", "serve": "turbo run serve --filter=@jpmorganchase/mosaic-site", + "serve:static": "turbo run serve:static --filter=@jpmorganchase/mosaic-site", "start": "turbo run start --filter=@jpmorganchase/mosaic-site", "test:client": "jest --config ./jest.config.client.js --coverage", "test:server": "jest --config ./jest.config.server.js --coverage", diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts deleted file mode 100644 index 886125cac..000000000 --- a/packages/cli/src/build.ts +++ /dev/null @@ -1,105 +0,0 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import deepmerge from 'deepmerge'; -import fsExtra from 'fs-extra'; -import MosaicCore from '@jpmorganchase/mosaic-core'; - -export default async function build(config, targetDir, options) { - // Strip out any plugins that are meant for runtime use only (i.e. `LazyPagePlugin`) - config.plugins = config.plugins.filter(({ runTimeOnly }) => !runTimeOnly); - // Turn off `cache` for each source - config.sources = config.sources.map(source => ({ - ...source, - options: { ...source.options, cache: false } - })); - const scope = options.scope && options.scope.split(','); - const mosaic = new MosaicCore(config); - const pathDir = path.posix.join(targetDir, options.name ?? new Date().toISOString()); - await fsExtra.emptyDir(pathDir); - await mosaic.start(); - // If `scope` arg was used, scope the filesystem to those namespaces - const filesystem = Array.isArray(scope) ? mosaic.filesystem.scope(scope) : mosaic.filesystem; - let calls = 0; - mosaic.onSourceUpdate(async () => { - try { - if (++calls === config.sources.length) { - const symlinks = filesystem.symlinksToJSON(); - const allFiles = await filesystem.promises.glob('**', { - cwd: '/', - onlyFiles: true - }); - for (const filePath of allFiles) { - // if (dotDirRegExp.test(filePath)) { - // continue; - // } - const rawFiles = await filesystem.promises.readFile(String(filePath), { - includeConflicts: true - }); - let rawFile = rawFiles[0]; - if (rawFiles.length > 1) { - // Join colliding JSON files together. e.g. sidebar.json files - if (path.posix.extname(String(filePath)) === '.json') { - console.warn( - `'${filePath}' returned multiple files at the same location. Since the files were JSON dot files, they were merged using \`deepmerge\`.` - ); - const allRawFiles: string[] = rawFiles.map(fileData => JSON.parse(String(fileData))); - rawFile = Buffer.from(JSON.stringify(deepmerge(allRawFiles[0], allRawFiles[1]))); - } else { - throw new Error(`'${filePath}' returned multiple files at the same location, this will result in overwritten data in the output. Aborting build. - -Try using \`--scope\` to just output certain namespaced sources, or adding a \`prefixDir\` to the source options to move the source files into a separate folder.`); - } - } - await fs.promises.mkdir(path.dirname(path.join(pathDir, String(filePath))), { - recursive: true - }); - await fs.promises.writeFile(path.join(pathDir, String(filePath)), rawFile); - } - const pwd = process.cwd(); - for (const alias in symlinks) { - if (alias.startsWith('/.tags')) { - continue; - } - for (const { target } of symlinks[alias]) { - if (target.startsWith('/.tags')) { - continue; - } - await fsExtra.ensureDir(path.join(pathDir, path.dirname(alias))); - - try { - const exists = !!(await fs.promises.stat(path.join(pathDir, alias))); - if (exists) { - console.error( - new Error( - `Symlink at '${path.join(pathDir, alias)}' already exists. Aborting build.` - ) - ); - process.exit(1); - } - } catch { - const targetPath = path.join(pathDir, target); - const aliasPath = path.join(pathDir, alias); - const aliasBasename = path.basename(aliasPath); - const targetSymlink = path.relative(path.dirname(aliasPath), targetPath); - process.chdir(path.dirname(aliasPath)); - if (fs.existsSync(aliasBasename)) { - fs.unlinkSync(aliasBasename); - } - await fs.promises.symlink(targetSymlink, aliasBasename); - } - } - } - process.chdir(pwd); - console.log( - `[Mosaic] filesystem for ${ - Array.isArray(scope) ? scope.length : config.sources.length - } source(s) written to disk at '${pathDir}'` - ); - mosaic.stop(); - } - } catch (e) { - console.error(e); - process.exit(1); - } - }); -} diff --git a/packages/cli/src/exportStatic.ts b/packages/cli/src/exportStatic.ts new file mode 100644 index 000000000..47af81532 --- /dev/null +++ b/packages/cli/src/exportStatic.ts @@ -0,0 +1,22 @@ +import { spawn } from 'node:child_process'; + +function runCommand(command) { + const child = spawn(command, { + cwd: process.cwd(), + shell: true + }); + child.stdout.on('data', progress => console.log(progress.toString())); + child.stderr.on('data', error => console.error(error.toString())); + return child; +} + +export default async function exportStatic() { + try { + const fsChild = runCommand(`yarn serve:fs`); + const buildChild = runCommand(`yarn build:static`); + buildChild.on('close', () => fsChild.kill()); + } catch (error) { + console.error(error); + process.exit(1); + } +} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index d04f5199a..e21761bb2 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -6,7 +6,8 @@ import { pathToFileURL } from 'node:url'; import serve from './serve.js'; import uploadS3Snapshot from './upload-s3-snapshot.js'; -import build from './build.js'; +import exportStatic from './exportStatic.js'; +import serveStatic from './serveStatic.js'; import { updateTraceFile } from './vercel-snapshot.js'; program @@ -21,28 +22,29 @@ program.parse(); const options = program.opts(); -let config; -if (options.config !== undefined) { - config = await import(pathToFileURL(path.resolve(process.cwd(), options.config)).toString()); - - if (!config) { - throw new Error( - `[Mosaic] could not find config file at ${path.resolve(process.cwd(), options.config)}.` - ); - } +if (program.args[0] === 'export:static') { + exportStatic(); +} else if (program.args[0] === 'serve:static') { + serveStatic(path.resolve(process.cwd(), options.out)); } else { - throw new Error(`[Mosaic] no config file provided`); -} + let config; + if (options.config !== undefined) { + config = await import(pathToFileURL(path.resolve(process.cwd(), options.config)).toString()); + + if (!config) { + throw new Error( + `[Mosaic] could not find config file at ${path.resolve(process.cwd(), options.config)}.` + ); + } + } else { + throw new Error(`[Mosaic] no config file provided`); + } -if (program.args[0] === 'build') { - build(config.default, path.resolve(process.cwd(), options.out), options); -} -if (program.args[0] === 'serve') { - serve(config.default, options.port, options.scope && options.scope.split(',')); -} -if (program.args[0] === 'upload') { - uploadS3Snapshot(path.resolve(process.cwd(), options.snapshot)); -} -if (program.args[0] === 'deploy') { - updateTraceFile(config.default, options); + if (program.args[0] === 'serve') { + serve(config.default, options.port, options.scope && options.scope.split(',')); + } else if (program.args[0] === 'upload') { + uploadS3Snapshot(path.resolve(process.cwd(), options.snapshot)); + } else if (program.args[0] === 'deploy') { + updateTraceFile(config.default, options); + } } diff --git a/packages/cli/src/serveStatic.ts b/packages/cli/src/serveStatic.ts new file mode 100644 index 000000000..5d4fb7cd3 --- /dev/null +++ b/packages/cli/src/serveStatic.ts @@ -0,0 +1,10 @@ +#!/usr/bin/env node +import path from 'node:path'; +import express from 'express'; + +export default function serveStatic(staticPath, rootURL = 'mosaic/index.html', port = 3000) { + const server = express(); + server.use(express.static(staticPath)); + server.get('*', (_req, res) => res.sendFile(path.join(staticPath, rootURL))); + server.listen(port, () => console.log(`Server is listening on port ${port}`)); +} diff --git a/packages/site-loaders/README.md b/packages/site-loaders/README.md deleted file mode 100644 index 312ce50db..000000000 --- a/packages/site-loaders/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Mosaic Site Loaders (Server) - -`@jpmorganchase/mosaic-site-loaders` contains Next JS loaders for Mosaic content served by Mosaic Core. - -## Installation - -`yarn add @jpmorganchase/mosaic-site-loaders` - -## Criteria - -The criteria for a component within `@jpmorganchase/mosaic-site-loaders` is - -- Should only export server side code diff --git a/packages/site-loaders/src/index.ts b/packages/site-loaders/src/index.ts deleted file mode 100644 index 1a31849fd..000000000 --- a/packages/site-loaders/src/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { load as loadActivePage } from './loadActivePage.js'; -import { load as loadSnapshotFile } from './loadSnapshotFile.js'; -import type { LoaderPage } from './types/index.js'; - -const pageLoaders = { - /** Load pages and update with live changes */ - active: loadActivePage, - /** Load immutable snapshots of content from the local file-system */ - 'snapshot-file': loadSnapshotFile -}; - -export async function loadPage(route: string): Promise { - const { MOSAIC_MODE: mosaicMode = 'active' } = process.env; - const loader = pageLoaders[mosaicMode] || pageLoaders.active; - return await loader(route); -} - -export const config = { - matcher: ['/mosaic/**/*'] -}; diff --git a/packages/site-loaders/src/loadActivePage.ts b/packages/site-loaders/src/loadActivePage.ts deleted file mode 100644 index 8e41ddae3..000000000 --- a/packages/site-loaders/src/loadActivePage.ts +++ /dev/null @@ -1,65 +0,0 @@ -import path from 'path'; -import { activeEnvSchema } from '@jpmorganchase/mosaic-schemas'; -import type { SafeParseError } from 'zod'; - -import type { LoaderPage, LoaderData, LoaderSource } from './types/index.js'; - -const normalizePageUrl = (url: string): string => (/\/index$/.test(url) ? `${url}.mdx` : url); - -type ActiveEnv = { - MOSAIC_ACTIVE_MODE_URL: string; -}; - -export const getActiveConfig = (url: string): Record => { - const env = activeEnvSchema.safeParse(process.env); - if (!env.success) { - const error = (env as SafeParseError).error; - error.issues.forEach(issue => { - console.error( - `Missing process.env.${issue.path.join()} environment variable required to load path ${url}` - ); - }); - throw new Error(`Environment variables missing for loading of ${url} for active mode`); - } - return { - activeModelUrl: env.data.MOSAIC_ACTIVE_MODE_URL - }; -}; - -const loadData = async (url: string): Promise => { - const response = await fetch(url, { - headers: { - 'Content-Type': 'application/json' - } - }); - if (response.ok) { - const sharedConfig = await response.json(); - return { data: { sharedConfig: sharedConfig.config } }; - } else if (response.status !== 404) { - throw new Error(`Could not load data : ${response.status} - ${response.statusText}`); - } - return undefined; -}; - -export const loadPage = async (url: string): Promise => { - const response = await fetch(url); - console.log('....', url); - if (response.ok) { - const source = await response.text(); - return { source }; - } - throw new Error(`Could not load page : ${response.status} - ${response.statusText}`); -}; - -export function load(route: string): Promise { - const { activeModelUrl } = getActiveConfig(route); - const page = normalizePageUrl(`${activeModelUrl}${route}`); - const sharedConfig = path.join( - 'http://localhost:8080', - path.dirname(route), - 'shared-config.json' - ); - return Promise.all([loadPage(page), loadData(sharedConfig)]).then(results => - results.reduce((page, result) => ({ ...page, ...result }), {}) - ); -} diff --git a/packages/site-loaders/src/loadSnapshotFile.ts b/packages/site-loaders/src/loadSnapshotFile.ts deleted file mode 100644 index 87607983a..000000000 --- a/packages/site-loaders/src/loadSnapshotFile.ts +++ /dev/null @@ -1,76 +0,0 @@ -import path from 'path'; -import fs from 'fs'; -import { snapshotFileEnvSchema } from '@jpmorganchase/mosaic-schemas'; -import { SafeParseError } from 'zod'; - -import type { LoaderPage, LoaderData, LoaderSource } from './types/index.js'; - -const normalizePageUrl = (url: string): string => (/\/index$/.test(url) ? `${url}.mdx` : url); - -type SnapshotFileEnv = { - MOSAIC_SNAPSHOT_DIR: string; -}; - -export const getSnapshotFileConfig = (url: string): Record => { - const env = snapshotFileEnvSchema.safeParse(process.env); - if (!env.success) { - const error = (env as SafeParseError).error; - error.issues.forEach(issue => { - console.error( - `Missing process.env.${issue.path.join()} environment variable required to load path ${url} from file snapshot` - ); - }); - throw new Error(`Environment variables missing for loading of ${url} for local snapshot`); - } - return { - snapshotDir: env.data.MOSAIC_SNAPSHOT_DIR - }; -}; - -export const loadFile = async (filePath: string): Promise => { - let localPath = filePath; - if ((await fs.promises.stat(filePath)).isDirectory()) { - localPath = path.posix.join(localPath, 'index'); - } - const realPath = await fs.promises.realpath(localPath); - const data = await fs.promises.readFile(realPath, 'utf-8'); - return data.toString(); -}; - -const loadData = async (filePath: string): Promise => { - let fileExists = false; - try { - await fs.promises.stat(filePath); - fileExists = true; - } catch {} - if (!fileExists) { - return undefined; - } - try { - const rawSharedConfig = await loadFile(filePath); - const sharedConfig = JSON.parse(rawSharedConfig); - return { data: { sharedConfig: sharedConfig.config } }; - } catch (error: any) { - throw new Error(`Could not load snapshot data : ${error.message}`); - } -}; - -export const loadPage = async (filePath: string): Promise => { - try { - const source = await loadFile(filePath); - return { source }; - } catch (error: any) { - throw new Error(`Could not load shapshot page : ${error.message}`); - } -}; - -export function load(route: string): Promise { - const { snapshotDir } = getSnapshotFileConfig(route); - const normalizedUrl = normalizePageUrl(route); - const page = path.posix.join(process.cwd(), snapshotDir, normalizedUrl); - const snapshotDirname = path.dirname(route); - const sharedConfig = path.join(process.cwd(), snapshotDir, snapshotDirname, 'shared-config.json'); - return Promise.all([loadPage(page), loadData(sharedConfig)]).then(results => - results.reduce((page, result) => ({ ...page, ...result }), {}) - ); -} diff --git a/packages/site-loaders/src/types/index.ts b/packages/site-loaders/src/types/index.ts deleted file mode 100644 index fbb685c5b..000000000 --- a/packages/site-loaders/src/types/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { SiteState } from '@jpmorganchase/mosaic-store'; - -export type LoaderSource = { source?: string }; -export type LoaderData = { data?: Partial }; -export type LoaderPage = LoaderSource & LoaderData; diff --git a/packages/site-mdx-loader/README.md b/packages/site-mdx-loader/README.md new file mode 100644 index 000000000..73d7d7ab5 --- /dev/null +++ b/packages/site-mdx-loader/README.md @@ -0,0 +1,13 @@ +# Mosaic Site MDX Loader (Server) + +`@jpmorganchase/mosaic-site-mdx-loader` contains Mosaic Site MDX loader for content served by Mosaic Core. + +## Installation + +`yarn add @jpmorganchase/mosaic-site-mdx-loader` + +## Criteria + +The criteria for code within `@jpmorganchase/mosaic-site-mdx-loader` is + +- Should only export server side code diff --git a/packages/site-loaders/package.json b/packages/site-mdx-loader/package.json similarity index 72% rename from packages/site-loaders/package.json rename to packages/site-mdx-loader/package.json index e588d3a14..98548eec9 100644 --- a/packages/site-loaders/package.json +++ b/packages/site-mdx-loader/package.json @@ -1,13 +1,13 @@ { - "name": "@jpmorganchase/mosaic-site-loaders", - "description": "Mosaic - Site Loaders", + "name": "@jpmorganchase/mosaic-site-mdx-loader", + "description": "Mosaic - MDX Site Loader", "version": "0.1.0-beta.38", "author": "", "license": "Apache-2.0", "repository": { "type": "git", "url": "git@github.com:jpmorganchase/mosaic.git", - "directory": "packages/site-loaders" + "directory": "packages/site-mdx-loader" }, "type": "module", "main": "./dist/index.js", @@ -29,17 +29,20 @@ "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^14.0.0", - "react": "^18.2.0", + "@jpmorganchase/mosaic-types": "^0.1.0-beta.38", "del-cli": "^4.0.1", + "esbuild": "0.17.19", + "esbuild-node-externals": "^1.7.0", + "fast-glob": "^3.2.7", "typescript": "^4.8.3" }, "dependencies": { "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.38", "@jpmorganchase/mosaic-store": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.38", "@types/node": "^18.15.3", + "deepmerge": "^4.2.2", + "gray-matter": "^4.0.3", "zod": "^3.19.1" } } diff --git a/packages/site-loaders/scripts/bundle.mjs b/packages/site-mdx-loader/scripts/bundle.mjs similarity index 100% rename from packages/site-loaders/scripts/bundle.mjs rename to packages/site-mdx-loader/scripts/bundle.mjs diff --git a/packages/site-mdx-loader/src/index.ts b/packages/site-mdx-loader/src/index.ts new file mode 100644 index 000000000..0db3672fd --- /dev/null +++ b/packages/site-mdx-loader/src/index.ts @@ -0,0 +1,65 @@ +import path from 'path'; +import matter from 'gray-matter'; +import type { SafeParseError } from 'zod'; +import { activeEnvSchema } from '@jpmorganchase/mosaic-schemas'; +import type { SharedConfig } from '@jpmorganchase/mosaic-store'; + +import type { LoaderPage } from './types/index.js'; + +const normalizePageUrl = (url: string): string => (/\/index$/.test(url) ? `${url}.mdx` : url); + +type ActiveModeUrlEnv = { + MOSAIC_ACTIVE_MODE_URL: string; +}; + +export const getFSRootUrl = (): string => { + const env = activeEnvSchema.safeParse(process.env); + if (!env.success) { + const { error } = env as SafeParseError; + error.issues.forEach(issue => { + console.error( + `Missing process.env.${issue.path.join()} environment variable required to load pages` + ); + }); + throw new Error(`Environment variables missing to load pages`); + } + return env.data.MOSAIC_ACTIVE_MODE_URL; +}; + +export const loadSharedConfig = async (url: string): Promise => { + const response = await fetch(url, { + headers: { + 'Content-Type': 'application/json' + } + }); + if (!response.ok && response.status !== 404) { + throw new Error(`Could not load data : ${response.status} - ${response.statusText}`); + } + if (response.ok) { + const sharedConfig = await response.json(); + return sharedConfig.config; + } + return undefined; +}; + +export const loadPage = async (fsRootUrl: string, route: string): Promise => { + const pageUrl = normalizePageUrl(`${fsRootUrl}${route}`); + const response = await fetch(pageUrl); + if (response.status === 302) { + const { redirect } = await response.json(); + return loadPage(redirect, fsRootUrl); + } + if (response.ok) { + const sharedConfigUrl = path.join(fsRootUrl, path.dirname(route), 'shared-config.json'); + const sharedConfigData = await loadSharedConfig(sharedConfigUrl); + const source = await response.text(); + const { content, data } = matter(source); + return { source: content, data: { ...data, sharedConfig: sharedConfigData } }; + } + throw new Error(`Could not load page : ${route} ${response.status}/${response.statusText}`); +}; + +export function load(route: string): Promise { + const fsRootUrl = getFSRootUrl(); + return loadPage(fsRootUrl, route); +} diff --git a/packages/site-mdx-loader/src/types/index.ts b/packages/site-mdx-loader/src/types/index.ts new file mode 100644 index 000000000..807e30396 --- /dev/null +++ b/packages/site-mdx-loader/src/types/index.ts @@ -0,0 +1,10 @@ +import type { SiteState } from '@jpmorganchase/mosaic-store'; + +export type LoaderSource = string; +export type LoaderData = Partial; +export type LoaderPage = { + /** content source */ + source?: LoaderSource; + /** meta for content */ + data?: LoaderData; +}; diff --git a/packages/site-loaders/tsconfig.json b/packages/site-mdx-loader/tsconfig.json similarity index 100% rename from packages/site-loaders/tsconfig.json rename to packages/site-mdx-loader/tsconfig.json diff --git a/packages/site/next-env.d.ts b/packages/site/next-env.d.ts index 4f11a03dc..fd36f9494 100644 --- a/packages/site/next-env.d.ts +++ b/packages/site/next-env.d.ts @@ -1,5 +1,6 @@ /// /// +/// // NOTE: This file should not be edited // see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/packages/site/next.config.js b/packages/site/next.config.js index 1dc065391..648a53475 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -7,7 +7,7 @@ const nextConfig = { mdxRs: true }, reactStrictMode: true, - output: 'standalone', + output: process.env.GENERATE_STATIC_PARAMS_URL ? 'output' : 'standalone', swcMinify: true, transpilePackages: [ '@jpmorganchase/mosaic-components', @@ -18,17 +18,6 @@ const nextConfig = { '@jpmorganchase/mosaic-theme', '@jpmorganchase/mosaic-store' ], - rewrites() { - return { - // These rewrites are checked after headers/redirects - // and before all files including _next/public files which - // allows overriding page files - beforeFiles: [{ source: '/favicon.ico', destination: '/img/favicon.png' }], - // These rewrites are checked after pages/public files - // are checked but before dynamic routes - afterFiles: [] - }; - }, images: { domains: [ /** Insert the domains where you will load images from */ @@ -50,26 +39,7 @@ const nextConfig = { config.experiments.topLevelAwait = true; return config; }, - env: {}, - async redirects() { - return [ - { - source: '/', - destination: '/mosaic/index', - permanent: true - }, - { - source: '/mosaic', - destination: '/mosaic/index', - permanent: true - }, - { - source: '/local', - destination: '/local/index', - permanent: true - } - ]; - } + env: {} }; module.exports = withMDX(nextConfig); diff --git a/packages/site/package.json b/packages/site/package.json index e5783e66b..353fbfd12 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -15,6 +15,8 @@ "scripts": { "clean": "rm -fr public/.tmp .next", "build": "next build", + "export:static": "yarn mosaic export:static", + "build:static": "yarn cross-env GENERATE_STATIC_PARAMS_URL=\"http://localhost:8080/search-data-condensed.json\" concurrently --kill-others \"next build\"", "dev": "next dev", "start": "next start", "debug": "yarn mosaic serve -c ./mosaic.config.mjs -p 8080", @@ -24,6 +26,8 @@ "e2e": "npx playwright test", "e2e:codegen": "npx playwright codegen localhost:3000", "gen:snapshot": "yarn mosaic build --out snapshots --name latest --config mosaic.config.mjs", + "serve:fs": "yarn mosaic serve -c ./mosaic.config.mjs -p 8080", + "serve:static": "yarn mosaic serve:static -o ./out", "serve:snapshot:file": "yarn cross-env MOSAIC_MODE=\"snapshot-file\" concurrently --kill-others \"yarn dev\"", "serve:snapshot:s3": "yarn cross-env MOSAIC_MODE=\"snapshot-s3\" concurrently --kill-others \"yarn dev\"", "serve": "concurrently --kill-others \"yarn dev\" \"yarn mosaic serve -c ./mosaic.config.mjs\" -p 8080" @@ -35,7 +39,7 @@ "@jpmorganchase/mosaic-mdx-components-server": "^0.1.0-beta.51", "@jpmorganchase/mosaic-layouts": "^0.1.0-beta.51", "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-site-loaders": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-site-mdx-loader": "^0.1.0-beta.51", "@jpmorganchase/mosaic-site-preset-styles": "^0.1.0-beta.51", "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.51", "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.51", diff --git a/packages/site/src/app/[...slug]/layout.tsx b/packages/site/src/app/[...slug]/layout.tsx index c13151f75..60eb89989 100644 --- a/packages/site/src/app/[...slug]/layout.tsx +++ b/packages/site/src/app/[...slug]/layout.tsx @@ -1,5 +1,4 @@ import classnames from 'classnames'; -import { headers } from 'next/headers'; import { BaseUrlProvider, ImageProvider, @@ -11,16 +10,13 @@ import { } from '@jpmorganchase/mosaic-site-components'; import { LayoutProvider } from '@jpmorganchase/mosaic-layouts'; import { themeClassName } from '@jpmorganchase/mosaic-theme'; -import { loadPage } from '@jpmorganchase/mosaic-site-loaders'; +import { load } from '@jpmorganchase/mosaic-site-mdx-loader'; import fontClassNames from './fonts'; -export default async function Layout({ children }) { - const pathname = headers().get('x-next-pathname') as string; - if (!pathname) { - return null; - } - const { data = {} } = await loadPage(pathname); +export default async function Layout({ params: { slug }, children }) { + const route = `/${slug.join('/')}`; + const { data = {} } = await load(route); return ( diff --git a/packages/site/src/app/[...slug]/page.tsx b/packages/site/src/app/[...slug]/page.tsx index f10840dae..2f64d96c7 100644 --- a/packages/site/src/app/[...slug]/page.tsx +++ b/packages/site/src/app/[...slug]/page.tsx @@ -1,16 +1,12 @@ -import { headers } from 'next/headers'; import { compileMDX } from 'next-mdx-remote/rsc'; import remarkGfm from 'remark-gfm'; import rehypeSlug from 'rehype-slug'; import components from '@jpmorganchase/mosaic-mdx-components-server'; -import { loadPage } from '@jpmorganchase/mosaic-site-loaders'; +import { load } from '@jpmorganchase/mosaic-site-mdx-loader'; -export default async function Page() { - const pathname = headers().get('x-next-pathname') as string; - if (!pathname) { - return null; - } - const { source = '', data = {} } = await loadPage(pathname); +export default async function Page({ params: { slug } }) { + const route = `/${slug.join('/')}`; + const { source = '', data = {} } = await load(route); const { content } = await compileMDX({ source, components, @@ -20,8 +16,19 @@ export default async function Page() { rehypePlugins: [rehypeSlug], remarkPlugins: [remarkGfm] }, - parseFrontmatter: true + parseFrontmatter: false } }); return content; } + +export async function generateStaticParams() { + const generateStaticParamsURL = process.env.GENERATE_STATIC_PARAMS_URL; + if (generateStaticParamsURL) { + const pages = await fetch(generateStaticParamsURL).then(res => res.json()); + return pages.map(({ route }) => ({ + slug: route.substring(1).split('/') + })); + } + return []; +} diff --git a/packages/site/src/app/layout.tsx b/packages/site/src/app/layout.tsx index a8e63b0fa..6dda1dc55 100644 --- a/packages/site/src/app/layout.tsx +++ b/packages/site/src/app/layout.tsx @@ -1,13 +1,14 @@ -import Head from 'next/head'; +import { Metadata } from 'next'; import '@jpmorganchase/mosaic-site-preset-styles/index.css'; +export const metadata: Metadata = { + title: 'Mosaic' +}; + export default async function RootLayout({ children }) { return ( - - Some title -
{children}
diff --git a/packages/site/src/middleware.ts b/packages/site/src/middleware.ts deleted file mode 100644 index 167d32395..000000000 --- a/packages/site/src/middleware.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NextResponse } from 'next/server'; -import type { NextRequest } from 'next/server'; - -export default function middleware(request: NextRequest) { - const requestHeaders = new Headers(request.headers); - requestHeaders.set('x-next-pathname', request.nextUrl.pathname); - return NextResponse.next({ - request: { - headers: requestHeaders - } - }); -} - -export const config = { - matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'] -}; diff --git a/turbo.json b/turbo.json index 9145b1d9c..c497d88e2 100644 --- a/turbo.json +++ b/turbo.json @@ -52,11 +52,8 @@ "//#gen:site": { "cache": false }, - "//#gen:snapshot": { - "outputs": ["./packages/site/public/snapshots/[0-9]*/**"] - }, - "gen:snapshot": { - "outputs": ["./packages/site/public/snapshots/latest/**"] + "export:static": { + "cache": false }, "lint": {}, "lint:fix": {}, @@ -65,6 +62,10 @@ "serve": { "outputs": [] }, + "//#serve:static": {}, + "serve:static": { + "outputs": [] + }, "//#serve:rig": {}, "serve:rig": { "outputs": [] From 5814a06bfb13d70954103bffe60db187d64219a4 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 9 Jul 2023 22:52:53 +0100 Subject: [PATCH 23/36] add 404 and 500 support Create custom pages for the unhappy path using Next JS file conventions (`error.tsx`, `not-found.tsx`) --- packages/components/src/Hero/index.tsx | 15 ++++--- packages/components/src/Hero/styles.css.ts | 2 +- packages/site-components/src/404.tsx | 18 +++----- packages/site-components/src/500.tsx | 22 +++++----- packages/site-components/src/Body.tsx | 8 ---- packages/site-mdx-loader/src/index.ts | 37 ++++++++++------ packages/site/next.config.js | 2 +- packages/site/src/app/[...slug]/error.tsx | 22 ++++++++++ packages/site/src/app/[...slug]/layout.tsx | 20 +++++++-- packages/site/src/app/[...slug]/page.tsx | 4 +- packages/site/src/app/error.tsx | 43 +++++++++++++++++++ .../site/src/app/{[...slug] => }/fonts.ts | 0 packages/site/src/app/not-found.tsx | 32 ++++++++++++++ 13 files changed, 170 insertions(+), 55 deletions(-) create mode 100644 packages/site/src/app/[...slug]/error.tsx create mode 100644 packages/site/src/app/error.tsx rename packages/site/src/app/{[...slug] => }/fonts.ts (100%) create mode 100644 packages/site/src/app/not-found.tsx diff --git a/packages/components/src/Hero/index.tsx b/packages/components/src/Hero/index.tsx index d9a33ecb1..4e51203d8 100644 --- a/packages/components/src/Hero/index.tsx +++ b/packages/components/src/Hero/index.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from 'react'; +import React, { ReactElement, ReactNode } from 'react'; import classnames from 'clsx'; import { LinkButton } from '../LinkButton'; @@ -30,6 +30,8 @@ export interface HeroLink { */ export interface HeroProps { backgroundImage?: string; + /** Optional children to use instead of links */ + children?: ReactNode; /** Additional class name for root class override. */ className?: string; /** Prop to provide a datestamp. */ @@ -42,7 +44,7 @@ export interface HeroProps { /** Image to be displayed. */ image?: string; /** The title of the Hero. */ - title: string | ReactElement; + title?: string | ReactElement; links?: HeroLink[]; /** Defines the variant. * @defaultValue `regular` @@ -95,8 +97,9 @@ function HeroImageContainer({ isFramed, heroBackgroundImage, heroImage, isFullWi * /> * ``` */ -export const Hero: React.FC> = ({ +export const Hero: React.FC = ({ backgroundImage, + children, className, datestamp, datestampLabel = 'Last Modified', @@ -139,7 +142,7 @@ export const Hero: React.FC> = ({ ) : null} {description ? {description} : null} {links ? ( -
+
{links.map((link, linkIndex) => { const isLastLink = linkIndex === links.length - 1; return ( @@ -157,7 +160,9 @@ export const Hero: React.FC> = ({ ); })}
- ) : null} + ) : ( +
{children}
+ )}
{image ? ( - ); -} +export const Page404: React.FC = ({ + children, + description = "Sorry, looks like something's wrong here.", + title = 'Page Not Found', + ...rest +}) => ; diff --git a/packages/site-components/src/500.tsx b/packages/site-components/src/500.tsx index 2755351f9..88c1aa634 100644 --- a/packages/site-components/src/500.tsx +++ b/packages/site-components/src/500.tsx @@ -1,13 +1,13 @@ import React from 'react'; -import { Hero } from '@jpmorganchase/mosaic-components'; +import { Hero, HeroProps } from '@jpmorganchase/mosaic-components'; -export function Page500() { - return ( - - ); -} +export const Page500: React.FC = ({ + children, + description = 'A 500 error occurred.', + title = 'Whoops! something went wrong', + ...rest +}) => ( + + {children} + +); diff --git a/packages/site-components/src/Body.tsx b/packages/site-components/src/Body.tsx index ad23ae8b3..086172046 100644 --- a/packages/site-components/src/Body.tsx +++ b/packages/site-components/src/Body.tsx @@ -7,7 +7,6 @@ import { useRouter } from 'next/router'; import { createMDXScope } from './utils/createMDXScope'; import { Page500 } from './500'; -import { Page404 } from './404'; const DefaultFallBackComponent = ({ error: { message: errorMessage = 'unknown' } }) => { const router = useRouter(); @@ -41,13 +40,6 @@ export function Body({ components = {}, type, ...props }) { const { pageState } = useContentEditor(); const { data: session } = useSession(); - if (props.show404) { - return ; - } - if (props.show500) { - return ; - } - if (pageState !== 'VIEW' && session !== null && type === 'mdx') { return ( { +export class LoadPageError extends Error { + statusCode: number; + constructor({ message, statusCode }: { message: string; statusCode: number }) { + super(message); + this.statusCode = statusCode; + } +} + +const getFSRootUrl = (): string => { const env = activeEnvSchema.safeParse(process.env); if (!env.success) { const { error } = env as SafeParseError; @@ -21,19 +29,25 @@ export const getFSRootUrl = (): string => { `Missing process.env.${issue.path.join()} environment variable required to load pages` ); }); - throw new Error(`Environment variables missing to load pages`); + throw new LoadPageError({ + message: `Environment variables missing to load pages`, + statusCode: 500 + }); } return env.data.MOSAIC_ACTIVE_MODE_URL; }; -export const loadSharedConfig = async (url: string): Promise => { +const loadSharedConfig = async (url: string): Promise => { const response = await fetch(url, { headers: { 'Content-Type': 'application/json' } }); if (!response.ok && response.status !== 404) { - throw new Error(`Could not load data : ${response.status} - ${response.statusText}`); + throw new LoadPageError({ + message: `Could not load shared config : ${url} ${response.status}/${response.statusText}`, + statusCode: 404 + }); } if (response.ok) { const sharedConfig = await response.json(); @@ -42,12 +56,13 @@ export const loadSharedConfig = async (url: string): Promise => { +export const loadPage = async (route: string): Promise => { + const fsRootUrl = getFSRootUrl(); const pageUrl = normalizePageUrl(`${fsRootUrl}${route}`); const response = await fetch(pageUrl); if (response.status === 302) { const { redirect } = await response.json(); - return loadPage(redirect, fsRootUrl); + return loadPage(redirect); } if (response.ok) { const sharedConfigUrl = path.join(fsRootUrl, path.dirname(route), 'shared-config.json'); @@ -56,10 +71,8 @@ export const loadPage = async (fsRootUrl: string, route: string): Promise { - const fsRootUrl = getFSRootUrl(); - return loadPage(fsRootUrl, route); -} diff --git a/packages/site/next.config.js b/packages/site/next.config.js index 648a53475..f598c2bed 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -7,7 +7,7 @@ const nextConfig = { mdxRs: true }, reactStrictMode: true, - output: process.env.GENERATE_STATIC_PARAMS_URL ? 'output' : 'standalone', + output: process.env.GENERATE_STATIC_PARAMS_URL ? 'export' : 'standalone', swcMinify: true, transpilePackages: [ '@jpmorganchase/mosaic-components', diff --git a/packages/site/src/app/[...slug]/error.tsx b/packages/site/src/app/[...slug]/error.tsx new file mode 100644 index 000000000..e5b186f14 --- /dev/null +++ b/packages/site/src/app/[...slug]/error.tsx @@ -0,0 +1,22 @@ +'use client'; + +import { useEffect } from 'react'; +import { Button } from '@jpmorganchase/mosaic-components'; +import { Page500 } from '@jpmorganchase/mosaic-site-components'; + +export default function Error({ error, reset }: { error: Error; reset: () => void }) { + useEffect(() => console.error(error), [error]); + + return ( + + + + ); +} diff --git a/packages/site/src/app/[...slug]/layout.tsx b/packages/site/src/app/[...slug]/layout.tsx index 60eb89989..6e69759e8 100644 --- a/packages/site/src/app/[...slug]/layout.tsx +++ b/packages/site/src/app/[...slug]/layout.tsx @@ -10,16 +10,28 @@ import { } from '@jpmorganchase/mosaic-site-components'; import { LayoutProvider } from '@jpmorganchase/mosaic-layouts'; import { themeClassName } from '@jpmorganchase/mosaic-theme'; -import { load } from '@jpmorganchase/mosaic-site-mdx-loader'; +import { loadPage, LoadPageError } from '@jpmorganchase/mosaic-site-mdx-loader'; +import { notFound } from 'next/navigation'; -import fontClassNames from './fonts'; +import fontClassNames from '../fonts'; export default async function Layout({ params: { slug }, children }) { const route = `/${slug.join('/')}`; - const { data = {} } = await load(route); + let store = {}; + try { + const { data = {} } = await loadPage(route); + store = data; + } catch (error) { + const loadPageError = error as LoadPageError; + if (loadPageError.statusCode === 404) { + notFound(); + } else { + throw error; + } + } return ( - + diff --git a/packages/site/src/app/[...slug]/page.tsx b/packages/site/src/app/[...slug]/page.tsx index 2f64d96c7..40e2618c6 100644 --- a/packages/site/src/app/[...slug]/page.tsx +++ b/packages/site/src/app/[...slug]/page.tsx @@ -2,11 +2,11 @@ import { compileMDX } from 'next-mdx-remote/rsc'; import remarkGfm from 'remark-gfm'; import rehypeSlug from 'rehype-slug'; import components from '@jpmorganchase/mosaic-mdx-components-server'; -import { load } from '@jpmorganchase/mosaic-site-mdx-loader'; +import { loadPage } from '@jpmorganchase/mosaic-site-mdx-loader'; export default async function Page({ params: { slug } }) { const route = `/${slug.join('/')}`; - const { source = '', data = {} } = await load(route); + const { source = '', data = {} } = await loadPage(route); const { content } = await compileMDX({ source, components, diff --git a/packages/site/src/app/error.tsx b/packages/site/src/app/error.tsx new file mode 100644 index 000000000..715e443a9 --- /dev/null +++ b/packages/site/src/app/error.tsx @@ -0,0 +1,43 @@ +'use client'; + +import { useEffect } from 'react'; +import classnames from 'classnames'; +import { + ImageProvider, + Page500, + SessionProvider, + StoreProvider, + ThemeProvider +} from '@jpmorganchase/mosaic-site-components'; +import { Button } from '@jpmorganchase/mosaic-components'; +import { LayoutProvider } from '@jpmorganchase/mosaic-layouts'; +import { themeClassName } from '@jpmorganchase/mosaic-theme'; + +import fontClassNames from './fonts'; + +const store = {}; +export default function Error({ error, reset }: { error: Error; reset: () => void }) { + useEffect(() => console.error(error), [error]); + return ( + + + + + + + + + + + + + + ); +} diff --git a/packages/site/src/app/[...slug]/fonts.ts b/packages/site/src/app/fonts.ts similarity index 100% rename from packages/site/src/app/[...slug]/fonts.ts rename to packages/site/src/app/fonts.ts diff --git a/packages/site/src/app/not-found.tsx b/packages/site/src/app/not-found.tsx new file mode 100644 index 000000000..d1fcb6bc7 --- /dev/null +++ b/packages/site/src/app/not-found.tsx @@ -0,0 +1,32 @@ +import classnames from 'classnames'; +import { + ImageProvider, + SessionProvider, + StoreProvider, + ThemeProvider +} from '@jpmorganchase/mosaic-site-components'; +import { LayoutProvider } from '@jpmorganchase/mosaic-layouts'; +import { themeClassName } from '@jpmorganchase/mosaic-theme'; +import { loadPage } from '@jpmorganchase/mosaic-site-mdx-loader'; +import { Page404 } from '@jpmorganchase/mosaic-site-components'; +import fontClassNames from './fonts'; + +export default async function NotFound() { + const { data = {} } = await loadPage('/mosaic/index'); + return ( + + + + + + + + + + + + ); +} From c29f04ceed05e2b1dc0ce7192a9f6bf7403634f2 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Mon, 10 Jul 2023 22:13:59 +0100 Subject: [PATCH 24/36] upgrade Next to 13.4.9 with improved build times removed webpack change previously created by React Live config --- packages/layouts/package.json | 2 +- packages/site-components/package.json | 2 +- packages/site-middleware/package.json | 2 +- packages/site/next.config.js | 6 -- packages/site/package.json | 2 +- yarn.lock | 138 ++++++++++++++------------ 6 files changed, 80 insertions(+), 72 deletions(-) diff --git a/packages/layouts/package.json b/packages/layouts/package.json index c916a2705..b69b27460 100644 --- a/packages/layouts/package.json +++ b/packages/layouts/package.json @@ -47,7 +47,7 @@ "@vanilla-extract/sprinkles": "^1.3.0", "clsx": "^2.0.0", "lodash": "^4.17.21", - "next": "^13.4.4", + "next": "^13.4.9", "react-transition-group": "^4.4.5" }, "peerDependencies": { diff --git a/packages/site-components/package.json b/packages/site-components/package.json index dbd0272a1..54953399c 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -60,7 +60,7 @@ "https-proxy-agent": "^5.0.1", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", - "next": "^13.4.4", + "next": "^13.4.9", "next-mdx-remote": "^4.4.1", "node-cookie": "^2.1.2", "react-error-boundary": "^4.0.11", diff --git a/packages/site-middleware/package.json b/packages/site-middleware/package.json index 2bd21951e..845639d3d 100644 --- a/packages/site-middleware/package.json +++ b/packages/site-middleware/package.json @@ -41,7 +41,7 @@ "deepmerge": "^4.2.2", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", - "next": "^13.4.4", + "next": "^13.4.9", "next-mdx-remote": "^4.4.1", "node-cookie": "^2.1.2", "react-error-boundary": "^3.1.4", diff --git a/packages/site/next.config.js b/packages/site/next.config.js index f598c2bed..f92266206 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -1,4 +1,3 @@ -const webpack = require('webpack'); const withMDX = require('@next/mdx')(); const nextConfig = { @@ -25,11 +24,6 @@ const nextConfig = { ] }, webpack(config) { - // Swaps out Buble for a smaller version that removes the latest Regex spec features. - // See https://github.com/FormidableLabs/react-live#what-bundle-size-can-i-expect - config.plugins.push( - new webpack.NormalModuleReplacementPlugin(/^buble$/, require.resolve('@philpl/buble')) - ); // Required by MDX-JS if (config.resolve.fallback) { config.resolve.fallback.fs = false; diff --git a/packages/site/package.json b/packages/site/package.json index 353fbfd12..5188e2838 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -48,7 +48,7 @@ "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", "@philpl/buble": "^0.19.7", "@types/react": "^18.0.26", - "next": "^13.4.4", + "next": "^13.4.9", "next-auth": "^4.22.1", "remark-gfm": "3.0.1", "rehype-slug": "^5.0.1" diff --git a/yarn.lock b/yarn.lock index 1bdea3029..f9dd10509 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2800,10 +2800,10 @@ strict-event-emitter "^0.2.4" web-encoding "^1.1.5" -"@next/env@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.4.tgz#46b620f6bef97fe67a1566bf570dbb791d40c50a" - integrity sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg== +"@next/env@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/env/-/env-13.4.9.tgz#b77759514dd56bfa9791770755a2482f4d6ca93e" + integrity sha1-t3dZUU3Va/qXkXcHVaJIL01sqT4= "@next/eslint-plugin-next@12.3.1": version "12.3.1" @@ -2826,50 +2826,50 @@ dependencies: source-map "^0.7.0" -"@next/swc-darwin-arm64@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz#8c14083c2478e2a9a8d140cce5900f76b75667ff" - integrity sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw== - -"@next/swc-darwin-x64@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz#5fe01c65c80fcb833c8789fd70f074ea99893864" - integrity sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg== - -"@next/swc-linux-arm64-gnu@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz#f2e071f38e8a6cdadf507cc5d28956f73360d064" - integrity sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA== - -"@next/swc-linux-arm64-musl@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz#23bf75c544e54562bc24ec1be036e4bd9cf89e2c" - integrity sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A== - -"@next/swc-linux-x64-gnu@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz#bd42590950a01957952206f89cf5622e7c9e4196" - integrity sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ== - -"@next/swc-linux-x64-musl@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz#907d81feb1abec3daec0ecb61e3f39b56e7aeafe" - integrity sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA== - -"@next/swc-win32-arm64-msvc@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz#1d754d2bb10bdf9907c0acc83711438697c3b5fe" - integrity sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A== - -"@next/swc-win32-ia32-msvc@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz#77b2c7f7534b675d46e46301869e08d504d23956" - integrity sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg== - -"@next/swc-win32-x64-msvc@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz#faab69239f8a9d0be7cd473e65f5a07735ef7b0e" - integrity sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw== +"@next/swc-darwin-arm64@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.9.tgz#0ed408d444bbc6b0a20f3506a9b4222684585677" + integrity sha1-DtQI1ES7xrCiDzUGqbQiJoRYVnc= + +"@next/swc-darwin-x64@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.9.tgz#a08fccdee68201522fe6618ec81f832084b222f8" + integrity sha1-oI/M3uaCAVIv5mGOyB+DIISyIvg= + +"@next/swc-linux-arm64-gnu@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.9.tgz#1798c2341bb841e96521433eed00892fb24abbd1" + integrity sha1-F5jCNBu4QellIUM+7QCJL7JKu9E= + +"@next/swc-linux-arm64-musl@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.9.tgz#cee04c51610eddd3638ce2499205083656531ea0" + integrity sha1-zuBMUWEO3dNjjOJJkgUINlZTHqA= + +"@next/swc-linux-x64-gnu@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.9.tgz#1932d0367916adbc6844b244cda1d4182bd11f7a" + integrity sha1-GTLQNnkWrbxoRLJEzaHUGCvRH3o= + +"@next/swc-linux-x64-musl@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.9.tgz#a66aa8c1383b16299b72482f6360facd5cde3c7a" + integrity sha1-pmqowTg7FimbckgvY2D6zVzePHo= + +"@next/swc-win32-arm64-msvc@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.9.tgz#39482ee856c867177a612a30b6861c75e0736a4a" + integrity sha1-OUgu6FbIZxd6YSowtoYcdeBzako= + +"@next/swc-win32-ia32-msvc@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.9.tgz#29db85e34b597ade1a918235d16a760a9213c190" + integrity sha1-KduF40tZet4akYI10Wp2CpITwZA= + +"@next/swc-win32-x64-msvc@13.4.9": + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.9.tgz#0c2758164cccd61bc5a1c6cd8284fe66173e4a2b" + integrity sha1-DCdYFkzM1hvFocbNgoT+Zhc+Sis= "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -7308,6 +7308,11 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4= + glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -10207,28 +10212,29 @@ next-router-mock@^0.9.2: resolved "https://registry.yarnpkg.com/next-router-mock/-/next-router-mock-0.9.2.tgz#750341ea0bab9fa04257fb38a85bbe5c25dc19e5" integrity sha512-rh6Mq1xhZ4Y0y9Z3seHZ04k4dAKnAyRcis7q3ZUF+Xp0uBeNqPC8Ydw5DldYncN3o1sYBqRyz25F/v/kfcg0/Q== -next@^13.4.4: - version "13.4.4" - resolved "https://registry.yarnpkg.com/next/-/next-13.4.4.tgz#d1027c8d77f4c51be0b39f671b4820db03c93e60" - integrity sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA== +next@^13.4.9: + version "13.4.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/next/-/next-13.4.9.tgz#473de5997cb4c5d7a4fb195f566952a1cbffbeba" + integrity sha1-Rz3lmXy0xdek+xlfVmlSocv/vro= dependencies: - "@next/env" "13.4.4" + "@next/env" "13.4.9" "@swc/helpers" "0.5.1" busboy "1.6.0" caniuse-lite "^1.0.30001406" postcss "8.4.14" styled-jsx "5.1.1" + watchpack "2.4.0" zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.4.4" - "@next/swc-darwin-x64" "13.4.4" - "@next/swc-linux-arm64-gnu" "13.4.4" - "@next/swc-linux-arm64-musl" "13.4.4" - "@next/swc-linux-x64-gnu" "13.4.4" - "@next/swc-linux-x64-musl" "13.4.4" - "@next/swc-win32-arm64-msvc" "13.4.4" - "@next/swc-win32-ia32-msvc" "13.4.4" - "@next/swc-win32-x64-msvc" "13.4.4" + "@next/swc-darwin-arm64" "13.4.9" + "@next/swc-darwin-x64" "13.4.9" + "@next/swc-linux-arm64-gnu" "13.4.9" + "@next/swc-linux-arm64-musl" "13.4.9" + "@next/swc-linux-x64-gnu" "13.4.9" + "@next/swc-linux-x64-musl" "13.4.9" + "@next/swc-win32-arm64-msvc" "13.4.9" + "@next/swc-win32-ia32-msvc" "13.4.9" + "@next/swc-win32-x64-msvc" "13.4.9" nice-try@^1.0.4: version "1.0.5" @@ -13745,6 +13751,14 @@ warning@^3.0.0: dependencies: loose-envify "^1.0.0" +watchpack@2.4.0: + version "2.4.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha1-+jMDI3SWLHgRP5PH8vtMVMmGKl0= + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" From a662a6cf043ab6a8da4c7d9766a28b01ce927aa2 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 11 Jul 2023 11:37:21 +0100 Subject: [PATCH 25/36] add un-optimized support for SearchInput --- packages/site-components/src/SearchInput/index.tsx | 9 +++++++-- .../src/SearchInput/useSearchData.ts | 14 -------------- packages/site/mosaic.config.mjs | 7 ++++++- packages/site/public/search-config.json | 1 + packages/site/public/search-data-condensed.json | 1 + packages/store/src/store.ts | 13 ++++++++++++- 6 files changed, 27 insertions(+), 18 deletions(-) delete mode 100644 packages/site-components/src/SearchInput/useSearchData.ts create mode 100644 packages/site/public/search-config.json create mode 100644 packages/site/public/search-data-condensed.json diff --git a/packages/site-components/src/SearchInput/index.tsx b/packages/site-components/src/SearchInput/index.tsx index 684137408..d869c9e24 100644 --- a/packages/site-components/src/SearchInput/index.tsx +++ b/packages/site-components/src/SearchInput/index.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; import { FormField, SearchInput as SaltSearchInput } from '@salt-ds/lab'; -import { useSearchData } from './useSearchData'; +import { useSearchIndex, useStoreActions } from '@jpmorganchase/mosaic-store'; import { performSearch } from './searchUtils'; import { ResultsList } from './Results'; @@ -8,7 +8,8 @@ import type { SearchResults } from './Results'; import styles from './styles.css'; export function SearchInput() { - const { searchIndex, searchConfig } = useSearchData(); + const { getSearchData } = useStoreActions(); + const { searchIndex, searchConfig } = useSearchIndex(); const [searchTerm, setSearchTerm] = useState(''); const [searchResults, setSearchResults] = useState([]); const [listVisibility, setListVisibility] = useState(false); @@ -45,6 +46,7 @@ export function SearchInput() { }; useEffect(() => { + getSearchData(); document.addEventListener('click', handleClickOutside); document.addEventListener('keydown', handleEsc); return () => { @@ -53,6 +55,9 @@ export function SearchInput() { }; }, []); + if (!searchIndex || !searchConfig) { + return null; + } return (
diff --git a/packages/site-components/src/SearchInput/useSearchData.ts b/packages/site-components/src/SearchInput/useSearchData.ts deleted file mode 100644 index 422f04ab6..000000000 --- a/packages/site-components/src/SearchInput/useSearchData.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useSearchIndex } from '@jpmorganchase/mosaic-store'; -import useSWR from 'swr'; - -export function useSearchData() { - const fetcher = url => fetch(url).then(res => res.json()); - - const { searchIndex: fallbackIndex, searchConfig } = useSearchIndex(); - - const { data, error, isLoading: searchIsLoading } = useSWR('/search-data.json', fetcher); - - const searchIndex = searchIsLoading || error ? fallbackIndex : data; - - return { searchIndex, searchConfig }; -} diff --git a/packages/site/mosaic.config.mjs b/packages/site/mosaic.config.mjs index 81ae33dd7..a9d156413 100644 --- a/packages/site/mosaic.config.mjs +++ b/packages/site/mosaic.config.mjs @@ -21,7 +21,12 @@ const siteConfig = { priority: -1, options: { outputDir: './public', - assets: ['sitemap.xml', 'search-data.json'] + assets: [ + 'search-config.json', + 'search-data.json', + 'search-data-condensed.json', + 'sitemap.xml' + ] } } ] diff --git a/packages/site/public/search-config.json b/packages/site/public/search-config.json new file mode 100644 index 000000000..645ccad30 --- /dev/null +++ b/packages/site/public/search-config.json @@ -0,0 +1 @@ +{"includeScore":true,"includeMatches":true,"maxPatternLength":240,"ignoreLocation":true,"threshold":0.3,"keys":["title","route","content"]} \ No newline at end of file diff --git a/packages/site/public/search-data-condensed.json b/packages/site/public/search-data-condensed.json new file mode 100644 index 000000000..5d40b1395 --- /dev/null +++ b/packages/site/public/search-data-condensed.json @@ -0,0 +1 @@ +[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Page Templates","route":"/mosaic/author/page-templates"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$afterSource","route":"/mosaic/configure/plugins/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/before-send"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/should-clear-cache"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"}] \ No newline at end of file diff --git a/packages/store/src/store.ts b/packages/store/src/store.ts index 950728fb6..1567dfec3 100644 --- a/packages/store/src/store.ts +++ b/packages/store/src/store.ts @@ -29,6 +29,7 @@ export type SiteState = BreadcrumbsSlice & colorMode: ColorMode; actions: { setColorMode: (colorMode: ColorMode) => void; + getSearchData: () => Promise; }; }; @@ -71,7 +72,17 @@ const initializeStore = (preloadedState: Partial = {}) => { ...getDefaultInitialState(), ...preloadedState, actions: { - setColorMode: (colorMode: ColorMode) => set({ colorMode }) + setColorMode: (colorMode: ColorMode) => set({ colorMode }), + getSearchData: async () => { + const configPromise = fetch('/search-config.json').then(async rawSearchConfig => + rawSearchConfig.json().then(searchConfig => set({ searchConfig })) + ); + // TODO refactor this to a server function to support large data sets + const dataPromise = fetch('/search-data.json').then(async rawSearchIndex => + rawSearchIndex.json().then(searchIndex => set({ searchIndex })) + ); + return Promise.all([configPromise, dataPromise]); + } } })) ); From e3d321e6028438a89bcc77ef4e09521e9bf656af Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 11 Jul 2023 13:48:04 +0100 Subject: [PATCH 26/36] remove duplicate local env var for NEXTAUTH_URL --- packages/site/.env.local | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/site/.env.local b/packages/site/.env.local index 6b5fc5973..9ae7b8d6f 100644 --- a/packages/site/.env.local +++ b/packages/site/.env.local @@ -4,6 +4,5 @@ OPTIMIZE_IMAGES=false NEXTAUTH_URL=http://localhost:3000 NODE_ENV=development MOSAIC_ENABLE_SOURCE_PUSH=true -NEXTAUTH_URL=http://localhost:3000/ NEXT_PUBLIC_MOSAIC_IBCE_PREVIEW_URL=/api/content/preview NEXT_PUBLIC_MOSAIC_IBCE_PERSIST_URL=http://localhost:8080/workflows \ No newline at end of file From 445e5e00271c74e646ea4d345fc5c624b1c85d97 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 11 Jul 2023 17:14:06 +0100 Subject: [PATCH 27/36] remove redundant `@jpmorganchase/mosaic-site-middleware` replaced by Next JS 13 features such as app router and static export --- packages/site-components/package.json | 13 +- packages/site-middleware/CHANGELOG.md | 513 -------- packages/site-middleware/README.md | 14 - packages/site-middleware/package.json | 58 - .../site-middleware/src/MiddlewareError.ts | 26 - .../src/__tests__/withMDXContent.test.ts | 102 -- .../src/__tests__/withSearchIndex.test.ts | 172 --- .../src/__tests__/withSharedConfig.test.ts | 151 --- packages/site-middleware/src/compileMdx.ts | 20 - .../src/createMiddlewareRunner.ts | 106 -- packages/site-middleware/src/index.ts | 9 - .../loaders/__tests__/createS3Loader.test.ts | 55 - .../src/loaders/__tests__/getS3Config.test.ts | 44 - .../loaders/__tests__/loadLocalFile.test.ts | 33 - .../src/loaders/createS3Loader.ts | 61 - .../src/loaders/getSnapshotFileConfig.ts | 16 - .../src/loaders/getSnapshotS3Config.ts | 19 - packages/site-middleware/src/loaders/index.ts | 4 - .../src/loaders/loadLocalFile.ts | 12 - .../site-middleware/src/middlewarePresets.ts | 47 - .../site-middleware/src/plugins/codeBlocks.ts | 52 - .../site-middleware/src/withMDXContent.ts | 116 -- .../site-middleware/src/withMosaicMode.ts | 26 - .../site-middleware/src/withSearchIndex.ts | 104 -- packages/site-middleware/src/withSession.ts | 56 - .../site-middleware/src/withSharedConfig.ts | 82 -- packages/site-middleware/tsconfig.json | 10 - packages/site/next.config.js | 1 - packages/site/src/types/mosaic.ts | 25 - .../src/templates/next.config.js.hbs | 1 - yarn.lock | 1135 +++++------------ 31 files changed, 305 insertions(+), 2778 deletions(-) delete mode 100644 packages/site-middleware/CHANGELOG.md delete mode 100644 packages/site-middleware/README.md delete mode 100644 packages/site-middleware/package.json delete mode 100644 packages/site-middleware/src/MiddlewareError.ts delete mode 100644 packages/site-middleware/src/__tests__/withMDXContent.test.ts delete mode 100644 packages/site-middleware/src/__tests__/withSearchIndex.test.ts delete mode 100644 packages/site-middleware/src/__tests__/withSharedConfig.test.ts delete mode 100644 packages/site-middleware/src/compileMdx.ts delete mode 100644 packages/site-middleware/src/createMiddlewareRunner.ts delete mode 100644 packages/site-middleware/src/index.ts delete mode 100644 packages/site-middleware/src/loaders/__tests__/createS3Loader.test.ts delete mode 100644 packages/site-middleware/src/loaders/__tests__/getS3Config.test.ts delete mode 100644 packages/site-middleware/src/loaders/__tests__/loadLocalFile.test.ts delete mode 100644 packages/site-middleware/src/loaders/createS3Loader.ts delete mode 100644 packages/site-middleware/src/loaders/getSnapshotFileConfig.ts delete mode 100644 packages/site-middleware/src/loaders/getSnapshotS3Config.ts delete mode 100644 packages/site-middleware/src/loaders/index.ts delete mode 100644 packages/site-middleware/src/loaders/loadLocalFile.ts delete mode 100644 packages/site-middleware/src/middlewarePresets.ts delete mode 100644 packages/site-middleware/src/plugins/codeBlocks.ts delete mode 100644 packages/site-middleware/src/withMDXContent.ts delete mode 100644 packages/site-middleware/src/withMosaicMode.ts delete mode 100644 packages/site-middleware/src/withSearchIndex.ts delete mode 100644 packages/site-middleware/src/withSession.ts delete mode 100644 packages/site-middleware/src/withSharedConfig.ts delete mode 100644 packages/site-middleware/tsconfig.json delete mode 100644 packages/site/src/types/mosaic.ts diff --git a/packages/site-components/package.json b/packages/site-components/package.json index 54953399c..3e5a671f5 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -1,6 +1,6 @@ { "name": "@jpmorganchase/mosaic-site-components", - "version": "0.1.0-beta.51", + "version": "0.1.0-beta.47", "license": "Apache-2.0", "description": "Mosaic - Site components", "repository": { @@ -40,12 +40,11 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-components": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-open-api-component": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-site-middleware": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-components": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-open-api-component": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.47", "@salt-ds/core": "^1.8.1", "@salt-ds/lab": "1.0.0-alpha.16", "@types/mdast": "^3.0.0", diff --git a/packages/site-middleware/CHANGELOG.md b/packages/site-middleware/CHANGELOG.md deleted file mode 100644 index 9e0a5d3dc..000000000 --- a/packages/site-middleware/CHANGELOG.md +++ /dev/null @@ -1,513 +0,0 @@ -# @jpmorganchase/mosaic-site-middleware - -## 0.1.0-beta.51 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.51 -- @jpmorganchase/mosaic-store@0.1.0-beta.51 -- @jpmorganchase/mosaic-types@0.1.0-beta.51 - -## 0.1.0-beta.50 - -### Patch Changes - -- Updated dependencies [2f015976] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.50 - - @jpmorganchase/mosaic-store@0.1.0-beta.50 - - @jpmorganchase/mosaic-types@0.1.0-beta.50 - -## 0.1.0-beta.49 - -### Patch Changes - -- Updated dependencies [425b5a00] - - @jpmorganchase/mosaic-types@0.1.0-beta.49 - - @jpmorganchase/mosaic-schemas@0.1.0-beta.49 - - @jpmorganchase/mosaic-store@0.1.0-beta.49 - -## 0.1.0-beta.48 - -### Patch Changes - -- Updated dependencies [0eca1d6e] - - @jpmorganchase/mosaic-types@0.1.0-beta.48 - - @jpmorganchase/mosaic-schemas@0.1.0-beta.48 - - @jpmorganchase/mosaic-store@0.1.0-beta.48 - -## 0.1.0-beta.47 - -### Patch Changes - -- Updated dependencies [19b4e49a] -- Updated dependencies [6caa661a] - - @jpmorganchase/mosaic-store@0.1.0-beta.47 - - @jpmorganchase/mosaic-schemas@0.1.0-beta.47 - - @jpmorganchase/mosaic-types@0.1.0-beta.47 - -## 0.1.0-beta.46 - -### Patch Changes - -- Updated dependencies [32e86cfd] - - @jpmorganchase/mosaic-store@0.1.0-beta.46 - - @jpmorganchase/mosaic-schemas@0.1.0-beta.46 - - @jpmorganchase/mosaic-types@0.1.0-beta.46 - -## 0.1.0-beta.45 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.45 -- @jpmorganchase/mosaic-store@0.1.0-beta.45 -- @jpmorganchase/mosaic-types@0.1.0-beta.45 - -## 0.1.0-beta.44 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.44 -- @jpmorganchase/mosaic-store@0.1.0-beta.44 -- @jpmorganchase/mosaic-types@0.1.0-beta.44 - -## 0.1.0-beta.43 - -### Patch Changes - -- Updated dependencies [d3b8b3a] -- Updated dependencies [0ced179] - - @jpmorganchase/mosaic-types@0.1.0-beta.43 - - @jpmorganchase/mosaic-schemas@0.1.0-beta.43 - - @jpmorganchase/mosaic-store@0.1.0-beta.43 - -## 0.1.0-beta.42 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.42 -- @jpmorganchase/mosaic-store@0.1.0-beta.42 -- @jpmorganchase/mosaic-types@0.1.0-beta.42 - -## 0.1.0-beta.41 - -### Patch Changes - -- Updated dependencies [898c9ad] -- Updated dependencies [5cd5a87] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.41 - - @jpmorganchase/mosaic-types@0.1.0-beta.41 - - @jpmorganchase/mosaic-store@0.1.0-beta.41 - -## 0.1.0-beta.40 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.40 -- @jpmorganchase/mosaic-store@0.1.0-beta.40 -- @jpmorganchase/mosaic-types@0.1.0-beta.40 - -## 0.1.0-beta.39 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.39 -- @jpmorganchase/mosaic-store@0.1.0-beta.39 -- @jpmorganchase/mosaic-types@0.1.0-beta.39 - -## 0.1.0-beta.38 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.38 -- @jpmorganchase/mosaic-store@0.1.0-beta.38 -- @jpmorganchase/mosaic-types@0.1.0-beta.38 - -## 0.1.0-beta.37 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.37 -- @jpmorganchase/mosaic-store@0.1.0-beta.37 -- @jpmorganchase/mosaic-types@0.1.0-beta.37 - -## 0.1.0-beta.36 - -### Patch Changes - -- 03464ad: fix: remove env variable check in `withSession` middleware - - The `NEXTAUTH_SECRET` env variable is not always required. It is possible to pass the secret as an option to `next-auth` - - - @jpmorganchase/mosaic-schemas@0.1.0-beta.36 - - @jpmorganchase/mosaic-store@0.1.0-beta.36 - - @jpmorganchase/mosaic-types@0.1.0-beta.36 - -## 0.1.0-beta.35 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.35 -- @jpmorganchase/mosaic-store@0.1.0-beta.35 -- @jpmorganchase/mosaic-types@0.1.0-beta.35 - -## 0.1.0-beta.34 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.34 -- @jpmorganchase/mosaic-store@0.1.0-beta.34 -- @jpmorganchase/mosaic-types@0.1.0-beta.34 - -## 0.1.0-beta.33 - -### Patch Changes - -- @jpmorganchase/mosaic-schemas@0.1.0-beta.33 -- @jpmorganchase/mosaic-store@0.1.0-beta.33 -- @jpmorganchase/mosaic-types@0.1.0-beta.33 - -## 0.1.0-beta.32 - -### Patch Changes - -- 7ed1ee7: Upgrade to latest version of NextJs (v13.4.1) -- 8c854fd: - Upgrade `next-auth` version - - Update `withSession` mosaic middleware to use `next-auth` -- Updated dependencies [a56eadb] -- Updated dependencies [8c854fd] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.32 - - @jpmorganchase/mosaic-types@0.1.0-beta.32 - - @jpmorganchase/mosaic-store@0.1.0-beta.32 - -## 0.1.0-beta.31 - -### Patch Changes - -- b609fd0: Added support for containerization of the site and cli as well as providing config for kubernetes development (skaffold) - - ## @jpmorganchase/mosaic-cli - - The cli package has been updated to support containerization. - -- Updated dependencies [b609fd0] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.31 - - @jpmorganchase/mosaic-store@0.1.0-beta.31 - - @jpmorganchase/mosaic-types@0.1.0-beta.31 - -## 0.1.0-beta.30 - -### Patch Changes - -- 18ef436: The git repo source no longer generates a double slash between the repo host and repo path. -- Updated dependencies [18ef436] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.30 - - @jpmorganchase/mosaic-store@0.1.0-beta.30 - - @jpmorganchase/mosaic-types@0.1.0-beta.30 - -## 0.1.0-beta.29 - -### Minor Changes - -- c78deb4: Flatten Sidebar - Search Optimisation - Public Assets Plugin - TOC Indentation - -### Patch Changes - -- Updated dependencies [c78deb4] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.29 - - @jpmorganchase/mosaic-store@0.1.0-beta.29 - - @jpmorganchase/mosaic-types@0.1.0-beta.29 - -## 0.1.0-beta.28 - -### Patch Changes - -- 27ac914: 1. Layout improvements. 2. Fix: if a user hits a url that lands on a directory, the index file within that directory is resolved as the content. 3. Fix: improve Table of Contents component highlighting. -- Updated dependencies [27ac914] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.28 - - @jpmorganchase/mosaic-store@0.1.0-beta.28 - - @jpmorganchase/mosaic-types@0.1.0-beta.28 - -## 0.1.0-beta.27 - -### Patch Changes - -- b465413: Improvements to vercel deployments -- Updated dependencies [b465413] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.27 - - @jpmorganchase/mosaic-store@0.1.0-beta.27 - - @jpmorganchase/mosaic-types@0.1.0-beta.27 - -## 0.1.0-beta.26 - -### Minor Changes - -- 531c87a: ## Mosaic Theme - - The theme variables are now globally scoped and prefixed with `mosaic`. - - ## BrokenLinksPlugin - - The `BrokenLinksPlugin` uses a running instance of mosaic to verify that all links in the source pages are alive. - - If mosaic is running behind a corporate proxy, the `proxyEndpoint` option is required to fetch external URLs. - - Configuration: - - ```json - { - modulePath: '@jpmorganchase/mosaic-plugins/BrokenLinksPlugin', - priority: -1, - // Exclude this plugin in builds - runTimeOnly: true, - options: { - baseUrl: process.env.MOSAIC_ACTIVE_MODE_URL || 'http://localhost:8080', - proxyEndpoint: 'http://some-proxy-url' - } - } - ``` - - ## Next/Prev button - - The next and prev buttons are visible again on pages that have a layout that uses these buttons. - -### Patch Changes - -- Updated dependencies [531c87a] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.26 - - @jpmorganchase/mosaic-store@0.1.0-beta.26 - - @jpmorganchase/mosaic-types@0.1.0-beta.26 - -## 0.1.0-beta.25 - -### Minor Changes - -- 93e9b07: The theme contract provided by the `@jpmorganchase/mosaic-theme` package now uses locally scoped variable names via a Vanilla Extract [Theme Contract](https://vanilla-extract.style/documentation/api/create-theme-contract/). Previously the theme variables were globally scoped resulting in conflicts with other design systems. - -### Patch Changes - -- a36219c: - Next/Prev page buttons were not appearing at the bottom of a page sequence - - Removed redundant snapshot page api -- Updated dependencies [a36219c] -- Updated dependencies [93e9b07] - - @jpmorganchase/mosaic-store@0.1.0-beta.25 - - @jpmorganchase/mosaic-schemas@0.1.0-beta.25 - - @jpmorganchase/mosaic-types@0.1.0-beta.25 - -## 0.1.0-beta.24 - -### Patch Changes - -- 049d9af: 1. Pip Salt version 2. Issues 155, make 500 error more specific 3. button and sidebar styles 4. search opt-out -- Updated dependencies [049d9af] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.24 - - @jpmorganchase/mosaic-store@0.1.0-beta.24 - - @jpmorganchase/mosaic-types@0.1.0-beta.24 - -## 0.1.0-beta.23 - -### Patch Changes - -- 513d45f: Sidebar behavior and styling changes. - Add Client-side search feature. - Relax node engine requirements. - Removal of patches from the site package. - Update site generator templates. -- Updated dependencies [513d45f] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.23 - - @jpmorganchase/mosaic-store@0.1.0-beta.23 - - @jpmorganchase/mosaic-types@0.1.0-beta.23 - -## 0.1.0-beta.22 - -### Patch Changes - -- be89e4f: fix markdown tables and update generator's Salt patches - - - Salt patches in generator were out of sync with Mosaic repo - - Markdown now support github flavoured markdown, such as Tables - -- Updated dependencies [be89e4f] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.22 - - @jpmorganchase/mosaic-store@0.1.0-beta.22 - - @jpmorganchase/mosaic-types@0.1.0-beta.22 - -## 0.1.0-beta.21 - -### Patch Changes - -- f75fd5e: fix sidebar which was generated after `beforeSend` had completed -- Updated dependencies [f75fd5e] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.21 - - @jpmorganchase/mosaic-store@0.1.0-beta.21 - - @jpmorganchase/mosaic-types@0.1.0-beta.21 - -## 0.1.0-beta.20 - -### Patch Changes - -- 9c7b8ff: pip to beta.20 -- Updated dependencies [9c7b8ff] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.20 - - @jpmorganchase/mosaic-store@0.1.0-beta.20 - - @jpmorganchase/mosaic-types@0.1.0-beta.20 - -## 0.1.0-beta.19 - -### Patch Changes - -- ad06d4c: ensure spinner is removed after page has loaded -- Updated dependencies [ad06d4c] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.19 - - @jpmorganchase/mosaic-store@0.1.0-beta.19 - - @jpmorganchase/mosaic-types@0.1.0-beta.19 - -## 0.1.0-beta.18 - -### Patch Changes - -- 066efed: Update docs with quick-start guide - - Sample docs now include a 'quick-start' guide to onboarding to AWS. - - Also - - - generator default directory is the current directory - - after generating a site, it will run `yarn` in the created directory. This simplifies the generator call to just `yarn mosaic-create-site` - -- Updated dependencies [066efed] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.18 - - @jpmorganchase/mosaic-store@0.1.0-beta.18 - - @jpmorganchase/mosaic-types@0.1.0-beta.18 - -## 0.1.0-beta.17 - -### Patch Changes - -- b2f6d52: Fix `pre` block code block rendering -- Updated dependencies [b2f6d52] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.17 - - @jpmorganchase/mosaic-store@0.1.0-beta.17 - - @jpmorganchase/mosaic-types@0.1.0-beta.17 - -## 0.1.0-beta.16 - -### Patch Changes - -- 3a5c88a: add missing `@types/node` dependency for generator -- Updated dependencies [3a5c88a] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.16 - - @jpmorganchase/mosaic-store@0.1.0-beta.16 - - @jpmorganchase/mosaic-types@0.1.0-beta.16 - -## 0.1.0-beta.15 - -### Patch Changes - -- aaaf255: initial release of HTTP Source package. - - An HTTP source accepts a collection of endpoints and a path to a transformer module. - The response from fetching is transformed and merged together into 1 single collection of pages. - Should 1 of the endpoints request fail then it will have no impact on the other requests. - -- Updated dependencies [aaaf255] - - @jpmorganchase/mosaic-schemas@0.1.0-beta.15 - - @jpmorganchase/mosaic-store@0.1.0-beta.15 - - @jpmorganchase/mosaic-types@0.1.0-beta.15 - -## 0.1.0-beta.14 - -### Patch Changes - -- dde3b5a: Feature release - - - Enhanced generators now have defaults. - With one command (`yarn mosaic-create-site create`) it will generate a fully working site with both local and remote sources - - Fix an issue where we could not clone from the master branch of git repos - - Migrate to Next 13 image - -- Updated dependencies [dde3b5a] - - @jpmorganchase/mosaic-store@0.1.0-beta.14 - - @jpmorganchase/mosaic-types@0.1.0-beta.14 - -## 0.1.0-beta.13 - -### Patch Changes - -- d4da1df: incremental improvements - - - move colormode into store - - ensure breadcrumbs and sidebar data is only added to frontmatter for pages which use a layout that has breadcrumbs or a sidebar - - improve changeset so it can work standalone without a monorepo - - resolev json5 vulnerability - -- Updated dependencies [d4da1df] - - @jpmorganchase/mosaic-store@0.1.0-beta.13 - - @jpmorganchase/mosaic-types@0.1.0-beta.13 - -## 0.1.0-beta.12 - -### Patch Changes - -- 9ec358b: Upgrade React to version 18 and NextJs to version 13 -- 3eb35bf: initial work to enable generators to run outside of the repo -- Updated dependencies [9ec358b] -- Updated dependencies [3eb35bf] - - @jpmorganchase/mosaic-store@0.1.0-beta.12 - - @jpmorganchase/mosaic-types@0.1.0-beta.12 - -## 0.1.0-beta.11 - -### Patch Changes - -- 146a4bb: fix SSR Initial render - - removed Salt Core patch - added Salt Labs patch (Cascading Menu) to support SSR - -- fc5d7b5: Generators can now interactively add sources - - Previously we were making local edits to our own site or examples to implement new features. - What we wanted was the ability to create a local rig, A local rig can be used for development purposes, - without touching our site code. - - We have added Mosaic repo commands, to enable us to generates local rigs (`yarn gen:rig`) and deploy our own - tech docs via snapshot (`yarn gen`) - - To generate a site+snapshot from sources defined in `mosaic-generators.js`, run `yarn gen` - To generate a dynamic site from sources defined in `mosaic-generators.js`, run `yarn gen:site` - To generate a rig `yarn gen:rig` - - Equally these changes can be used to generate sites in other repos via the `mosaic-create-site` command. - - `yarn mosaic-create-site init` will create a `mosaic.generators.js`. - - Configure the `mosaic.generators.js` with your generator and sources, then run. - - `yarn mosaic-create-site create -i -o path/to/my-site` - - When this command is run, it will present an interactive menu of generators and output the site to `path/to/my-site`. - -- Updated dependencies [fc5d7b5] - - @jpmorganchase/mosaic-store@0.1.0-beta.11 - - @jpmorganchase/mosaic-types@0.1.0-beta.11 - -## 0.1.0-beta.10 - -### Patch Changes - -- af2f579: Converted repo to ESM and Salt DS nomenclature - - - Switch UITK nomenclature to Salt DS - Upgraded to first stable version of Salt DS version 1.0.0 - - CommonJS code switched to ESM and upgraded to Node 16 - - Removed example-nextjs-ssr package as un-required, can be replaced by documentation - - Sites can now generate immutable snapshots of content that loads content like a SGS (statically generated site) - Snapshots can be used as a serverless solution when deployed to Vercel. - - New Middleware package `@jpmorganchase/mosaic-site-middleware` - -- Updated dependencies [af2f579] - - @jpmorganchase/mosaic-store@0.1.0-beta.10 - - @jpmorganchase/mosaic-types@0.1.0-beta.10 diff --git a/packages/site-middleware/README.md b/packages/site-middleware/README.md deleted file mode 100644 index 84a50eed6..000000000 --- a/packages/site-middleware/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Mosaic Site Components Library - -`@jpmorganchase/mosaic-site-middleware` contains site specific middleware functions. - -Middleware functions are server-side only functions. They cannot be run on the client. - -## Features - -1. Middleware functions. -2. Middleware Preset - -## Installation - -`yarn add @jpmorganchase/mosaic-site-components` diff --git a/packages/site-middleware/package.json b/packages/site-middleware/package.json deleted file mode 100644 index 845639d3d..000000000 --- a/packages/site-middleware/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "@jpmorganchase/mosaic-site-middleware", - "version": "0.1.0-beta.51", - "license": "Apache-2.0", - "description": "Mosaic - Site middleware", - "repository": { - "type": "git", - "url": "git@github.com:jpmorganchase/mosaic.git", - "directory": "packages/site-middleware" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - "./index.css": "./dist/index.css", - ".": { - "style": "./dist/index.css", - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "node": "./dist/index.js" - } - }, - "scripts": { - "build": "tsc", - "clean": "rm -fr dist", - "lint": "eslint --ignore-pattern \"**/__tests__/**\"" - }, - "devDependencies": { - "aws-sdk-client-mock": "^2.0.1", - "jest-fetch-mock": "^3.0.3", - "mock-fs": "^4.14.0", - "typescript": "^4.8.3" - }, - "dependencies": { - "@aws-sdk/client-s3": "^3.256.0", - "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.51", - "@jpmorganchase/mosaic-types": "^0.1.0-beta.51", - "@types/mdast": "^3.0.0", - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "deepmerge": "^4.2.2", - "jwt-decode": "^3.1.2", - "lodash": "^4.17.21", - "next": "^13.4.9", - "next-mdx-remote": "^4.4.1", - "node-cookie": "^2.1.2", - "react-error-boundary": "^3.1.4", - "react-pro-sidebar": "1.0.0-alpha.7", - "remark-gfm": "3.0.1", - "rehype-slug": "^5.0.1", - "unified": "^10.0.0", - "unist-util-visit": "^2.0.0", - "warning": "^3.0.0" - }, - "peerDependencies": { - "next-auth": "^4.22.1" - } -} diff --git a/packages/site-middleware/src/MiddlewareError.ts b/packages/site-middleware/src/MiddlewareError.ts deleted file mode 100644 index 64c25796f..000000000 --- a/packages/site-middleware/src/MiddlewareError.ts +++ /dev/null @@ -1,26 +0,0 @@ -export default class MiddlewareError extends Error { - /** Response code */ - public status: number; - - /** Related route location */ - public location: string | undefined; - - /** Array of errors */ - public errors: string[]; - - /** Props to pass back */ - public props: { show404?: boolean; show500?: boolean }; - - constructor( - status: MiddlewareError['status'], - location: MiddlewareError['location'], - errors: MiddlewareError['errors'] = [], - props: MiddlewareError['props'] = {} - ) { - super(`${status} error`); - this.status = status; - this.location = location; - this.errors = errors; - this.props = props; - } -} diff --git a/packages/site-middleware/src/__tests__/withMDXContent.test.ts b/packages/site-middleware/src/__tests__/withMDXContent.test.ts deleted file mode 100644 index da345ffc5..000000000 --- a/packages/site-middleware/src/__tests__/withMDXContent.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { GetObjectCommand, S3Client } from '@aws-sdk/client-s3'; -import { AwsStub, mockClient } from 'aws-sdk-client-mock'; -import { sdkStreamMixin } from '@aws-sdk/util-stream'; -import { Readable } from 'stream'; -import { default as fetchMock, disableFetchMocks, enableFetchMocks } from 'jest-fetch-mock'; - -const mockFs = require('mock-fs'); - -import { withMDXContent } from '../withMDXContent'; - -jest.mock('../compileMdx.js', () => ({ - compileMDX: async (value: string) => Promise.resolve(value) -})); - -declare var process: { - env: { - MOSAIC_S3_BUCKET?: string; - MOSAIC_S3_REGION?: string; - MOSAIC_S3_ACCESS_KEY_ID?: string; - MOSAIC_S3_SECRET_ACCESS_KEY?: string; - MOSAIC_SNAPSHOT_DIR?: string; - }; -}; - -describe('GIVEN withMDXContent', () => { - describe('WHEN snapshot-s3 Mosaic mode is set', () => { - let savedEnv = process.env; - let s3ClientMock: AwsStub<{}, { $metadata: {} }>; - beforeAll(() => { - process.env = { - ...process.env, - MOSAIC_S3_BUCKET: 'some-bucket', - MOSAIC_S3_REGION: 'some-region', - MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key', - MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key' - }; - s3ClientMock = mockClient(S3Client); - const stream = new Readable(); - stream.push('my content'); - stream.push(null); // end of stream - const contentStream = sdkStreamMixin(stream); - s3ClientMock.on(GetObjectCommand).resolves({ Body: contentStream }); - }); - afterAll(() => { - process.env = savedEnv; - s3ClientMock.reset(); - }); - test('THEN a snapshot can be loaded from an S3 bucket', async () => { - // arrange - const content = await withMDXContent({ - resolvedUrl: '/mynamespace/mypage.mdx', - res: { getHeader: () => 'snapshot-s3' } - }); - // assert - expect(content).toEqual({ props: { raw: 'my content', source: 'my content', type: 'mdx' } }); - }); - }); - - describe('WHEN snapshot-file Mosaic mode is set', () => { - let savedEnv = process.env; - beforeAll(() => { - process.env = { ...process.env, MOSAIC_SNAPSHOT_DIR: '/some/snapshots' }; - mockFs({ - 'some/snapshots/mynamespace/mydir': { - 'mypage.mdx': 'my content' - } - }); - }); - afterAll(() => { - mockFs.restore(); - process.env = savedEnv; - }); - - test('THEN a snapshot can be loaded from a local file', async () => { - // arrange - const content = await withMDXContent({ - resolvedUrl: '/mynamespace/mydir/mypage.mdx', - res: { getHeader: () => 'snapshot-file' } - }); - expect(content).toEqual({ props: { raw: 'my content', source: 'my content', type: 'mdx' } }); - }); - }); - - describe('WHEN dynamic Mosaic mode is set', () => { - beforeAll(() => { - enableFetchMocks(); - fetchMock.mockOnce('my content'); - }); - afterAll(() => { - disableFetchMocks(); - }); - test('THEN content is fetched from the data source', async () => { - // arrange - const content = await withMDXContent({ - resolvedUrl: '/mynamespace/mypage.mdx', - res: { getHeader: () => '/dynamic' } - }); - // assert - expect(content).toEqual({ props: { raw: 'my content', source: 'my content', type: 'mdx' } }); - }); - }); -}); diff --git a/packages/site-middleware/src/__tests__/withSearchIndex.test.ts b/packages/site-middleware/src/__tests__/withSearchIndex.test.ts deleted file mode 100644 index 9a386e53c..000000000 --- a/packages/site-middleware/src/__tests__/withSearchIndex.test.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3'; -import { AwsStub, mockClient } from 'aws-sdk-client-mock'; -import { sdkStreamMixin } from '@aws-sdk/util-stream'; -import { Readable } from 'stream'; -import { default as fetchMock, disableFetchMocks, enableFetchMocks } from 'jest-fetch-mock'; -const mockFs = require('mock-fs'); - -import { withSearchIndex } from '../withSearchIndex'; - -declare var process: { - env: { - MOSAIC_S3_BUCKET?: string; - MOSAIC_S3_REGION?: string; - MOSAIC_S3_ACCESS_KEY_ID?: string; - MOSAIC_S3_SECRET_ACCESS_KEY?: string; - MOSAIC_SNAPSHOT_DIR?: string; - }; -}; - -describe('GIVEN withSearchIndex', () => { - describe('WHEN snapshot-s3 Mosaic mode is set', () => { - let savedEnv = process.env; - let s3ClientMock: AwsStub<{}, { $metadata: {} }>; - beforeAll(() => { - process.env = { - ...process.env, - MOSAIC_S3_BUCKET: 'some-bucket', - MOSAIC_S3_REGION: 'some-region', - MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key', - MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key' - }; - s3ClientMock = mockClient(S3Client); - const indexStream = new Readable(); - indexStream.push('{ "someValue": true }'); - indexStream.push(null); // end of stream - const indexContentStream = sdkStreamMixin(indexStream); - s3ClientMock - .on(GetObjectCommand, { - Bucket: 'some-bucket', - Key: 'search-data-condensed.json' - }) - .resolves({ Body: indexContentStream }); - s3ClientMock - .on(HeadObjectCommand, { - Bucket: 'some-bucket', - Key: 'search-data-condensed.json' - }) - .resolvesOnce({ $metadata: { httpStatusCode: 200 } }) - .resolves({ $metadata: { httpStatusCode: 404 } }); - const configStream = new Readable(); - configStream.push('{ "someConfigValue": true }'); - configStream.push(null); // end of stream - const configContentStream = sdkStreamMixin(configStream); - s3ClientMock - .on(GetObjectCommand, { - Bucket: 'some-bucket', - Key: 'search-config.json' - }) - .resolves({ Body: configContentStream }); - s3ClientMock - .on(HeadObjectCommand, { - Bucket: 'some-bucket', - Key: 'search-config.json' - }) - .resolvesOnce({ $metadata: { httpStatusCode: 200 } }) - .resolves({ $metadata: { httpStatusCode: 404 } }); - }); - afterAll(() => { - process.env = savedEnv; - s3ClientMock.reset(); - }); - test('THEN search-index can be loaded from an S3 bucket', async () => { - // arrange - const content = await withSearchIndex({ - resolvedUrl: '/mynamespace/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mynamespace' : 'snapshot-s3') - } - }); - // assert - expect(content).toEqual({ - props: { searchConfig: { someConfigValue: true }, searchIndex: { someValue: true } } - }); - }); - test('THEN does not throw for a non-existent search-index', async () => { - // arrange - const content = await withSearchIndex({ - resolvedUrl: '/non-existent/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mynamespace' : 'snapshot-s3') - } - }); - // assert - expect(content).toEqual({ props: {} }); - }); - }); - - describe('WHEN snapshot-file Mosaic mode is set', () => { - let savedEnv = process.env; - beforeEach(() => { - process.env = { MOSAIC_SNAPSHOT_DIR: '/some/snapshots' }; - }); - afterEach(() => { - process.env = savedEnv; - }); - test('THEN reads search-index from a local file', async () => { - // arrange - mockFs({ - 'some/snapshots/': { - 'search-data-condensed.json': '{ "someValue": true }', - 'search-config.json': '{ "someConfigValue": true }' - } - }); - const content = await withSearchIndex({ - resolvedUrl: '/mynamespace/mydir/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'snapshot-file') - } - }); - expect(content).toEqual({ - props: { searchConfig: { someConfigValue: true }, searchIndex: { someValue: true } } - }); - mockFs.restore(); - }); - test('THEN does not throw for a non-existent search-index', async () => { - // arrange - const content = await withSearchIndex({ - resolvedUrl: '/mynamespace/non-existent/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'snapshot-file') - } - }); - console.log({ content }); - expect(content).toEqual({ props: {} }); - }); - }); - - describe('WHEN active Mosaic mode is set', () => { - beforeAll(() => { - enableFetchMocks(); - fetchMock.mockResponses( - [JSON.stringify({ someValue: true }), { status: 200 }], - [JSON.stringify({ someConfigValue: true }), { status: 200 }], - ['', { status: 404 }], - ['', { status: 404 }] - ); - }); - afterAll(() => { - disableFetchMocks(); - }); - test('THEN search-index is fetched from the data source', async () => { - // arrange - const content = await withSearchIndex({ - resolvedUrl: '/mynamespace/mypage.mdx', - res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'active') } - }); - // assert - expect(content).toEqual({ - props: { searchConfig: { someConfigValue: true }, searchIndex: { someValue: true } } - }); - }); - test('THEN does not throw for a non-existent search-index', async () => { - // arrange - const content = await withSearchIndex({ - resolvedUrl: '/mynamespace/non-existent/mypage.mdx', - res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'active') } - }); - // assert - expect(content).toEqual({ props: {} }); - }); - }); -}); diff --git a/packages/site-middleware/src/__tests__/withSharedConfig.test.ts b/packages/site-middleware/src/__tests__/withSharedConfig.test.ts deleted file mode 100644 index 9182cda01..000000000 --- a/packages/site-middleware/src/__tests__/withSharedConfig.test.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3'; -import { AwsStub, mockClient } from 'aws-sdk-client-mock'; -import { sdkStreamMixin } from '@aws-sdk/util-stream'; -import { Readable } from 'stream'; -import { default as fetchMock, disableFetchMocks, enableFetchMocks } from 'jest-fetch-mock'; -const mockFs = require('mock-fs'); - -import { withSharedConfig } from '../withSharedConfig'; - -declare var process: { - env: { - MOSAIC_S3_BUCKET?: string; - MOSAIC_S3_REGION?: string; - MOSAIC_S3_ACCESS_KEY_ID?: string; - MOSAIC_S3_SECRET_ACCESS_KEY?: string; - MOSAIC_SNAPSHOT_DIR?: string; - }; -}; - -describe('GIVEN withSharedConfig', () => { - describe('WHEN snapshot-s3 Mosaic mode is set', () => { - let savedEnv = process.env; - let s3ClientMock: AwsStub<{}, { $metadata: {} }>; - beforeAll(() => { - process.env = { - ...process.env, - MOSAIC_S3_BUCKET: 'some-bucket', - MOSAIC_S3_REGION: 'some-region', - MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key', - MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key' - }; - s3ClientMock = mockClient(S3Client); - const stream = new Readable(); - stream.push('{"config": { "someValue": true }}'); - stream.push(null); // end of stream - const contentStream = sdkStreamMixin(stream); - s3ClientMock - .on(GetObjectCommand, { - Bucket: 'some-bucket', - Key: 'mynamespace/shared-config.json' - }) - .resolves({ Body: contentStream }); - s3ClientMock - .on(HeadObjectCommand, { - Bucket: 'some-bucket', - Key: 'mynamespace/shared-config.json' - }) - .resolves({ $metadata: { httpStatusCode: 200 } }); - s3ClientMock - .on(HeadObjectCommand, { - Bucket: 'some-bucket', - Key: 'non-existent/shared-config.json' - }) - .resolves({ $metadata: { httpStatusCode: 404 } }); - }); - afterAll(() => { - process.env = savedEnv; - s3ClientMock.reset(); - }); - test('THEN shared-config can be loaded from an S3 bucket', async () => { - // arrange - const content = await withSharedConfig({ - resolvedUrl: '/mynamespace/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-s3') - } - }); - // assert - expect(content).toEqual({ props: { sharedConfig: { someValue: true } } }); - }); - test('THEN does not throw for a non-existent shared-config', async () => { - // arrange - const content = await withSharedConfig({ - resolvedUrl: '/non-existent/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-s3') - } - }); - // assert - expect(content).toEqual({ props: {} }); - }); - }); - - describe('WHEN snapshot-file Mosaic mode is set', () => { - let savedEnv = process.env; - beforeEach(() => { - process.env = { MOSAIC_SNAPSHOT_DIR: '/some/snapshots' }; - mockFs({ - 'some/snapshots/mynamespace/mydir': { - 'shared-config.json': '{"config": { "someValue": true }}' - } - }); - }); - afterEach(() => { - mockFs.restore(); - process.env = savedEnv; - }); - - test('THEN reads shared-config from a local file', async () => { - // arrange - const content = await withSharedConfig({ - resolvedUrl: '/mynamespace/mydir/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-file') - } - }); - expect(content).toEqual({ props: { sharedConfig: { someValue: true } } }); - }); - test('THEN does not throw for a non-existent shared-config', async () => { - // arrange - const content = await withSharedConfig({ - resolvedUrl: '/mynamespace/non-existent/mypage.mdx', - res: { - getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-file') - } - }); - expect(content).toEqual({ props: {} }); - }); - }); - - describe('WHEN active Mosaic mode is set', () => { - beforeAll(() => { - enableFetchMocks(); - fetchMock.mockResponses( - [JSON.stringify({ config: { someValue: true } }), { status: 200 }], - ['', { status: 404 }] - ); - }); - afterAll(() => { - disableFetchMocks(); - }); - test('THEN shared-config is fetched from the data source', async () => { - // arrange - const content = await withSharedConfig({ - resolvedUrl: '/mynamespace/mypage.mdx', - res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'active') } - }); - // assert - expect(content).toEqual({ props: { sharedConfig: { someValue: true } } }); - }); - test('THEN does not throw for a non-existent shared-config', async () => { - // arrange - const content = await withSharedConfig({ - resolvedUrl: '/mynamespace/non-existent/mypage.mdx', - res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'active') } - }); - // assert - expect(content).toEqual({ props: {} }); - }); - }); -}); diff --git a/packages/site-middleware/src/compileMdx.ts b/packages/site-middleware/src/compileMdx.ts deleted file mode 100644 index 4d8e6e73d..000000000 --- a/packages/site-middleware/src/compileMdx.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { serialize } from 'next-mdx-remote/serialize'; -import remarkGfm from 'remark-gfm'; -import rehypeSlug from 'rehype-slug'; -import { codeBlocks } from './plugins/codeBlocks.js'; - -export async function compileMDX( - content, - parseFrontmatter = true, - rehypePlugins = [], - remarkPlugins = [] -) { - const mdxSource = await serialize(content, { - mdxOptions: { - rehypePlugins: [rehypeSlug, ...remarkPlugins], - remarkPlugins: [codeBlocks, remarkGfm, ...rehypePlugins] - }, - parseFrontmatter - }); - return mdxSource; -} diff --git a/packages/site-middleware/src/createMiddlewareRunner.ts b/packages/site-middleware/src/createMiddlewareRunner.ts deleted file mode 100644 index 7716f9576..000000000 --- a/packages/site-middleware/src/createMiddlewareRunner.ts +++ /dev/null @@ -1,106 +0,0 @@ -import type { GetServerSidePropsContext } from 'next'; -import deepmerge from 'deepmerge'; - -import type { MosaicAppProps } from './middlewarePresets.js'; -import MiddlewareError from './MiddlewareError.js'; - -const overwriteMerge = (_, sourceArray) => sourceArray; - -/** Props returned after running Middleware */ -export type MiddlewareResult = Awaited>; - -/** Options to be passed to Middleware */ -export type MosaicMiddlewareOptions = Record; - -/** Middleware callbacks return props to be added to the page */ -export type MosaicMiddleware = ( - /** Context provides information on the current page */ - context: GetServerSidePropsContext, - /** Middleware specific options */ - options?: TOptions, - /** Previous result created by plugins */ - lastState?: Record -) => Promise>; - -/** Middleware with a configuration object specifying options */ -export type MosaicMiddlewareWithConfig = [ - MosaicMiddleware, - TConfig -]; - -/** Function to run all provided middleware */ -export type MosaicMiddlewareRunner = ( - context: GetServerSidePropsContext, - options: MosaicMiddlewareOptions -) => Promise>; - -/** - * Creates a middleware runner from the collection of provided middleware - * @param initialState initial state - * @param middleware a collection of middleware to be executed in order to get the page props - * @returns a middleware runner - */ -export function createMiddlewareRunner( - initialState: Record, - middleware: Array | MosaicMiddlewareWithConfig> -): MosaicMiddlewareRunner { - return async function middlewareRunner(context, options) { - let result: MiddlewareResult = initialState; - const errors: Error[] = []; - // eslint-disable-next-line no-restricted-syntax - for (const fnOrConfig of middleware) { - let fn: MosaicMiddleware; - let finalOptions = options; - try { - if (typeof fnOrConfig === 'function') { - fn = fnOrConfig; - } else { - fn = fnOrConfig[0]; - finalOptions = { ...options, ...fnOrConfig[1] }; - } - // eslint-disable-next-line no-await-in-loop - const nextState = await fn(context, finalOptions, result); - result = deepmerge>(result, nextState, { - arrayMerge: overwriteMerge - }); - } catch (error) { - if (error instanceof Error) { - errors.push(error); - } else { - const unexpectedError = new MiddlewareError(500, undefined, [String(error)], { - show500: true - }); - errors.push(unexpectedError); - } - } - } - if (result.redirect) { - return { redirect: result.redirect }; - } - const show404 = errors.some(error => { - if (error instanceof MiddlewareError) { - return error.props?.show404; - } - return false; - }); - const show500 = - !show404 && - errors.some(error => { - if (error instanceof MiddlewareError) { - return error.props?.show500; - } - return true; - }); - - if (show500) { - console.error('An un-expected error(s) was thrown which caused the 500 page to appear'); - errors.forEach(console.error); - } - - if (show404 || show500) { - context.res.setHeader(`X-Mosaic-${show404 ? '404' : '500'}`, 'true'); - } - const props: TProps = { ...result.props, show404, show500 } as TProps; - return { props }; - }; -} diff --git a/packages/site-middleware/src/index.ts b/packages/site-middleware/src/index.ts deleted file mode 100644 index 791345149..000000000 --- a/packages/site-middleware/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './compileMdx.js'; -export * from './createMiddlewareRunner.js'; -export * from './MiddlewareError.js'; -export * from './middlewarePresets.js'; -export * from './withMDXContent.js'; -export * from './withMosaicMode.js'; -export * from './withSearchIndex.js'; -export * from './withSession.js'; -export * from './withSharedConfig.js'; diff --git a/packages/site-middleware/src/loaders/__tests__/createS3Loader.test.ts b/packages/site-middleware/src/loaders/__tests__/createS3Loader.test.ts deleted file mode 100644 index c5700b58d..000000000 --- a/packages/site-middleware/src/loaders/__tests__/createS3Loader.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3'; -import { AwsStub, mockClient } from 'aws-sdk-client-mock'; -import { sdkStreamMixin } from '@aws-sdk/util-stream'; -import { Readable } from 'stream'; - -import { createS3Loader } from '../index.js'; - -describe.only('GIVEN createS3Loader', () => { - let savedEnv = process.env; - let s3ClientMock: AwsStub<{}, { $metadata: {} }>; - beforeAll(() => { - process.env = { - ...process.env, - MOSAIC_S3_BUCKET: 'some-bucket', - MOSAIC_S3_REGION: 'some-region', - MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key', - MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key' - }; - s3ClientMock = mockClient(S3Client); - const stream = new Readable(); - stream.push('some-content'); - stream.push(null); // end of stream - const contentStream = sdkStreamMixin(stream); - s3ClientMock.on(GetObjectCommand).resolves({ Body: contentStream }); - s3ClientMock - .on(HeadObjectCommand, { - Bucket: 'some-bucket', - Key: 'some-key' - }) - .resolves({ $metadata: { httpStatusCode: 200 } }); - s3ClientMock - .on(HeadObjectCommand, { - Bucket: 'some-bucket', - Key: 'non-existent-key' - }) - .resolves({ $metadata: { httpStatusCode: 404 } }); - }); - afterAll(() => { - process.env = savedEnv; - s3ClientMock.reset(); - }); - test('THEN the S3 loader can load keys from buckets', async () => { - // arrange - const s3Client = createS3Loader('some-bucket', 'some-access-key', 'some-secret-key'); - // assert - expect(await s3Client.loadKey('some-bucket', 'some-key')).toEqual('some-content'); - }); - test('THEN the S3 loader can check keys exist in buckets', async () => { - // arrange - const s3Client = createS3Loader('some-bucket', 'some-access-key', 'some-secret-key'); - // assert - expect(await s3Client.keyExists('some-bucket', 'some-key')).toEqual(true); - expect(await s3Client.keyExists('some-bucket', 'non-existent-key')).toEqual(false); - }); -}); diff --git a/packages/site-middleware/src/loaders/__tests__/getS3Config.test.ts b/packages/site-middleware/src/loaders/__tests__/getS3Config.test.ts deleted file mode 100644 index b633ca2f3..000000000 --- a/packages/site-middleware/src/loaders/__tests__/getS3Config.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { getSnapshotS3Config } from '../index.js'; -describe('GIVEN getS3Config', () => { - describe('WHEN valid config is defined', () => { - let savedEnv = process.env; - beforeAll(() => { - process.env = { - ...process.env, - MOSAIC_S3_BUCKET: 'some-bucket', - MOSAIC_S3_REGION: 'some-region', - MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key', - MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key' - }; - }); - afterAll(() => { - process.env = savedEnv; - }); - test('THEN it returns the S3 config', async () => { - // arrange - const config = getSnapshotS3Config('some-key'); - // assert - expect(config).toEqual({ - bucket: 'some-bucket', - region: 'some-region', - accessKeyId: 'some-access-key', - secretAccessKey: 'some-secret-key' - }); - }); - }); - describe('WHEN invalid config is defined', () => { - let savedEnv = process.env; - beforeAll(() => { - process.env = {}; - }); - afterAll(() => { - process.env = savedEnv; - }); - test('THEN it throws an error', () => { - // assert - expect(() => getSnapshotS3Config('some-key')).toThrow( - /Environment variables missing for loading of S3 content for key some-key/ - ); - }); - }); -}); diff --git a/packages/site-middleware/src/loaders/__tests__/loadLocalFile.test.ts b/packages/site-middleware/src/loaders/__tests__/loadLocalFile.test.ts deleted file mode 100644 index cb0f45f82..000000000 --- a/packages/site-middleware/src/loaders/__tests__/loadLocalFile.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -const mockFs = require('mock-fs'); -import { loadLocalFile } from '../index.js'; - -describe('GIVEN loadLocalFile', () => { - beforeEach(() => { - mockFs({ - 'some/snapshots/mynamespace/mydir': 'some-content', - 'some/snapshots/mynamespace/dir/index': 'directory index content' - }); - }); - afterEach(() => { - mockFs.restore(); - }); - - test('THEN it can read from a local file', async () => { - // arrange - const content = await loadLocalFile('some/snapshots/mynamespace/mydir'); - // assert - expect(content).toEqual('some-content'); - }); - test('THEN it throws and error when the local file does not exist', async () => { - // assert - await expect(loadLocalFile('some/non-existent/mynamespace/mydir')).rejects.toThrow( - /ENOENT, no such file or directory 'some\/non-existent\/mynamespace\/mydir'/ - ); - }); - test('THEN it loads the index file if a directory is requested', async () => { - // arrange - const content = await loadLocalFile('some/snapshots/mynamespace/dir'); - // assert - expect(content).toEqual('directory index content'); - }); -}); diff --git a/packages/site-middleware/src/loaders/createS3Loader.ts b/packages/site-middleware/src/loaders/createS3Loader.ts deleted file mode 100644 index b372709a8..000000000 --- a/packages/site-middleware/src/loaders/createS3Loader.ts +++ /dev/null @@ -1,61 +0,0 @@ -import md5 from 'md5'; -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3'; -import { MetadataBearer } from '@aws-sdk/types'; - -export function createClient(region, accessKeyId, secretAccessKey): S3Client { - return new S3Client({ - region, - credentials: { - accessKeyId, - secretAccessKey - } - }); -} - -async function readFile(client, bucket, key) { - const params = { - Bucket: bucket, - Key: key - }; - const command = new GetObjectCommand(params); - const response = await client.send(command); - return response; -} - -const clientCache = {}; -export function createS3Loader(region, accessKeyId, secretAccessKey) { - const clientHash = md5(`${region}${accessKeyId}${secretAccessKey}`); - if (!clientCache[clientHash]) { - clientCache[clientHash] = createClient(region, accessKeyId, secretAccessKey); - } - const client = clientCache[clientHash]; - - return { - loadKey: async (bucket: string, key: string): Promise => { - const data = await readFile(client, bucket, key); - const text = await data.Body.transformToString(); - return text; - }, - keyExists: async (bucket: string, key: string): Promise => { - const params = { - Bucket: bucket, - Key: key - }; - const command = new HeadObjectCommand(params); - let exists = false; - - try { - const response = await client.send(command); - exists = response?.$metadata?.httpStatusCode === 200; - } catch (error) { - const bearer: MetadataBearer = error as MetadataBearer; - if (bearer?.$metadata?.httpStatusCode === 404) { - exists = false; - } else { - throw error; - } - } - return !!exists; - } - }; -} diff --git a/packages/site-middleware/src/loaders/getSnapshotFileConfig.ts b/packages/site-middleware/src/loaders/getSnapshotFileConfig.ts deleted file mode 100644 index 764fe5f78..000000000 --- a/packages/site-middleware/src/loaders/getSnapshotFileConfig.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { snapshotFileEnvSchema } from '@jpmorganchase/mosaic-schemas'; - -export const getSnapshotFileConfig = url => { - const env = snapshotFileEnvSchema.safeParse(process.env); - if (!env.success) { - env.error.issues.forEach(issue => { - console.error( - `Missing process.env.${issue.path.join()} environment variable required to load path ${url} from local snapshot` - ); - }); - throw new Error(`Environment variables missing for loading of ${url} for local snapshot`); - } - return { - snapshotDir: env.data.MOSAIC_SNAPSHOT_DIR - }; -}; diff --git a/packages/site-middleware/src/loaders/getSnapshotS3Config.ts b/packages/site-middleware/src/loaders/getSnapshotS3Config.ts deleted file mode 100644 index 0f04a16b7..000000000 --- a/packages/site-middleware/src/loaders/getSnapshotS3Config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { snapshotS3EnvSchema } from '@jpmorganchase/mosaic-schemas'; - -export function getSnapshotS3Config(key) { - const config = snapshotS3EnvSchema.safeParse(process.env); - if (!config.success) { - config.error.issues.forEach(issue => { - console.error( - `Missing process.env.${issue.path.join()} environment variable required to load S3 bucket ${key}` - ); - }); - throw new Error(`Environment variables missing for loading of S3 content for key ${key}`); - } - return { - bucket: config.data.MOSAIC_S3_BUCKET, - region: config.data.MOSAIC_S3_REGION, - accessKeyId: config.data.MOSAIC_S3_ACCESS_KEY_ID, - secretAccessKey: config.data.MOSAIC_S3_SECRET_ACCESS_KEY - }; -} diff --git a/packages/site-middleware/src/loaders/index.ts b/packages/site-middleware/src/loaders/index.ts deleted file mode 100644 index c15e05639..000000000 --- a/packages/site-middleware/src/loaders/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './loadLocalFile.js'; -export * from './createS3Loader.js'; -export * from './getSnapshotS3Config'; -export * from './getSnapshotFileConfig.js'; diff --git a/packages/site-middleware/src/loaders/loadLocalFile.ts b/packages/site-middleware/src/loaders/loadLocalFile.ts deleted file mode 100644 index 85e60228b..000000000 --- a/packages/site-middleware/src/loaders/loadLocalFile.ts +++ /dev/null @@ -1,12 +0,0 @@ -import fs from 'fs'; -import path from 'path'; - -export const loadLocalFile = async (filePath: string): Promise => { - let localPath = filePath; - if ((await fs.promises.stat(filePath)).isDirectory()) { - localPath = path.posix.join(localPath, 'index'); - } - const realPath = await fs.promises.realpath(localPath); - const data = await fs.promises.readFile(realPath, 'utf-8'); - return data.toString(); -}; diff --git a/packages/site-middleware/src/middlewarePresets.ts b/packages/site-middleware/src/middlewarePresets.ts deleted file mode 100644 index ae9737c5d..000000000 --- a/packages/site-middleware/src/middlewarePresets.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { Redirect } from 'next'; -import { SearchIndexSlice, SharedConfigSlice } from '@jpmorganchase/mosaic-store'; -import type { ContentProps } from '@jpmorganchase/mosaic-types'; -import { withSearchIndex } from './withSearchIndex.js'; -import { withSharedConfig } from './withSharedConfig.js'; -import { withMDXContent } from './withMDXContent.js'; -import { MosaicMiddleware, MosaicMiddlewareWithConfig } from './createMiddlewareRunner.js'; -import { withMosaicMode, type MosaicModeProps } from './withMosaicMode.js'; - -export type BaseMosaicAppProps = { - /** Flag to show custom 404 page, whilst maintaining current state/layout */ - show404?: boolean; - /** Flag to show custom 500 page, whilst maintaining current state/layout */ - show500?: boolean; -}; - -/** Abstract Mosaic App Props */ -export type MosaicAppProps = { - /** Page props created by [[`Middleware`]] */ - props?: T; - /** Error description */ - errors?: { - /** Stacktrace * */ - location?: string; - /** Error message * */ - statusText?: string; - /** Error code */ - status?: number; - } & BaseMosaicAppProps; - /** Next JS Redirect */ - redirect?: Redirect; -}; - -/** Mosaic getServerSideProps result which supports error handling */ -export type GetMosaicServerSidePropsResult = MosaicAppProps; - -/** MiddlewarePresets props */ -export type MiddlewarePresetsProps = MosaicModeProps & - ContentProps & - SearchIndexSlice & - SharedConfigSlice; - -/** A collection of preset [[`Middleware`]] plugins that will compose together the page props */ -export const middlewarePresets: Array< - | MosaicMiddleware - | MosaicMiddlewareWithConfig -> = [withMosaicMode, withSharedConfig, withMDXContent, withSearchIndex]; diff --git a/packages/site-middleware/src/plugins/codeBlocks.ts b/packages/site-middleware/src/plugins/codeBlocks.ts deleted file mode 100644 index 8e8fd7b06..000000000 --- a/packages/site-middleware/src/plugins/codeBlocks.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Parser } from 'acorn'; -import jsx from 'acorn-jsx'; -import type { Code, Literal } from 'mdast'; -import { Plugin, Transformer } from 'unified'; -import visit from 'unist-util-visit'; - -const parser = Parser.extend(jsx()); - -/** - * Modified from: https://github.com/remcohaszing/remark-mdx-code-meta - * - * Custom meta parser for codefences that have extra params. e.g. - * ```jsx filename="hello.jsx" - *
Test!
- * ``` - * - * Custom meta parser for codefences that have eval or eval="true". - * This allows vars to be resolved and their values used as the code block body. - * ```jsx eval - * meta.data.someStringOnlyAvailableAtRuntime - * ``` - */ -export const transformer: Transformer = ast => { - visit(ast, 'code', (node, index, parent) => { - if (!node.meta) { - return; - } - // Limit eval to just basic strings that start with "meta." - const isEval = - /(^| )eval(="true"| |$)/.test(node.meta) && /^meta\.[a-z0-9_[\].$"']+$/i.test(node.value); - - let code; - if (!isEval) { - code = JSON.stringify(`${node.value}\n`); - } else { - code = node.value; - } - - const codeProps = node.lang ? `className="language-${node.lang}"` : ''; - const value = `
{${code}}
`; - const estree = parser.parse(value, { ecmaVersion: 'latest' }); - // eslint-disable-next-line no-param-reassign - parent!.children[index] = { type: 'mdxFlowExpression', value, data: { estree } } as Literal; - }); -}; - -/** - * A markdown plugin for transforming code metadata. - * - * @returns A unified transformer. - */ -export const codeBlocks: Plugin<[]> = () => transformer; diff --git a/packages/site-middleware/src/withMDXContent.ts b/packages/site-middleware/src/withMDXContent.ts deleted file mode 100644 index c2d5a6c1e..000000000 --- a/packages/site-middleware/src/withMDXContent.ts +++ /dev/null @@ -1,116 +0,0 @@ -import path from 'path'; -import { GetServerSidePropsContext } from 'next'; -import type { ContentProps, MosaicMode } from '@jpmorganchase/mosaic-types'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; -import { - createS3Loader, - getSnapshotFileConfig, - getSnapshotS3Config, - loadLocalFile -} from './loaders'; -import { compileMDX } from './compileMdx.js'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -const normalizeUrl = url => (/\/index$/.test(url) ? `${url}.mdx` : url); - -async function loadSnapshotFile(url) { - const { snapshotDir } = getSnapshotFileConfig(url); - const normalizedUrl = normalizeUrl(url); - const filePath = path.posix.join(process.cwd(), snapshotDir, normalizedUrl); - try { - return await loadLocalFile(filePath); - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } - throw new MiddlewareError(404, url, [`Could not read local file '${filePath}' for '${url}'`], { - show404: true - }); - } -} - -async function loadSnapshotS3(url) { - let text; - try { - const { accessKeyId, bucket, region, secretAccessKey } = getSnapshotS3Config(url); - const s3Loader = createS3Loader(region, accessKeyId, secretAccessKey); - const normalizedUrl = normalizeUrl(url); - const s3Key = normalizedUrl.replace(/^\//, ''); - text = await s3Loader.loadKey(bucket, s3Key); - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } - throw new MiddlewareError(404, url, [`Could not find an S3 object for '${url}'`], { - show404: true - }); - } - return text; -} - -async function loadActiveContent(url) { - let text; - const normalizedUrl = normalizeUrl(url); - const response = await fetch(normalizedUrl); - if (response.ok) { - text = await response.text(); - // If redirect url was returned - } else if (response.status === 302) { - return { - redirect: { - destination: (await response.json()).redirect, - permanent: true - } - }; - } else { - throw new MiddlewareError(404, url, [`Could not fetch any content for ${url}`], { - show404: true - }); - } - return text; -} -/** - * Adds the [[`type`, `source`, `raw`,]] object to the page props - * @param context - */ -export const withMDXContent: MosaicMiddleware = async ( - context: GetServerSidePropsContext -) => { - const { resolvedUrl } = context; - const mosaicMode = context.res.getHeader('X-Mosaic-Mode' || 'active') as MosaicMode; - const extname = path.extname(resolvedUrl); - // Any urls which are not prefixed, will default to MDX - const isMDX = extname === '.mdx' || extname === ''; - if (!isMDX) { - return {}; - } - let text; - if (mosaicMode === 'snapshot-file') { - text = await loadSnapshotFile(resolvedUrl); - } else if (mosaicMode === 'snapshot-s3') { - text = await loadSnapshotS3(resolvedUrl); - } else { - const mosaicUrl = context.res.getHeader('X-Mosaic-Content-Url'); - const fetchedResult = await loadActiveContent(`${mosaicUrl}${resolvedUrl}`); - const isRedirect = typeof fetchedResult === 'object'; - if (isRedirect) { - return fetchedResult; - } - text = fetchedResult; - } - try { - const mdxSource = await compileMDX(text); - return { props: { type: 'mdx', source: mdxSource, raw: text } }; - } catch (error) { - console.error(error); - if (error instanceof Error) { - throw new MiddlewareError(500, resolvedUrl, [error.message], { show500: true }); - } else { - throw new MiddlewareError(500, resolvedUrl, ['unexpected error'], { show500: true }); - } - } -}; diff --git a/packages/site-middleware/src/withMosaicMode.ts b/packages/site-middleware/src/withMosaicMode.ts deleted file mode 100644 index 2ada9dbb2..000000000 --- a/packages/site-middleware/src/withMosaicMode.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { MosaicMode } from '@jpmorganchase/mosaic-types'; - -import type { MosaicMiddleware } from './createMiddlewareRunner.js'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -/** - * [[`MosaicModeProps`]] specifies the mode mosaic uses - */ -export interface MosaicModeProps { - mode?: MosaicMode; -} - -/** - * Adds the [[`MosaicModeProps`]] object to the page props - * @param context - */ -export const withMosaicMode: MosaicMiddleware = async context => { - const mode: MosaicMode = (process.env.MOSAIC_MODE || 'active') as MosaicMode; - const mosaicContentUrl = process.env[`MOSAIC_${mode.toUpperCase()}_MODE_URL`] || ''; - context.res.setHeader('X-Mosaic-Mode', mode); - context.res.setHeader('X-Mosaic-Content-Url', mosaicContentUrl); - return { props: { mode } }; -}; diff --git a/packages/site-middleware/src/withSearchIndex.ts b/packages/site-middleware/src/withSearchIndex.ts deleted file mode 100644 index 887c12157..000000000 --- a/packages/site-middleware/src/withSearchIndex.ts +++ /dev/null @@ -1,104 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { GetServerSidePropsContext } from 'next'; -import type { SearchIndexSlice } from '@jpmorganchase/mosaic-store'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; -import { - createS3Loader, - getSnapshotFileConfig, - getSnapshotS3Config, - loadLocalFile -} from './loaders'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -const searchDataFile = 'search-data-condensed.json'; -const searchConfigFile = 'search-config.json'; - -const getSnapshotFile = async (urlPath, targetPath) => { - const { snapshotDir } = getSnapshotFileConfig(urlPath); - const filePath = path.join(process.cwd(), snapshotDir, targetPath); - try { - await fs.promises.stat(filePath); - const rawSearchIndex = await loadLocalFile(filePath); - return JSON.parse(rawSearchIndex); - } catch { - console.warn(`Could not load data from ${urlPath}/${targetPath}`); - return false; - } -}; - -const getSnapshotS3File = async (urlPath, targetPath) => { - const { accessKeyId, bucket, region, secretAccessKey } = getSnapshotS3Config(targetPath); - const { keyExists, loadKey } = createS3Loader(region, accessKeyId, secretAccessKey); - const s3KeyExists = await keyExists(bucket, targetPath); - if (s3KeyExists) { - const rawSearchIndex = await loadKey(bucket, targetPath); - return JSON.parse(rawSearchIndex); - } else { - console.warn(`Could not load data from ${urlPath}/${targetPath}`); - return false; - } -}; - -const getFechedFile = async (mosaicUrl, targetPath) => { - const response = await fetch(`${mosaicUrl}/${targetPath}`, { - headers: { - 'Content-Type': 'application/json' - } - }); - if (response.ok) { - return await response.json(); - } else if (response.status !== 404) { - throw Error(`${response.status} - ${response.statusText}`); - } else { - console.warn(`Could not load data from ${mosaicUrl}/${targetPath}`); - return false; - } -}; - -/** - * Adds the [[`searchIndex`]] props to the page props - * @param _context - * @returns site props object - */ -export const withSearchIndex: MosaicMiddleware = async ( - context: GetServerSidePropsContext -) => { - const { res, resolvedUrl } = context; - const isSnapshotFile = res.getHeader('X-Mosaic-Mode') === 'snapshot-file'; - const isSnapshotS3 = res.getHeader('X-Mosaic-Mode') === 'snapshot-s3'; - - const matches = resolvedUrl.match(/(.*)[!/]/); - const urlPath = matches?.length ? matches[1] : ''; - - try { - let searchIndex; - let searchConfig; - if (isSnapshotFile) { - searchIndex = await getSnapshotFile(urlPath, searchDataFile); - searchConfig = await getSnapshotFile(urlPath, searchConfigFile); - } else if (isSnapshotS3) { - searchIndex = await getSnapshotS3File(urlPath, searchDataFile); - searchConfig = await getSnapshotS3File(urlPath, searchConfigFile); - } else { - const mosaicUrl = res.getHeader('X-Mosaic-Content-Url'); - searchIndex = await getFechedFile(mosaicUrl, searchDataFile); - searchConfig = await getFechedFile(mosaicUrl, searchConfigFile); - } - if (searchIndex && searchConfig) { - return { props: { searchConfig, searchIndex } }; - } - return { props: {} }; - } catch (error) { - console.error(error); - let errorMessage = `Could not load any search index for ${resolvedUrl}`; - throw new MiddlewareError(500, resolvedUrl, [errorMessage], { - show404: false, - show500: true - }); - } -}; diff --git a/packages/site-middleware/src/withSession.ts b/packages/site-middleware/src/withSession.ts deleted file mode 100644 index a738d5656..000000000 --- a/packages/site-middleware/src/withSession.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { type NextAuthOptions, getServerSession } from 'next-auth'; -import type { Session } from '@jpmorganchase/mosaic-types'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -/** - * [[`SessionProps`]] specifies session object containing user profile of logged in user - */ -export interface SessionProps { - session?: Session; -} - -/** - * [[`SessionOptions`]] specifies a configuration object for the withSession middleware - */ -export interface SessionOptions { - /** is login required for the environment */ - loginRequired: boolean; - authOptions: NextAuthOptions; -} - -/** - * Adds the [[`Session`]] object to the page props - * @param context - * @param options - */ -export const withSession: MosaicMiddleware, SessionOptions> = async ( - context, - options -) => { - if (process.env.NEXT_PUBLIC_ENABLE_LOGIN !== 'true') { - return {}; - } - - if (!options?.authOptions) { - const errorMessage = '`authOptions` must be provided.'; - throw new MiddlewareError(500, context.resolvedUrl, [errorMessage], { - show500: true - }); - } - - const session = await getServerSession(context.req, context.res, options.authOptions); - - return { - props: { - session: { - ...session, - isLoggedIn: session !== null - } - } - }; -}; diff --git a/packages/site-middleware/src/withSharedConfig.ts b/packages/site-middleware/src/withSharedConfig.ts deleted file mode 100644 index e84724501..000000000 --- a/packages/site-middleware/src/withSharedConfig.ts +++ /dev/null @@ -1,82 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { GetServerSidePropsContext } from 'next'; -import type { SharedConfig, SharedConfigSlice } from '@jpmorganchase/mosaic-store'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; -import { - createS3Loader, - getSnapshotFileConfig, - getSnapshotS3Config, - loadLocalFile -} from './loaders'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -/** - * Adds the [[`sharedConfig`]] props to the page props - * @param _context - * @param _params - */ -export const withSharedConfig: MosaicMiddleware = async ( - context: GetServerSidePropsContext -) => { - const { resolvedUrl, res } = context; - const isSnapshotFile = res.getHeader('X-Mosaic-Mode') === 'snapshot-file'; - const isSnapshotS3 = res.getHeader('X-Mosaic-Mode') === 'snapshot-s3'; - - const matches = resolvedUrl.match(/(.*)[!/]/); - const urlPath = matches?.length ? matches[1] : ''; - try { - let sharedConfig; - if (isSnapshotFile) { - const { snapshotDir } = getSnapshotFileConfig(urlPath); - const filePath = path.join(process.cwd(), snapshotDir, urlPath, 'shared-config.json'); - let fileExists = false; - try { - await fs.promises.stat(filePath); - fileExists = true; - } catch {} - if (fileExists) { - const rawSharedConfig = await loadLocalFile(filePath); - sharedConfig = JSON.parse(rawSharedConfig); - } - } else if (isSnapshotS3) { - const s3Key = `${urlPath}/shared-config.json`.replace(/^\//, ''); - const { accessKeyId, bucket, region, secretAccessKey } = getSnapshotS3Config(s3Key); - const { keyExists, loadKey } = createS3Loader(region, accessKeyId, secretAccessKey); - - const s3KeyExists = await keyExists(bucket, s3Key); - if (s3KeyExists) { - const rawSharedConfig = await loadKey(bucket, s3Key); - sharedConfig = JSON.parse(rawSharedConfig); - } - } else { - const mosaicUrl = res.getHeader('X-Mosaic-Content-Url'); - const response = await fetch(`${mosaicUrl}${urlPath}/shared-config.json`, { - headers: { - 'Content-Type': 'application/json' - } - }); - if (response.ok) { - sharedConfig = await response.json(); - } else if (response.status !== 404) { - throw Error(`${response.status} - ${response.statusText}`); - } - } - if (sharedConfig) { - const { config } = sharedConfig as { config: SharedConfig }; - return { props: { sharedConfig: config } }; - } - return { props: {} }; - } catch (error) { - console.error(error); - let errorMessage = `Could not load any shared config for ${resolvedUrl}`; - throw new MiddlewareError(500, resolvedUrl, [errorMessage], { - show404: false, - show500: true - }); - } -}; diff --git a/packages/site-middleware/tsconfig.json b/packages/site-middleware/tsconfig.json deleted file mode 100644 index df2d92f30..000000000 --- a/packages/site-middleware/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.bundle.json", - "compilerOptions": { - "emitDeclarationOnly": false, - "rootDir": "./src", - "outDir": "./dist" - }, - "include": ["src"], - "exclude": ["src/**/__tests__/**/*", "src/__tests__/**/*"] -} diff --git a/packages/site/next.config.js b/packages/site/next.config.js index f92266206..c447b0376 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -13,7 +13,6 @@ const nextConfig = { '@jpmorganchase/mosaic-content-editor-plugin', '@jpmorganchase/mosaic-layouts', '@jpmorganchase/mosaic-site-components', - '@jpmorganchase/mosaic-site-middleware', '@jpmorganchase/mosaic-theme', '@jpmorganchase/mosaic-store' ], diff --git a/packages/site/src/types/mosaic.ts b/packages/site/src/types/mosaic.ts deleted file mode 100644 index f00d1b4c6..000000000 --- a/packages/site/src/types/mosaic.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { MosaicAppProps, MiddlewarePresetsProps } from '@jpmorganchase/mosaic-site-middleware'; - -/** - * In this file, define each of your own Middleware props, which combine together into MyAppProps - * - * Define the props returned by your middleware - * - * export interface ExampleMiddlewareProps { - * someProp?: string; - * } - * - * Insert the options you want to pass to your middleware (optional) - * - * export interface ExampleMiddlewareOptions { - * someOption: number; - * } - * - * Then compose all your own Middleware props with the default MosaicAppProps - * - * export interface MyAppProps extends MosaicAppProps {}; - */ - -export declare type MyMiddlewareProps = MiddlewarePresetsProps /* & ExampleMiddlewareOptions */; - -export type MyAppProps = MosaicAppProps['props']; diff --git a/packages/standard-generator/src/templates/next.config.js.hbs b/packages/standard-generator/src/templates/next.config.js.hbs index d8a8fbfff..2b58e9fba 100755 --- a/packages/standard-generator/src/templates/next.config.js.hbs +++ b/packages/standard-generator/src/templates/next.config.js.hbs @@ -10,7 +10,6 @@ module.exports = { '@jpmorganchase/mosaic-layouts', '@jpmorganchase/mosaic-open-api-component', '@jpmorganchase/mosaic-site-components', - '@jpmorganchase/mosaic-site-middleware', '@jpmorganchase/mosaic-theme', '@jpmorganchase/mosaic-store' ], diff --git a/yarn.lock b/yarn.lock index f9dd10509..195e042a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,9 @@ "@adobe/css-tools@^4.0.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.1.tgz#abfccb8ca78075a2b6187345c26243c1a0842f28" - integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" + integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== "@ampproject/remapping@^2.1.0": version "2.2.0" @@ -17,8 +17,8 @@ "@apidevtools/json-schema-ref-parser@^10.1.0": version "10.1.0" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-10.1.0.tgz#bf54494039a56fa7f77fed17dc6f01dfde50f64c" - integrity sha512-3e+viyMuXdrcK8v5pvP+SDoAQ77FH6OyRmuK48SZKmdHJRFm87RsSs8qm6kP39a/pOPURByJw+OXzQIqcfmKtA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-10.1.0.tgz#bf54494039a56fa7f77fed17dc6f01dfde50f64c" + integrity sha1-v1RJQDmlb6f3f+0X3G8B395Q9kw= dependencies: "@jsdevtools/ono" "^7.1.3" "@types/json-schema" "^7.0.11" @@ -118,7 +118,7 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/client-s3@^3.256.0", "@aws-sdk/client-s3@^3.359.0": +"@aws-sdk/client-s3@^3.359.0": version "3.359.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.359.0.tgz#af7c04b2749ed0095f5de4680c9b69852b30d3e2" integrity sha512-Z/RRzM1o1uX0zs0ieBdaEIn9X5Jwl6Bk/fnTPmuWDHmgJUjv7OQ9Oa7BV4azBAW6JNQ6XW1SdJrrfsOdblJ8QA== @@ -1098,13 +1098,6 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-compilation-targets@^7.18.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" @@ -1175,13 +1168,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -1189,6 +1175,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-module-transforms@^7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" @@ -1480,9 +1473,9 @@ regenerator-runtime "^0.13.10" "@babel/runtime-corejs3@^7.20.13", "@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.22.5.tgz#bbc769b48edb2bdfd404b65ad1fc3952bf33e3c2" - integrity sha512-TNPDN6aBFaUox2Lu+H/Y1dKKQgr4ucz/FGyCz67RVYLsBpVpUFf1dDngzg+Od8aqbrqwyztkaZjtWCZEUOT8zA== + version "7.22.6" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@babel/runtime-corejs3/-/runtime-corejs3-7.22.6.tgz#e8e625eb3db29491e0326b3aeb9929c43b270ae4" + integrity sha1-6OYl6z2ylJHgMms665kpxDsnCuQ= dependencies: core-js-pure "^3.30.2" regenerator-runtime "^0.13.11" @@ -1494,17 +1487,10 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.1.2": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== - dependencies: - regenerator-runtime "^0.14.0" - "@babel/runtime@^7.12.1": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" - integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== + version "7.22.6" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" + integrity sha1-V9ZLmuPP8dZ+sGeuEX2sCH9b1Dg= dependencies: regenerator-runtime "^0.13.11" @@ -1558,7 +1544,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.4.5": +"@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== @@ -1843,7 +1829,7 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== -"@emotion/is-prop-valid@^1.1.0", "@emotion/is-prop-valid@^1.2.0": +"@emotion/is-prop-valid@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== @@ -1897,16 +1883,6 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" "@emotion/utils" "^1.2.0" -"@emotion/stylis@^0.8.4": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== - -"@emotion/unitless@^0.7.4": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - "@emotion/unitless@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" @@ -2052,42 +2028,6 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@fastify/ajv-compiler@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz#459bff00fefbf86c96ec30e62e933d2379e46670" - integrity sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA== - dependencies: - ajv "^8.11.0" - ajv-formats "^2.1.1" - fast-uri "^2.0.0" - -"@fastify/deepmerge@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@fastify/deepmerge/-/deepmerge-1.3.0.tgz#8116858108f0c7d9fd460d05a7d637a13fe3239a" - integrity sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A== - -"@fastify/error@^3.2.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@fastify/error/-/error-3.3.0.tgz#eba790082e1144bfc8def0c2c8ef350064bc537b" - integrity sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w== - -"@fastify/fast-json-stringify-compiler@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz#5df89fa4d1592cbb8780f78998355feb471646d5" - integrity sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA== - dependencies: - fast-json-stringify "^5.7.0" - -"@fastify/middie@^8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@fastify/middie/-/middie-8.3.0.tgz#1325e9e4373c98d69366d1e38211337dee1b9ccd" - integrity sha512-h+zBxCzMlkEkh4fM7pZaSGzqS7P9M0Z6rXnWPdUEPfe7x1BCj++wEk/pQ5jpyYY4pF8AknFqb77n7uwh8HdxEA== - dependencies: - "@fastify/error" "^3.2.0" - fastify-plugin "^4.0.0" - path-to-regexp "^6.1.0" - reusify "^1.0.4" - "@floating-ui/core@^1.2.6": version "1.2.6" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.6.tgz#d21ace437cc919cdd8f1640302fa8851e65e75c0" @@ -2116,90 +2056,6 @@ aria-hidden "^1.1.3" tabbable "^6.0.1" -"@fluentui/keyboard-keys@^9.0.3": - version "9.0.3" - resolved "https://registry.yarnpkg.com/@fluentui/keyboard-keys/-/keyboard-keys-9.0.3.tgz#e7ab9592b38466a071994a43edfc84bfe830ae79" - integrity sha512-40KBVJ9HzsvmPL3rwYaAvxCacNS0xnTmOt6TLxxrAVgVrZ1X7DLgd8OGFZcWROs0dhHdCk2D51bl4nK8Q1r3mQ== - dependencies: - "@swc/helpers" "^0.4.14" - -"@fluentui/priority-overflow@^9.1.3": - version "9.1.3" - resolved "https://registry.yarnpkg.com/@fluentui/priority-overflow/-/priority-overflow-9.1.3.tgz#430ab8054160ad4c61c8ff814a3143969bedd9e5" - integrity sha512-enc0HxrnXfRqKectOZ+LWBbYjN1vpENKnbSuyh2SeDwW8JpRC+oMsCHyRcf43hXZbAqllr60HggnQc6gvqJPRg== - dependencies: - "@swc/helpers" "^0.4.14" - -"@fluentui/react-context-selector@^9.1.27": - version "9.1.27" - resolved "https://registry.yarnpkg.com/@fluentui/react-context-selector/-/react-context-selector-9.1.27.tgz#eff469598e7cbcfc7f7aab39365d5741c0fdd7f0" - integrity sha512-l6YypPlNQRtGkavDJTXqdZbQCpS69L7/1mx8GU5aqzcWYyfUyfP4Y0lPpgXjlm1dvHnz/5k6gprEB0dWkfCpxA== - dependencies: - "@fluentui/react-utilities" "^9.11.0" - "@swc/helpers" "^0.4.14" - -"@fluentui/react-overflow@^9.0.19": - version "9.0.26" - resolved "https://registry.yarnpkg.com/@fluentui/react-overflow/-/react-overflow-9.0.26.tgz#240f3f231e7776dae030d86c75f13e1024f13a98" - integrity sha512-TB0x+gvDKHFQj/GpZldvFJ3QuFWoygd4cZuiKFUTU00i2C/WCLN37nGJ8/JxTP4+JeSIV/jYmkE8+be7rP/TLw== - dependencies: - "@fluentui/priority-overflow" "^9.1.3" - "@fluentui/react-context-selector" "^9.1.27" - "@fluentui/react-theme" "^9.1.11" - "@fluentui/react-utilities" "^9.11.0" - "@griffel/react" "^1.5.14" - "@swc/helpers" "^0.4.14" - -"@fluentui/react-theme@^9.1.11": - version "9.1.11" - resolved "https://registry.yarnpkg.com/@fluentui/react-theme/-/react-theme-9.1.11.tgz#58afe321998ac13615307d47d7f6150d5b825d9e" - integrity sha512-4rjYtMONBB1KZ4AdhuT7QVc4OZ2tMlhuk8BtqNrlX9C4C7NzsEWvKfuIX05e9yCBKnOeVuscsIUfGr7zJvhwdA== - dependencies: - "@fluentui/tokens" "1.0.0-alpha.8" - "@swc/helpers" "^0.4.14" - -"@fluentui/react-utilities@^9.11.0": - version "9.11.0" - resolved "https://registry.yarnpkg.com/@fluentui/react-utilities/-/react-utilities-9.11.0.tgz#926eea60175698c696b1d96e9c467303b4cf9a09" - integrity sha512-+lK8OU7jX5QFNfvMPwekQk9NPStETi3rHknb7S9oSEhXAnKFvH7L8Jp9LD+/CCeKrbkoGUX4t8AyDgBhtgx40g== - dependencies: - "@fluentui/keyboard-keys" "^9.0.3" - "@swc/helpers" "^0.4.14" - -"@fluentui/tokens@1.0.0-alpha.8": - version "1.0.0-alpha.8" - resolved "https://registry.yarnpkg.com/@fluentui/tokens/-/tokens-1.0.0-alpha.8.tgz#83463604a8eb114bc977cf220105cb0f36af9fd3" - integrity sha512-4n3/DRdD0MzojsOLJterivLdnzsrIuVy+z5LMPuG2gxzbx06E19XJgZU9tqlqCFESJ/xUFREL6dQKEluw1c0Kw== - dependencies: - "@swc/helpers" "^0.4.14" - -"@griffel/core@^1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@griffel/core/-/core-1.14.1.tgz#1efe8f5cd5c4b348636264061c3a6cf4040b08f4" - integrity sha512-KQ6yueap1zff9TJrn7MdfSAHDMDVP6Ec97gnpCi4NOeKiyCyT13MwPCmkkK0o/poaV1f9MdHhUTQZCpK0QtxzQ== - dependencies: - "@emotion/hash" "^0.9.0" - "@griffel/style-types" "^1.0.1" - csstype "^3.1.2" - rtl-css-js "^1.16.1" - stylis "^4.2.0" - tslib "^2.1.0" - -"@griffel/react@^1.5.14": - version "1.5.14" - resolved "https://registry.yarnpkg.com/@griffel/react/-/react-1.5.14.tgz#ea58ebd82007d421d16da49b7e57eccba391d609" - integrity sha512-/x6cy6xMtpow1r+Zrw/hMKHwo+imFAgKaZ3A/+M8GyT3L9AFxK1Kyg4JvARPjLBAn9Q2q5dkCr78jOguuVSScg== - dependencies: - "@griffel/core" "^1.14.1" - tslib "^2.1.0" - -"@griffel/style-types@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@griffel/style-types/-/style-types-1.0.1.tgz#4e7bca38d54c7371114309a5697869099a693e84" - integrity sha512-nhVryiNHhoBt5L93tfDYGoE4KtWvhBvY7y1yR1n6WKpRjasgw3GI2pBwiMiVt68bycnyvXIvcJjJTr0QM22VLQ== - dependencies: - csstype "^3.1.2" - "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -2937,42 +2793,41 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== -"@salt-ds/core@^1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@salt-ds/core/-/core-1.8.1.tgz#79056aabb88de5296ba85cd4fadc3f563677481a" - integrity sha512-TaSsZ4m0nmknlLhu5+OzL69J6zQMd2lXjVWpG59lsZvtkiHqXFf079bDuLAHTH5+bWXrxU+vWJCLpYI0TK2+0w== +"@salt-ds/core@^1.8.0-rc.0": + version "1.8.0-rc.1" + resolved "https://registry.yarnpkg.com/@salt-ds/core/-/core-1.8.0-rc.1.tgz#61d540ef07a850a0044313772594d41773ecb207" + integrity sha512-3y+r/kY5x/djrJvketqylmG8vJz1aU40wFfxC1WEUpoXhnh7wTl0TQnlP6wQEJvB56C+iJ5Qf8u969M/8lC53w== dependencies: "@floating-ui/react" "^0.23.0" - "@salt-ds/icons" "^1.6.0" - "@salt-ds/styles" "^0.1.1" - "@salt-ds/window" "^0.1.1" - clsx "^2.0.0" + "@salt-ds/icons" "^1.4.0" + "@salt-ds/styles" "^0.1.0" + "@salt-ds/window" "^0.1.0" + clsx "^1.2.1" -"@salt-ds/icons@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@salt-ds/icons/-/icons-1.6.0.tgz#7e47df9080ec4976c66c6c3f67ec72a1076ffe56" - integrity sha512-/9c1L5LyU5cPxaYDyywDu8VnpvOvnaDmuLr/BWLEdyzxSzXTDfcIPtSgpaSaPadubvnnE9mhXdNknLyTqjNXZg== +"@salt-ds/icons@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@salt-ds/icons/-/icons-1.4.0.tgz#a754be22c2034b1d5f8cba71a62b8eb7d5ce51c5" + integrity sha512-s/U9j/+f3ZJQr8FboBaoi4SeDl282oLL8qprLGLgD+vJQ83OzIbb1GtdNGJ/KoLk9/job9CdNgd6NZhzWTbvcQ== dependencies: - "@salt-ds/styles" "^0.1.1" - "@salt-ds/window" "^0.1.1" - clsx "^2.0.0" + "@salt-ds/styles" "^0.1.0" + "@salt-ds/window" "^0.1.0" + clsx "^1.2.1" -"@salt-ds/lab@1.0.0-alpha.16": - version "1.0.0-alpha.16" - resolved "https://registry.yarnpkg.com/@salt-ds/lab/-/lab-1.0.0-alpha.16.tgz#ed942f80bea1973b9a9f39dae28ab796bcedebdc" - integrity sha512-7C8WaZXoSVKL3k+bO97HOCR3pcnxUuFTkwncRvYHIS8FRmlaMAI7OZqCQCXmyXBs6UsqRk+ARsIGdKdLWKwRtg== +"@salt-ds/lab@1.0.0-alpha.10": + version "1.0.0-alpha.10" + resolved "https://registry.yarnpkg.com/@salt-ds/lab/-/lab-1.0.0-alpha.10.tgz#9fdc419c7439e4cdddeea16886d5c30bdf8a7535" + integrity sha512-iz94MCb7gzgZCthUOXu1Ve6oP4ebfaBfKlz9uVuCp8udsgwUs6XkCu5K3nxrKUzxzqnJnvcWKcZXe/L1wjJXiQ== dependencies: "@floating-ui/react" "^0.23.0" - "@fluentui/react-overflow" "^9.0.19" "@internationalized/date" "^3.0.0" - "@salt-ds/core" "^1.8.1" - "@salt-ds/icons" "^1.6.0" - "@salt-ds/styles" "^0.1.1" - "@salt-ds/window" "^0.1.1" + "@salt-ds/core" "^1.8.0-rc.0" + "@salt-ds/icons" "^1.4.0" + "@salt-ds/styles" "^0.1.0" + "@salt-ds/window" "^0.1.0" aria-hidden "^1.1.1" attr-accept "^2.0.0" clipboard-copy "^4.0.1" - clsx "^2.0.0" + clsx "^1.2.1" compute-scroll-into-view "^3.0.0" deepmerge "^4.2.2" no-scroll "^2.1.1" @@ -2981,20 +2836,20 @@ rifm "^0.12.0" tinycolor2 "^1.4.2" -"@salt-ds/styles@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@salt-ds/styles/-/styles-0.1.1.tgz#94ad206fab56cc2675a664661bdd6e67aae7c230" - integrity sha512-fgMNZMaMf6a/FhhjjrfUpPvkxf68b7ludyQSqSwEoWXbQenuWvqPw+JHuzwRubmJGcOAG4WBy259kgZqeRFPAA== +"@salt-ds/styles@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@salt-ds/styles/-/styles-0.1.0.tgz#7cf5da1fe081f7480b9835a37fdb0c1eeb3a8f70" + integrity sha512-OjQyiHiIGlNbS9rO8jVHNFk8uD5noOtSSCAiEPHJjikFflz0BrdO8gUwU4lQseEyFSpz9vK2WIdhwYYYWdIlOQ== -"@salt-ds/theme@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@salt-ds/theme/-/theme-1.8.0.tgz#b663d7cee17b0e9f684a774b186d3ab7278803e2" - integrity sha512-/gasEQGy/xqNGHFQlweKQSn7BTq+jmLoODIWU3CANqhwVmGZiHUsF9hCPK88LJyoEp2VD5DcHfZzmnvhEdJHqw== +"@salt-ds/theme@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@salt-ds/theme/-/theme-1.5.1.tgz#3bcb967b1d0dfaa42d1df620505a124ee243e468" + integrity sha512-zTRzis+jql2gCEuxWhc2cupKgyOF9UoH8wlYNDaHC9VVFRh1O7InHgxtcsDuZTjfsdFahrScK2BCvEORgBpLMA== -"@salt-ds/window@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@salt-ds/window/-/window-0.1.1.tgz#1c26ab1b3e7457d271b2dd8a58bfbb423aee2cbe" - integrity sha512-DKVRbu7YeHdqFECGhC4W3KOF1eWCyGkFyZUEUNZyK4bvPLK1NI8z5JoxGU70dLVsFgjhk4wj3i1MmAVhdXu4lA== +"@salt-ds/window@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@salt-ds/window/-/window-0.1.0.tgz#5f0d9fd92e5a95cd3bcc809cb676e538d39f9d34" + integrity sha512-ApE9dvCMDzUkW5NewfMLfw3FLpq+LdlfuHUZNlrMiyYBth1TBRNrAvhN4XkKkneI9OVCs9K1y7S1uWku0tcL6g== "@sinclair/typebox@^0.24.1": version "0.24.44" @@ -3013,20 +2868,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.0.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" - integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" @@ -3034,20 +2875,6 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/samsam@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-7.0.1.tgz#5b5fa31c554636f78308439d220986b9523fc51f" - integrity sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw== - dependencies: - "@sinonjs/commons" "^2.0.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/text-encoding@^0.7.1": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" - integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== - "@smithy/protocol-http@^1.0.1": version "1.1.0" resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.0.tgz#caf22e01cb825d7490a4915e03d6fa64954ff535" @@ -3065,8 +2892,8 @@ "@swagger-api/apidom-ast@^0.70.0": version "0.70.0" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ast/-/apidom-ast-0.70.0.tgz#8665af62ab8b6b02c7851429d2fe15dc4780e188" - integrity sha512-zQ1RUkXjx5NPYv1bmkoXwlQi7oJC7DJqYi0syTQKswJZDbOkHCwz8cDP/YystOEOL+yyIN7i5EQBIHfy5yAMmA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ast/-/apidom-ast-0.70.0.tgz#8665af62ab8b6b02c7851429d2fe15dc4780e188" + integrity sha1-hmWvYquLawLHhRQp0v4V3EeA4Yg= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@types/ramda" "~0.29.1" @@ -3077,8 +2904,8 @@ "@swagger-api/apidom-core@>=0.70.1 <1.0.0", "@swagger-api/apidom-core@^0.70.1": version "0.70.1" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-core/-/apidom-core-0.70.1.tgz#7982e46da071a3bc7560ffee3c1590f1f176861a" - integrity sha512-doE6escw5LYVxIp5/lfdeNC8jF39JohKeYQ/YuH5wbo5T06uy8nZ3VxcjPHymmQmLlHdEegUIiirp7dSZFZlIg== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-core/-/apidom-core-0.70.1.tgz#7982e46da071a3bc7560ffee3c1590f1f176861a" + integrity sha1-eYLkbaBxo7x1YP/uPBWQ8fF2hho= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3091,8 +2918,8 @@ "@swagger-api/apidom-json-pointer@>=0.70.1 <1.0.0", "@swagger-api/apidom-json-pointer@^0.70.1": version "0.70.1" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.70.1.tgz#bcf72aa550bf06471fca01eca708bdcaf625cf43" - integrity sha512-9NyeflCD0Vy8rce3Eag/Xdu2SGF4nr/mnQ6/vb4VbV9pID12z6EbBWvF9p9l0/sRdA6IePj39B3uBLcPl5b4Dg== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.70.1.tgz#bcf72aa550bf06471fca01eca708bdcaf625cf43" + integrity sha1-vPcqpVC/BkcfygHspwi9yvYlz0M= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3102,8 +2929,8 @@ "@swagger-api/apidom-ns-api-design-systems@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.70.3.tgz#dc72c042f76633887f0abdff614842e0623e2e14" - integrity sha512-61qffrU0AX/7DxaQ6eFz+gSChlI/6dRU8YaBi4N38ZrwaMkRm/ksy8VWUoMcs2qHrqWh8vBijnpKBXi9JHNGKA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.70.3.tgz#dc72c042f76633887f0abdff614842e0623e2e14" + integrity sha1-3HLAQvdmM4h/Cr3/YUhC4GI+LhQ= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3115,8 +2942,8 @@ "@swagger-api/apidom-ns-asyncapi-2@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.70.3.tgz#8cda28a72ee560c3fac3fdf3d488d875e5a823d7" - integrity sha512-Z2xhws7MfclZ2IzFjsfohpRueTZBde6x0GGtWC3dmgq506IhYpA+cpGYUpGHgwzdwLJOzLdwXnafuuXIoVkvJw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.70.3.tgz#8cda28a72ee560c3fac3fdf3d488d875e5a823d7" + integrity sha1-jNoopy7lYMP6w/3z1IjYdeWoI9c= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3128,8 +2955,8 @@ "@swagger-api/apidom-ns-json-schema-draft-4@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.70.3.tgz#5ac39828ac14fb4d547374069c41f8321e3390bb" - integrity sha512-y/WJTQCzm59p8wVPb034AcydzgXNEOVdh+S/OGuHJ+HYUFmVT5NWvBGWC7Ikc9ixXN0v585dzq1QvE2T7H0ZfQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.70.3.tgz#5ac39828ac14fb4d547374069c41f8321e3390bb" + integrity sha1-WsOYKKwU+01Uc3QGnEH4Mh4zkLs= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3141,8 +2968,8 @@ "@swagger-api/apidom-ns-json-schema-draft-6@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.70.3.tgz#97ab3cbc45258500d893980c056517d689da2ba2" - integrity sha512-6u6fB9LIM3z+K9miAAWsOT13LOCQc5G0d/lkRSpVSendvgAWpOCEx1BSgiIoURwkcBl2FB46vYyXefolxTOK7w== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.70.3.tgz#97ab3cbc45258500d893980c056517d689da2ba2" + integrity sha1-l6s8vEUlhQDYk5gMBWUX1onaK6I= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3154,8 +2981,8 @@ "@swagger-api/apidom-ns-json-schema-draft-7@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.70.3.tgz#6e1b27b7b7fe6611715b44efd753c775d3b070fc" - integrity sha512-fVTxhfuHieXyEL4BwoQidXNGAkXjO9N8QekfUpdYDKLxs7Sq80itPZxlq/fbagomS+Q1n5LYfB5h2n5lLOGJDQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.70.3.tgz#6e1b27b7b7fe6611715b44efd753c775d3b070fc" + integrity sha1-bhsnt7f+ZhFxW0Tv11PHddOwcPw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3167,8 +2994,8 @@ "@swagger-api/apidom-ns-openapi-3-0@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.70.3.tgz#5d5594accb1ae856c3aa5c357e526c8458eb3568" - integrity sha512-ci5GNSf1cA/Xc2/1Kjlo2u78McevOYsH6+weEPW4JlHa3hMJyi6dlw16yHBRl7lzdxiO0D64+r0JVX0bOBhqyw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.70.3.tgz#5d5594accb1ae856c3aa5c357e526c8458eb3568" + integrity sha1-XVWUrMsa6FbDqlw1flJshFjrNWg= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3180,8 +3007,8 @@ "@swagger-api/apidom-ns-openapi-3-1@>=0.70.2 <1.0.0", "@swagger-api/apidom-ns-openapi-3-1@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.70.3.tgz#411d4233eb7ae9250cdc366d6d8f31a9c246ed1a" - integrity sha512-/AwVei3FJeC4wAnmNMywyK8zjKiP8CzuuA58G9xqWk2asOH2qjppYjaFAE6BeJ7of7juR5+BvdQg1wXYz8sutA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.70.3.tgz#411d4233eb7ae9250cdc366d6d8f31a9c246ed1a" + integrity sha1-QR1CM+t66SUM3DZtbY8xqcJG7Ro= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3194,8 +3021,8 @@ "@swagger-api/apidom-parser-adapter-api-design-systems-json@^0.70.4": version "0.70.4" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.70.4.tgz#612350a9a48269305cff3e0c56725605c252cdbc" - integrity sha512-xo7mr8/UgVpqe1AMUbNPRnXM3CDgvIXktz7y1abAbRjJ/qhBWsRHBeqf8KQBJjKfJc58i+yMnDXC8hapZplHeA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.70.4.tgz#612350a9a48269305cff3e0c56725605c252cdbc" + integrity sha1-YSNQqaSCaTBc/z4MVnJWBcJSzbw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3207,8 +3034,8 @@ "@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.70.3.tgz#6ed0cebc67914ba5796c3692e0ef888995bb2b6d" - integrity sha512-DJJjwv3KuL5hnMfQgpD7S2tbwxalyTsjkaFF6uxcIMJRr9hdKKNDkvJkel/r56FE2pp9WCBhP6Wm1JK6PGI3Pg== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.70.3.tgz#6ed0cebc67914ba5796c3692e0ef888995bb2b6d" + integrity sha1-btDOvGeRS6V5bDaS4O+IiZW7K20= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3220,8 +3047,8 @@ "@swagger-api/apidom-parser-adapter-asyncapi-json-2@^0.70.4": version "0.70.4" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.70.4.tgz#245fb13af319303cab2d7f1fdefe787ef5177d94" - integrity sha512-eaqQ/93xxVFM+138AL2z5jODyXJlpf5RNRXrE/HaG3PWLB+a7CN9eCy+czP1E6VgC0Wia1kuYf/Bx9aIgNQ6sQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.70.4.tgz#245fb13af319303cab2d7f1fdefe787ef5177d94" + integrity sha1-JF+xOvMZMDyrLX8f3v54fvUXfZQ= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3233,8 +3060,8 @@ "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.70.3.tgz#654c5243c2700309c4a9bc6be13085057513f1dc" - integrity sha512-UQxxPoxWcgp9laW8kOdzd7991/wgYJ2b7lb3XBhmVydRbPM1AD5L3G/zM5ItVBQZIZ398kDX/mfGTKAJr5pJrA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.70.3.tgz#654c5243c2700309c4a9bc6be13085057513f1dc" + integrity sha1-ZUxSQ8JwAwnEqbxr4TCFBXUT8dw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3246,8 +3073,8 @@ "@swagger-api/apidom-parser-adapter-json@^0.70.4": version "0.70.4" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.70.4.tgz#8b08640088f19f38a3374aaa7d1dd56be36d0cfd" - integrity sha512-Clr4VHocpdDi/bQ4ZSuhN3Ak3g8oLjKtCqjQO34YDrFrKPD2twznALBdVjIHa9D+g5YJYkAQ+5wOrK5uvo/5lQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.70.4.tgz#8b08640088f19f38a3374aaa7d1dd56be36d0cfd" + integrity sha1-iwhkAIjxnzijN0qqfR3Va+NtDP0= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3262,8 +3089,8 @@ "@swagger-api/apidom-parser-adapter-openapi-json-3-0@^0.70.4": version "0.70.4" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.70.4.tgz#96504e559d976f53926d80a5d458e59bc7b5bfe0" - integrity sha512-VfSR/TkB7rN5qAm6nGBrJzGuwhvFH03wojPVtjQEUUlDfmiFK0Snhdzq/65qK8WxSYidIBVgWHEreYif28AhBQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.70.4.tgz#96504e559d976f53926d80a5d458e59bc7b5bfe0" + integrity sha1-llBOVZ2Xb1OSbYCl1Fjlm8e1v+A= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3275,8 +3102,8 @@ "@swagger-api/apidom-parser-adapter-openapi-json-3-1@^0.70.4": version "0.70.4" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.70.4.tgz#a51e8df9842bc0988b089501f4e73dc079933b07" - integrity sha512-XB5owOAI7YtRi7lD1R5vI3zFn7EbjKn/FkSMjC0m4CfienX9f9EkromSWE5i5dQGpCfkpHp/iOJ00xODly1nUQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.70.4.tgz#a51e8df9842bc0988b089501f4e73dc079933b07" + integrity sha1-pR6N+YQrwJiLCJUB9Oc9wHmTOwc= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3288,8 +3115,8 @@ "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.70.3.tgz#9cfbcaae9c02f0c53f38619f97f8c28c98d1eeb6" - integrity sha512-4vkN+jy4HKYQJc0M7sVD4pqT5n2a7nIwswtHujdMVR2YXXY8RTzBg4DO28qVUoAWUsE0C8Tp+hopDPeCtpYduA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.70.3.tgz#9cfbcaae9c02f0c53f38619f97f8c28c98d1eeb6" + integrity sha1-nPvKrpwC8MU/OGGfl/jCjJjR7rY= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3301,8 +3128,8 @@ "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.70.3.tgz#1ebd92b90e06e1c39f5b9e9777f06f95fc87ca2c" - integrity sha512-4xoyOYrG3YBdr/mjNLzDAIdOxFSYR0gh3lRx3/IVkwmhp0rSVrGdD2hFtgoVrj2MiKR60SUbzcnCXJ4MLVmUbQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.70.3.tgz#1ebd92b90e06e1c39f5b9e9777f06f95fc87ca2c" + integrity sha1-Hr2SuQ4G4cOfW56Xd/BvlfyHyiw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3314,8 +3141,8 @@ "@swagger-api/apidom-parser-adapter-yaml-1-2@^0.70.3": version "0.70.3" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.70.3.tgz#a8436c5dc10279f84fe92e5eaeb0798288f4be49" - integrity sha512-e+lGfUfduduIT+nyJtxDFXLqoulvz2sWB9vt+4gmq/SMc0uvFBEcffAeBUOPw4J3d4pMux2eRRzA29YF7/lXng== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.70.3.tgz#a8436c5dc10279f84fe92e5eaeb0798288f4be49" + integrity sha1-qENsXcECefhP6S5errB5goj0vkk= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3330,8 +3157,8 @@ "@swagger-api/apidom-reference@>=0.70.2 <1.0.0": version "0.70.4" - resolved "https://registry.yarnpkg.com/@swagger-api/apidom-reference/-/apidom-reference-0.70.4.tgz#5579b8528b0cf80ecf4b60a669032d96c3dee4b9" - integrity sha512-+jrDtbJc7zVqHumyDu1rGXZD3BwrD8qu+FaC7+9iZThU2GAEOs4VvTcCkPQLfVtpIrv1fPvNkzean27MJZxpkw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-reference/-/apidom-reference-0.70.4.tgz#5579b8528b0cf80ecf4b60a669032d96c3dee4b9" + integrity sha1-VXm4UosM+A7PS2CmaQMtlsPe5Lk= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3639,8 +3466,8 @@ "@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.1": version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha1-ESSq/lEYy1kZd66xzqrtEHDrA58= dependencies: "@types/react" "*" hoist-non-react-statics "^3.3.0" @@ -3720,8 +3547,8 @@ "@types/json-schema@^7.0.11": version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha1-1w+rpwOdX8pUyDx9urQQUdK29ss= "@types/json-schema@^7.0.9": version "7.0.11" @@ -3742,8 +3569,8 @@ "@types/lodash.clonedeep@^4.5.7": version "4.5.7" - resolved "https://registry.yarnpkg.com/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.7.tgz#0e119f582ed6f9e6b373c04a644651763214f197" - integrity sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.7.tgz#0e119f582ed6f9e6b373c04a644651763214f197" + integrity sha1-DhGfWC7W+eazc8BKZEZRdjIU8Zc= dependencies: "@types/lodash" "*" @@ -3849,8 +3676,8 @@ "@types/ramda@~0.29.1": version "0.29.3" - resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.29.3.tgz#6e4d4066df900a3456cf402bcef9b78b6990a754" - integrity sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@types/ramda/-/ramda-0.29.3.tgz#6e4d4066df900a3456cf402bcef9b78b6990a754" + integrity sha1-bk1AZt+QCjRWz0Arzvm3i2mQp1Q= dependencies: types-ramda "^0.29.4" @@ -3900,18 +3727,6 @@ dependencies: "@types/node" "*" -"@types/sinon@^10.0.10": - version "10.0.13" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" - integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== - "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" @@ -3933,8 +3748,8 @@ "@types/swagger-ui-react@^4.18.0": version "4.18.0" - resolved "https://registry.yarnpkg.com/@types/swagger-ui-react/-/swagger-ui-react-4.18.0.tgz#6668a7f44c825f9dbd46e3ecb8a9a40f745ce861" - integrity sha512-XtvFXmj46Zibe89tFQwSQknrq1NxEtOep2rZuxth7K88tyPEP00FnoA6H7ATYhocAEA4XUWaNHNFWFRl1KX8aQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@types/swagger-ui-react/-/swagger-ui-react-4.18.0.tgz#6668a7f44c825f9dbd46e3ecb8a9a40f745ce861" + integrity sha1-Zmin9EyCX529RuPsuKmkD3Rc6GE= dependencies: "@types/react" "*" @@ -3964,8 +3779,8 @@ "@types/use-sync-external-store@^0.0.3": version "0.0.3" - resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" - integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" + integrity sha1-tnJdX0rySs4zs2+v0pUTbnVQn0M= "@types/uuid@^8.3.4": version "8.3.4" @@ -4210,18 +4025,6 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abstract-logging@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" - integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== - accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -4306,13 +4109,6 @@ ahocorasick@1.0.2: resolved "https://registry.yarnpkg.com/ahocorasick/-/ahocorasick-1.0.2.tgz#9eee93aef9d02bfb476d9b648d9b7a40ef2fd500" integrity sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA== -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -4323,16 +4119,6 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ajv@^8.0.1: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" @@ -4397,11 +4183,6 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -4544,11 +4325,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha1-YCzUtG6EStTv/JKoARo8RuAjjcI= -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - attr-accept@^2.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" @@ -4566,24 +4342,6 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -avvio@^8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/avvio/-/avvio-8.2.1.tgz#b5a482729847abb84d5aadce06511c04a0a62f82" - integrity sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw== - dependencies: - archy "^1.0.0" - debug "^4.0.0" - fastq "^1.6.1" - -aws-sdk-client-mock@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/aws-sdk-client-mock/-/aws-sdk-client-mock-2.0.1.tgz#c37ec569fa88688d8d88d7a7f028af26d6d2086e" - integrity sha512-Ib/AnI8ZdoIxOBbKSs28TUwJb7FI/AYVYn48PcXx6guk5fBs4GZJJEc+Ci9aImRtVmgO6jHN/6Etz17fr6j3qw== - dependencies: - "@types/sinon" "^10.0.10" - sinon "^14.0.2" - tslib "^2.1.0" - axe-core@^4.4.3: version "4.5.0" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.0.tgz#6efe2ecdba205fcc9d7ddb3d48c2cf630f70eb5e" @@ -4591,8 +4349,8 @@ axe-core@^4.4.3: axios@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + integrity sha1-OKe/EiTNMI3icRRgOLVR1yXwvh8= dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -4646,22 +4404,6 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -"babel-plugin-styled-components@>= 1.12.0": - version "2.0.7" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" - integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-module-imports" "^7.16.0" - babel-plugin-syntax-jsx "^6.18.0" - lodash "^4.17.11" - picomatch "^2.3.0" - -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -4722,8 +4464,8 @@ binary-extensions@^2.0.0: bl@^4.0.3, bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo= dependencies: buffer "^5.5.0" inherits "^2.0.4" @@ -4747,6 +4489,24 @@ body-parser@1.20.0: type-is "~1.6.18" unpipe "1.0.0" +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -4762,8 +4522,8 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4= dependencies: balanced-match "^1.0.0" @@ -4834,14 +4594,6 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - busboy@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" @@ -4922,11 +4674,6 @@ camelcase@^6.2.0, camelcase@^6.3.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001400: version "1.0.30001436" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz" @@ -5080,8 +4827,8 @@ chokidar@^3.4.2, chokidar@^3.5.3: chownr@^1.1.1: version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs= ci-info@^3.1.0, ci-info@^3.2.0: version "3.5.0" @@ -5190,10 +4937,10 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -clsx@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" - integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== +clsx@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== co@^4.6.0: version "4.6.0" @@ -5366,9 +5113,9 @@ core-js-pure@^3.25.1: integrity sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA== core-js-pure@^3.30.2: - version "3.31.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.31.0.tgz#052fd9e82fbaaf86457f5db1fadcd06f15966ff2" - integrity sha512-/AnE9Y4OsJZicCzIe97JP5XoPKQJfTuEG43aEVLFJGOJpyqELod+pE6LEl63DfG1Mp8wX97LDaDpy1GmLEUxlg== + version "3.31.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/core-js-pure/-/core-js-pure-3.31.1.tgz#73d154958881873bc19381df80bddb20c8d0cdb5" + integrity sha1-c9FUlYiBhzvBk4HfgL3bIMjQzbU= core-js@^3.14.0: version "3.26.1" @@ -5447,20 +5194,6 @@ crypt@0.0.2: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== - -css-to-react-native@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" - integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - css-what@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" @@ -5498,11 +5231,6 @@ csstype@^3.0.2, csstype@^3.0.7: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== -csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - csv-generate@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" @@ -5910,8 +5638,8 @@ deepmerge@^4.2.2: deepmerge@~4.3.0: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha1-RLXyFHzTsA1LVhN2hZZvJv0l3Uo= defaults@^1.0.3: version "1.0.4" @@ -5989,8 +5717,8 @@ detect-indent@^6.0.0: detect-libc@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha1-4Yl6qI+mrRl4YpN/vARB7zUu4M0= detect-newline@^3.0.0: version "3.1.0" @@ -6073,8 +5801,8 @@ dompurify@2.4.1: dompurify@=3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.3.tgz#4b115d15a091ddc96f232bcef668550a2f6f1430" - integrity sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/dompurify/-/dompurify-3.0.3.tgz#4b115d15a091ddc96f232bcef668550a2f6f1430" + integrity sha1-SxFdFaCR3clvIyvO9mhVCi9vFDA= dot-case@^3.0.4: version "3.0.4" @@ -6150,8 +5878,8 @@ encodeurl@~1.0.2: end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA= dependencies: once "^1.4.0" @@ -6708,11 +6436,6 @@ event-target-polyfill@^0.0.3: resolved "https://registry.yarnpkg.com/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz#ed373295f3b257774b5d75afb2599331d9f3406c" integrity sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ== -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -6755,8 +6478,8 @@ exit@^0.1.2: expand-template@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha1-bhSz/O4POmNA7LV9LokYaSBSpHw= expect@^29.0.0: version "29.1.2" @@ -6824,6 +6547,43 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +express@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -6850,16 +6610,6 @@ external-editor@^3.0.3, external-editor@^3.1.0: iconv-lite "^0.4.24" tmp "^0.0.33" -fast-content-type-parse@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz#4087162bf5af3294d4726ff29b334f72e3a1092c" - integrity sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ== - -fast-decode-uri-component@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" - integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -6902,40 +6652,11 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM= -fast-json-stringify@^5.7.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz#b229ed01ac5f92f3b82001a916c31324652f46d7" - integrity sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ== - dependencies: - "@fastify/deepmerge" "^1.0.0" - ajv "^8.10.0" - ajv-formats "^2.1.1" - fast-deep-equal "^3.1.3" - fast-uri "^2.1.0" - rfdc "^1.2.0" - fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-querystring@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" - integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== - dependencies: - fast-decode-uri-component "^1.0.1" - -fast-redact@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" - integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== - -fast-uri@^2.0.0, fast-uri@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" - integrity sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg== - fast-xml-parser@4.2.5: version "4.2.5" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" @@ -6943,33 +6664,6 @@ fast-xml-parser@4.2.5: dependencies: strnum "^1.0.5" -fastify-plugin@^4.0.0, fastify-plugin@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-4.5.1.tgz#44dc6a3cc2cce0988bc09e13f160120bbd91dbee" - integrity sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ== - -fastify@^4.23.2: - version "4.23.2" - resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.23.2.tgz#7072f04b544540d2523afb4a54d4095d187f5444" - integrity sha512-WFSxsHES115svC7NrerNqZwwM0UOxbC/P6toT9LRHgAAFvG7o2AN5W+H4ihCtOGuYXjZf4z+2jXC89rVEoPWOA== - dependencies: - "@fastify/ajv-compiler" "^3.5.0" - "@fastify/error" "^3.2.0" - "@fastify/fast-json-stringify-compiler" "^4.3.0" - abstract-logging "^2.0.1" - avvio "^8.2.1" - fast-content-type-parse "^1.0.0" - fast-json-stringify "^5.7.0" - find-my-way "^7.6.0" - light-my-request "^5.9.1" - pino "^8.12.0" - process-warning "^2.2.0" - proxy-addr "^2.0.7" - rfdc "^1.3.0" - secure-json-parse "^2.5.0" - semver "^7.5.0" - toad-cache "^3.2.0" - fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -6977,13 +6671,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fastq@^1.6.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - fault@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" @@ -7032,15 +6719,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-my-way@^7.6.0: - version "7.6.2" - resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-7.6.2.tgz#4dd40200d3536aeef5c7342b10028e04cf79146c" - integrity sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw== - dependencies: - fast-deep-equal "^3.1.3" - fast-querystring "^1.0.0" - safe-regex2 "^2.0.0" - find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -7092,8 +6770,8 @@ flatted@^3.1.0: follow-redirects@^1.15.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha1-tGCGQUS6Y/JoEJbydMTlcCbaLBM= for-each@^0.3.3: version "0.3.3" @@ -7155,8 +6833,8 @@ fresh@0.5.2: fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha1-a+Dem+mYzhavivwkSXue6bfM2a0= fs-extra@^10.1.0: version "10.1.0" @@ -7288,8 +6966,8 @@ get-symbol-description@^1.0.0: github-from-package@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= github-slugger@^1.4.0: version "1.4.0" @@ -7425,9 +7103,9 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== "graphql@^15.0.0 || ^16.0.0": - version "16.8.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" - integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== gray-matter@^4.0.3: version "4.0.3" @@ -7581,7 +7259,7 @@ highlight.js@^10.4.1, highlight.js@~10.7.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -7760,8 +7438,8 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: ini@^1.3.4, ini@~1.3.0: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw= inline-style-parser@0.1.1: version "0.1.1" @@ -8185,11 +7863,6 @@ is-wsl@^2.1.1: dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -8841,11 +8514,6 @@ jsonfile@^6.0.1: array-includes "^3.1.5" object.assign "^4.1.3" -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== - jwt-decode@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" @@ -8923,15 +8591,6 @@ lexical@^0.11.1: resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.11.1.tgz#a4ca061c16d9798b3c0b9f2f8e89cc077385e4ea" integrity sha512-PhAGADxqzwJldmkVK5tvkaARTULCdeJjfhxWTnJQXTAlApE9heJir7SWxbxeUx1G5gdKZQFicGhOQlDXJmma2Q== -light-my-request@^5.9.1: - version "5.11.0" - resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-5.11.0.tgz#90e446c303b3a47b59df38406d5f5c2cf224f2d1" - integrity sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA== - dependencies: - cookie "^0.5.0" - process-warning "^2.0.0" - set-cookie-parser "^2.4.1" - lilconfig@2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" @@ -9016,8 +8675,8 @@ lodash-es@^4.17.15, lodash-es@^4.17.21: lodash.clonedeep@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.debounce@^4: version "4.0.8" @@ -9044,7 +8703,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21: +lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw= @@ -10008,8 +9667,8 @@ min-indent@^1.0.0, min-indent@^1.0.1: minim@~0.23.8: version "0.23.8" - resolved "https://registry.yarnpkg.com/minim/-/minim-0.23.8.tgz#a529837afe1654f119dfb68ce7487dd8d4866b9c" - integrity sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/minim/-/minim-0.23.8.tgz#a529837afe1654f119dfb68ce7487dd8d4866b9c" + integrity sha1-pSmDev4WVPEZ37aM50h92NSGa5w= dependencies: lodash "^4.15.0" @@ -10022,8 +9681,8 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: minimatch@^7.4.3: version "7.4.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" - integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha1-hF1vJU2PSl5P1rr0TV8QyESDZfs= dependencies: brace-expansion "^2.0.1" @@ -10043,29 +9702,29 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: minimist@^1.2.3: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha1-waRk52kzAuCCoHXO4MBXdBrEdyw= mixme@^0.5.1: version "0.5.4" resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: +mkdirp-classic@^0.5.2: + version "0.5.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" + integrity sha1-VMRBzkyWzXeQ4QtBqHqlEGjsqys= + +mkdirp-classic@^0.5.3: version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha1-+hDJEVzG2IZb4iG6R+6b7XhgERM= mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mock-fs@^4.14.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== - moment-mini@^2.24.0: version "2.29.4" resolved "https://registry.yarnpkg.com/moment-mini/-/moment-mini-2.29.4.tgz#cbbcdc58ce1b267506f28ea6668dbe060a32758f" @@ -10149,8 +9808,8 @@ mute-stream@0.0.8: nan@^2.14.0, nan@^2.14.1, nan@^2.17.0: version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha1-wBUKI2ihgvAz6apRlex26kGhmcs= nanoclone@^0.2.1: version "0.2.1" @@ -10164,8 +9823,8 @@ nanoid@^3.3.4: napi-build-utils@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha1-sf3cCyxG44Cgt6dvmE3UfEGhOAY= natural-compare@^1.4.0: version "1.4.0" @@ -10241,17 +9900,6 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nise@^5.1.2: - version "5.1.4" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" - integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^10.0.2" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -10267,8 +9915,8 @@ no-scroll@^2.1.1: node-abi@^3.3.0: version "3.45.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5" - integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5" + integrity sha1-9WjxY6O/ylqs/OH77uH6LMmEQfU= dependencies: semver "^7.3.5" @@ -10531,11 +10179,6 @@ oidc-token-hash@^5.0.1: resolved "https://registry.yarnpkg.com/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz#ae6beec3ec20f0fd885e5400d175191d6e2f10c6" integrity sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ== -on-exit-leak-free@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.1.tgz#762dc7db809fa43303e64024f0ea0af54dd81294" - integrity sha512-IPTBZ175tI0sSg0ikDcCDfa5dPgcFbJgABsTHsY+Mkdm6Y2VKGuchubXSvTuu5tSPl4mqt53o3nLI74HTs8UgQ== - on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -10865,14 +10508,7 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-to-regexp@^6.1.0, path-to-regexp@^6.2.0: +path-to-regexp@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== @@ -10902,7 +10538,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha1-y1vcdP8/UYkiNur3nWi8RFZKuBw= -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha1-O6ODNzNkbZ0+SZWUbBNlpn+wekI= @@ -10927,36 +10563,6 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pino-abstract-transport@v1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" - integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA== - dependencies: - readable-stream "^4.0.0" - split2 "^4.0.0" - -pino-std-serializers@^6.0.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" - integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== - -pino@^8.12.0: - version "8.15.3" - resolved "https://registry.yarnpkg.com/pino/-/pino-8.15.3.tgz#8d5d9b440f0218e8c03926d8f2e5bd0854c716eb" - integrity sha512-wDds1+DH8VaREe4fpLEKttGnDoLiX3KR3AP5bHsrRwEZ93y+Z/HFC03zkGSxpIGWKDHg24sloVqGcIWoLCkTLQ== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.1.1" - on-exit-leak-free "^2.1.0" - pino-abstract-transport v1.1.0 - pino-std-serializers "^6.0.0" - process-warning "^2.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.2.0" - safe-stable-stringify "^2.3.1" - sonic-boom "^3.1.0" - thread-stream "^2.0.0" - pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -10974,11 +10580,6 @@ playwright-core@1.33.0: resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.33.0.tgz#269efe29a927cd6d144d05f3c2d2f72bd72447a1" integrity sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw== -postcss-value-parser@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - postcss@8.4.14: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" @@ -11002,8 +10603,8 @@ preact@^10.6.3: prebuild-install@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" - integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha1-3pfVs0pwoMgTNP0kZB8qFwI1LkU= dependencies: detect-libc "^2.0.0" expand-template "^2.0.3" @@ -11097,15 +10698,10 @@ prismjs@~1.27.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -process-warning@^2.0.0, process-warning@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.2.0.tgz#008ec76b579820a8e5c35d81960525ca64feb626" - integrity sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg== - process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= progress@^2.0.0: version "2.0.3" @@ -11151,7 +10747,7 @@ property-information@^6.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.2.0.tgz#b74f522c31c097b5149e3c3cb8d7f3defd986a1d" integrity sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg== -proxy-addr@^2.0.7, proxy-addr@~2.0.7: +proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU= @@ -11161,8 +10757,8 @@ proxy-addr@^2.0.7, proxy-addr@~2.0.7: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha1-4QLxbKNVQkhldV0sno6k8k1Yw+I= pseudomap@^1.0.2: version "1.0.2" @@ -11176,8 +10772,8 @@ psl@^1.1.33: pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ= dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -11199,7 +10795,7 @@ qs@6.10.3: dependencies: side-channel "^1.0.4" -qs@^6.10.2: +qs@6.11.0, qs@^6.10.2: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== @@ -11221,11 +10817,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha1-SSkii7xyTfrEPg77BYyve2z7YkM= -quick-format-unescaped@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== - quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -11238,13 +10829,13 @@ quick-lru@^5.1.1: ramda-adjunct@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/ramda-adjunct/-/ramda-adjunct-4.0.0.tgz#99873cc707e86207ec7e757385144b3f235b7c59" - integrity sha512-W/NiJAlZdwZ/iUkWEQQgRdH5Szqqet1WoVH9cdqDVjFbVaZHuJfJRvsxqHhvq6tZse+yVbFatLDLdVa30wBlGQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/ramda-adjunct/-/ramda-adjunct-4.0.0.tgz#99873cc707e86207ec7e757385144b3f235b7c59" + integrity sha1-mYc8xwfoYgfsfnVzhRRLPyNbfFk= ramda@~0.29.0: version "0.29.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" - integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" + integrity sha1-+7tnp0CnVMiky7QeKm4OuFB/Vfs= randexp@^0.5.3: version "0.5.3" @@ -11278,8 +10869,8 @@ raw-body@2.5.1: rc@^1.2.7: version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0= dependencies: deep-extend "^0.6.0" ini "~1.3.0" @@ -11342,13 +10933,6 @@ react-error-boundary@^3.1.4: dependencies: "@babel/runtime" "^7.12.5" -react-error-boundary@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.0.11.tgz#36bf44de7746714725a814630282fee83a7c9a1c" - integrity sha512-U13ul67aP5DOSPNSCWQ/eO0AQEYzEFkVljULQIjMV0KlffTAhxuDoBKdO0pb/JZ8mDhMKFZ9NZi0BmLGUiNphw== - dependencies: - "@babel/runtime" "^7.12.5" - react-immutable-proptypes@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz#cce96d68cc3c18e89617cbf3092d08e35126af4a" @@ -11414,15 +10998,6 @@ react-markdown@^6.0.2: unist-util-visit "^2.0.0" vfile "^4.0.0" -react-pro-sidebar@1.0.0-alpha.7: - version "1.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/react-pro-sidebar/-/react-pro-sidebar-1.0.0-alpha.7.tgz#4b6558b58c5db568a938c1d58a263eafd270c11b" - integrity sha512-6djCGLrLAHRQkdIWH7Vk1jdgYIQi2cxvEXD5tKToxwSbHaWvhe9l6pAxk9cmn9Xh1rYDxa5YEtfXLqAug5KGRg== - dependencies: - "@popperjs/core" "^2.11.6" - classnames "^2.3.2" - styled-components "^5.3.6" - react-pro-sidebar@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-pro-sidebar/-/react-pro-sidebar-1.0.0.tgz#c1836b06da2e4d9614c227e9276c149317f36494" @@ -11435,8 +11010,8 @@ react-pro-sidebar@^1.0.0: react-redux@^8.0.5: version "8.1.1" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.1.tgz#8e740f3fd864a4cd0de5ba9cdc8ad39cc9e7c81a" - integrity sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/react-redux/-/react-redux-8.1.1.tgz#8e740f3fd864a4cd0de5ba9cdc8ad39cc9e7c81a" + integrity sha1-jnQPP9hkpM0N5bqc3IrTnMnnyBo= dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" @@ -11574,8 +11149,8 @@ read-yaml-file@^1.1.0: readable-stream@^3.1.1: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha1-VqmzbqllwAxak+8x6xEaDxEFaWc= dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -11590,17 +11165,6 @@ readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^4.0.0: - version "4.4.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.2.tgz#e6aced27ad3b9d726d8308515b9a1b98dc1b9d13" - integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== - dependencies: - abort-controller "^3.0.0" - buffer "^6.0.3" - events "^3.3.0" - process "^0.11.10" - string_decoder "^1.3.0" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -11613,11 +11177,6 @@ reading-time@^1.5.0: resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" integrity sha1-0qfxtgV8suFpvq+HETzDQRtbxbs= -real-require@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" - integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -11684,11 +11243,6 @@ regenerator-runtime@^0.13.11: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" @@ -11860,8 +11414,8 @@ requires-port@^1.0.0: reselect@^4.1.8: version "4.1.8" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" - integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" + integrity sha1-P13GceoWjczes+FBI29p8C6uxSQ= resize-observer-polyfill@1.5.1: version "1.5.1" @@ -11953,7 +11507,7 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@^0.2.0, ret@~0.2.0: +ret@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== @@ -11963,7 +11517,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY= -rfdc@^1.2.0, rfdc@^1.3.0: +rfdc@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== @@ -11992,13 +11546,6 @@ robust-predicates@^3.0.0: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== -rtl-css-js@^1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80" - integrity sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg== - dependencies: - "@babel/runtime" "^7.1.2" - run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -12056,18 +11603,6 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -safe-regex2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/safe-regex2/-/safe-regex2-2.0.0.tgz#b287524c397c7a2994470367e0185e1916b1f5b9" - integrity sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ== - dependencies: - ret "~0.2.0" - -safe-stable-stringify@^2.3.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -12100,11 +11635,6 @@ section-matter@^1.0.0: extend-shallow "^2.0.1" kind-of "^6.0.0" -secure-json-parse@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" - integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== - "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -12115,7 +11645,7 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0: +semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -12172,11 +11702,6 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-cookie-parser@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" - integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== - set-cookie-parser@^2.4.6: version "2.5.1" resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz#ddd3e9a566b0e8e0862aca974a6ac0e01349430b" @@ -12195,11 +11720,6 @@ sha.js@^2.4.11: inherits "^2.0.1" safe-buffer "^5.0.1" -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -12240,8 +11760,8 @@ shelljs@^0.8.5: short-unique-id@^4.4.4: version "4.4.4" - resolved "https://registry.yarnpkg.com/short-unique-id/-/short-unique-id-4.4.4.tgz#a45df68303bbd2dbb5785ed7708e891809c9cb7a" - integrity sha512-oLF1NCmtbiTWl2SqdXZQbo5KM1b7axdp0RgQLq8qCBBLoq+o3A5wmLrNM6bZIh54/a8BJ3l69kTXuxwZ+XCYuw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/short-unique-id/-/short-unique-id-4.4.4.tgz#a45df68303bbd2dbb5785ed7708e891809c9cb7a" + integrity sha1-pF32gwO70tu1eF7XcI6JGAnJy3o= side-channel@^1.0.4: version "1.0.4" @@ -12259,8 +11779,8 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: simple-concat@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha1-9Gl2CCujXCJj8cirXt/ibEHJVS8= simple-encryptor@^3.0.0: version "3.0.0" @@ -12271,25 +11791,13 @@ simple-encryptor@^3.0.0: simple-get@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha1-SjnbVJKHyXnTUhEvoD/Zn9a8NUM= dependencies: decompress-response "^6.0.0" once "^1.3.1" simple-concat "^1.0.0" -sinon@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-14.0.2.tgz#585a81a3c7b22cf950762ac4e7c28eb8b151c46f" - integrity sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^9.1.2" - "@sinonjs/samsam" "^7.0.1" - diff "^5.0.0" - nise "^5.1.2" - supports-color "^7.2.0" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -12356,13 +11864,6 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -sonic-boom@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.4.0.tgz#8582d1385ea3bf79ca953329043bfbdbabe58eb9" - integrity sha512-zSe9QQW30nPzjkSJ0glFQO5T9lHsk39tz+2bAAwCj8CNgEG8ItZiX7Wb2ZgA8I04dwRGCcf1m3ABJa8AYm12Fw== - dependencies: - atomic-sleep "^1.0.0" - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -12458,11 +11959,6 @@ split.js@^1.6.0: resolved "https://registry.yarnpkg.com/split.js/-/split.js-1.6.5.tgz#f7f61da1044c9984cb42947df4de4fadb5a3f300" integrity sha512-mPTnGCiS/RiuTNsVhCm9De9cCAUsrNFFviRbADdKiiV+Kk8HKp/0fWu7Kr8pi3/yBmsqLFHuXGT9UUZ+CNLwFw== -split2@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -12477,8 +11973,8 @@ stack-utils@^2.0.3: stampit@^4.3.2: version "4.3.2" - resolved "https://registry.yarnpkg.com/stampit/-/stampit-4.3.2.tgz#cfd3f607dd628a161ce6305621597994b4d56573" - integrity sha512-pE2org1+ZWQBnIxRPrBM2gVupkuDD0TTNIo1H6GdT/vO82NXli2z8lRE8cu/nBIHrcOCXFBAHpb9ZldrB2/qOA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/stampit/-/stampit-4.3.2.tgz#cfd3f607dd628a161ce6305621597994b4d56573" + integrity sha1-z9P2B91iihYc5jBWIVl5lLTVZXM= statuses@2.0.1, statuses@^2.0.0: version "2.0.1" @@ -12590,7 +12086,7 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" -string_decoder@^1.1.1, string_decoder@^1.3.0: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -12665,8 +12161,8 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: strip-json-comments@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= strnum@^1.0.5: version "1.0.5" @@ -12680,22 +12176,6 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -styled-components@^5.3.6: - version "5.3.6" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1" - integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^1.1.0" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1.12.0" - css-to-react-native "^3.0.0" - hoist-non-react-statics "^3.0.0" - shallowequal "^1.1.0" - supports-color "^5.5.0" - styled-jsx@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" @@ -12708,19 +12188,14 @@ stylis@4.1.3, stylis@^4.1.2: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== -stylis@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" - integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== - -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= dependencies: has-flag "^3.0.0" -supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo= @@ -12746,8 +12221,8 @@ supports-preserve-symlinks-flag@^1.0.0: swagger-client@^3.19.10: version "3.19.10" - resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.19.10.tgz#90bff7d901d0676625d880a842b2f54d79262ece" - integrity sha512-r+uGryGdxYQf7Aa9WzK226RigDaWAutDqP903O1QFA47jnJZ5RCkaV3X8nadXkNoZRlsZv8sEKOB8UoDY99BBA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/swagger-client/-/swagger-client-3.19.10.tgz#90bff7d901d0676625d880a842b2f54d79262ece" + integrity sha1-kL/32QHQZ2Yl2ICoQrL1TXkmLs4= dependencies: "@babel/runtime-corejs3" "^7.20.13" "@swagger-api/apidom-core" ">=0.70.1 <1.0.0" @@ -12769,8 +12244,8 @@ swagger-client@^3.19.10: swagger-ui-react@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/swagger-ui-react/-/swagger-ui-react-5.1.0.tgz#c89af42f2da23a37e7e80d3e18ca77e2558c7a26" - integrity sha512-ivbw72f6mUZ431H4OC3cMhJy+ONBlmQ81TNAt7DKkUCW6nG+GboHCpLF1SXPCstzUskbAuZq0hOk3BuKb20pSA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/swagger-ui-react/-/swagger-ui-react-5.1.0.tgz#c89af42f2da23a37e7e80d3e18ca77e2558c7a26" + integrity sha1-yJr0Ly2iOjfn6A0+GMp34lWMeiY= dependencies: "@babel/runtime-corejs3" "^7.22.5" "@braintree/sanitize-url" "=6.0.2" @@ -12837,8 +12312,8 @@ table@^6.0.9: tar-fs@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha1-SJoVq4Xx8L76uzcLfeT561y+h4Q= dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" @@ -12847,8 +12322,8 @@ tar-fs@^2.0.0: tar-stream@^2.1.4: version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha1-rK2EwoQTawYNw/qmRHSqmuvXcoc= dependencies: bl "^4.0.3" end-of-stream "^1.4.1" @@ -12875,13 +12350,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thread-stream@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.4.0.tgz#5def29598d1d4171ba3bace7e023a71d87d99c07" - integrity sha512-xZYtOtmnA63zj04Q+F9bdEay5r47bvpo1CaNqsKi7TpoJHcotUez8Fkfo2RJWpW91lnnaApdpRbVwCWsy+ifcw== - dependencies: - real-require "^0.2.0" - through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -12923,11 +12391,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toad-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/toad-cache/-/toad-cache-3.2.0.tgz#8221a1906ce7bd18cd56b22f5603bcf9e38b54f9" - integrity sha512-Hj5zSqBS6OHbZoQk9IU8VqIr+0JUpwzunnwSlFJhG8aJSInYUMEuzItl3kJsGteTPd1qtflafdRHlRtUazYeqg== - toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" @@ -12977,22 +12440,22 @@ tree-kill@^1.2.2: tree-sitter-json@=0.20.0: version "0.20.0" - resolved "https://registry.yarnpkg.com/tree-sitter-json/-/tree-sitter-json-0.20.0.tgz#e17bb4917e8d5fe9f2f0d5eaec603e2d3552b07c" - integrity sha512-PteOLH+Tx6Bz4ZA/d40/DbkiSXXRM/gKahhHI8hQ1lWNfFvdknnz9k3Mz84ol5srRyLboJ8wp8GSkhZ6ht9EGQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tree-sitter-json/-/tree-sitter-json-0.20.0.tgz#e17bb4917e8d5fe9f2f0d5eaec603e2d3552b07c" + integrity sha1-4Xu0kX6NX+ny8NXq7GA+LTVSsHw= dependencies: nan "^2.14.1" tree-sitter-yaml@=0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/tree-sitter-yaml/-/tree-sitter-yaml-0.5.0.tgz#c617ba72837399d8105ec10cdb4c360e1ed76076" - integrity sha512-POJ4ZNXXSWIG/W4Rjuyg36MkUD4d769YRUGKRqN+sVaj/VCo6Dh6Pkssn1Rtewd5kybx+jT1BWMyWN0CijXnMA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tree-sitter-yaml/-/tree-sitter-yaml-0.5.0.tgz#c617ba72837399d8105ec10cdb4c360e1ed76076" + integrity sha1-xhe6coNzmdgQXsEM20w2Dh7XYHY= dependencies: nan "^2.14.0" tree-sitter@=0.20.4: version "0.20.4" - resolved "https://registry.yarnpkg.com/tree-sitter/-/tree-sitter-0.20.4.tgz#7d9d4f769fc05342ef43e5559f7ff34b0fc48327" - integrity sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tree-sitter/-/tree-sitter-0.20.4.tgz#7d9d4f769fc05342ef43e5559f7ff34b0fc48327" + integrity sha1-fZ1Pdp/AU0LvQ+VVn3/zSw/Egyc= dependencies: nan "^2.17.0" prebuild-install "^7.1.1" @@ -13036,8 +12499,8 @@ ts-node@^9.0.0: ts-toolbelt@^9.6.0: version "9.6.0" - resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" - integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" + integrity sha1-UKJUJs/tUA1KCb0bOvtvKIee39U= tsconfig-paths@^3.14.1: version "3.14.1" @@ -13096,8 +12559,8 @@ tty-table@^4.1.5: tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" @@ -13205,7 +12668,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw= @@ -13260,8 +12723,8 @@ type-is@~1.6.18: types-ramda@^0.29.4: version "0.29.4" - resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.29.4.tgz#8d9b51df2e550a05cedab541cc75dcd72972c625" - integrity sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/types-ramda/-/types-ramda-0.29.4.tgz#8d9b51df2e550a05cedab541cc75dcd72972c625" + integrity sha1-jZtR3y5VCgXO2rVBzHXc1ylyxiU= dependencies: ts-toolbelt "^9.6.0" @@ -13501,8 +12964,8 @@ unpipe@1.0.0, unpipe@~1.0.0: unraw@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/unraw/-/unraw-2.0.1.tgz#7b51dcdfb1e43d59d5e52cdb44d349d029edbaba" - integrity sha512-tdOvLfRzHolwYcHS6HIX860MkK9LQ4+oLuNwFYL7bpgTEO64PZrcQxkisgwJYCfF8sKiWLwwu1c83DvMkbefIQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/unraw/-/unraw-2.0.1.tgz#7b51dcdfb1e43d59d5e52cdb44d349d029edbaba" + integrity sha1-e1Hc37HkPVnV5SzbRNNJ0Cnturo= update-browserslist-db@^1.0.9: version "1.0.10" @@ -13535,8 +12998,8 @@ uri-js@^4.2.2: url-parse@^1.5.10, url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha1-nTwvc2wddd070r5QfcwRHx4uqcE= dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -13556,8 +13019,8 @@ use-memo-one@^1.1.1: use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0, use-sync-external-store@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha1-fb79bvP+TnZ6DPXXKHqs+1hGkoo= util-deprecate@^1.0.1: version "1.0.2" @@ -13782,8 +13245,8 @@ web-streams-polyfill@4.0.0-beta.3: web-tree-sitter@=0.20.3: version "0.20.3" - resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz#3dd17b283ad63b1d8c07c5ea814f0fefb2b1f776" - integrity sha512-zKGJW9r23y3BcJusbgvnOH2OYAW40MXAOi9bi3Gcc7T4Gms9WWgXF8m6adsJWpGJEhgOzCrfiz1IzKowJWrtYw== + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz#3dd17b283ad63b1d8c07c5ea814f0fefb2b1f776" + integrity sha1-PdF7KDrWOx2MB8XqgU8P77Kx93Y= webidl-conversions@^3.0.0: version "3.0.1" @@ -14090,10 +13553,10 @@ zod@3.21.4: resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== -zod@^3.22.3: - version "3.22.3" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.3.tgz#2fbc96118b174290d94e8896371c95629e87a060" - integrity sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug== +zod@^3.19.1: + version "3.19.1" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.19.1.tgz#112f074a97b50bfc4772d4ad1576814bd8ac4473" + integrity sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA== zustand@^4.1.1: version "4.3.2" From bed0381a0ee5fe8ab12a2f09c9e5f4c3bf1ae64f Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 11 Jul 2023 21:54:47 +0100 Subject: [PATCH 28/36] remove snaphot support - removed commands from package.json and cli - removed snapshot dir - remove snapshot mode types --- package.json | 5 +- packages/cli/src/index.ts | 7 +- packages/cli/src/upload-s3-snapshot.ts | 53 - packages/cli/src/vercel-snapshot.ts | 3 +- packages/site/package.json | 5 +- .../snapshots/latest/mosaic/another/example | 1 - .../snapshots/latest/mosaic/author/aliases | 1 - .../latest/mosaic/author/aliases.mdx | 147 --- .../snapshots/latest/mosaic/author/fragments | 1 - .../latest/mosaic/author/fragments.mdx | 193 ---- .../latest/mosaic/author/frontmatter | 1 - .../latest/mosaic/author/frontmatter.mdx | 246 ----- .../site/snapshots/latest/mosaic/author/index | 1 - .../snapshots/latest/mosaic/author/index.mdx | 96 -- .../latest/mosaic/author/markdown-syntax | 1 - .../latest/mosaic/author/markdown-syntax.mdx | 125 --- .../latest/mosaic/author/page-templates | 1 - .../latest/mosaic/author/page-templates.mdx | 97 -- .../site/snapshots/latest/mosaic/author/refs | 1 - .../snapshots/latest/mosaic/author/refs.mdx | 334 ------ .../latest/mosaic/author/shared-config.json | 1 - .../latest/mosaic/author/sidebar.json | 1 - .../latest/mosaic/author/ui-components | 1 - .../latest/mosaic/author/ui-components.mdx | 100 -- .../snapshots/latest/mosaic/configure/index | 1 - .../latest/mosaic/configure/index.mdx | 353 ------- .../latest/mosaic/configure/layouts/index | 1 - .../latest/mosaic/configure/layouts/index.mdx | 359 ------- .../configure/layouts/shared-config.json | 1 - .../latest/mosaic/configure/modes/active | 1 - .../latest/mosaic/configure/modes/active.mdx | 403 ------- .../latest/mosaic/configure/modes/index | 1 - .../latest/mosaic/configure/modes/index.mdx | 403 ------- .../mosaic/configure/modes/shared-config.json | 1 - .../mosaic/configure/modes/snapshot-file | 1 - .../mosaic/configure/modes/snapshot-file.mdx | 382 ------- .../latest/mosaic/configure/modes/snapshot-s3 | 1 - .../mosaic/configure/modes/snapshot-s3.mdx | 393 ------- .../latest/mosaic/configure/plugins/index | 1 - .../latest/mosaic/configure/plugins/index.mdx | 458 -------- .../configure/plugins/lifecycle/after-source | 1 - .../configure/plugins/lifecycle/after-update | 1 - .../configure/plugins/lifecycle/before-send | 1 - .../plugins/lifecycle/should-clear-cache | 1 - .../configure/plugins/shared-config.json | 1 - .../mosaic/configure/shared-config.json | 1 - .../latest/mosaic/configure/sidebar.json | 1 - .../mosaic/configure/sources/git-repo-source | 1 - .../configure/sources/git-repo-source.mdx | 430 -------- .../mosaic/configure/sources/http-source | 1 - .../mosaic/configure/sources/http-source.mdx | 407 -------- .../latest/mosaic/configure/sources/index | 1 - .../latest/mosaic/configure/sources/index.mdx | 468 --------- .../configure/sources/local-folder-source | 1 - .../configure/sources/local-folder-source.mdx | 406 ------- .../configure/sources/shared-config.json | 1 - .../mosaic/configure/theme/custom-components | 1 - .../configure/theme/custom-components.mdx | 511 --------- .../latest/mosaic/configure/theme/custom-css | 1 - .../mosaic/configure/theme/custom-css.mdx | 466 --------- .../latest/mosaic/configure/theme/index | 1 - .../latest/mosaic/configure/theme/index.mdx | 377 ------- .../mosaic/configure/theme/shared-config.json | 1 - .../snapshots/latest/mosaic/example/aliases | 1 - .../latest/mosaic/fragments/content-fragment | 1 - .../mosaic/fragments/content-fragment.mdx | 35 - .../snapshots/latest/mosaic/fragments/index | 1 - .../latest/mosaic/fragments/index.mdx | 31 - .../mosaic/fragments/shared-config.json | 1 - .../latest/mosaic/fragments/sidebar.json | 1 - .../snapshots/latest/mosaic/fragments/tile-a | 1 - .../latest/mosaic/fragments/tile-a.mdx | 33 - .../snapshots/latest/mosaic/fragments/tile-b | 1 - .../latest/mosaic/fragments/tile-b.mdx | 33 - .../mosaic/getting-started/create-a-site | 1 - .../mosaic/getting-started/create-a-site.mdx | 145 --- .../latest/mosaic/getting-started/index | 1 - .../latest/mosaic/getting-started/index.mdx | 59 -- .../getting-started/publish-site-to-aws | 1 - .../getting-started/publish-site-to-aws.mdx | 163 --- .../mosaic/getting-started/shared-config.json | 1 - .../mosaic/getting-started/sidebar.json | 1 - packages/site/snapshots/latest/mosaic/index | 1 - .../site/snapshots/latest/mosaic/index.mdx | 65 -- .../snapshots/latest/mosaic/publish/index | 1 - .../snapshots/latest/mosaic/publish/index.mdx | 96 -- .../latest/mosaic/publish/publish-site-to-aws | 1 - .../mosaic/publish/publish-site-to-aws.mdx | 91 -- .../mosaic/publish/publish-site-to-vercel | 1 - .../mosaic/publish/publish-site-to-vercel.mdx | 112 -- .../latest/mosaic/publish/shared-config.json | 1 - .../latest/mosaic/publish/sidebar.json | 1 - .../latest/mosaic/shared-config.json | 1 - .../latest/mosaic/test/aliases/index | 1 - .../latest/mosaic/test/aliases/index.mdx | 132 --- .../mosaic/test/aliases/shared-config.json | 1 - .../site/snapshots/latest/mosaic/test/example | 1 - .../site/snapshots/latest/mosaic/test/index | 1 - .../snapshots/latest/mosaic/test/index.mdx | 131 --- .../mosaic/test/layouts/detail-highlight | 1 - .../mosaic/test/layouts/detail-highlight.mdx | 197 ---- .../mosaic/test/layouts/detail-overview | 1 - .../mosaic/test/layouts/detail-overview.mdx | 197 ---- .../mosaic/test/layouts/detail-technical | 1 - .../mosaic/test/layouts/detail-technical.mdx | 197 ---- .../snapshots/latest/mosaic/test/layouts/edit | 1 - .../latest/mosaic/test/layouts/edit.mdx | 157 --- .../latest/mosaic/test/layouts/full-width | 1 - .../latest/mosaic/test/layouts/full-width.mdx | 157 --- .../latest/mosaic/test/layouts/index | 1 - .../latest/mosaic/test/layouts/index.mdx | 134 --- .../latest/mosaic/test/layouts/landing | 1 - .../latest/mosaic/test/layouts/landing.mdx | 180 ---- .../latest/mosaic/test/layouts/newsletter | 1 - .../latest/mosaic/test/layouts/newsletter.mdx | 197 ---- .../mosaic/test/layouts/product-discover | 1 - .../mosaic/test/layouts/product-discover.mdx | 197 ---- .../mosaic/test/layouts/product-preview | 1 - .../mosaic/test/layouts/product-preview.mdx | 197 ---- .../mosaic/test/layouts/shared-config.json | 1 - .../snapshots/latest/mosaic/test/refs/data | 1 - .../latest/mosaic/test/refs/data.mdx | 136 --- .../snapshots/latest/mosaic/test/refs/index | 1 - .../latest/mosaic/test/refs/index.mdx | 142 --- .../mosaic/test/refs/shared-config.json | 1 - .../latest/mosaic/test/shared-config.json | 1 - .../snapshots/latest/mosaic/test/sidebar.json | 1 - .../site/snapshots/latest/search-config.json | 1 - .../latest/search-data-condensed.json | 1 - .../site/snapshots/latest/search-data.json | 1 - packages/site/snapshots/latest/sitemap.xml | 383 ------- packages/types/src/Mode.ts | 16 - packages/types/src/index.ts | 1 - yarn.lock | 987 +----------------- 134 files changed, 6 insertions(+), 11900 deletions(-) delete mode 100644 packages/cli/src/upload-s3-snapshot.ts delete mode 120000 packages/site/snapshots/latest/mosaic/another/example delete mode 120000 packages/site/snapshots/latest/mosaic/author/aliases delete mode 100644 packages/site/snapshots/latest/mosaic/author/aliases.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/author/fragments delete mode 100644 packages/site/snapshots/latest/mosaic/author/fragments.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/author/frontmatter delete mode 100644 packages/site/snapshots/latest/mosaic/author/frontmatter.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/author/index delete mode 100644 packages/site/snapshots/latest/mosaic/author/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/author/markdown-syntax delete mode 100644 packages/site/snapshots/latest/mosaic/author/markdown-syntax.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/author/page-templates delete mode 100644 packages/site/snapshots/latest/mosaic/author/page-templates.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/author/refs delete mode 100644 packages/site/snapshots/latest/mosaic/author/refs.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/author/shared-config.json delete mode 100644 packages/site/snapshots/latest/mosaic/author/sidebar.json delete mode 120000 packages/site/snapshots/latest/mosaic/author/ui-components delete mode 100644 packages/site/snapshots/latest/mosaic/author/ui-components.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/index delete mode 100644 packages/site/snapshots/latest/mosaic/configure/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/layouts/index delete mode 100644 packages/site/snapshots/latest/mosaic/configure/layouts/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/layouts/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/configure/modes/active delete mode 100644 packages/site/snapshots/latest/mosaic/configure/modes/active.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/modes/index delete mode 100644 packages/site/snapshots/latest/mosaic/configure/modes/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/modes/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file delete mode 100644 packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3 delete mode 100644 packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/plugins/index delete mode 100644 packages/site/snapshots/latest/mosaic/configure/plugins/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-source delete mode 120000 packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-update delete mode 120000 packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/before-send delete mode 120000 packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/should-clear-cache delete mode 120000 packages/site/snapshots/latest/mosaic/configure/plugins/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/configure/shared-config.json delete mode 100644 packages/site/snapshots/latest/mosaic/configure/sidebar.json delete mode 120000 packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source delete mode 100644 packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/sources/http-source delete mode 100644 packages/site/snapshots/latest/mosaic/configure/sources/http-source.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/sources/index delete mode 100644 packages/site/snapshots/latest/mosaic/configure/sources/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source delete mode 100644 packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/sources/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/configure/theme/custom-components delete mode 100644 packages/site/snapshots/latest/mosaic/configure/theme/custom-components.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/theme/custom-css delete mode 100644 packages/site/snapshots/latest/mosaic/configure/theme/custom-css.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/theme/index delete mode 100644 packages/site/snapshots/latest/mosaic/configure/theme/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/configure/theme/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/example/aliases delete mode 120000 packages/site/snapshots/latest/mosaic/fragments/content-fragment delete mode 100644 packages/site/snapshots/latest/mosaic/fragments/content-fragment.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/fragments/index delete mode 100644 packages/site/snapshots/latest/mosaic/fragments/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/fragments/shared-config.json delete mode 100644 packages/site/snapshots/latest/mosaic/fragments/sidebar.json delete mode 120000 packages/site/snapshots/latest/mosaic/fragments/tile-a delete mode 100644 packages/site/snapshots/latest/mosaic/fragments/tile-a.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/fragments/tile-b delete mode 100644 packages/site/snapshots/latest/mosaic/fragments/tile-b.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/getting-started/create-a-site delete mode 100644 packages/site/snapshots/latest/mosaic/getting-started/create-a-site.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/getting-started/index delete mode 100644 packages/site/snapshots/latest/mosaic/getting-started/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws delete mode 100644 packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/getting-started/shared-config.json delete mode 100644 packages/site/snapshots/latest/mosaic/getting-started/sidebar.json delete mode 120000 packages/site/snapshots/latest/mosaic/index delete mode 100644 packages/site/snapshots/latest/mosaic/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/publish/index delete mode 100644 packages/site/snapshots/latest/mosaic/publish/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws delete mode 100644 packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel delete mode 100644 packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/publish/shared-config.json delete mode 100644 packages/site/snapshots/latest/mosaic/publish/sidebar.json delete mode 100644 packages/site/snapshots/latest/mosaic/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/test/aliases/index delete mode 100644 packages/site/snapshots/latest/mosaic/test/aliases/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/aliases/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/test/example delete mode 120000 packages/site/snapshots/latest/mosaic/test/index delete mode 100644 packages/site/snapshots/latest/mosaic/test/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/detail-overview delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/detail-overview.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/detail-technical delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/detail-technical.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/edit delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/edit.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/full-width delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/full-width.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/index delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/landing delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/landing.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/newsletter delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/newsletter.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/product-discover delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/product-discover.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/product-preview delete mode 100644 packages/site/snapshots/latest/mosaic/test/layouts/product-preview.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/layouts/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/test/refs/data delete mode 100644 packages/site/snapshots/latest/mosaic/test/refs/data.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/refs/index delete mode 100644 packages/site/snapshots/latest/mosaic/test/refs/index.mdx delete mode 120000 packages/site/snapshots/latest/mosaic/test/refs/shared-config.json delete mode 120000 packages/site/snapshots/latest/mosaic/test/shared-config.json delete mode 100644 packages/site/snapshots/latest/mosaic/test/sidebar.json delete mode 100644 packages/site/snapshots/latest/search-config.json delete mode 100644 packages/site/snapshots/latest/search-data-condensed.json delete mode 100644 packages/site/snapshots/latest/search-data.json delete mode 100644 packages/site/snapshots/latest/sitemap.xml delete mode 100644 packages/types/src/Mode.ts diff --git a/package.json b/package.json index 247ece0a1..64580a982 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,7 @@ "export:static": "turbo run export:static --filter=@jpmorganchase/mosaic-site", "gen:rig": "turbo run create:rig copy:rig:images --filter=//", "gen:site": "turbo run create:site copy:site:images --filter=//", - "gen:snapshot": "turbo run gen:snapshot --filter=@jpmorganchase/mosaic-site", - "gen": "turbo run gen:site gen:snapshot --filter=//", + "gen": "turbo run gen:site export:static --filter=//", "lint": "turbo run lint", "mosaic": "node ./packages/cli/dist/index.js", "postinstall": "patch-package", @@ -39,8 +38,6 @@ "prettier:ci": "prettier --check .", "prettier": "prettier --write .", "serve:rig": "turbo run serve --filter=@jpmorganchase/mosaic-rig", - "serve:snapshot:file": "turbo run serve:snapshot:file --filter=@jpmorganchase/mosaic-site", - "serve:snapshot:s3": "turbo run serve:snapshot:s3 --filter=@jpmorganchase/mosaic-site", "serve": "turbo run serve --filter=@jpmorganchase/mosaic-site", "serve:static": "turbo run serve:static --filter=@jpmorganchase/mosaic-site", "start": "turbo run start --filter=@jpmorganchase/mosaic-site", diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index e21761bb2..a9b4574bd 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -4,7 +4,6 @@ import path from 'node:path'; import { pathToFileURL } from 'node:url'; import serve from './serve.js'; -import uploadS3Snapshot from './upload-s3-snapshot.js'; import exportStatic from './exportStatic.js'; import serveStatic from './serveStatic.js'; @@ -14,9 +13,7 @@ program .option('-c, --config ', 'Config path') .option('-o, --out ', 'Output directory', '.tmp/.mosaic-build') .option('-s, --scope ', 'Command separated namespaces') - .option('-p, --port ', 'Port to serve on', '8080') - .option('-n, --name ', 'Snapshot name') - .option('-S, --snapshot ', 'Snapshot path'); + .option('-p, --port ', 'Port to serve on', '8080'); program.parse(); @@ -42,8 +39,6 @@ if (program.args[0] === 'export:static') { if (program.args[0] === 'serve') { serve(config.default, options.port, options.scope && options.scope.split(',')); - } else if (program.args[0] === 'upload') { - uploadS3Snapshot(path.resolve(process.cwd(), options.snapshot)); } else if (program.args[0] === 'deploy') { updateTraceFile(config.default, options); } diff --git a/packages/cli/src/upload-s3-snapshot.ts b/packages/cli/src/upload-s3-snapshot.ts deleted file mode 100644 index 4493f9d52..000000000 --- a/packages/cli/src/upload-s3-snapshot.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { globby } from 'globby'; -import path from 'path'; -import fs from 'fs'; -import { S3Client, CreateBucketCommand, PutObjectCommand } from '@aws-sdk/client-s3'; -import assert from 'assert'; - -function createClient(region, accessKeyId, secretAccessKey): S3Client { - return new S3Client({ - region, - credentials: { - accessKeyId, - secretAccessKey - } - }); -} - -export default async function uploadS3Snapshot(targetDir) { - assert( - process.env.MOSAIC_S3_BUCKET, - 'Cannot read S3 bucket - MOSAIC_S3_BUCKET environment var is missing' - ); - assert( - process.env.MOSAIC_S3_REGION, - 'Cannot read S3 bucket - MOSAIC_S3_REGION environment var is missing' - ); - assert( - process.env.MOSAIC_S3_ACCESS_KEY_ID, - 'Cannot read S3 bucket - MOSAIC_S3_ACCESS_KEY_ID environment var is missing' - ); - assert( - process.env.MOSAIC_S3_SECRET_ACCESS_KEY, - 'Cannot read S3 bucket - MOSAIC_S3_SECRET_ACCESS_KEY environment var is missing' - ); - const bucket: string = process.env.MOSAIC_S3_BUCKET; - const region: string = process.env.MOSAIC_S3_REGION; - const accessKeyId: string = process.env.MOSAIC_S3_ACCESS_KEY_ID; - const secretAccessKey: string = process.env.MOSAIC_S3_SECRET_ACCESS_KEY; - - const client = createClient(region, accessKeyId, secretAccessKey); - await client.send(new CreateBucketCommand({ Bucket: bucket })); - const paths = await globby(targetDir); - paths.forEach(async filePath => { - const key = filePath.replace(`${targetDir}${path.sep}`, ''); - console.log(`Upload ${key} to bucket ${bucket}`); - const body = await fs.promises.readFile(filePath, { encoding: 'utf-8' }); - const putCommand = new PutObjectCommand({ - Bucket: bucket, - Key: key, - Body: body - }); - await client.send(putCommand); - }); -} diff --git a/packages/cli/src/vercel-snapshot.ts b/packages/cli/src/vercel-snapshot.ts index a7455550d..9a360c76d 100644 --- a/packages/cli/src/vercel-snapshot.ts +++ b/packages/cli/src/vercel-snapshot.ts @@ -22,7 +22,6 @@ export async function updateTraceFile(config, options) { const projectBase = process.cwd(); const buildDir = path.posix.join(projectBase, '.next'); const snapshotDir = options.out; - const snapshotName = options.name ?? new Date().toISOString(); if (!fsExtra.existsSync(buildDir)) { console.warn( @@ -32,7 +31,7 @@ export async function updateTraceFile(config, options) { const nftFilePath = path.posix.join(buildDir, 'server', 'pages', '[...route].js.nft.json'); // Find all snapshot files - const paths = await globby(`**/${snapshotDir}/${snapshotName}/**`, { + const paths = await globby(`**/${snapshotDir}/**`, { cwd: projectBase, onlyFiles: true }); diff --git a/packages/site/package.json b/packages/site/package.json index 5188e2838..77d2e4d37 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -20,16 +20,13 @@ "dev": "next dev", "start": "next start", "debug": "yarn mosaic serve -c ./mosaic.config.mjs -p 8080", - "deploy": "yarn mosaic deploy --out snapshots --name latest --config mosaic.config.mjs", + "deploy": "yarn mosaic deploy --out out --name latest --config mosaic.config.mjs", "docker:build": "docker build . --tag mosaic-site:latest", "docker:start": "docker run -it --rm --ipc=host -p 3000:3000 --network mosaic-net --name mosaic-site mosaic-site:latest", "e2e": "npx playwright test", "e2e:codegen": "npx playwright codegen localhost:3000", - "gen:snapshot": "yarn mosaic build --out snapshots --name latest --config mosaic.config.mjs", "serve:fs": "yarn mosaic serve -c ./mosaic.config.mjs -p 8080", "serve:static": "yarn mosaic serve:static -o ./out", - "serve:snapshot:file": "yarn cross-env MOSAIC_MODE=\"snapshot-file\" concurrently --kill-others \"yarn dev\"", - "serve:snapshot:s3": "yarn cross-env MOSAIC_MODE=\"snapshot-s3\" concurrently --kill-others \"yarn dev\"", "serve": "concurrently --kill-others \"yarn dev\" \"yarn mosaic serve -c ./mosaic.config.mjs\" -p 8080" }, "dependencies": { diff --git a/packages/site/snapshots/latest/mosaic/another/example b/packages/site/snapshots/latest/mosaic/another/example deleted file mode 120000 index 3f7f0cfae..000000000 --- a/packages/site/snapshots/latest/mosaic/another/example +++ /dev/null @@ -1 +0,0 @@ -../test/aliases/index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/aliases b/packages/site/snapshots/latest/mosaic/author/aliases deleted file mode 120000 index c34f928a6..000000000 --- a/packages/site/snapshots/latest/mosaic/author/aliases +++ /dev/null @@ -1 +0,0 @@ -aliases.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/aliases.mdx b/packages/site/snapshots/latest/mosaic/author/aliases.mdx deleted file mode 100644 index 95f9ef1c8..000000000 --- a/packages/site/snapshots/latest/mosaic/author/aliases.mdx +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Aliases -layout: DetailTechnical -sidebar: - priority: 3 -sharedConfig: - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Getting Started - link: /mosaic/getting-started/index - - title: Configure - link: /mosaic/configure/index - - title: Author - link: /mosaic/author/index - - title: Publish - link: /mosaic/publish/index - footer: - description: Coming soon - title: Mosaic BETA - href: /mosaic -lastModified: 1692716748147 -fullPath: /mosaic/author/aliases.mdx -route: /mosaic/author/aliases -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Aliases - path: /mosaic/author/aliases - id: /mosaic/author/aliases.mdx -readingTime: - text: 1 min read - minutes: 0.525 - time: 31500 - words: 105 -tableOfContents: - - level: 2 - id: use-cases - text: Use Cases - - level: 2 - id: example - text: Example -navigation: - prev: - title: Frontmatter - route: /mosaic/author/frontmatter - next: - title: Refs - route: /mosaic/author/refs -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -Aliases are virtual 'symlinks' of pages, allowing one page to take on one or more other routes. -This is not the same as copying the page, it is a primitive filesystem link which is resolved by Mosaic. - -## Use Cases - -Aliases are great for linking to an old route if you've moved a page to a new place. -They can also be used to create short hand links to pages or to 'clone' a copy of a page into -another section of the site where it may be relevant. - -## Example - -This is the frontmatter for this page: - -``` ---- -title: Aliases -layout: DetailTechnical -aliases: - - /mosaic/example/aliases ---- -``` - -Try accessing this page from [/mosaic/example/aliases](/mosaic/example/aliases) diff --git a/packages/site/snapshots/latest/mosaic/author/fragments b/packages/site/snapshots/latest/mosaic/author/fragments deleted file mode 120000 index 468b49eff..000000000 --- a/packages/site/snapshots/latest/mosaic/author/fragments +++ /dev/null @@ -1 +0,0 @@ -fragments.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/fragments.mdx b/packages/site/snapshots/latest/mosaic/author/fragments.mdx deleted file mode 100644 index f21980820..000000000 --- a/packages/site/snapshots/latest/mosaic/author/fragments.mdx +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: Fragments -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1692693827881 -fullPath: /mosaic/author/fragments.mdx -route: /mosaic/author/fragments -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Fragments - path: /mosaic/author/fragments - id: /mosaic/author/fragments.mdx -readingTime: - text: 2 min read - minutes: 1.845 - time: 110700 - words: 369 -tableOfContents: - - level: 2 - id: use-cases - text: Use Cases - - level: 2 - id: usage - text: Usage - - level: 3 - id: markdown-content-example - text: Markdown Content Example - - level: 3 - id: component-example - text: Component Example -navigation: - prev: - title: Refs - route: /mosaic/author/refs - next: - title: UI Components - route: /mosaic/author/ui-components -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -Fragments, also known as content fragments, are powerful tools that allow you to incorporate content from other pages into your documentation. By creating an MDX file and using the [generic directives](https://talk.commonmark.org/t/generic-directives-plugins-syntax/444) syntax `:fragment{src="path-to-fragment"}`, you can easily render the fragment in another file, providing modularity and reusability to your content. - -## Use Cases - -Fragments offer various use cases, such as: - -**Consistent Content**: Use fragments to maintain consistent content across multiple pages. For instance, if you have a table or a tile that appears on multiple pages, you can create a fragment for it and include it in all relevant files. This ensures that any updates made to the fragment automatically reflect across the entire documentation. - -**Reusable Components**: Fragments enable the creation of reusable components or sections. You can define a complex or commonly used section once and then include it in multiple pages as needed. This approach saves time and effort, as you only need to update the fragment file to propagate changes throughout your documentation. - -**Modular Documentation**: With fragments, you can break down your documentation into smaller, manageable pieces. Each fragment represents a specific topic or section, allowing you to organize and structure your content more efficiently. This modular approach simplifies maintenance and makes it easier to navigate and update your documentation. - -## Usage - -Firstly, enable the Fragment Plugin by adding the following to your plugins in `mosaic.config.mjs`. - -``` -{ - modulePath: '@jpmorganchase/mosaic-plugins/FragmentPlugin', - options: {} -} -``` - -To include a fragment in your content, follow these steps: - -Create an MDX file for the fragment you want to reuse. Remember to set the sidebar property of your fragment's frontmatter to exclude: true if you don't want the fragment to appear in the vertical navigation menu. - -``` ---- -title: Fragment Title -sidebar: - exclude: true ---- -``` - -In the target file where you want to include the fragment, use the remark directive syntax `:fragment{src="path-to-fragment"}`. - -### Markdown Content Example - -This is the contents of a fragment located at `../fragments/content-fragment.mdx`: - -``` ---- -title: Content Fragment -sidebar: - exclude: true ---- - -#### Fragment Title - -This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`. - -``` - -The below code snippet will render the content from the content-fragment.mdx file in your target file: - -``` -:fragment{src="../fragments/content-fragment.mdx"} -``` - -Example output: - - -#### Fragment Title - -This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`. - - -### Component Example - -Here is another example, where the fragment files each contain a `` component. - -``` -:fragment{src="../fragments/tile-a.mdx"} :fragment{src="../fragments/tile-b.mdx"} -``` - -The above code will render the content from tile-a.mdx and tile-b.mdx files, demonstrated below: - - - - - diff --git a/packages/site/snapshots/latest/mosaic/author/frontmatter b/packages/site/snapshots/latest/mosaic/author/frontmatter deleted file mode 120000 index b1325195f..000000000 --- a/packages/site/snapshots/latest/mosaic/author/frontmatter +++ /dev/null @@ -1 +0,0 @@ -frontmatter.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/frontmatter.mdx b/packages/site/snapshots/latest/mosaic/author/frontmatter.mdx deleted file mode 100644 index 1ad7f4006..000000000 --- a/packages/site/snapshots/latest/mosaic/author/frontmatter.mdx +++ /dev/null @@ -1,246 +0,0 @@ ---- -title: Frontmatter -layout: DetailTechnical -sidebar: - priority: 4 -lastModified: 1692689032572 -fullPath: /mosaic/author/frontmatter.mdx -route: /mosaic/author/frontmatter -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Frontmatter - path: /mosaic/author/frontmatter - id: /mosaic/author/frontmatter.mdx -readingTime: - text: 3 min read - minutes: 2.215 - time: 132900 - words: 443 -tableOfContents: - - level: 2 - id: example-page-yaml - text: Example page yaml - - level: 2 - id: accessing-frontmatter-in-content - text: Accessing Frontmatter in content - - level: 2 - id: plugins--frontmatter - text: Plugins & Frontmatter - - level: 3 - id: adding-a-property-to-the-page - text: Adding a property to the page - - level: 3 - id: json-file - text: JSON File -navigation: - prev: - title: Markdown Syntax - route: /mosaic/author/markdown-syntax - next: - title: Aliases - route: /mosaic/author/aliases -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -[Frontmatter](https://mdxjs.com/guides/frontmatter/), also known as page metadata, is a powerful feature that allows easy configuration of a page and Mosaic site components e.g. the sidebar. - -Frontmatter is written in yaml syntax and is found at the top of a page between 2 sets of 3 dashes: `---`. - -## Example page yaml - -``` ---- -title: Page Title -layout: DetailTechnical -sidebar: - priority: 4 ---- - -// frontmatter is closed and now comes page content -# Page Title - -This is some content. - -``` - -## Accessing Frontmatter in content - -With the syntax below it is possible to directly reference frontmatter inside content using curly brackets and the `meta` object. - -You can think of `meta` as a JSON object that holds all the frontmatter of a page and when the Mosaic `RefPlugin` encounters the curly brackets then the value in the frontmatter will be resolved. - -``` -{meta.title} -{meta.description} -{meta.someValueYouHaveAddedToTheFrontmatter} -``` - -This is very common to see Mosaic pages that reference the title as shown below: - -``` ---- -title: Title ---- - -# {meta.title} -``` - -## Plugins & Frontmatter - -Mosaic plugins can also embed their output into page frontmatter in 2 different ways: - -* a property is directly added to the page object -* a JSON file is generated and referenced using a [ref](./refs) - -### Adding a property to the page - -A plugin can add a property to a page simply by extending the page object it receives in the `$afterSource` lifecycle event: - -``` -async function $afterSource(pages) { - for (const page of pages) { - page.newProperty = 'Hello' - } - return pages; -} -``` - -You could use this property in the page content using `{meta.newProperty}` - -### JSON File - -Let's take a look at the `SharedConfigPlugin`. - -The purpose of this plugin is to crawl the page hierarchy to find the closest `sharedConfig` found in any parent page's frontmatter. - -* Finds all index pages among the source docs -* Deserialises those pages so it can read the frontmatter and content of the page -* If a property called `sharedConfig` in the page frontmatter is found a new file named shared-config.json is created -* Adds a ref named `config` to the shared config file that points to the shared config of the index page - -``` -import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types'; -import { flatten } from 'lodash-es'; -import path from 'path'; - -function createFileGlob(url, pageExtensions) { -if (pageExtensions.length === 1) { -return `${url}${pageExtensions[0]}`; -} -return `${url}{${pageExtensions.join(',')}}`; -} - -interface SharedConfigPluginPage extends Page { -sharedConfig?: string; -} - -interface SharedConfigPluginOptions { -filename: string; -} - -const SharedConfigPlugin: PluginType = { -async $beforeSend( - mutableFilesystem, - { config, serialiser, ignorePages, pageExtensions }, - options - ) { - const pagePaths = await mutableFilesystem.promises.glob( - createFileGlob('**/index', pageExtensions), - { - ignore: [options.filename, ...flatten(ignorePages.map(ignore => [ignore, `**/${ignore}`]))], -cwd: '/' -} -); - - for (const pagePath of pagePaths) { - const sharedConfigFile = path.join(path.dirname(String(pagePath)), options.filename); - - const page = await serialiser.deserialise( - String(pagePath), - await mutableFilesystem.promises.readFile(String(pagePath)) - ); - if (page.sharedConfig) { - config.setRef(sharedConfigFile, ['config', '$ref'], `${String(pagePath)}#/sharedConfig`); - await mutableFilesystem.promises.writeFile(sharedConfigFile, '{}'); - } else { - const baseDir = path.posix.resolve(path.dirname(String(pagePath)), '../'); - config.setAliases(path.join(baseDir, options.filename), [sharedConfigFile]); - } - } - -} -}; - -export default SharedConfigPlugin; - -``` diff --git a/packages/site/snapshots/latest/mosaic/author/index b/packages/site/snapshots/latest/mosaic/author/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/author/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/index.mdx b/packages/site/snapshots/latest/mosaic/author/index.mdx deleted file mode 100644 index 4e66077da..000000000 --- a/packages/site/snapshots/latest/mosaic/author/index.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Author -layout: DetailTechnical -sidebar: - priority: 3 -data: - exampleRefData: Hello from Author page -lastModified: 1692870573465 -fullPath: /mosaic/author/index.mdx -route: /mosaic/author/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx -readingTime: - text: 1 min read - minutes: 0.075 - time: 4500 - words: 15 -tableOfContents: [] -navigation: - next: - title: Markdown Syntax - route: /mosaic/author/markdown-syntax -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -Here you will learn how to author documentation using markdown, Mosaic components and page templates diff --git a/packages/site/snapshots/latest/mosaic/author/markdown-syntax b/packages/site/snapshots/latest/mosaic/author/markdown-syntax deleted file mode 120000 index f70cbe6ed..000000000 --- a/packages/site/snapshots/latest/mosaic/author/markdown-syntax +++ /dev/null @@ -1 +0,0 @@ -markdown-syntax.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/markdown-syntax.mdx b/packages/site/snapshots/latest/mosaic/author/markdown-syntax.mdx deleted file mode 100644 index f9a8eac1b..000000000 --- a/packages/site/snapshots/latest/mosaic/author/markdown-syntax.mdx +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Markdown Syntax -layout: DetailTechnical -sidebar: - priority: 5 -lastModified: 1692689032572 -fullPath: /mosaic/author/markdown-syntax.mdx -route: /mosaic/author/markdown-syntax -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Markdown Syntax - path: /mosaic/author/markdown-syntax - id: /mosaic/author/markdown-syntax.mdx -readingTime: - text: 1 min read - minutes: 0.505 - time: 30300 - words: 101 -tableOfContents: - - level: 2 - id: mosaic-standard-components - text: Mosaic Standard Components - - level: 2 - id: referencing-frontmatter - text: Referencing Frontmatter - - level: 2 - id: configuring-supported-components - text: Configuring Supported components -navigation: - next: - title: Frontmatter - route: /mosaic/author/frontmatter -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -Out of the box, Mosaic supports documents written in [MDX](https://mdxjs.com/) which allows React components to be embedded within the [basic syntax](https://www.markdownguide.org/basic-syntax/) outlined in the original Markdown design document. - -In addition to the basic markdown syntax, the MDX processor used by Mosaic has been configured to support additional markdown syntax and features: - -* [GitHub flavored markdown (gfm)](https://mdxjs.com/guides/gfm/) -* [Frontmatter](./frontmatter) - -## Mosaic Standard Components - -All components that comprise the `components` export from `@jpmorganchase/mosaic-site-components` package are available to use out of the box in your documents. - -This includes components for all standard markdown syntax and additional components like `Callout` and `Tile`. - -## Referencing Frontmatter - -Frontmatter values into the page using the `meta` object. See [frontmatter](./frontmatter#accessing-frontmatter-in-content) for more information. - -## Configuring Supported components - -TODO diff --git a/packages/site/snapshots/latest/mosaic/author/page-templates b/packages/site/snapshots/latest/mosaic/author/page-templates deleted file mode 120000 index a5a5f6dd4..000000000 --- a/packages/site/snapshots/latest/mosaic/author/page-templates +++ /dev/null @@ -1 +0,0 @@ -page-templates.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/page-templates.mdx b/packages/site/snapshots/latest/mosaic/author/page-templates.mdx deleted file mode 100644 index b81d4a82e..000000000 --- a/packages/site/snapshots/latest/mosaic/author/page-templates.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Page Templates -layout: DetailTechnical -sidebar: - priority: 1 -lastModified: 1693557910173 -fullPath: /mosaic/author/page-templates.mdx -route: /mosaic/author/page-templates -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Page Templates - path: /mosaic/author/page-templates - id: /mosaic/author/page-templates.mdx -readingTime: - text: 1 min read - minutes: 0.005 - time: 300 - words: 1 -tableOfContents: [] -navigation: - prev: - title: UI Components - route: /mosaic/author/ui-components -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -Todo... diff --git a/packages/site/snapshots/latest/mosaic/author/refs b/packages/site/snapshots/latest/mosaic/author/refs deleted file mode 120000 index d01c31d62..000000000 --- a/packages/site/snapshots/latest/mosaic/author/refs +++ /dev/null @@ -1 +0,0 @@ -refs.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/refs.mdx b/packages/site/snapshots/latest/mosaic/author/refs.mdx deleted file mode 100644 index 469439a0c..000000000 --- a/packages/site/snapshots/latest/mosaic/author/refs.mdx +++ /dev/null @@ -1,334 +0,0 @@ ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - authorRef: Hello from Author page - modes: - - active - - snapshot-file - - snapshot-s3 - sidebarPriority: 3 -lastModified: 1692689032572 -fullPath: /mosaic/author/refs.mdx -route: /mosaic/author/refs -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Refs - path: /mosaic/author/refs - id: /mosaic/author/refs.mdx -readingTime: - text: 4 min read - minutes: 3.075 - time: 184500 - words: 615 -tableOfContents: - - level: 2 - id: local-refs-in-schema-reference - text: Local refs (In-schema reference) - - level: 2 - id: remote-refs-cross-schema-reference - text: Remote Refs (Cross-schema reference) - - level: 2 - id: advanced - text: Advanced - - level: 3 - id: output - text: Output - - level: 3 - id: output-with-mosaic-components - text: Output with Mosaic Components - - level: 2 - id: setting-refs-using-plugins - text: Setting Refs using Plugins - - level: 3 - id: create-new-refs - text: Create new refs - - level: 3 - id: existing-refs - text: Existing refs - - level: 3 - id: create-global-refs - text: Create global refs -navigation: - prev: - title: Aliases - route: /mosaic/author/aliases - next: - title: Fragments - route: /mosaic/author/fragments -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -Refs are a very powerful feature of Mosaic documents that use [JSON References](https://json-spec.readthedocs.io/reference.html) to reference -a property from the page frontmatter or frontmatter of other pages. - -The key concept is that of a JSON pointer which takes the form **A**#**B** where: - -* **A** is the relative path from the current schema to a target schema. If A is empty, the reference is to a type or property in the same schema, an in-schema reference. Otherwise, the reference is to a different schema, a cross-schema reference. -* **B** is the complete path from the root of the schema to a type or property in the schema. If # in not included or B is empty, the reference is to an entire schema. - -To translate this for our purposes: - -* **A** is the relative path to a file in the filesystem. -* **B** is the path to a property in the frontmatter of the file. - -It's probably better explained with examples... - -## Local refs (In-schema reference) - -It is possible to reference a page's own frontmatter to avoid duplication: - -``` ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - sidebarPriority: - $ref: '#/sidebar/priority' ---- -``` - -This page you are reading right now has a sidebar priority of **{meta.data.sidebarPriority}**. - -The value of `data.sidebarPriority` comes from `sidebar.priority` in the frontmatter. - - - Notice that because we don't specify a path before the `#` in the ref we need to put the whole - value inside quotes. - - -## Remote Refs (Cross-schema reference) - -It is possible to reference frontmatter of other pages. Again this helps avoid duplication but the real power is using refs to build the data model. See [advanced](#advanced) for more information. - -The [index](./index) page of the Author section has this frontmatter: - -``` ---- -title: Author -layout: DetailTechnical -sidebar: - priority: 3 -data: - exampleRefData: Hello from Author page ---- -``` - -This page you are currently looking at is referencing the `data.exampleRefData` in it's frontmatter like this: - -``` ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - authorRef: - $ref: ./#/data/exampleRefData ---- -``` - -I can then use the data and embed it in this page like this: - -``` -{meta.data.authorRef} -``` - -And here it is: {meta.data.authorRef} - - - Notice that we did not need to put `/index` in the ref since index pages are resolved - automatically. - - -## Advanced - -You have had a taste of the power and want to know more? OK, lets reference and then list out all the mosaic modes: - -
    - {meta.data.modes.map(mode => ( -
  • {mode}
  • - ))} -
- -The Modes [index](../configure/modes/index) page has this frontmatter: - -``` ---- -title: Modes of operation -layout: DetailTechnical -sidebar: - priority: 4 -data: - modes: - $ref: ./*#/title ---- -``` - -The ref here is essentially using a wildcard (the \*) to grab the `mode` property from the frontmatter of every page in the modes folder. - -We can reference that data just like before: - -``` ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - modes: - $ref: ../configure/modes#/data/modes ---- -``` - -### Output - -With the code below, the referenced data can be embedded in a page. - -``` -
    - {meta.data.modes.map(mode => ( -
  • {mode}
  • - ))} -
-``` - -### Output with Mosaic Components - -You can use Mosaic components with referenced data as well. Below we are using the `Tiles` and `TileContent` components. - - - {meta.data.modes.map(mode => ( - - ))} - - -``` - - {meta.data.modes.map(mode => ( - - ))} - -``` - -## Setting Refs using Plugins - -Mosaic plugins can create new refs, create new *global* refs and see existing refs created by the page or other plugins. This is achieved using a special `config` property available in the plugin helpers. - -### Create new refs - -Use the `config.setRef` function from the helpers provided to plugin lifecycle events. You need to provide - -* The file/fullpath to write the ref to -* The path to the ptoperty where the ref will be applied -* The value of the ref, which can use wildcards - -For example, the following would add a property to pages named `titles`. The value is the title of all pages in the **same** directory as the current page - -``` - async $afterSource(pages, { config }) { - for (const page of pages) { - config.setRef(page.fullPath, ['titles', '$ref'], `**#/title`); - } - return pages; - } -``` - - - When setting the property path the last string must be `$ref` otherwise you're not creating a ref - that will be resolved by the RefPlugin. - - -### Existing refs - -To view refs that already exist you can use `config.data.refs`. For example to see all refs for a page: - -``` - config.data.refs[fullPathToPage] -``` - -### Create global refs - -Global refs are similar to regular refs except they do not pre-resolve. This means they are resolved when the referenced file is read and the global mosaic filesystem, made up of multiple sources, is used rather than the filesystem of a single source. diff --git a/packages/site/snapshots/latest/mosaic/author/shared-config.json b/packages/site/snapshots/latest/mosaic/author/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/author/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/sidebar.json b/packages/site/snapshots/latest/mosaic/author/sidebar.json deleted file mode 100644 index 024b08d1c..000000000 --- a/packages/site/snapshots/latest/mosaic/author/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/author/index","fullPath":"/mosaic/author/index.mdx","name":"Author","priority":3,"data":{"level":2,"link":"/mosaic/author/index"},"childNodes":[]},{"id":"/mosaic/author/markdown-syntax","fullPath":"/mosaic/author/markdown-syntax.mdx","name":"Markdown Syntax","priority":5,"data":{"level":2,"link":"/mosaic/author/markdown-syntax"},"childNodes":[]},{"id":"/mosaic/author/frontmatter","fullPath":"/mosaic/author/frontmatter.mdx","name":"Frontmatter","priority":4,"data":{"level":2,"link":"/mosaic/author/frontmatter"},"childNodes":[]},{"id":"/mosaic/author/aliases","fullPath":"/mosaic/author/aliases.mdx","name":"Aliases","priority":3,"data":{"level":2,"link":"/mosaic/author/aliases"},"childNodes":[]},{"id":"/mosaic/author/refs","fullPath":"/mosaic/author/refs.mdx","name":"Refs","priority":3,"data":{"level":2,"link":"/mosaic/author/refs"},"childNodes":[]},{"id":"/mosaic/author/fragments","fullPath":"/mosaic/author/fragments.mdx","name":"Fragments","priority":2,"data":{"level":2,"link":"/mosaic/author/fragments"},"childNodes":[]},{"id":"/mosaic/author/ui-components","fullPath":"/mosaic/author/ui-components.mdx","name":"UI Components","priority":2,"data":{"level":2,"link":"/mosaic/author/ui-components"},"childNodes":[]},{"id":"/mosaic/author/page-templates","fullPath":"/mosaic/author/page-templates.mdx","name":"Page Templates","priority":1,"data":{"level":2,"link":"/mosaic/author/page-templates"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/ui-components b/packages/site/snapshots/latest/mosaic/author/ui-components deleted file mode 120000 index 2dc3fd50b..000000000 --- a/packages/site/snapshots/latest/mosaic/author/ui-components +++ /dev/null @@ -1 +0,0 @@ -ui-components.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/ui-components.mdx b/packages/site/snapshots/latest/mosaic/author/ui-components.mdx deleted file mode 100644 index 25883904e..000000000 --- a/packages/site/snapshots/latest/mosaic/author/ui-components.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: UI Components -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1692689032572 -fullPath: /mosaic/author/ui-components.mdx -route: /mosaic/author/ui-components -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: UI Components - path: /mosaic/author/ui-components - id: /mosaic/author/ui-components.mdx -readingTime: - text: 1 min read - minutes: 0.005 - time: 300 - words: 1 -tableOfContents: [] -navigation: - prev: - title: Fragments - route: /mosaic/author/fragments - next: - title: Page Templates - route: /mosaic/author/page-templates -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/page-templates - fullPath: /mosaic/author/page-templates.mdx - name: Page Templates - priority: 1 - data: - level: 2 - link: /mosaic/author/page-templates - childNodes: [] ---- -# {meta.title} - -Todo... diff --git a/packages/site/snapshots/latest/mosaic/configure/index b/packages/site/snapshots/latest/mosaic/configure/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/index.mdx b/packages/site/snapshots/latest/mosaic/configure/index.mdx deleted file mode 100644 index 9373e9dbf..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/index.mdx +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Configure -layout: DetailTechnical -sidebar: - priority: 4 -lastModified: 1692689032573 -fullPath: /mosaic/configure/index.mdx -route: /mosaic/configure/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx -readingTime: - text: 1 min read - minutes: 0.19 - time: 11400 - words: 38 -tableOfContents: [] -navigation: - next: - title: Modes of operation - route: /mosaic/configure/modes/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Mosaic is a tool which retrieves, formats and combines documentation pages from any number of different external sources (such as GitHub repositories, local disks or REST endpoints), into a single filesystem for you to use in your websites. diff --git a/packages/site/snapshots/latest/mosaic/configure/layouts/index b/packages/site/snapshots/latest/mosaic/configure/layouts/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/layouts/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/layouts/index.mdx b/packages/site/snapshots/latest/mosaic/configure/layouts/index.mdx deleted file mode 100644 index a499d1eb5..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/layouts/index.mdx +++ /dev/null @@ -1,359 +0,0 @@ ---- -title: Layouts -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1696003021484 -fullPath: /mosaic/configure/layouts/index.mdx -route: /mosaic/configure/layouts/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Layouts - path: /mosaic/configure/layouts/index - id: /mosaic/configure/layouts/index.mdx -readingTime: - text: 1 min read - minutes: 0.005 - time: 300 - words: 1 -tableOfContents: [] -navigation: - prev: - title: HTTP Source - route: /mosaic/configure/sources/http-source - next: - title: Detail Highlight - route: /mosaic/configure/layouts/detail-highlight -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Todo... diff --git a/packages/site/snapshots/latest/mosaic/configure/layouts/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/layouts/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/layouts/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/active b/packages/site/snapshots/latest/mosaic/configure/modes/active deleted file mode 120000 index 81b52f1d9..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/active +++ /dev/null @@ -1 +0,0 @@ -active.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/active.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/active.mdx deleted file mode 100644 index 2a3fde971..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/active.mdx +++ /dev/null @@ -1,403 +0,0 @@ ---- -title: Active mode -mode: active -layout: DetailTechnical -lastModified: 1692689032573 -fullPath: /mosaic/configure/modes/active.mdx -route: /mosaic/configure/modes/active -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx - - label: Active mode - path: /mosaic/configure/modes/active - id: /mosaic/configure/modes/active.mdx -readingTime: - text: 1 min read - minutes: 0.975 - time: 58500 - words: 195 -tableOfContents: - - level: 2 - id: configuring-your-content-sources - text: Configuring your content sources - - level: 2 - id: pull-your-local-content - text: Pull your local content - - level: 2 - id: pull-your-remote-content - text: Pull your remote content -navigation: - prev: - title: Modes of operation - route: /mosaic/configure/modes/index - next: - title: Snapshot file mode - route: /mosaic/configure/modes/snapshot-file -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -In `active` mode content can be *pulled* from heterogeneous data sources and normalized via plugins, to the configured components/theme. -As your content changes, the site will *re-pull* the content and update your site in real-time. - -The standard generated site comes with 2 sources to demonstrate, how 'active' mode work. - -* a local source, which loads content from `./docs` -* a remote source, which loads content from a [sample Github repository](https://github.com/jpmorganchase/mosaic/tree/main/docs) - -## Configuring your content sources - -All content is composed together within a *namespace*. - -A *namespace* is the scope for aggregated content, represented by the root path. -e.g Our sample docs are aggregated into a *namespace* called `mosaic` and served by the user journey `http://localhost:3000/mosaic` - -Mosaic doc sources are defined by a file called `mosaic.config.mjs` - -Here is how that might look for a standard site. - -## Pull your local content - -To tryout local content creation, add a file called`./docs/index.mdx` - -The load `http://localhost:3000/local` - -Each directory should contain an `index.mdx` which is the default page, when a page is loaded without a path - -Now create other pages and subdirectories and explore how Mosaic, builds your user-journeys from your fileset. - -## Pull your remote content - -To tryout remote content creation, your standard site comes pre-configured to load our Mosaic sample docs. - -Edit the `mosaic.config.mjs` and change your `repoUrl` and `branch` to pull content from other repos. diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/index b/packages/site/snapshots/latest/mosaic/configure/modes/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/index.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/index.mdx deleted file mode 100644 index 95046511f..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/index.mdx +++ /dev/null @@ -1,403 +0,0 @@ ---- -title: Modes of operation -layout: DetailTechnical -sidebar: - priority: 4 -data: - modes: - - active - - snapshot-file - - snapshot-s3 -lastModified: 1692689012048 -fullPath: /mosaic/configure/modes/index.mdx -route: /mosaic/configure/modes/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx -readingTime: - text: 1 min read - minutes: 0.485 - time: 29100 - words: 97 -tableOfContents: - - level: 2 - id: active-updates - text: Active updates - - level: 2 - id: static-content - text: Static content - - level: 3 - id: file-based-snapshots - text: File based snapshots - - level: 3 - id: s3-based-snapshots - text: S3 based snapshots -navigation: - next: - title: Active mode - route: /mosaic/configure/modes/active -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Mosaic can operate in 3 different modes - -* `active` -* `snapshot-file` -* `snapshot-s3` - -## Active updates - -In *active* mode, content updates in real-time. - -*active* mode content is pulled at configured intervals in real-time, as defined by `mosaic.config.mjs`. - -Read the [active](./active) configuration docs. - -## Static content - -Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself. - -In a snapshot mode, the snapshot does update itself. - -### File based snapshots - -In `snapshot-file` mode, immutable snapshots of content are loaded at startup from the local file-system. - -Read the [snapshot-file](./snapshot-file) configuration docs. - -### S3 based snapshots - -In `snapshot-s3` mode, snapshots of content are loaded at startup from a remote S3 bucket. - -Read the [snapshot-s3](./snapshot-s3) configuration docs. diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/modes/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file deleted file mode 120000 index a3dea6db6..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file +++ /dev/null @@ -1 +0,0 @@ -snapshot-file.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file.mdx deleted file mode 100644 index 0c5a7718b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file.mdx +++ /dev/null @@ -1,382 +0,0 @@ ---- -title: Snapshot file mode -mode: snapshot-file -layout: DetailTechnical -lastModified: 1692689012048 -fullPath: /mosaic/configure/modes/snapshot-file.mdx -route: /mosaic/configure/modes/snapshot-file -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx - - label: Snapshot file mode - path: /mosaic/configure/modes/snapshot-file - id: /mosaic/configure/modes/snapshot-file.mdx -readingTime: - text: 1 min read - minutes: 0.32 - time: 19200 - words: 64 -tableOfContents: - - level: 2 - id: generating-a-snapshot - text: Generating a snapshot -navigation: - prev: - title: Active mode - route: /mosaic/configure/modes/active - next: - title: Snapshot AWS/S3 mode - route: /mosaic/configure/modes/snapshot-s3 -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -In `snapshot-file` mode a local immutable snapshot can be loaded by the site. Typically, the snapshot and the site are -deployed together and upon startup the site can load the snapshot from the local file-system. - -To use `snapshot-file` mode - -``` -export MOSAIC_MODE="snapshot-file" -export MOSAIC_SNAPSHOT_DIR="./snapshot/latest" -``` - -## Generating a snapshot - -To generate a snapshot, run - -``` -yarn gen:snapshot -``` - -Commit the snapshot to your Git repo and push the site+snapshot to your Git repo, within the same branch. diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3 b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3 deleted file mode 120000 index 561e1f22b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3 +++ /dev/null @@ -1 +0,0 @@ -snapshot-s3.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3.mdx deleted file mode 100644 index 03d5c6ac4..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3.mdx +++ /dev/null @@ -1,393 +0,0 @@ ---- -title: Snapshot AWS/S3 mode -mode: snapshot-s3 -layout: DetailTechnical -lastModified: 1692689012048 -fullPath: /mosaic/configure/modes/snapshot-s3.mdx -route: /mosaic/configure/modes/snapshot-s3 -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx - - label: Snapshot AWS/S3 mode - path: /mosaic/configure/modes/snapshot-s3 - id: /mosaic/configure/modes/snapshot-s3.mdx -readingTime: - text: 1 min read - minutes: 0.335 - time: 20100 - words: 67 -tableOfContents: - - level: 2 - id: generating-a-snapshot - text: Generating a snapshot - - level: 2 - id: uploading-a-snapshot-to-s3 - text: Uploading a snapshot to S3 -navigation: - prev: - title: Snapshot file mode - route: /mosaic/configure/modes/snapshot-file - next: - title: Theming Your Site - route: /mosaic/configure/theme/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -In `snapshot-s3` mode a snapshot can be loaded from a pre-configured AWS S3 bucket. - -To use `snapshot-s3` mode - -``` -> export MOSAIC_MODE="snapshot-s3" -> MOSAIC_S3_BUCKET="" -> MOSAIC_S3_REGION="" -> MOSAIC_S3_ACCESS_KEY_ID="" -> MOSAIC_S3_SECRET_ACCESS_KEY="" -``` - -## Generating a snapshot - -To generate a snapshot, run - -``` -yarn gen:snapshot -``` - -## Uploading a snapshot to S3 - -To upload a snapshot to S3, define the required environment variables and run - -``` -yarn mosaic upload -S -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/index b/packages/site/snapshots/latest/mosaic/configure/plugins/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/index.mdx b/packages/site/snapshots/latest/mosaic/configure/plugins/index.mdx deleted file mode 100644 index 823161945..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/index.mdx +++ /dev/null @@ -1,458 +0,0 @@ ---- -title: Plugins -layout: DetailTechnical -sidebar: - priority: 1 -lastModified: 1696003048510 -fullPath: /mosaic/configure/plugins/index.mdx -route: /mosaic/configure/plugins/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Plugins - path: /mosaic/configure/plugins/index - id: /mosaic/configure/plugins/index.mdx -readingTime: - text: 2 min read - minutes: 1.92 - time: 115200 - words: 384 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: configuration - text: Configuration - - level: 2 - id: default-plugins - text: Default Plugins - - level: 2 - id: plugin-errors - text: Plugin errors - - level: 2 - id: multiple-instances - text: Multiple Instances -navigation: - prev: - title: Product Preview Layout - route: /mosaic/configure/layouts/product-preview - next: - title: Lifecycle Events - route: /mosaic/configure/plugins/lifecycle/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Mosaic Plugins are [lifecycle-based](./lifecycle/index) hooks that are called on *every* source at different stages. You will never need to invoke a lifecycle method directly as their execution is managed by a plugin runner. - -Plugins enable Mosaic to have a lightweight and flexible, modular architecture by encapsulating features and functionality as plugins. - -## Installation - -`yarn add @jpmorganchase/mosaic-plugins` - -## Configuration - -Plugins are added to the `plugins` collection of the mosaic config file. Like [sources](../sources/index), plugins have an options property that can be used to provide plugin specific configuration. - -| Property | Description | Required | -| --------------- | -------------------------------------------------------------------------- | -------- | -| modulePath | The path to the installed plugin module | Yes | -| disabled | Exclude this plugin completely. Defaults to false | No | -| runtimeOnly | Exclude this plugin when generating a snapshot. Defaults to false | No | -| previewDisabled | Exclude this plugin for "preview" sources | No | -| allowMultiple | Allow multiple instances of this plugin to run. | No | -| priority | The importance of this plugin. Plugins with the highest priority run first | No | -| options | Collection of other configuration values | No | - -```js - plugins: [ - { - modulePath: '@jpmorganchase/mosaic-plugins/PagesWithoutFileExtPlugin', - options: {}, - priority: 1 - }, - { - modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin', - options: {} - }, - { - modulePath: '@jpmorganchase/mosaic-plugins/ReadingTimePlugin', - options: {} - } -], -``` - - - There is no need to import the plugin module directly. As long as the plugin is installed, Mosaic - will be able to import it using the built-in plugin loader. - - -## Default Plugins - -The following plugins are always included by Mosaic, regardless of whether they are present in the plugins collection of the Mosaic config file: - -1. [$TagPlugin](./tag-plugin) -2. [$AliasPlugin](./alias-plugin) -3. [$CodeModPlugin](./codemod-plugin) -4. [$RefPlugin](./ref-plugin) - -## Plugin errors - -Should a plugin fail, the failure will **not** cause a source to close or for any other plugin to not run. - -Instead plugin errors are tracked by Mosaic and can be viewed in the `pluginErrors` property available on each source listed by the list sources [admin API](../admin/index). - -Plugin errors will be split by lifecycle event and only the lifecycle events used by the loaded plugins used will be shown. - -## Multiple Instances - -By default, Mosaic will only run one instance of a plugin. - -It may be the case that you wish to run the same plugin twice with a slightly different config. To do this, you must have 2 instances listed in the plugins collection and they **both** must set the `allowMultiple` option to `true`. - -For example, the config below runs the [SidebarPlugin](./sidebar-plugin) twice: - -```js -plugins: [ - { - modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin', - options: { rootDirGlob: 'products/product-a' }, - allowMultiple: true - }, - { - modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin', - options: { rootDirGlob: '*/!(product-a)/*' }, - allowMultiple: true - } - // other plugins -]; -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-source b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-source deleted file mode 120000 index 9cc158a68..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-source +++ /dev/null @@ -1 +0,0 @@ -after-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-update b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-update deleted file mode 120000 index 6dbe358d0..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-update +++ /dev/null @@ -1 +0,0 @@ -after-update.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/before-send b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/before-send deleted file mode 120000 index 2ecba4c54..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/before-send +++ /dev/null @@ -1 +0,0 @@ -before-send.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/should-clear-cache b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/should-clear-cache deleted file mode 120000 index 0ffe51a1b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/should-clear-cache +++ /dev/null @@ -1 +0,0 @@ -should-clear-cache.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/plugins/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sidebar.json b/packages/site/snapshots/latest/mosaic/configure/sidebar.json deleted file mode 100644 index 908f4f397..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/configure/index","fullPath":"/mosaic/configure/index.mdx","name":"Configure","priority":4,"data":{"level":2,"link":"/mosaic/configure/index"},"childNodes":[]},{"id":"/mosaic/configure/modes/index","fullPath":"/mosaic/configure/modes/index.mdx","name":"Modes of operation","priority":4,"data":{"level":3,"link":"/mosaic/configure/modes/index"},"childNodes":[{"id":"/mosaic/configure/modes/active","fullPath":"/mosaic/configure/modes/active.mdx","name":"Active mode","data":{"level":3,"link":"/mosaic/configure/modes/active"},"childNodes":[]},{"id":"/mosaic/configure/modes/snapshot-file","fullPath":"/mosaic/configure/modes/snapshot-file.mdx","name":"Snapshot file mode","data":{"level":3,"link":"/mosaic/configure/modes/snapshot-file"},"childNodes":[]},{"id":"/mosaic/configure/modes/snapshot-s3","fullPath":"/mosaic/configure/modes/snapshot-s3.mdx","name":"Snapshot AWS/S3 mode","data":{"level":3,"link":"/mosaic/configure/modes/snapshot-s3"},"childNodes":[]}]},{"id":"/mosaic/configure/theme/index","fullPath":"/mosaic/configure/theme/index.mdx","name":"Theming Your Site","priority":4,"data":{"level":3,"link":"/mosaic/configure/theme/index"},"childNodes":[{"id":"/mosaic/configure/theme/custom-css","fullPath":"/mosaic/configure/theme/custom-css.mdx","name":"Custom CSS","priority":3,"data":{"level":3,"link":"/mosaic/configure/theme/custom-css"},"childNodes":[]},{"id":"/mosaic/configure/theme/custom-components","fullPath":"/mosaic/configure/theme/custom-components.mdx","name":"Custom Components","priority":2,"data":{"level":3,"link":"/mosaic/configure/theme/custom-components"},"childNodes":[]}]},{"id":"/mosaic/configure/admin/index","fullPath":"/mosaic/configure/admin/index.mdx","name":"Admin","priority":3,"data":{"level":3,"link":"/mosaic/configure/admin/index"},"childNodes":[]},{"id":"/mosaic/configure/sources/index","fullPath":"/mosaic/configure/sources/index.mdx","name":"Sources","priority":3,"data":{"level":3,"link":"/mosaic/configure/sources/index"},"childNodes":[{"id":"/mosaic/configure/sources/schedules","fullPath":"/mosaic/configure/sources/schedules.mdx","name":"Schedules","priority":4,"data":{"level":3,"link":"/mosaic/configure/sources/schedules"},"childNodes":[]},{"id":"/mosaic/configure/sources/local-folder-source","fullPath":"/mosaic/configure/sources/local-folder-source.mdx","name":"Local Folder Source","priority":3,"data":{"level":3,"link":"/mosaic/configure/sources/local-folder-source"},"childNodes":[]},{"id":"/mosaic/configure/sources/git-repo-source","fullPath":"/mosaic/configure/sources/git-repo-source.mdx","name":"Git Repo Source","priority":2,"data":{"level":3,"link":"/mosaic/configure/sources/git-repo-source"},"childNodes":[]},{"id":"/mosaic/configure/sources/http-source","fullPath":"/mosaic/configure/sources/http-source.mdx","name":"HTTP Source","priority":1,"data":{"level":3,"link":"/mosaic/configure/sources/http-source"},"childNodes":[]}]},{"id":"/mosaic/configure/layouts/index","fullPath":"/mosaic/configure/layouts/index.mdx","name":"Layouts","priority":2,"data":{"level":3,"link":"/mosaic/configure/layouts/index"},"childNodes":[{"id":"/mosaic/configure/layouts/detail-highlight","fullPath":"/mosaic/configure/layouts/detail-highlight.mdx","name":"Detail Highlight","data":{"level":3,"link":"/mosaic/configure/layouts/detail-highlight"},"childNodes":[]},{"id":"/mosaic/configure/layouts/detail-overview","fullPath":"/mosaic/configure/layouts/detail-overview.mdx","name":"Detail Overview","data":{"level":3,"link":"/mosaic/configure/layouts/detail-overview"},"childNodes":[]},{"id":"/mosaic/configure/layouts/detail-technical","fullPath":"/mosaic/configure/layouts/detail-technical.mdx","name":"Detail Technical","data":{"level":3,"link":"/mosaic/configure/layouts/detail-technical"},"childNodes":[]},{"id":"/mosaic/configure/layouts/landing","fullPath":"/mosaic/configure/layouts/landing.mdx","name":"Landing Layout","data":{"level":3,"link":"/mosaic/configure/layouts/landing"},"childNodes":[]},{"id":"/mosaic/configure/layouts/product-discover","fullPath":"/mosaic/configure/layouts/product-discover.mdx","name":"Product Discover Layout","data":{"level":3,"link":"/mosaic/configure/layouts/product-discover"},"childNodes":[]},{"id":"/mosaic/configure/layouts/product-preview","fullPath":"/mosaic/configure/layouts/product-preview.mdx","name":"Product Preview Layout","data":{"level":3,"link":"/mosaic/configure/layouts/product-preview"},"childNodes":[]}]},{"id":"/mosaic/configure/plugins/index","fullPath":"/mosaic/configure/plugins/index.mdx","name":"Plugins","priority":1,"data":{"level":3,"link":"/mosaic/configure/plugins/index"},"childNodes":[{"id":"/mosaic/configure/plugins/lifecycle/index","fullPath":"/mosaic/configure/plugins/lifecycle/index.mdx","name":"Lifecycle Events","priority":1,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/index"},"childNodes":[{"id":"/mosaic/configure/plugins/lifecycle/after-source","fullPath":"/mosaic/configure/plugins/lifecycle/after-source.mdx","name":"$afterSource","priority":5,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/after-source"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/before-send","fullPath":"/mosaic/configure/plugins/lifecycle/before-send.mdx","name":"$beforeSend","priority":4,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/before-send"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/after-update","fullPath":"/mosaic/configure/plugins/lifecycle/after-update.mdx","name":"afterUpdate","priority":3,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/after-update"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/should-clear-cache","fullPath":"/mosaic/configure/plugins/lifecycle/should-clear-cache.mdx","name":"shouldClearCache","priority":2,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/should-clear-cache"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources","fullPath":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx","name":"shouldUpdateNamespaceSources","priority":1,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources"},"childNodes":[]}]},{"id":"/mosaic/configure/plugins/alias-plugin","fullPath":"/mosaic/configure/plugins/alias-plugin.mdx","name":"$AliasPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/alias-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/breadcrumbs-plugin","fullPath":"/mosaic/configure/plugins/breadcrumbs-plugin.mdx","name":"BreadcrumbsPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/breadcrumbs-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/broken-links-plugin","fullPath":"/mosaic/configure/plugins/broken-links-plugin.mdx","name":"BrokenLinksPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/broken-links-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/codemod-plugin","fullPath":"/mosaic/configure/plugins/codemod-plugin.mdx","name":"$CodeModPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/codemod-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lazy-page-plugin","fullPath":"/mosaic/configure/plugins/lazy-page-plugin.mdx","name":"LazyPagePlugin","data":{"level":3,"link":"/mosaic/configure/plugins/lazy-page-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/pages-wthout-extensions-plugin","fullPath":"/mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx","name":"PagesWithoutFileExtPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/pages-wthout-extensions-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/public-assets-plugin","fullPath":"/mosaic/configure/plugins/public-assets-plugin.mdx","name":"PublicAssetsPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/public-assets-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/reading-time-plugin","fullPath":"/mosaic/configure/plugins/reading-time-plugin.mdx","name":"ReadingTimePlugin","data":{"level":3,"link":"/mosaic/configure/plugins/reading-time-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/ref-plugin","fullPath":"/mosaic/configure/plugins/ref-plugin.mdx","name":"$RefPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/ref-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/search-index-plugin","fullPath":"/mosaic/configure/plugins/search-index-plugin.mdx","name":"SearchIndexPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/search-index-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/shared-config-plugin","fullPath":"/mosaic/configure/plugins/shared-config-plugin.mdx","name":"SharedConfigPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/shared-config-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/sidebar-plugin","fullPath":"/mosaic/configure/plugins/sidebar-plugin.mdx","name":"SidebarPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/sidebar-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/site-map-plugin","fullPath":"/mosaic/configure/plugins/site-map-plugin.mdx","name":"SiteMapPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/site-map-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/tag-plugin","fullPath":"/mosaic/configure/plugins/tag-plugin.mdx","name":"$TagPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/tag-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/toc-plugin","fullPath":"/mosaic/configure/plugins/toc-plugin.mdx","name":"TableOfContentsPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/toc-plugin"},"childNodes":[]}]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source b/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source deleted file mode 120000 index c19523970..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source +++ /dev/null @@ -1 +0,0 @@ -git-repo-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source.mdx deleted file mode 100644 index 5d0c07324..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source.mdx +++ /dev/null @@ -1,430 +0,0 @@ ---- -title: Git Repo Source -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1693484762207 -fullPath: /mosaic/configure/sources/git-repo-source.mdx -route: /mosaic/configure/sources/git-repo-source -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx - - label: Git Repo Source - path: /mosaic/configure/sources/git-repo-source - id: /mosaic/configure/sources/git-repo-source.mdx -readingTime: - text: 2 min read - minutes: 1.31 - time: 78600 - words: 262 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: credentials-and-access-tokens - text: Credentials and Access tokens - - level: 3 - id: example - text: Example - - level: 2 - id: configuration - text: Configuration - - level: 3 - id: example-git-repo-source-definition - text: Example Git Repo Source Definition -navigation: - prev: - title: Local Folder Source - route: /mosaic/configure/sources/local-folder-source - next: - title: HTTP Source - route: /mosaic/configure/sources/http-source -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -The Git Repo Source is used to pull content from a remote git repository e.g. github. - -## Installation - -`yarn add @jpmorganchase/mosaic-source-git-repo` - -## Credentials and Access tokens - -To successfully clone the git repo, the source definition must include credentials that have sufficient permissions to clone the repository. - -We recommend storing a [personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) in an environment variable and using the environment variable in the source definition. - -This keeps credentials out of code where they may be accidentally exposed to third parties. - -### Example - -``` -export MOSAIC_DOCS_CLONE_CREDENTIALS=":", -``` - -## Configuration - -| Property | Description | Required | -| ------------------- | -------------------------------------------------------------------------------- | -------- | -| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-git-repo) | Yes | -| namespace | The scope for this source. | Yes | -| disabled | When true, content from this source is not used | No | -| options.credentials | Collection of URLS to make requests | Yes | -| options.prefixDir | The root path used in the content URL | Yes | -| options.subfolder | The name of the folder within the cloned repo containing the docs | Yes | -| options.repo | The repo URL | Yes | -| options.branch | The branch or tag to clone | Yes | -| options.extensions | Collection of file extensions that the source will look for inside the subfolder | Yes | -| options.remote | The name of the git remote to use. Defaults to origin. | Yes | - -### Example Git Repo Source Definition - -``` - - { - modulePath: '@jpmorganchase/mosaic-source-git-repo', - namespace: 'mosaic', - options: { - credentials: process.env.MOSAIC_DOCS_CLONE_CREDENTIALS, - prefixDir: 'mosaic', - subfolder: 'docs', - repo: 'https://github.com/jpmorganchase/mosaic.git', - branch: 'main', - extensions: ['.mdx'], - remote: 'origin' - } - } - -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/http-source b/packages/site/snapshots/latest/mosaic/configure/sources/http-source deleted file mode 120000 index 5ff76548b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/http-source +++ /dev/null @@ -1 +0,0 @@ -http-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/http-source.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/http-source.mdx deleted file mode 100644 index 9068d68ba..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/http-source.mdx +++ /dev/null @@ -1,407 +0,0 @@ ---- -title: HTTP Source -layout: DetailTechnical -sidebar: - priority: 1 -lastModified: 1693484762208 -fullPath: /mosaic/configure/sources/http-source.mdx -route: /mosaic/configure/sources/http-source -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx - - label: HTTP Source - path: /mosaic/configure/sources/http-source - id: /mosaic/configure/sources/http-source.mdx -readingTime: - text: 1 min read - minutes: 0.92 - time: 55200 - words: 184 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: configuration - text: Configuration - - level: 3 - id: example-http-source-definition - text: Example HTTP Source Definition -navigation: - prev: - title: Git Repo Source - route: /mosaic/configure/sources/git-repo-source - next: - title: Layouts - route: /mosaic/configure/layouts/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -The HTTP Source is used to pull content over HTTP. - -Multiple endpoints can be specified and the source will combine and transform the response from each into a single collection of pages. - -## Installation - -`yarn add @jpmorganchase/mosaic-source-http` - -## Configuration - -| Property | Description | Required | -| ------------------------------------------ | ----------------------------------------------------------------------------- | -------- | -| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-http) | Yes | -| namespace | The scope for this source | Yes | -| disabled | When true, content from this source is not used | No | -| options.endpoints | Collection of URLS to make requests | Yes | -| options.prefixDir | The root path used in the content URL | Yes | -| options.transformResponseToPagesModulePath | The path of the module used to transform endpoint responses into Mosaic pages | Yes | -| options.checkIntervalMins | Number of minutes to wait between requests. Defaults to 5 minutes | No | -| options.initialDelayMs | Number of milliseconds to wait for making initial request. Defaults to 1000 | No | - -### Example HTTP Source Definition - -``` - { - modulePath: '@jpmorganchase/mosaic-source-http', - namespace: 'my-namespace', - options: { - prefixDir: 'docs', - endpoints: [ - 'https://api.data.com/blah', - 'https://api.data.com/hello' - ], - transformResponseToPagesModulePath: '@scope/transformer-package' - } - } -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/index b/packages/site/snapshots/latest/mosaic/configure/sources/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/index.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/index.mdx deleted file mode 100644 index f86a1aa9b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/index.mdx +++ /dev/null @@ -1,468 +0,0 @@ ---- -title: Sources -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1693484762209 -fullPath: /mosaic/configure/sources/index.mdx -route: /mosaic/configure/sources/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx -readingTime: - text: 3 min read - minutes: 2.395 - time: 143700 - words: 479 -tableOfContents: - - level: 2 - id: source-definitions - text: Source Definitions - - level: 3 - id: example-local-folder-source-definition - text: Example Local Folder Source Definition - - level: 2 - id: source-namespace - text: Source Namespace - - level: 2 - id: source-schedules - text: Source Schedules - - level: 2 - id: source-types - text: Source Types - - level: 2 - id: watching-for-updates - text: Watching for Updates - - level: 2 - id: source-worker-thread - text: Source Worker Thread - - level: 3 - id: gotchas - text: Gotchas -navigation: - prev: - title: Admin - route: /mosaic/configure/admin/index - next: - title: Source Schedules - route: /mosaic/configure/sources/schedules -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Sources are what Mosaic uses to pull content from disparte locations and merge into a single virtual filesystem that can be used by a Mosaic Site. - -Depending on the [mode](../modes/index) used, sources can update periodically ensuring that new content is made available automatically. - -## Source Definitions - -Source Definitions are specified in the `sources` collection of a mosaic config file. - -Each source uses a [zod schema](https://zod.dev/?id=introduction) to validate the provided JSON to ensure that all required information for the source to pull content has been provided. - -A source definition at a minimum needs to provide the module path of the source and the [namespace](#source-namespace) that it will use. A namespace is not unique across sources though it is common that each source has a different namespace. - -Lastly, the options field can be used as a bucket for configuration values needed to configure the source e.g. credentials. - - - Users are free to add any property as a source option but please read the [gotchas](#gotchas) - first regarding the allowed *values*. - - -### Example Local Folder Source Definition - -``` - /** - * Demonstrates a local file-system source, in this case a relative path to where the - * site was generated. - * Access from your browser as http://localhost:3000/local - */ - { - modulePath: '@jpmorganchase/mosaic-source-local-folder', - namespace: 'local', // each site has it's own namespace, think of this as your content's uid - options: { - rootDir: '../../docs', // relative path to content - prefixDir: 'local', // root path used for namespace - extensions: ['.mdx'] // extensions of content which should be pulled - } - } -``` - -## Source Namespace - -A Source Namespace is a scoping mechanism for Mosaic sources used to filter the content loaded by Mosaic. By default all sources specified in the mosaic config file are loaded. - -``` -sources: [ - { - namespace: 'my-namespace', - modulePath: '@jpmorganchase/mosaic-source-local-folder' - } -]; -``` - -The following command will ensure mosaic only loads sources with the `local` scope. - -``` -yarn mosaic serve -c ''./mosaic.config.mjs' -p 8080 --scope "local" -``` - -## Source Schedules - -Source schedules define how often sources pull in content that exists remotely and if a failed source is retried. More information can be found [here](./schedules) - -## Source Types - -Out of the box, Mosaic provides 3 source "types": - -* [Local Folder](./local-folder-source) -* [Git Repo Source](./git-repo-source) -* [HTTP Source](./http-source) - -Sources must expose an observable interface so it is possible to compose sources together e.g. the Git Repo source uses the Local Folder source internally to watch the cloned folder for changes. - -## Watching for Updates - -When running in [active mode](../modes/active), Mosaic will watch for any changes to the source content and if a change is detected, will initiate a pull of that new content. - -How often to check for updates and how updates are triggered are a matter for the source to handle. Mosaic simply responds when a source emits new content. - -## Source Worker Thread - -Sources are executed inside their own worker thread to ensure that the main thread is not overloaded. It is here that a local virtual filesystem for the source is created and where several of the [Plugin Lifecycle](../plugins/index#Plugin-lifecycle) events are triggered. - -### Gotchas - -A service worker thread uses [postMessage](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/postMessage) to communicate with the main thread and vice-versa. - -This is important because it limits what values can be provided in the source definition to those that can be processed by the [Structured Clone Algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm). diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source b/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source deleted file mode 120000 index 74b1ab13c..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source +++ /dev/null @@ -1 +0,0 @@ -local-folder-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source.mdx deleted file mode 100644 index 7c21d08c8..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source.mdx +++ /dev/null @@ -1,406 +0,0 @@ ---- -title: Local Folder Source -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1693484762210 -fullPath: /mosaic/configure/sources/local-folder-source.mdx -route: /mosaic/configure/sources/local-folder-source -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx - - label: Local Folder Source - path: /mosaic/configure/sources/local-folder-source - id: /mosaic/configure/sources/local-folder-source.mdx -readingTime: - text: 2 min read - minutes: 1.18 - time: 70800 - words: 236 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: configuration - text: Configuration - - level: 3 - id: example-local-folder-source-definition - text: Example Local Folder Source Definition -navigation: - prev: - title: Source Schedules - route: /mosaic/configure/sources/schedules - next: - title: Git Repo Source - route: /mosaic/configure/sources/git-repo-source -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -The Local Folder Source is used to pull content from a folder located on the same machine as Mosaic is running. - -It is common to use this source when running mosaic locally. - -## Installation - -`yarn add @jpmorganchase/mosaic-source-local-folder` - -## Configuration - -| Property | Description | Required | -| ------------------ | ------------------------------------------------------------------------------ | -------- | -| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-local-folder) | Yes | -| namespace | The scope for this source | Yes | -| disabled | When true, content from this source is not used | No | -| options.rootDir | The top level directory content will be pulled from | Yes | -| options.prefixDir | The root path used in the content URL | Yes | -| options.extensions | Collection of file extensions that the source will look for inside the rootDir | Yes | - -### Example Local Folder Source Definition - -``` -{ - modulePath: '@jpmorganchase/mosaic-source-local-folder', - namespace: 'local', // each site has it's own namespace, think of this as your content's uid - options: { - rootDir: '../../docs', // relative path to content - prefixDir: 'local', // root path used for namespace - extensions: ['.mdx'] // extensions of content which should be pulled - } -} -``` - -This source will look for content with the ".mdx" extension in a "docs" directory 2 levels up from the Mosaic working directory. That content is included in the "local" namespace and available from a route that is prefixed with "local". - -So if you had a file, `docs/app/index.mdx` then you would be able to view it at `http://localhost:3000/local/app/index`. diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/sources/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components b/packages/site/snapshots/latest/mosaic/configure/theme/custom-components deleted file mode 120000 index 498658a9d..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components +++ /dev/null @@ -1 +0,0 @@ -custom-components.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components.mdx b/packages/site/snapshots/latest/mosaic/configure/theme/custom-components.mdx deleted file mode 100644 index e0de70de0..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components.mdx +++ /dev/null @@ -1,511 +0,0 @@ ---- -title: Custom Components -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1692689012054 -fullPath: /mosaic/configure/theme/custom-components.mdx -route: /mosaic/configure/theme/custom-components -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Theming Your Site - path: /mosaic/configure/theme/index - id: /mosaic/configure/theme/index.mdx - - label: Custom Components - path: /mosaic/configure/theme/custom-components - id: /mosaic/configure/theme/custom-components.mdx -readingTime: - text: 2 min read - minutes: 1.86 - time: 111600 - words: 372 -tableOfContents: - - level: 2 - id: create-components-folder - text: Create Components Folder - - level: 2 - id: create-card-component - text: Create Card Component - - level: 3 - id: card-component-indextsx - text: 'Card Component: index.tsx' - - level: 3 - id: card-component-cardmodulecss - text: 'Card Component: card.module.css' - - level: 2 - id: import-custom-card-component - text: Import Custom Card Component - - level: 2 - id: use-your-custom-card-component - text: Use Your Custom Card Component -navigation: - prev: - title: Custom CSS - route: /mosaic/configure/theme/custom-css - next: - title: Admin - route: /mosaic/configure/admin/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Learn how to add your own custom components to your Mosaic site. - -## Create Components Folder - -To start, create a `components` folder under `src` where you'll store your custom components. - -``` -src/ -└── components/ -``` - -In this tutorial, we will create a custom `Card` component. - -## Create Card Component - -Inside the `components` folder, create a `card` folder, which will contain your React `Card` component. The `card` folder should include `index.tsx` and `card.module.css` files as shown in the structure below: - -``` -├── src/ -│ ├── components/ -│ │ └── card/ -│ │ ├── index.tsx -│ │ └── card.module.css -``` - -### Card Component: index.tsx - -Create your `Card` component within the `index.tsx` file: - -```tsx -import React from 'react'; -import styles from './card.module.css'; - -type CardProps = { - title: string; - content: string; -}; - -export const Card: React.FC = ({ title, content }) => { - return ( -
-

{title}

-

{content}

-
- ); -}; -``` - -### Card Component: card.module.css - -Define your component styles in the `card.module.css` file: - -```css -.card { - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - padding: 16px; - transition: box-shadow 0.2s ease-in-out; -} - -.card:hover { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); -} - -.card h2 { - color: #333; - font-size: 24px; - margin-bottom: 8px; -} - -.card p { - color: #666; - font-size: 16px; - line-height: 1.5; -} -``` - -In this example, we use a CSS file, but you can use whichever styling approach you prefer, such as [vanilla extract](https://vanilla-extract.style/). - -To export your `Card` component, create an `index.ts` file in the `components` folder: - -```ts -export * from './card'; -``` - -Your final folder structure should look like this: - -``` -├── src/ -│ ├── components/ -│ │ ├── card/ -│ │ │ ├── index.tsx -│ │ │ └── card.module.css -│ │ ├── index.ts -``` - -## Import Custom Card Component - -To use your custom `Card` component, import it into your site's `_app.tsx` file. Add the following line to your imports: - -```tsx -import * as myComponents from '../components'; -``` - -Replace this line: - -```tsx -const components = mosaicComponents; -``` - -with: - -```tsx -const components = { - ...mosaicComponents, - ...myComponents -}; -``` - -This will add your custom components to the site, and any custom components in `myComponents` will override the corresponding ones in `mosaicComponents`. The spread operator (`...`) merges both `mosaicComponents` and `myComponents` objects, giving priority to `myComponents` when there is a naming conflict. - -## Use Your Custom Card Component - -Now you're ready to use your custom `Card` component. Build and run your site, and add the `Card` component to an MDX file in your `docs` folder or another source: - -```mdx - -``` - -You can create and add more custom components to your Mosaic site by following the same process. diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css b/packages/site/snapshots/latest/mosaic/configure/theme/custom-css deleted file mode 120000 index b773cc37e..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css +++ /dev/null @@ -1 +0,0 @@ -custom-css.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css.mdx b/packages/site/snapshots/latest/mosaic/configure/theme/custom-css.mdx deleted file mode 100644 index 16cd75af6..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css.mdx +++ /dev/null @@ -1,466 +0,0 @@ ---- -title: Custom CSS -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1692689012054 -fullPath: /mosaic/configure/theme/custom-css.mdx -route: /mosaic/configure/theme/custom-css -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Theming Your Site - path: /mosaic/configure/theme/index - id: /mosaic/configure/theme/index.mdx - - label: Custom CSS - path: /mosaic/configure/theme/custom-css - id: /mosaic/configure/theme/custom-css.mdx -readingTime: - text: 2 min read - minutes: 1.885 - time: 113100 - words: 377 -tableOfContents: - - level: 2 - id: create-a-css-folder - text: Create a CSS folder - - level: 2 - id: create-your-theme - text: Create your theme - - level: 2 - id: import-your-custom-css-into-your-site - text: Import your custom CSS into your site -navigation: - prev: - title: Theming Your Site - route: /mosaic/configure/theme/index - next: - title: Custom Components - route: /mosaic/configure/theme/custom-components -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -You can customize the look and feel of your Mosaic site by creating cusotm CSS files. Here is a step-by-step guide to help you create your own CSS theme. - -## Create a CSS folder - -To get started, create a folder named "css" in the "src" folder of your Mosaic project. - -``` -src/ -└── css/ -``` - -## Create your theme - -Inside the "css" folder, create a folder named "global". This is where you will add your custom styles. - -``` -src/ -└── css/ - ├── global/ - ├── index.css -``` - -Create an "index.css" file inside the "css" folder. This file will import your custom styles. - -```css -@import './global/'; -``` - -Inside your global folder, create a separate CSS file for each part of your site that you want to customize. For instance, if you want to change the text styling, create a "text.css" file inside the "global" folder. Here is an example of how your "text.css" file could look like: - -```css -h1 { - /* Set custom font size and weight */ - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h2 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h3 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h4 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h5 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h6 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -p { - font-size: /* insert value */ ; - line-height: /* insert value */ ; -} -``` - -You can add as many CSS files as you need, depending on how much you want to customize your site. - -Create an "index.css" file inside the "global" folder. This file will import your custom styles, in this example we are importing our "text.css" file. - -```css -@import './text.css'; -``` - -Your "css" folder should now look like this: - -``` -src/ -└── css/ - ├── global/ - │ ├── text.css - │ ├── index.css - ├── index.css -``` - -## Import your custom CSS into your site - -To apply your custom styles to your Mosaic site, open your "\_app.tsx" file and add the following line to the bottom of your imports: - -```javascript -import '../css/index.css'; -``` - -Congratulations! You have successfully applied your custom CSS styles to your site. This example demonstrated how to create text styles, but you can use the same approach to customize other aspects of your site as well. diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/index b/packages/site/snapshots/latest/mosaic/configure/theme/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/index.mdx b/packages/site/snapshots/latest/mosaic/configure/theme/index.mdx deleted file mode 100644 index 8cd1bc15c..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/index.mdx +++ /dev/null @@ -1,377 +0,0 @@ ---- -title: Theming Your Site -layout: DetailTechnical -sidebar: - priority: 4 -lastModified: 1692689012054 -fullPath: /mosaic/configure/theme/index.mdx -route: /mosaic/configure/theme/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Theming Your Site - path: /mosaic/configure/theme/index - id: /mosaic/configure/theme/index.mdx -readingTime: - text: 1 min read - minutes: 0.42 - time: 25200 - words: 84 -tableOfContents: - - level: 2 - id: customize-the-css - text: Customize the CSS - - level: 2 - id: import-custom-components - text: Import Custom Components -navigation: - prev: - title: Snapshot AWS/S3 mode - route: /mosaic/configure/modes/snapshot-s3 - next: - title: Custom CSS - route: /mosaic/configure/theme/custom-css -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Create a unique look and feel for your Mosaic site by customizing the CSS theme and integrating your own UI components. - -## Customize the CSS - -Adapt various design elements of your Mosaic site to create a cohesive visual theme. Refer to our guide to learn more about crafting a custom CSS theme: - -* [CSS Theme Guide](./custom-css) - -## Import Custom Components - -Incorporate your own UI components, to tailor the look and functionality of your content. This tutorial will walk you through the process of adding custom components to your site: - -* [Adding Custom Components Tutorial](./custom-components) diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/theme/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/example/aliases b/packages/site/snapshots/latest/mosaic/example/aliases deleted file mode 120000 index 10bfd7409..000000000 --- a/packages/site/snapshots/latest/mosaic/example/aliases +++ /dev/null @@ -1 +0,0 @@ -../author/aliases.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/content-fragment b/packages/site/snapshots/latest/mosaic/fragments/content-fragment deleted file mode 120000 index 5dec5e4d4..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/content-fragment +++ /dev/null @@ -1 +0,0 @@ -content-fragment.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/content-fragment.mdx b/packages/site/snapshots/latest/mosaic/fragments/content-fragment.mdx deleted file mode 100644 index 8d41a2c16..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/content-fragment.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Content Fragment -sidebar: - exclude: true -lastModified: 1692689012054 -fullPath: /mosaic/fragments/content-fragment.mdx -route: /mosaic/fragments/content-fragment -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx - - label: Content Fragment - path: /mosaic/fragments/content-fragment - id: /mosaic/fragments/content-fragment.mdx -readingTime: - text: 1 min read - minutes: 0.065 - time: 3900 - words: 13 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- -#### Fragment Title - -This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`. diff --git a/packages/site/snapshots/latest/mosaic/fragments/index b/packages/site/snapshots/latest/mosaic/fragments/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/index.mdx b/packages/site/snapshots/latest/mosaic/fragments/index.mdx deleted file mode 100644 index 918342f03..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/index.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Fragments -layout: DetailTechnical -lastModified: 1692689012055 -fullPath: /mosaic/fragments/index.mdx -route: /mosaic/fragments/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx -readingTime: - text: 1 min read - minutes: 0.075 - time: 4500 - words: 15 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- -# {meta.title} - -This folder contains example fragments that are referenced and rendered in the Fragments docs page. diff --git a/packages/site/snapshots/latest/mosaic/fragments/shared-config.json b/packages/site/snapshots/latest/mosaic/fragments/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/sidebar.json b/packages/site/snapshots/latest/mosaic/fragments/sidebar.json deleted file mode 100644 index 82ae05a95..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/fragments/index","fullPath":"/mosaic/fragments/index.mdx","name":"Fragments","data":{"level":2,"link":"/mosaic/fragments/index"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-a b/packages/site/snapshots/latest/mosaic/fragments/tile-a deleted file mode 120000 index 7ba498d07..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-a +++ /dev/null @@ -1 +0,0 @@ -tile-a.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-a.mdx b/packages/site/snapshots/latest/mosaic/fragments/tile-a.mdx deleted file mode 100644 index 1be6704e2..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-a.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tile A -sidebar: - exclude: true -lastModified: 1692689012055 -fullPath: /mosaic/fragments/tile-a.mdx -route: /mosaic/fragments/tile-a -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx - - label: Tile A - path: /mosaic/fragments/tile-a - id: /mosaic/fragments/tile-a.mdx -readingTime: - text: 0 min read - minutes: 0 - time: 0 - words: 0 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- - diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-b b/packages/site/snapshots/latest/mosaic/fragments/tile-b deleted file mode 120000 index abc0a5baf..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-b +++ /dev/null @@ -1 +0,0 @@ -tile-b.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-b.mdx b/packages/site/snapshots/latest/mosaic/fragments/tile-b.mdx deleted file mode 100644 index bd131d3a9..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-b.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tile B -sidebar: - exclude: true -lastModified: 1692689012055 -fullPath: /mosaic/fragments/tile-b.mdx -route: /mosaic/fragments/tile-b -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx - - label: Tile B - path: /mosaic/fragments/tile-b - id: /mosaic/fragments/tile-b.mdx -readingTime: - text: 0 min read - minutes: 0 - time: 0 - words: 0 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- - diff --git a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site b/packages/site/snapshots/latest/mosaic/getting-started/create-a-site deleted file mode 120000 index 625120be1..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site +++ /dev/null @@ -1 +0,0 @@ -create-a-site.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site.mdx b/packages/site/snapshots/latest/mosaic/getting-started/create-a-site.mdx deleted file mode 100644 index 48d81a320..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Create a Site -layout: DetailTechnical -sidebar: - priority: 8 -lastModified: 1692689012055 -fullPath: /mosaic/getting-started/create-a-site.mdx -route: /mosaic/getting-started/create-a-site -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Getting Started - path: /mosaic/getting-started/index - id: /mosaic/getting-started/index.mdx - - label: Create a Site - path: /mosaic/getting-started/create-a-site - id: /mosaic/getting-started/create-a-site.mdx -readingTime: - text: 2 min read - minutes: 1.31 - time: 78600 - words: 262 -tableOfContents: - - level: 2 - id: prerequisites - text: Prerequisites - - level: 2 - id: step-1-generate-a-mosaic-site - text: 'Step 1: Generate a Mosaic site' - - level: 2 - id: step-2-serve-the-site - text: 'Step 2: Serve the site' - - level: 3 - id: set-up-git-credentials - text: Set up Git credentials - - level: 3 - id: serve-command - text: Serve command - - level: 2 - id: next-steps - text: 'Next Steps:' -navigation: - next: - title: Publish a site to AWS - route: /mosaic/getting-started/publish-site-to-aws -sidebarData: - - id: /mosaic/getting-started/index - fullPath: /mosaic/getting-started/index.mdx - name: Getting Started - priority: 10 - data: - level: 2 - link: /mosaic/getting-started/index - childNodes: [] - - id: /mosaic/getting-started/create-a-site - fullPath: /mosaic/getting-started/create-a-site.mdx - name: Create a Site - priority: 8 - data: - level: 2 - link: /mosaic/getting-started/create-a-site - childNodes: [] - - id: /mosaic/getting-started/publish-site-to-aws - fullPath: /mosaic/getting-started/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/getting-started/publish-site-to-aws - childNodes: [] ---- -# {meta.title} - -In this guide you will learn how to generate and serve a Mosaic site. - -## Prerequisites - -To begin setting up a Mosaic site, you need to have the following software installed: - -1. Yarn v1 -2. Node.js v18 or higher - -## Step 1: Generate a Mosaic site - -Run the following command in your project directory to generate a new Mosaic site: - -```bash -npx @jpmorganchase/mosaic-create-site create -o my-sample-site -``` - -This command creates a new Mosaic site in the my-sample-site directory. - -Next, navigate to the site directory: - -```bash -cd my-sample-site -``` - -## Step 2: Serve the site - -The example site you have generated comes preconfigured with two [sources](../configure/sources/index): a remote repository and a local docs folder. Sources are used by Mosaic to pull content from disparate locations and merge them into a single virtual filesystem that can be used by a Mosaic site. - -### Set up Git credentials - -If you want the site to read from remote repositories, you need to set up an environment variable to store your Git credentials. Follow these steps: - -1. Open a terminal or command prompt. - -2. Replace `` and `` in the following commands with your actual Git username and personal access token. - -On Unix: - -```bash -export MOSAIC_DOCS_CLONE_CREDENTIALS=":" -``` - -On Windows: - -```bash -set MOSAIC_DOCS_CLONE_CREDENTIALS=":" -``` - -This sets the MOSAIC\_DOCS\_CLONE\_CREDENTIALS environment variable with your Git credentials. - -### Serve command - -Now you can serve your Mosaic site by running the following command: - -```bash -yarn serve -``` - -Access your Mosaic site from a browser using the following URLs: - -* To browse the content from your local source: http://localhost:3000/local -* To browse the content from the Mosaic Git repo source: http://localhost:3000/mosaic - -That's it! Your Mosaic site is now up and running. - -## Next Steps: - -1. [Deploy your Mosaic site to AWS or Vercel for production use.](../publish/index) -2. [Create more pages to expand your site's content.](../author/index) -3. [Configure your own sources in the mosaic.config.mjs file to pull content from different locations.](../configure/sources/index) -4. [Theme your site](../configure/theme/index) diff --git a/packages/site/snapshots/latest/mosaic/getting-started/index b/packages/site/snapshots/latest/mosaic/getting-started/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/index.mdx b/packages/site/snapshots/latest/mosaic/getting-started/index.mdx deleted file mode 100644 index 401bb956e..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/index.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Getting Started -layout: DetailTechnical -sidebar: - priority: 10 -lastModified: 1692689012055 -fullPath: /mosaic/getting-started/index.mdx -route: /mosaic/getting-started/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Getting Started - path: /mosaic/getting-started/index - id: /mosaic/getting-started/index.mdx -readingTime: - text: 1 min read - minutes: 0.08 - time: 4800 - words: 16 -tableOfContents: [] -navigation: - next: - title: Create a Site - route: /mosaic/getting-started/create-a-site -sidebarData: - - id: /mosaic/getting-started/index - fullPath: /mosaic/getting-started/index.mdx - name: Getting Started - priority: 10 - data: - level: 2 - link: /mosaic/getting-started/index - childNodes: [] - - id: /mosaic/getting-started/create-a-site - fullPath: /mosaic/getting-started/create-a-site.mdx - name: Create a Site - priority: 8 - data: - level: 2 - link: /mosaic/getting-started/create-a-site - childNodes: [] - - id: /mosaic/getting-started/publish-site-to-aws - fullPath: /mosaic/getting-started/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/getting-started/publish-site-to-aws - childNodes: [] ---- -# Getting Started with Mosaic - -Follow our step-by-step guides to quickly create and deploy your first Mosaic site. - - - - - - diff --git a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws b/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws deleted file mode 120000 index 014235281..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws +++ /dev/null @@ -1 +0,0 @@ -publish-site-to-aws.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws.mdx b/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws.mdx deleted file mode 100644 index 231a6a28e..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws.mdx +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Publish a site to AWS -layout: DetailTechnical -lastModified: 1692689012055 -fullPath: /mosaic/getting-started/publish-site-to-aws.mdx -route: /mosaic/getting-started/publish-site-to-aws -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Getting Started - path: /mosaic/getting-started/index - id: /mosaic/getting-started/index.mdx - - label: Publish a site to AWS - path: /mosaic/getting-started/publish-site-to-aws - id: /mosaic/getting-started/publish-site-to-aws.mdx -readingTime: - text: 2 min read - minutes: 1.195 - time: 71700 - words: 239 -tableOfContents: - - level: 2 - id: step-1-generate-a-mosaic-site - text: 'Step 1: Generate a Mosaic site' - - level: 2 - id: step-2-create-a-github-repository - text: 'Step 2: Create a Github repository' - - level: 2 - id: step-3-generate-a-snapshot-of-content - text: 'Step 3: Generate a snapshot of content' - - level: 2 - id: step-4-configure-environment-for-s3 - text: 'Step 4: Configure environment for S3' - - level: 2 - id: step-5-setup-aws - text: 'Step 5: Setup AWS' - - level: 2 - id: step-7-configure-your-aws-app - text: 'Step 7: Configure your AWS app' - - level: 2 - id: step-8-upload-your-snapshot - text: 'Step 8: Upload your snapshot' -navigation: - prev: - title: Create a Site - route: /mosaic/getting-started/create-a-site -sidebarData: - - id: /mosaic/getting-started/index - fullPath: /mosaic/getting-started/index.mdx - name: Getting Started - priority: 10 - data: - level: 2 - link: /mosaic/getting-started/index - childNodes: [] - - id: /mosaic/getting-started/create-a-site - fullPath: /mosaic/getting-started/create-a-site.mdx - name: Create a Site - priority: 8 - data: - level: 2 - link: /mosaic/getting-started/create-a-site - childNodes: [] - - id: /mosaic/getting-started/publish-site-to-aws - fullPath: /mosaic/getting-started/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/getting-started/publish-site-to-aws - childNodes: [] ---- -# {meta.title} - -Publish a site to AWS using S3 snapshots. - -## Step 1: Generate a Mosaic site - -If you have already created your Mosaic site, skip ahead to step 2. - -``` -> npx @jpmorganchase/mosaic-create-site -o my-sample-site -> cd my-sample-site -``` - -## Step 2: Create a Github repository - -``` -> git init -> git remote add origin git@github.com:username/my-sample-site.git -> git add . -> git commit -m "initial commit" -> git push origin main -``` - -## Step 3: Generate a snapshot of content - -Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself. - -``` -> yarn gen:snapshot -``` - -## Step 4: Configure environment for S3 - -``` -> export MOSAIC_MODE="snapshot-s3" -> export MOSAIC_S3_BUCKET="" -> export MOSAIC_S3_REGION="" -> export MOSAIC_S3_ACCESS_KEY_ID=""" -> export MOSAIC_S3_SECRET_ACCESS_KEY="" -> yarn mosaic upload -S ./snapshots/latest -``` - -## Step 5: Setup AWS - -Switch to the [AWS Amplify](https://aws.amazon.com/amplify/hosting/) console and deploy your app as a SSR application by following the [AWS docs](https://docs.amplify.aws/guides/hosting/nextjs/q/platform/js/). - -Setup an S3 bucket as per the [AWS S3 docs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html). - -## Step 7: Configure your AWS app - -Add the environment vars to the hosted app via your console - -``` -MOSAIC_MODE="snapshot-s3" -MOSAIC_S3_BUCKET="" -MOSAIC_S3_REGION="" -MOSAIC_S3_ACCESS_KEY_ID=""" -MOSAIC_S3_SECRET_ACCESS_KEY="" -``` - -Add the following build settings - -``` -version: 1 -frontend: - phases: - preBuild: - commands: - - yarn install - - env | grep -e MOSAIC >> .env.production - build: - commands: - - yarn run build - artifacts: - baseDirectory: .next - files: - - '**/*' - cache: - paths: - - node_modules/**/* -``` - -Ensure the Node is set to 16 - -## Step 8: Upload your snapshot - -Upload your snapshot to S3 storage. - -``` -> yarn mosaic upload -S ./snapshots/latest -``` diff --git a/packages/site/snapshots/latest/mosaic/getting-started/shared-config.json b/packages/site/snapshots/latest/mosaic/getting-started/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/sidebar.json b/packages/site/snapshots/latest/mosaic/getting-started/sidebar.json deleted file mode 100644 index 0f886f8b5..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/getting-started/index","fullPath":"/mosaic/getting-started/index.mdx","name":"Getting Started","priority":10,"data":{"level":2,"link":"/mosaic/getting-started/index"},"childNodes":[]},{"id":"/mosaic/getting-started/create-a-site","fullPath":"/mosaic/getting-started/create-a-site.mdx","name":"Create a Site","priority":8,"data":{"level":2,"link":"/mosaic/getting-started/create-a-site"},"childNodes":[]},{"id":"/mosaic/getting-started/publish-site-to-aws","fullPath":"/mosaic/getting-started/publish-site-to-aws.mdx","name":"Publish a site to AWS","data":{"level":2,"link":"/mosaic/getting-started/publish-site-to-aws"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/index b/packages/site/snapshots/latest/mosaic/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/index.mdx b/packages/site/snapshots/latest/mosaic/index.mdx deleted file mode 100644 index fab7214ec..000000000 --- a/packages/site/snapshots/latest/mosaic/index.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Mosaic -layout: Landing -sharedConfig: - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Getting Started - link: /mosaic/getting-started/index - - title: Configure - link: /mosaic/configure/index - - title: Author - link: /mosaic/author/index - - title: Publish - link: /mosaic/publish/index - footer: - description: Coming soon - title: Mosaic BETA - href: /mosaic -lastModified: 1692689008685 -fullPath: /mosaic/index.mdx -route: /mosaic/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx -readingTime: - text: 1 min read - minutes: 0.2 - time: 12000 - words: 40 -tableOfContents: [] ---- - - -True to its name, Mosaic brings together several concepts—including content, design and technical infrastructure—to deliver a unified website experience that is truly greater than the sum of its individual parts. - -With Mosaic, you can: - - - - Don't move your content where it does not belong. Compose content from remote data sources which - are pulled at runtime by our content aggregator. - - - - Visualize your content with your own theme, layouts and components or use the Mosaic Design - language. - - - - Extend the existing code and add your own content source types through our simple plugin - architecture. - - - - Publish your content through Server Side Rendering (SSR) or generate a snapshot of your content - and serve it as a Statically Generated Site (SGS). - - - -Creating a website has never been so easy! diff --git a/packages/site/snapshots/latest/mosaic/publish/index b/packages/site/snapshots/latest/mosaic/publish/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/index.mdx b/packages/site/snapshots/latest/mosaic/publish/index.mdx deleted file mode 100644 index 03f746802..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/index.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Publish -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1692689012055 -fullPath: /mosaic/publish/index.mdx -route: /mosaic/publish/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Publish - path: /mosaic/publish/index - id: /mosaic/publish/index.mdx -readingTime: - text: 1 min read - minutes: 0.755 - time: 45300 - words: 151 -tableOfContents: - - level: 2 - id: create-your-first-site - text: Create your first site -navigation: - next: - title: Publish a site to AWS - route: /mosaic/publish/publish-site-to-aws -sidebarData: - - id: /mosaic/publish/index - fullPath: /mosaic/publish/index.mdx - name: Publish - priority: 2 - data: - level: 2 - link: /mosaic/publish/index - childNodes: [] - - id: /mosaic/publish/publish-site-to-aws - fullPath: /mosaic/publish/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/publish/publish-site-to-aws - childNodes: [] - - id: /mosaic/publish/publish-site-to-vercel - fullPath: /mosaic/publish/publish-site-to-vercel.mdx - name: Publish a site to Vercel - data: - level: 2 - link: /mosaic/publish/publish-site-to-vercel - childNodes: [] ---- -# {meta.title} - -To create your first Mosaic site, we have created a command line generator that scaffolds a *standard* site. - -A *standard* site offers - -* an out the box, working site, which showcases local and remote content sources -* a minimal set of files that can be configured with your own components, themes, layouts, sources and plugins -* an update path that enables you to update Mosaic, independently of your own configuration - -## Create your first site - -Install the Mosaic create site script. - -``` -> yarn global add @jpmorganchase/mosaic-create-site -``` - -Create a directory for your site and run the `mosaic-create-site` script. - -``` -> mkdir mosaic-sample-site -> cd mosaic-sample-site -> mosaic-create-site -f . -``` - -Define the environment variable, which enables us to access your remote repo. - -``` -> export MOSAIC_DOCS_CLONE_CREDENTIALS="" -``` - -The `MOSAIC_DOCS_CLONE_CREDENTIALS` environment variable is composed of your git username and your PAT token. -Follow these [docs](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) to see how to create your own PAT token. - -Your site is ready to run. - -``` -> yarn serve -``` - -In your browser load `http://localhost:3000` - -Congratulations, you have created your first Mosaic site. diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws deleted file mode 120000 index 014235281..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws +++ /dev/null @@ -1 +0,0 @@ -publish-site-to-aws.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws.mdx b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws.mdx deleted file mode 100644 index ce8121636..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Publish a site to AWS -layout: DetailTechnical -lastModified: 1692689012055 -fullPath: /mosaic/publish/publish-site-to-aws.mdx -route: /mosaic/publish/publish-site-to-aws -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Publish - path: /mosaic/publish/index - id: /mosaic/publish/index.mdx - - label: Publish a site to AWS - path: /mosaic/publish/publish-site-to-aws - id: /mosaic/publish/publish-site-to-aws.mdx -readingTime: - text: 1 min read - minutes: 0.52 - time: 31200 - words: 104 -tableOfContents: [] -navigation: - next: - title: Publish a site to Vercel - route: /mosaic/publish/publish-site-to-vercel -sidebarData: - - id: /mosaic/publish/index - fullPath: /mosaic/publish/index.mdx - name: Publish - priority: 2 - data: - level: 2 - link: /mosaic/publish/index - childNodes: [] - - id: /mosaic/publish/publish-site-to-aws - fullPath: /mosaic/publish/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/publish/publish-site-to-aws - childNodes: [] - - id: /mosaic/publish/publish-site-to-vercel - fullPath: /mosaic/publish/publish-site-to-vercel.mdx - name: Publish a site to Vercel - data: - level: 2 - link: /mosaic/publish/publish-site-to-vercel - childNodes: [] ---- -# {meta.title} - -A Mosaic site is a [Next.Js](https://nextjs.org/) app. - -To publish a Next.Js App to AWS, deploy your app as a SSR application by following the [AWS docs](https://docs.amplify.aws/guides/hosting/nextjs/q/platform/js/). - -Once the basic app has been configured, add the Mosaic specifics. - -Add the environment vars to the hosted app via the Amplify console - -``` -MOSAIC_MODE="snapshot-s3" -MOSAIC_S3_BUCKET="" -MOSAIC_S3_REGION="" -MOSAIC_S3_ACCESS_KEY_ID=""" -MOSAIC_S3_SECRET_ACCESS_KEY="" -``` - -Add the following build settings - -``` -version: 1 -frontend: - phases: - preBuild: - commands: - - yarn install - - env | grep -e MOSAIC >> .env.production - build: - commands: - - yarn run build - artifacts: - baseDirectory: .next - files: - - '**/*' - cache: - paths: - - node_modules/**/* -``` - -Ensure the Node is set to 16 diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel deleted file mode 120000 index 11694f655..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel +++ /dev/null @@ -1 +0,0 @@ -publish-site-to-vercel.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel.mdx b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel.mdx deleted file mode 100644 index 6410f1853..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Publish a site to Vercel -layout: DetailTechnical -lastModified: 1692689012055 -fullPath: /mosaic/publish/publish-site-to-vercel.mdx -route: /mosaic/publish/publish-site-to-vercel -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Publish - path: /mosaic/publish/index - id: /mosaic/publish/index.mdx - - label: Publish a site to Vercel - path: /mosaic/publish/publish-site-to-vercel - id: /mosaic/publish/publish-site-to-vercel.mdx -readingTime: - text: 1 min read - minutes: 0.99 - time: 59400 - words: 198 -tableOfContents: - - level: 2 - id: deployment - text: Deployment - - level: 3 - id: 1-update-config-file - text: 1. Update Config File - - level: 3 - id: 2-set-environment-variables - text: 2. Set Environment Variables - - level: 3 - id: 3-run-build-and-deploy - text: 3. Run Build and Deploy - - level: 2 - id: output-file-tracing - text: Output File Tracing -navigation: - prev: - title: Publish a site to AWS - route: /mosaic/publish/publish-site-to-aws -sidebarData: - - id: /mosaic/publish/index - fullPath: /mosaic/publish/index.mdx - name: Publish - priority: 2 - data: - level: 2 - link: /mosaic/publish/index - childNodes: [] - - id: /mosaic/publish/publish-site-to-aws - fullPath: /mosaic/publish/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/publish/publish-site-to-aws - childNodes: [] - - id: /mosaic/publish/publish-site-to-vercel - fullPath: /mosaic/publish/publish-site-to-vercel.mdx - name: Publish a site to Vercel - data: - level: 2 - link: /mosaic/publish/publish-site-to-vercel - childNodes: [] ---- -# {meta.title} - -A Mosaic site is a [Next.Js](https://nextjs.org/) app. - -To publish a Next.Js App to Vercel, refer to the [Vercel docs](https://nextjs.org/learn/basics/deploying-nextjs-app/deploy). - -## Deployment - -As the [vercel platform](https://vercel.com/) hosts static content you will need to deploy a mosaic snapshot. There is no option to run mosaic in [active mode](../configure/modes/active). - -### 1. Update Config File - -Add the following to the mosaic config file used by your site: - -``` - deployment: { mode: 'snapshot-file', platform: 'vercel' } -``` - -### 2. Set Environment Variables - -Set 2 [environment variables](https://vercel.com/docs/concepts/deployments/environments#environment-variables) in the vercel dashboard. - -| Variable Name | Value | -| ------------------- | ----------------- | -| MOSAIC\_MODE | snapshot-file | -| MOSAIC\_SNAPSHOT\_DIR | snapshots/latest. | - -### 3. Run Build and Deploy - -The `build` command used by vercel must run `yarn build` followed by `yarn deploy` - -The `deploy` command is needed to workaround an [output file tracing](#output-file-tracing) problem. - -Example: - -``` -yarn build && yarn deploy -``` - -## Output File Tracing - -[Output File Tracing](https://nextjs.org/docs/advanced-features/output-file-tracing) is a feature of Next.js that uses static analysis -to determine what files are needed to deploy a production version of an application. - -Due to the architecture of mosaic, snapshot files can be ignored by this process and therefore excluded from the build artifacts deployed by vercel. - -If you are deploying your site to the [vercel platform](https://vercel.com/) then the mosaic site has a `deploy` command that will update the nextjs output trace to include the snapshot files. diff --git a/packages/site/snapshots/latest/mosaic/publish/shared-config.json b/packages/site/snapshots/latest/mosaic/publish/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/sidebar.json b/packages/site/snapshots/latest/mosaic/publish/sidebar.json deleted file mode 100644 index 3c4dd5878..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/publish/index","fullPath":"/mosaic/publish/index.mdx","name":"Publish","priority":2,"data":{"level":2,"link":"/mosaic/publish/index"},"childNodes":[]},{"id":"/mosaic/publish/publish-site-to-aws","fullPath":"/mosaic/publish/publish-site-to-aws.mdx","name":"Publish a site to AWS","data":{"level":2,"link":"/mosaic/publish/publish-site-to-aws"},"childNodes":[]},{"id":"/mosaic/publish/publish-site-to-vercel","fullPath":"/mosaic/publish/publish-site-to-vercel.mdx","name":"Publish a site to Vercel","data":{"level":2,"link":"/mosaic/publish/publish-site-to-vercel"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/shared-config.json b/packages/site/snapshots/latest/mosaic/shared-config.json deleted file mode 100644 index 0cb2e712a..000000000 --- a/packages/site/snapshots/latest/mosaic/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -{"config":{"header":{"homeLink":"/mosaic/index","title":"Mosaic (BETA)","logo":"/img/favicon.png","searchNamespace":"mosaic","menu":[{"title":"Getting Started","link":"/mosaic/getting-started/index"},{"title":"Configure","link":"/mosaic/configure/index"},{"title":"Author","link":"/mosaic/author/index"},{"title":"Publish","link":"/mosaic/publish/index"}]},"footer":{"description":"Coming soon","title":"Mosaic BETA","href":"/mosaic"}}} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/aliases/index b/packages/site/snapshots/latest/mosaic/test/aliases/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/aliases/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/aliases/index.mdx b/packages/site/snapshots/latest/mosaic/test/aliases/index.mdx deleted file mode 100644 index e32ede7a3..000000000 --- a/packages/site/snapshots/latest/mosaic/test/aliases/index.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Aliases Test -layout: FullWidth -lastModified: 1692689012055 -fullPath: /mosaic/test/aliases/index.mdx -route: /mosaic/test/aliases/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Aliases Test - path: /mosaic/test/aliases/index - id: /mosaic/test/aliases/index.mdx -readingTime: - text: 1 min read - minutes: 0.035 - time: 2100 - words: 7 -tableOfContents: [] -navigation: - prev: - title: Refs Data - route: /mosaic/test/refs/data -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -# {meta.title} - -This page is the alias test page. diff --git a/packages/site/snapshots/latest/mosaic/test/aliases/shared-config.json b/packages/site/snapshots/latest/mosaic/test/aliases/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/aliases/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/example b/packages/site/snapshots/latest/mosaic/test/example deleted file mode 120000 index 7e447f1a7..000000000 --- a/packages/site/snapshots/latest/mosaic/test/example +++ /dev/null @@ -1 +0,0 @@ -aliases/index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/index b/packages/site/snapshots/latest/mosaic/test/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/index.mdx b/packages/site/snapshots/latest/mosaic/test/index.mdx deleted file mode 100644 index 4134f98a0..000000000 --- a/packages/site/snapshots/latest/mosaic/test/index.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Test -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1692689012056 -fullPath: /mosaic/test/index.mdx -route: /mosaic/test/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx -readingTime: - text: 1 min read - minutes: 0.02 - time: 1200 - words: 4 -tableOfContents: [] -navigation: - next: - title: Layouts - route: /mosaic/test/layouts/index -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -# {meta.title} - -Pages for e2e testing. diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight b/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight deleted file mode 120000 index cd722d86e..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight +++ /dev/null @@ -1 +0,0 @@ -detail-highlight.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight.mdx deleted file mode 100644 index 1b6aa6183..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Detail Highlight Test Page -layout: DetailHighlight -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Detail Highlight Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Layouts - route: /mosaic/test/layouts/index - next: - title: Detail Overview Test Page - route: /mosaic/test/layouts/detail-overview -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/detail-highlight.mdx -route: /mosaic/test/layouts/detail-highlight -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: detail-highlight-test-page - text: Detail Highlight Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview b/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview deleted file mode 120000 index 62bd5bc1a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview +++ /dev/null @@ -1 +0,0 @@ -detail-overview.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview.mdx deleted file mode 100644 index da8ce6ac9..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Detail Overview Test Page -layout: DetailOverview -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Detail Overview Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Detail Highlight Test Page - route: /mosaic/test/layouts/detail-highlight - next: - title: Detail Technical Test Page - route: /mosaic/test/layouts/detail-technical -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/detail-overview.mdx -route: /mosaic/test/layouts/detail-overview -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: detail-overview-test-page - text: Detail Overview Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical b/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical deleted file mode 120000 index 8bfca1127..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical +++ /dev/null @@ -1 +0,0 @@ -detail-technical.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical.mdx deleted file mode 100644 index 692ae7b22..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Detail Technical Test Page -layout: DetailTechnical -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Detail Technical Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Detail Overview Test Page - route: /mosaic/test/layouts/detail-overview - next: - title: Edit Layout - route: /mosaic/test/layouts/edit -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/detail-technical.mdx -route: /mosaic/test/layouts/detail-technical -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: detail-technical-test-page - text: Detail Technical Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/edit b/packages/site/snapshots/latest/mosaic/test/layouts/edit deleted file mode 120000 index 5175875d1..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/edit +++ /dev/null @@ -1 +0,0 @@ -edit.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/edit.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/edit.mdx deleted file mode 100644 index 904a033fe..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/edit.mdx +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Edit Layout -layout: Edit -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Edit Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Detail Technical Test Page - route: /mosaic/test/layouts/detail-technical - next: - title: Full Width Layout - route: /mosaic/test/layouts/full-width -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/edit.mdx -route: /mosaic/test/layouts/edit -sharedConfig: *ref_0 -readingTime: - text: 1 min read - minutes: 0.345 - time: 20700 - words: 69 -tableOfContents: - - level: 2 - id: edit-layout - text: Edit Layout -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/full-width b/packages/site/snapshots/latest/mosaic/test/layouts/full-width deleted file mode 120000 index 868f9aa51..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/full-width +++ /dev/null @@ -1 +0,0 @@ -full-width.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/full-width.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/full-width.mdx deleted file mode 100644 index 911ab01c4..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/full-width.mdx +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Full Width Layout -layout: FullWidth -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Full Width Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Edit Layout - route: /mosaic/test/layouts/edit - next: - title: Landing Layout Test Page - route: /mosaic/test/layouts/landing -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/full-width.mdx -route: /mosaic/test/layouts/full-width -sharedConfig: *ref_0 -readingTime: - text: 1 min read - minutes: 0.345 - time: 20700 - words: 69 -tableOfContents: - - level: 2 - id: full-width-layout - text: Full Width Layout -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/index b/packages/site/snapshots/latest/mosaic/test/layouts/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/index.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/index.mdx deleted file mode 100644 index 255916de0..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/index.mdx +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Layouts -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/index.mdx -route: /mosaic/test/layouts/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Layouts - path: /mosaic/test/layouts/index - id: /mosaic/test/layouts/index.mdx -readingTime: - text: 1 min read - minutes: 0.03 - time: 1800 - words: 6 -tableOfContents: [] -navigation: - next: - title: Detail Highlight Test Page - route: /mosaic/test/layouts/detail-highlight -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -# {meta.title} - -Pages for e2e testing of layouts. diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/landing b/packages/site/snapshots/latest/mosaic/test/layouts/landing deleted file mode 120000 index 534837507..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/landing +++ /dev/null @@ -1 +0,0 @@ -landing.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/landing.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/landing.mdx deleted file mode 100644 index 2a5c1f4ee..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/landing.mdx +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: Landing Layout Test Page -layout: Landing -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Landing Layout Footer - href: /mosaic -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/landing.mdx -route: /mosaic/test/layouts/landing -sharedConfig: *ref_0 -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Layouts - path: /mosaic/test/layouts/index - id: /mosaic/test/layouts/index.mdx - - label: Landing Layout Test Page - path: /mosaic/test/layouts/landing - id: /mosaic/test/layouts/landing.mdx -readingTime: - text: 2 min read - minutes: 1.705 - time: 102300 - words: 341 -tableOfContents: - - level: 2 - id: landing-layout-test-page - text: Landing Layout Test Page -navigation: - prev: - title: Full Width Layout - route: /mosaic/test/layouts/full-width - next: - title: Newsletter Test Page - route: /mosaic/test/layouts/newsletter -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter b/packages/site/snapshots/latest/mosaic/test/layouts/newsletter deleted file mode 120000 index f099cfe0b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter +++ /dev/null @@ -1 +0,0 @@ -newsletter.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/newsletter.mdx deleted file mode 100644 index 41f417fef..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Newsletter Test Page -layout: Newsletter -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Newsletter Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Landing Layout Test Page - route: /mosaic/test/layouts/landing - next: - title: Product Discover Test Page - route: /mosaic/test/layouts/product-discover -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/newsletter.mdx -route: /mosaic/test/layouts/newsletter -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: newsletter-test-page - text: Newsletter Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover b/packages/site/snapshots/latest/mosaic/test/layouts/product-discover deleted file mode 120000 index 508e3923d..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover +++ /dev/null @@ -1 +0,0 @@ -product-discover.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/product-discover.mdx deleted file mode 100644 index 20bf12fc8..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Product Discover Test Page -layout: ProductDiscover -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Product Discover Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Newsletter Test Page - route: /mosaic/test/layouts/newsletter - next: - title: Product Preview Test Page - route: /mosaic/test/layouts/product-preview -lastModified: 1692689012056 -fullPath: /mosaic/test/layouts/product-discover.mdx -route: /mosaic/test/layouts/product-discover -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: product-discover-test-page - text: Product Discover Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview b/packages/site/snapshots/latest/mosaic/test/layouts/product-preview deleted file mode 120000 index 4509da9b3..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview +++ /dev/null @@ -1 +0,0 @@ -product-preview.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/product-preview.mdx deleted file mode 100644 index 4e8f33d6f..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Product Preview Test Page -layout: ProductDiscover -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Product Preview Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -lastModified: 1692689012057 -fullPath: /mosaic/test/layouts/product-preview.mdx -route: /mosaic/test/layouts/product-preview -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: product-preview-test-page - text: Product Preview Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -navigation: - prev: - title: Product Discover Test Page - route: /mosaic/test/layouts/product-discover - next: - title: Refs Test - route: /mosaic/test/refs/index -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/shared-config.json b/packages/site/snapshots/latest/mosaic/test/layouts/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/refs/data b/packages/site/snapshots/latest/mosaic/test/refs/data deleted file mode 120000 index 98533d4e4..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/data +++ /dev/null @@ -1 +0,0 @@ -data.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/refs/data.mdx b/packages/site/snapshots/latest/mosaic/test/refs/data.mdx deleted file mode 100644 index cef5ade7f..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/data.mdx +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: Refs Data -data: - randomValue: 100 -lastModified: 1692689012057 -fullPath: /mosaic/test/refs/data.mdx -route: /mosaic/test/refs/data -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Refs Test - path: /mosaic/test/refs/index - id: /mosaic/test/refs/index.mdx - - label: Refs Data - path: /mosaic/test/refs/data - id: /mosaic/test/refs/data.mdx -readingTime: - text: 0 min read - minutes: 0 - time: 0 - words: 0 -navigation: - prev: - title: Refs Test - route: /mosaic/test/refs/index - next: - title: Aliases Test - route: /mosaic/test/aliases/index -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- - diff --git a/packages/site/snapshots/latest/mosaic/test/refs/index b/packages/site/snapshots/latest/mosaic/test/refs/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/refs/index.mdx b/packages/site/snapshots/latest/mosaic/test/refs/index.mdx deleted file mode 100644 index 34d3488a1..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/index.mdx +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Refs Test -layout: FullWidth -sidebar: - priority: 3 -data: - other: 100 - sidebarPriority: 3 -lastModified: 1692689012057 -fullPath: /mosaic/test/refs/index.mdx -route: /mosaic/test/refs/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Refs Test - path: /mosaic/test/refs/index - id: /mosaic/test/refs/index.mdx -readingTime: - text: 1 min read - minutes: 0.05 - time: 3000 - words: 10 -tableOfContents: [] -navigation: - prev: - title: Product Preview Test Page - route: /mosaic/test/layouts/product-preview - next: - title: Refs Data - route: /mosaic/test/refs/data -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] ---- -# {meta.title} - -The sidebar priority is {meta.data.sidebarPriority}. - -The other page data is {meta.data.other}. diff --git a/packages/site/snapshots/latest/mosaic/test/refs/shared-config.json b/packages/site/snapshots/latest/mosaic/test/refs/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/shared-config.json b/packages/site/snapshots/latest/mosaic/test/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/test/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/sidebar.json b/packages/site/snapshots/latest/mosaic/test/sidebar.json deleted file mode 100644 index affa49209..000000000 --- a/packages/site/snapshots/latest/mosaic/test/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/test/index","fullPath":"/mosaic/test/index.mdx","name":"Test","priority":3,"data":{"level":2,"link":"/mosaic/test/index"},"childNodes":[]},{"id":"/mosaic/test/layouts/index","fullPath":"/mosaic/test/layouts/index.mdx","name":"Layouts","priority":3,"data":{"level":3,"link":"/mosaic/test/layouts/index"},"childNodes":[{"id":"/mosaic/test/layouts/detail-highlight","fullPath":"/mosaic/test/layouts/detail-highlight.mdx","name":"Detail Highlight Test Page","data":{"level":3,"link":"/mosaic/test/layouts/detail-highlight"},"childNodes":[]},{"id":"/mosaic/test/layouts/detail-overview","fullPath":"/mosaic/test/layouts/detail-overview.mdx","name":"Detail Overview Test Page","data":{"level":3,"link":"/mosaic/test/layouts/detail-overview"},"childNodes":[]},{"id":"/mosaic/test/layouts/detail-technical","fullPath":"/mosaic/test/layouts/detail-technical.mdx","name":"Detail Technical Test Page","data":{"level":3,"link":"/mosaic/test/layouts/detail-technical"},"childNodes":[]},{"id":"/mosaic/test/layouts/edit","fullPath":"/mosaic/test/layouts/edit.mdx","name":"Edit Layout","data":{"level":3,"link":"/mosaic/test/layouts/edit"},"childNodes":[]},{"id":"/mosaic/test/layouts/full-width","fullPath":"/mosaic/test/layouts/full-width.mdx","name":"Full Width Layout","data":{"level":3,"link":"/mosaic/test/layouts/full-width"},"childNodes":[]},{"id":"/mosaic/test/layouts/landing","fullPath":"/mosaic/test/layouts/landing.mdx","name":"Landing Layout Test Page","data":{"level":3,"link":"/mosaic/test/layouts/landing"},"childNodes":[]},{"id":"/mosaic/test/layouts/newsletter","fullPath":"/mosaic/test/layouts/newsletter.mdx","name":"Newsletter Test Page","data":{"level":3,"link":"/mosaic/test/layouts/newsletter"},"childNodes":[]},{"id":"/mosaic/test/layouts/product-discover","fullPath":"/mosaic/test/layouts/product-discover.mdx","name":"Product Discover Test Page","data":{"level":3,"link":"/mosaic/test/layouts/product-discover"},"childNodes":[]},{"id":"/mosaic/test/layouts/product-preview","fullPath":"/mosaic/test/layouts/product-preview.mdx","name":"Product Preview Test Page","data":{"level":3,"link":"/mosaic/test/layouts/product-preview"},"childNodes":[]}]},{"id":"/mosaic/test/refs/index","fullPath":"/mosaic/test/refs/index.mdx","name":"Refs Test","priority":3,"data":{"level":3,"link":"/mosaic/test/refs/index"},"childNodes":[{"id":"/mosaic/test/refs/data","fullPath":"/mosaic/test/refs/data.mdx","name":"Refs Data","data":{"level":3,"link":"/mosaic/test/refs/data"},"childNodes":[]}]},{"id":"/mosaic/test/aliases/index","fullPath":"/mosaic/test/aliases/index.mdx","name":"Aliases Test","data":{"level":3,"link":"/mosaic/test/aliases/index"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/search-config.json b/packages/site/snapshots/latest/search-config.json deleted file mode 100644 index 645ccad30..000000000 --- a/packages/site/snapshots/latest/search-config.json +++ /dev/null @@ -1 +0,0 @@ -{"includeScore":true,"includeMatches":true,"maxPatternLength":240,"ignoreLocation":true,"threshold":0.3,"keys":["title","route","content"]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/search-data-condensed.json b/packages/site/snapshots/latest/search-data-condensed.json deleted file mode 100644 index 4f52bb763..000000000 --- a/packages/site/snapshots/latest/search-data-condensed.json +++ /dev/null @@ -1 +0,0 @@ -[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Page Templates","route":"/mosaic/author/page-templates"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Admin","route":"/mosaic/configure/admin/index"},{"title":"Detail Highlight","route":"/mosaic/configure/layouts/detail-highlight"},{"title":"Detail Overview","route":"/mosaic/configure/layouts/detail-overview"},{"title":"Detail Technical","route":"/mosaic/configure/layouts/detail-technical"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Landing Layout","route":"/mosaic/configure/layouts/landing"},{"title":"Product Discover Layout","route":"/mosaic/configure/layouts/product-discover"},{"title":"Product Preview Layout","route":"/mosaic/configure/layouts/product-preview"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$AliasPlugin","route":"/mosaic/configure/plugins/alias-plugin"},{"title":"BreadcrumbsPlugin","route":"/mosaic/configure/plugins/breadcrumbs-plugin"},{"title":"BrokenLinksPlugin","route":"/mosaic/configure/plugins/broken-links-plugin"},{"title":"$CodeModPlugin","route":"/mosaic/configure/plugins/codemod-plugin"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"LazyPagePlugin","route":"/mosaic/configure/plugins/lazy-page-plugin"},{"title":"PagesWithoutFileExtPlugin","route":"/mosaic/configure/plugins/pages-wthout-extensions-plugin"},{"title":"PublicAssetsPlugin","route":"/mosaic/configure/plugins/public-assets-plugin"},{"title":"ReadingTimePlugin","route":"/mosaic/configure/plugins/reading-time-plugin"},{"title":"$RefPlugin","route":"/mosaic/configure/plugins/ref-plugin"},{"title":"SearchIndexPlugin","route":"/mosaic/configure/plugins/search-index-plugin"},{"title":"SharedConfigPlugin","route":"/mosaic/configure/plugins/shared-config-plugin"},{"title":"SidebarPlugin","route":"/mosaic/configure/plugins/sidebar-plugin"},{"title":"SiteMapPlugin","route":"/mosaic/configure/plugins/site-map-plugin"},{"title":"$TagPlugin","route":"/mosaic/configure/plugins/tag-plugin"},{"title":"TableOfContentsPlugin","route":"/mosaic/configure/plugins/toc-plugin"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"},{"title":"$afterSource","route":"/mosaic/configure/plugins/lifecycle/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/lifecycle/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/lifecycle/before-send"},{"title":"Lifecycle Events","route":"/mosaic/configure/plugins/lifecycle/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/lifecycle/should-clear-cache"},{"title":"shouldUpdateNamespaceSources","route":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources"}] \ No newline at end of file diff --git a/packages/site/snapshots/latest/search-data.json b/packages/site/snapshots/latest/search-data.json deleted file mode 100644 index 3dc6c4118..000000000 --- a/packages/site/snapshots/latest/search-data.json +++ /dev/null @@ -1 +0,0 @@ -[{"title":"Mosaic","route":"/mosaic/index","content":["True to its name, Mosaic brings together several concepts—including content, design and technical infrastructure—to deliver a unified website experience that is truly greater than the sum of its individual parts.","With Mosaic, you can:","Don't move your content where it does not belong. ","Compose content from remote data sources which\n","are pulled at runtime by our content aggregator.","Visualize your content with your own theme, layouts and components or use the Mosaic Design\n","language.","Extend the existing code and add your own content source types through our simple plugin\n","architecture.","Publish your content through Server Side Rendering (SSR) or generate a snapshot of your content\n","and serve it as a Statically Generated Site (SGS).","Creating a website has never been so easy!"]},{"title":"Aliases","route":"/mosaic/author/aliases","content":["Aliases are virtual 'symlinks' of pages, allowing one page to take on one or more other routes.\n","This is not the same as copying the page, it is a primitive filesystem link which is resolved by Mosaic.","Use Cases","Aliases are great for linking to an old route if you've moved a page to a new place.\n","They can also be used to create short hand links to pages or to 'clone' a copy of a page into\n","another section of the site where it may be relevant.","Example","This is the frontmatter for this page:","---\n","title: Aliases\n","layout: DetailTechnical\n","aliases:\n"," - /mosaic/example/aliases\n","---","Try accessing this page from ","/mosaic/example/aliases"]},{"title":"Fragments","route":"/mosaic/author/fragments","content":["Fragments, also known as content fragments, are powerful tools that allow you to incorporate content from other pages into your documentation. ","By creating an MDX file and using the ","generic directives"," syntax ",", you can easily render the fragment in another file, providing modularity and reusability to your content.","Use Cases","Fragments offer various use cases, such as:","Consistent Content",": Use fragments to maintain consistent content across multiple pages. ","For instance, if you have a table or a tile that appears on multiple pages, you can create a fragment for it and include it in all relevant files. ","This ensures that any updates made to the fragment automatically reflect across the entire documentation.","Reusable Components",": Fragments enable the creation of reusable components or sections. ","You can define a complex or commonly used section once and then include it in multiple pages as needed. ","This approach saves time and effort, as you only need to update the fragment file to propagate changes throughout your documentation.","Modular Documentation",": With fragments, you can break down your documentation into smaller, manageable pieces. ","Each fragment represents a specific topic or section, allowing you to organize and structure your content more efficiently. ","This modular approach simplifies maintenance and makes it easier to navigate and update your documentation.","Usage","Firstly, enable the Fragment Plugin by adding the following to your plugins in ",".","{\n"," modulePath: '@jpmorganchase/mosaic-plugins/FragmentPlugin',\n"," options: {}\n","}","To include a fragment in your content, follow these steps:","Create an MDX file for the fragment you want to reuse. ","Remember to set the sidebar property of your fragment's frontmatter to exclude: true if you don't want the fragment to appear in the vertical navigation menu.","---\n","title: Fragment Title\n","sidebar:\n"," exclude: true\n","---","In the target file where you want to include the fragment, use the remark directive syntax ",".","Markdown Content Example","This is the contents of a fragment located at ",":","---\n","title: Content Fragment\n","sidebar:\n"," exclude: true\n","---\n","\n","#### Fragment Title\n","\n","This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`.\n","The below code snippet will render the content from the content-fragment.mdx file in your target file:",":fragment{src=\"../fragments/content-fragment.mdx\"}","Example output:",":fragment","Component Example","Here is another example, where the fragment files each contain a "," component.",":fragment{src=\"../fragments/tile-a.mdx\"} :fragment{src=\"../fragments/tile-b.mdx\"}","The above code will render the content from tile-a.mdx and tile-b.mdx files, demonstrated below:",":fragment"," :fragment"]},{"title":"Frontmatter","route":"/mosaic/author/frontmatter","content":["Frontmatter",", also known as page metadata, is a powerful feature that allows easy configuration of a page and Mosaic site components e.g. the sidebar.","Frontmatter is written in yaml syntax and is found at the top of a page between 2 sets of 3 dashes: ",".","Example page yaml","---\n","title: Page Title\n","layout: DetailTechnical\n","sidebar:\n"," priority: 4\n","---\n","\n","// frontmatter is closed and now comes page content\n","# Page Title\n","\n","This is some content.\n","Accessing Frontmatter in content","With the syntax below it is possible to directly reference frontmatter inside content using curly brackets and the "," object.","You can think of "," as a JSON object that holds all the frontmatter of a page and when the Mosaic "," encounters the curly brackets then the value in the frontmatter will be resolved.","{meta.title}\n","{meta.description}\n","{meta.someValueYouHaveAddedToTheFrontmatter}","This is very common to see Mosaic pages that reference the title as shown below:","---\n","title: Title\n","---\n","\n","# {meta.title}","Plugins & Frontmatter","Mosaic plugins can also embed their output into page frontmatter in 2 different ways:","a property is directly added to the page object","a JSON file is generated and referenced using a ","ref","Adding a property to the page","A plugin can add a property to a page simply by extending the page object it receives in the "," lifecycle event:","async function $afterSource(pages) {\n"," for (const page of pages) {\n"," page.newProperty = 'Hello'\n"," }\n"," return pages;\n","}","You could use this property in the page content using ","JSON File","Let's take a look at the ",".","The purpose of this plugin is to crawl the page hierarchy to find the closest "," found in any parent page's frontmatter.","Finds all index pages among the source docs","Deserialises those pages so it can read the frontmatter and content of the page","If a property called "," in the page frontmatter is found a new file named shared-config.json is created","Adds a ref named "," to the shared config file that points to the shared config of the index page","import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';\n","import { flatten } from 'lodash-es';\n","import path from 'path';\n","\n","function createFileGlob(url, pageExtensions) {\n","if (pageExtensions.length === 1) {\n","return `${url}${pageExtensions[0]}`;\n","}\n","return `${url}{${pageExtensions.join(',')}}`;\n","}\n","\n","interface SharedConfigPluginPage extends Page {\n","sharedConfig?: string;\n","}\n","\n","interface SharedConfigPluginOptions {\n","filename: string;\n","}\n","\n","const SharedConfigPlugin: PluginType = {\n","async $beforeSend(\n"," mutableFilesystem,\n"," { config, serialiser, ignorePages, pageExtensions },\n"," options\n"," ) {\n"," const pagePaths = await mutableFilesystem.promises.glob(\n"," createFileGlob('**/index', pageExtensions),\n"," {\n"," ignore: [options.filename, ...flatten(ignorePages.map(ignore => [ignore, `**/${ignore}`]))],\n","cwd: '/'\n","}\n",");\n","\n"," for (const pagePath of pagePaths) {\n"," const sharedConfigFile = path.join(path.dirname(String(pagePath)), options.filename);\n","\n"," const page = await serialiser.deserialise(\n"," String(pagePath),\n"," await mutableFilesystem.promises.readFile(String(pagePath))\n"," );\n"," if (page.sharedConfig) {\n"," config.setRef(sharedConfigFile, ['config', '$ref'], `${String(pagePath)}#/sharedConfig`);\n"," await mutableFilesystem.promises.writeFile(sharedConfigFile, '{}');\n"," } else {\n"," const baseDir = path.posix.resolve(path.dirname(String(pagePath)), '..","/');\n"," config.setAliases(path.join(baseDir, options.filename), [sharedConfigFile]);\n"," }\n"," }\n","\n","}\n","};\n","\n","export default SharedConfigPlugin;\n"]},{"title":"Author","route":"/mosaic/author/index","content":["Here you will learn how to author documentation using markdown, Mosaic components and page templates"]},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax","content":["Out of the box, Mosaic supports documents written in ","MDX"," which allows React components to be embedded within the ","basic syntax"," outlined in the original Markdown design document.","In addition to the basic markdown syntax, the MDX processor used by Mosaic has been configured to support additional markdown syntax and features:","GitHub flavored markdown (gfm)","Frontmatter","Mosaic Standard Components","All components that comprise the "," export from "," package are available to use out of the box in your documents.","This includes components for all standard markdown syntax and additional components like "," and ",".","Referencing Frontmatter","Frontmatter values into the page using the "," object. ","See ","frontmatter"," for more information.","Configuring Supported components","TODO"]},{"title":"Page Templates","route":"/mosaic/author/page-templates","content":["Todo..."]},{"title":"Refs","route":"/mosaic/author/refs","content":["Refs are a very powerful feature of Mosaic documents that use ","JSON References"," to reference\n","a property from the page frontmatter or frontmatter of other pages.","The key concept is that of a JSON pointer which takes the form ","A","#","B"," where:","A"," is the relative path from the current schema to a target schema. ","If A is empty, the reference is to a type or property in the same schema, an in-schema reference. ","Otherwise, the reference is to a different schema, a cross-schema reference.","B"," is the complete path from the root of the schema to a type or property in the schema. ","If # in not included or B is empty, the reference is to an entire schema.","To translate this for our purposes:","A"," is the relative path to a file in the filesystem.","B"," is the path to a property in the frontmatter of the file.","It's probably better explained with examples...","Local refs (In-schema reference)","It is possible to reference a page's own frontmatter to avoid duplication:","---\n","title: Refs\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," sidebarPriority:\n"," $ref: '#/sidebar/priority'\n","---","This page you are reading right now has a sidebar priority of ",".","The value of "," comes from "," in the frontmatter.","Notice that because we don't specify a path before the "," in the ref we need to put the whole\n","value inside quotes.","Remote Refs (Cross-schema reference)","It is possible to reference frontmatter of other pages. ","Again this helps avoid duplication but the real power is using refs to build the data model. ","See ","advanced"," for more information.","The ","index"," page of the Author section has this frontmatter:","---\n","title: Author\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," exampleRefData: Hello from Author page\n","---","This page you are currently looking at is referencing the "," in it's frontmatter like this:","---\n","title: Refs\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," authorRef:\n"," $ref: ./#/data/exampleRefData\n","---","I can then use the data and embed it in this page like this:","{meta.data.authorRef}","And here it is: ","Notice that we did not need to put "," in the ref since index pages are resolved\n","automatically.","Advanced","You have had a taste of the power and want to know more? ","OK, lets reference and then list out all the mosaic modes:","The Modes ","index"," page has this frontmatter:","---\n","title: Modes of operation\n","layout: DetailTechnical\n","sidebar:\n"," priority: 4\n","data:\n"," modes:\n"," $ref: ./*#/title\n","---","The ref here is essentially using a wildcard (the *) to grab the "," property from the frontmatter of every page in the modes folder.","We can reference that data just like before:","---\n","title: Refs\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," modes:\n"," $ref: ../configure/modes#/data/modes\n","---","Output","With the code below, the referenced data can be embedded in a page.","
    \n"," {meta.data.modes.map(mode => (\n","
  • {mode}
  • \n"," ))}\n","
","Output with Mosaic Components","You can use Mosaic components with referenced data as well. ","Below we are using the "," and "," components.","\n"," {meta.data.modes.map(mode => (\n"," \n"," ))}\n","","Setting Refs using Plugins","Mosaic plugins can create new refs, create new ","global"," refs and see existing refs created by the page or other plugins. ","This is achieved using a special "," property available in the plugin helpers.","Create new refs","Use the "," function from the helpers provided to plugin lifecycle events. ","You need to provide","The file/fullpath to write the ref to","The path to the ptoperty where the ref will be applied","The value of the ref, which can use wildcards","For example, the following would add a property to pages named ",". ","The value is the title of all pages in the ","same"," directory as the current page"," async $afterSource(pages, { config }) {\n"," for (const page of pages) {\n"," config.setRef(page.fullPath, ['titles', '$ref'], `**#/title`);\n"," }\n"," return pages;\n"," }","When setting the property path the last string must be "," otherwise you're not creating a ref\n","that will be resolved by the RefPlugin.","Existing refs","To view refs that already exist you can use ",". ","For example to see all refs for a page:"," config.data.refs[fullPathToPage]","Create global refs","Global refs are similar to regular refs except they do not pre-resolve. ","This means they are resolved when the referenced file is read and the global mosaic filesystem, made up of multiple sources, is used rather than the filesystem of a single source."]},{"title":"UI Components","route":"/mosaic/author/ui-components","content":["Todo..."]},{"title":"Configure","route":"/mosaic/configure/index","content":["Mosaic is a tool which retrieves, formats and combines documentation pages from any number of different external sources (such as GitHub repositories, local disks or REST endpoints), into a single filesystem for you to use in your websites."]},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment","content":["Fragment Title","This is an example fragment of markdown content, being pulled from ","."]},{"title":"Fragments","route":"/mosaic/fragments/index","content":["This folder contains example fragments that are referenced and rendered in the Fragments docs page."]},{"title":"Tile A","route":"/mosaic/fragments/tile-a","content":[]},{"title":"Tile B","route":"/mosaic/fragments/tile-b","content":[]},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site","content":["In this guide you will learn how to generate and serve a Mosaic site.","Prerequisites","To begin setting up a Mosaic site, you need to have the following software installed:","Yarn v1","Node.js v18 or higher","Step 1: Generate a Mosaic site","Run the following command in your project directory to generate a new Mosaic site:","npx @jpmorganchase/mosaic-create-site create -o my-sample-site","This command creates a new Mosaic site in the my-sample-site directory.","Next, navigate to the site directory:","cd my-sample-site","Step 2: Serve the site","The example site you have generated comes preconfigured with two ","sources",": a remote repository and a local docs folder. ","Sources are used by Mosaic to pull content from disparate locations and merge them into a single virtual filesystem that can be used by a Mosaic site.","Set up Git credentials","If you want the site to read from remote repositories, you need to set up an environment variable to store your Git credentials. ","Follow these steps:","Open a terminal or command prompt.","Replace "," and "," in the following commands with your actual Git username and personal access token.","On Unix:","export MOSAIC_DOCS_CLONE_CREDENTIALS=\":\"","On Windows:","set MOSAIC_DOCS_CLONE_CREDENTIALS=\":\"","This sets the MOSAIC_DOCS_CLONE_CREDENTIALS environment variable with your Git credentials.","Serve command","Now you can serve your Mosaic site by running the following command:","yarn serve","Access your Mosaic site from a browser using the following URLs:","To browse the content from your local source: http://localhost:3000/local","To browse the content from the Mosaic Git repo source: http://localhost:3000/mosaic","That's it! ","Your Mosaic site is now up and running.","Next Steps:","Deploy your Mosaic site to AWS or Vercel for production use.","Create more pages to expand your site's content.","Configure your own sources in the mosaic.config.mjs file to pull content from different locations.","Theme your site"]},{"title":"Getting Started","route":"/mosaic/getting-started/index","content":["Getting Started with Mosaic","Follow our step-by-step guides to quickly create and deploy your first Mosaic site."]},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws","content":["Publish a site to AWS using S3 snapshots.","Step 1: Generate a Mosaic site","If you have already created your Mosaic site, skip ahead to step 2.","> npx @jpmorganchase/mosaic-create-site -o my-sample-site\n","> cd my-sample-site","Step 2: Create a Github repository","> git init\n","> git remote add origin git@github.com:username/my-sample-site.git\n","> git add .\n","> git commit -m \"initial commit\"\n","> git push origin main","Step 3: Generate a snapshot of content","Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself.","> yarn gen:snapshot","Step 4: Configure environment for S3","> export MOSAIC_MODE=\"snapshot-s3\"\n","> export MOSAIC_S3_BUCKET=\"\"\n","> export MOSAIC_S3_REGION=\"\"\n","> export MOSAIC_S3_ACCESS_KEY_ID=\"\"\"\n","> export MOSAIC_S3_SECRET_ACCESS_KEY=\"\"\n","> yarn mosaic upload -S ./snapshots/latest","Step 5: Setup AWS","Switch to the ","AWS Amplify"," console and deploy your app as a SSR application by following the ","AWS docs",".","Setup an S3 bucket as per the ","AWS S3 docs",".","Step 7: Configure your AWS app","Add the environment vars to the hosted app via your console","MOSAIC_MODE=\"snapshot-s3\"\n","MOSAIC_S3_BUCKET=\"\"\n","MOSAIC_S3_REGION=\"\"\n","MOSAIC_S3_ACCESS_KEY_ID=\"\"\"\n","MOSAIC_S3_SECRET_ACCESS_KEY=\"\"","Add the following build settings","version: 1\n","frontend:\n"," phases:\n"," preBuild:\n"," commands:\n"," - yarn install\n"," - env | grep -e MOSAIC >> .env.production\n"," build:\n"," commands:\n"," - yarn run build\n"," artifacts:\n"," baseDirectory: .next\n"," files:\n"," - '**/*'\n"," cache:\n"," paths:\n"," - node_modules/**/*","Ensure the Node is set to 16","Step 8: Upload your snapshot","Upload your snapshot to S3 storage.","> yarn mosaic upload -S ./snapshots/latest"]},{"title":"Publish","route":"/mosaic/publish/index","content":["To create your first Mosaic site, we have created a command line generator that scaffolds a ","standard"," site.","A ","standard"," site offers","an out the box, working site, which showcases local and remote content sources","a minimal set of files that can be configured with your own components, themes, layouts, sources and plugins","an update path that enables you to update Mosaic, independently of your own configuration","Create your first site","Install the Mosaic create site script.","> yarn global add @jpmorganchase/mosaic-create-site","Create a directory for your site and run the "," script.","> mkdir mosaic-sample-site\n","> cd mosaic-sample-site\n","> mosaic-create-site -f .","Define the environment variable, which enables us to access your remote repo.","> export MOSAIC_DOCS_CLONE_CREDENTIALS=\"\"","The "," environment variable is composed of your git username and your PAT token.\n","Follow these ","docs"," to see how to create your own PAT token.","Your site is ready to run.","> yarn serve","In your browser load ","Congratulations, you have created your first Mosaic site."]},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws","content":["A Mosaic site is a ","Next.Js"," app.","To publish a Next.Js App to AWS, deploy your app as a SSR application by following the ","AWS docs",".","Once the basic app has been configured, add the Mosaic specifics.","Add the environment vars to the hosted app via the Amplify console","MOSAIC_MODE=\"snapshot-s3\"\n","MOSAIC_S3_BUCKET=\"\"\n","MOSAIC_S3_REGION=\"\"\n","MOSAIC_S3_ACCESS_KEY_ID=\"\"\"\n","MOSAIC_S3_SECRET_ACCESS_KEY=\"\"","Add the following build settings","version: 1\n","frontend:\n"," phases:\n"," preBuild:\n"," commands:\n"," - yarn install\n"," - env | grep -e MOSAIC >> .env.production\n"," build:\n"," commands:\n"," - yarn run build\n"," artifacts:\n"," baseDirectory: .next\n"," files:\n"," - '**/*'\n"," cache:\n"," paths:\n"," - node_modules/**/*","Ensure the Node is set to 16"]},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel","content":["A Mosaic site is a ","Next.Js"," app.","To publish a Next.Js App to Vercel, refer to the ","Vercel docs",".","Deployment","As the ","vercel platform"," hosts static content you will need to deploy a mosaic snapshot. ","There is no option to run mosaic in ","active mode",".","1. ","Update Config File","Add the following to the mosaic config file used by your site:"," deployment: { mode: 'snapshot-file', platform: 'vercel' }","2. ","Set Environment Variables","Set 2 ","environment variables"," in the vercel dashboard.","| Variable Name | Value |\n","| ------------------- | ----------------- |\n","| MOSAIC_MODE | snapshot-file |\n","| MOSAIC_SNAPSHOT_DIR | snapshots/latest. ","|","3. ","Run Build and Deploy","The "," command used by vercel must run "," followed by ","The "," command is needed to workaround an ","output file tracing"," problem.","Example:","yarn build && yarn deploy","Output File Tracing","Output File Tracing"," is a feature of Next.js that uses static analysis\n","to determine what files are needed to deploy a production version of an application.","Due to the architecture of mosaic, snapshot files can be ignored by this process and therefore excluded from the build artifacts deployed by vercel.","If you are deploying your site to the ","vercel platform"," then the mosaic site has a "," command that will update the nextjs output trace to include the snapshot files."]},{"title":"Test","route":"/mosaic/test/index","content":["Pages for e2e testing."]},{"title":"Admin","route":"/mosaic/configure/admin/index","content":["There are several admin urls exposed by Mosaic that provide an insight into how the filesystem has been configured and a way to remotely manage sources.","Endpoints","| Endpoint | Method | Description | Params |\n","| -------------------------- | ------ | -------------------------------------------- | ---------------------- |\n","| "," | GET | Returns the JSON from the Mosaic config file | n/a |\n","| "," | GET | Returns the entire mosaic filesystem as JSON | n/a |\n","| "," | GET | Returns a collection of active sources | n/a |\n","| "," | POST | Adds the source | definition & isPreview |\n","| "," | PUT | Stops the source with the provided name | name |\n","| "," | PUT | Restarts the source with the provided name | name |"]},{"title":"Detail Highlight","route":"/mosaic/configure/layouts/detail-highlight","content":["Layout: Detail Highlight","Initialize with "," in your page's frontmatter.","This layout is used to promote, share insights, and statistics for a line of business.","This layout should be used for pages with only one level of nesting, therefore, pagination is not eligible for this\n","layout.","Page geometry"]},{"title":"Detail Overview","route":"/mosaic/configure/layouts/detail-overview","content":["Layout: Detail Overview","Initialize with "," in your page's frontmatter.","This layout is used to present an overview of expected documentation, statisitics, and ability to\n","navigate to more documents.","Avoid making this page too long. ","If it gets too long, we recommend the ","Detail Technical"," template.","Page geometry","Other Layouts","Detail Highlight","Detail Technical","Landing","Product Discover","Product Preview","Filler content","Eiusmod veniam adipisicing est magna id sunt occaecat minim adipisicing ad do pariatur id aliqua.\n","Officia officia deserunt consequat ullamco irure. ","Excepteur deserunt esse occaecat ex aute. ","Duis do\n","do in incididunt cupidatat dolore veniam magna aliquip voluptate laborum. ","Non irure magna amet\n","ullamco culpa esse dolore nostrud. ","Id ea id ipsum incididunt do velit aliquip fugiat do non\n","consequat.","A sub heading","Deserunt sunt pariatur mollit dolor eiusmod. ","Anim sunt officia cillum anim. ","Laborum ullamco\n","consectetur elit dolore quis laborum. ","Eiusmod cillum amet veniam sunt Lorem reprehenderit commodo.\n","Cupidatat cillum ea consequat anim. ","Duis voluptate nulla veniam labore quis tempor.","Commodo reprehenderit excepteur amet aliquip cillum veniam ad. ","Ullamco proident deserunt laboris\n","duis laborum consequat laboris est eu enim nulla. ","Mollit velit consectetur ea aliqua consectetur\n","mollit eu ex deserunt. ","Aute excepteur exercitation esse proident excepteur Lorem. ","Quis cillum\n","occaecat sint voluptate incididunt ea ipsum incididunt duis sint magna magna fugiat.","Third-level heading","Ea do magna aute proident nulla cupidatat esse consectetur anim eu esse. ","Consectetur est voluptate\n","excepteur non dolore consequat fugiat deserunt. ","Est nostrud est ea irure reprehenderit commodo\n","nostrud nulla tempor ipsum tempor sit id exercitation. ","Sunt reprehenderit officia anim id quis\n","pariatur velit cillum incididunt officia sunt. ","Ullamco ipsum cillum minim deserunt eiusmod nostrud\n","irure et nulla laborum ipsum ipsum incididunt. ","Voluptate reprehenderit in occaecat ipsum nulla\n","excepteur excepteur mollit laboris id ad laborum do. ","Qui in laborum nostrud quis occaecat proident\n","ipsum tempor laborum consequat id ut velit occaecat.Aliquip quis qui ullamco ipsum exercitation\n","exercitation excepteur ea ex. ","Proident elit incididunt incididunt ad adipisicing quis deserunt sint\n","laboris deserunt ipsum culpa est. ","Id do ex duis Lorem exercitation amet reprehenderit. ","Voluptate qui\n","tempor qui sit minim sit qui ea id dolor excepteur. ","Laborum elit excepteur enim sunt consequat\n","officia cillum. ","Do ea occaecat ut voluptate ea proident duis minim ad pariatur dolore magna enim\n","duis. ","Sit aliqua aliqua ea mollit enim cupidatat proident incididunt. ","Eu dolore sit non incididunt.\n","Mollit reprehenderit sunt sunt cillum labore velit exercitation officia aliqua ea adipisicing do ea.\n","Commodo et fugiat velit dolore consectetur.","Amet dolore deserunt in ut amet officia exercitation sint excepteur voluptate proident tempor enim\n","est. ","Culpa proident tempor in voluptate laboris sunt consectetur sit cillum excepteur culpa enim\n","velit laboris. ","Pariatur elit amet nostrud tempor nostrud ea. ","Exercitation do aliquip nisi amet id.\n","Lorem labore incididunt sit sit veniam tempor do consectetur do culpa qui.","Id sint deserunt laborum mollit id excepteur","mollit excepteur labore labore dolor. ","Sit cupidatat nostrud ad consequat amet excepteur id sunt\n","labore adipisicing non irure. ","Fugiat exercitation laborum officia minim duis dolor do officia Lorem\n","cillum excepteur. ","Sint elit mollit duis sit ad commodo.","Cillum amet irure ut tempor tempor culpa dolore sint.","Lorem qui ipsum reprehenderit est incididunt duis exercitation ea duis fugiat. ","Consectetur enim id\n","sunt exercitation et dolore ea proident sunt excepteur fugiat dolor. ","Veniam proident dolore irure\n","incididunt deserunt pariatur quis. ","Incididunt ea elit deserunt occaecat eiusmod velit fugiat eiusmod\n","dolor eiusmod ullamco. ","Fugiat fugiat eiusmod occaecat nulla consequat pariatur.","Aliquip non cupidatat irure magna et fugiat sunt amet ex est excepteur irure quis. ","Non culpa magna\n","nisi enim eu nulla esse laborum amet ipsum. ","Eu consectetur labore do id occaecat adipisicing."]},{"title":"Detail Technical","route":"/mosaic/configure/layouts/detail-technical","content":["Layout: Detail Technical","Initialize with "," in your page's frontmatter.","This layout is used for longer, technical, detailed content about the product.","This layout shows less marketing-type visuals and more visual of diagrams, screenshots, and code\n","snippets.","This page can be short or very lengthy.","Page geometry","Other Layouts","Detail Highlight","Detail Overview","Landing","Product Discover","Product Preview","Filler content","Eiusmod veniam adipisicing est magna id sunt occaecat minim adipisicing ad do pariatur id aliqua.\n","Officia officia deserunt consequat ullamco irure. ","Excepteur deserunt esse occaecat ex aute. ","Duis do\n","do in incididunt cupidatat dolore veniam magna aliquip voluptate laborum. ","Non irure magna amet\n","ullamco culpa esse dolore nostrud. ","Id ea id ipsum incididunt do velit aliquip fugiat do non\n","consequat.","A sub heading","Deserunt sunt pariatur mollit dolor eiusmod. ","Anim sunt officia cillum anim. ","Laborum ullamco\n","consectetur elit dolore quis laborum. ","Eiusmod cillum amet veniam sunt Lorem reprehenderit commodo.\n","Cupidatat cillum ea consequat anim. ","Duis voluptate nulla veniam labore quis tempor.","Commodo reprehenderit excepteur amet aliquip cillum veniam ad. ","Ullamco proident deserunt laboris\n","duis laborum consequat laboris est eu enim nulla. ","Mollit velit consectetur ea aliqua consectetur\n","mollit eu ex deserunt. ","Aute excepteur exercitation esse proident excepteur Lorem. ","Quis cillum\n","occaecat sint voluptate incididunt ea ipsum incididunt duis sint magna magna fugiat.","Third-level heading","Ea do magna aute proident nulla cupidatat esse consectetur anim eu esse. ","Consectetur est voluptate\n","excepteur non dolore consequat fugiat deserunt. ","Est nostrud est ea irure reprehenderit commodo\n","nostrud nulla tempor ipsum tempor sit id exercitation. ","Sunt reprehenderit officia anim id quis\n","pariatur velit cillum incididunt officia sunt. ","Ullamco ipsum cillum minim deserunt eiusmod nostrud\n","irure et nulla laborum ipsum ipsum incididunt. ","Voluptate reprehenderit in occaecat ipsum nulla\n","excepteur excepteur mollit laboris id ad laborum do. ","Qui in laborum nostrud quis occaecat proident\n","ipsum tempor laborum consequat id ut velit occaecat.Aliquip quis qui ullamco ipsum exercitation\n","exercitation excepteur ea ex. ","Proident elit incididunt incididunt ad adipisicing quis deserunt sint\n","laboris deserunt ipsum culpa est. ","Id do ex duis Lorem exercitation amet reprehenderit. ","Voluptate qui\n","tempor qui sit minim sit qui ea id dolor excepteur. ","Laborum elit excepteur enim sunt consequat\n","officia cillum. ","Do ea occaecat ut voluptate ea proident duis minim ad pariatur dolore magna enim\n","duis. ","Sit aliqua aliqua ea mollit enim cupidatat proident incididunt. ","Eu dolore sit non incididunt.\n","Mollit reprehenderit sunt sunt cillum labore velit exercitation officia aliqua ea adipisicing do ea.\n","Commodo et fugiat velit dolore consectetur.","Amet dolore deserunt in ut amet officia exercitation sint excepteur voluptate proident tempor enim\n","est. ","Culpa proident tempor in voluptate laboris sunt consectetur sit cillum excepteur culpa enim\n","velit laboris. ","Pariatur elit amet nostrud tempor nostrud ea. ","Exercitation do aliquip nisi amet id.\n","Lorem labore incididunt sit sit veniam tempor do consectetur do culpa qui.","Id sint deserunt laborum mollit id excepteur","mollit excepteur labore labore dolor. ","Sit cupidatat nostrud ad consequat amet excepteur id sunt\n","labore adipisicing non irure. ","Fugiat exercitation laborum officia minim duis dolor do officia Lorem\n","cillum excepteur. ","Sint elit mollit duis sit ad commodo.","Cillum amet irure ut tempor tempor culpa dolore sint.","Lorem qui ipsum reprehenderit est incididunt duis exercitation ea duis fugiat. ","Consectetur enim id\n","sunt exercitation et dolore ea proident sunt excepteur fugiat dolor. ","Veniam proident dolore irure\n","incididunt deserunt pariatur quis. ","Incididunt ea elit deserunt occaecat eiusmod velit fugiat eiusmod\n","dolor eiusmod ullamco. ","Fugiat fugiat eiusmod occaecat nulla consequat pariatur.","Aliquip non cupidatat irure magna et fugiat sunt amet ex est excepteur irure quis. ","Non culpa magna\n","nisi enim eu nulla esse laborum amet ipsum. ","Eu consectetur labore do id occaecat adipisicing."]},{"title":"Layouts","route":"/mosaic/configure/layouts/index","content":["Todo..."]},{"title":"Landing Layout","route":"/mosaic/configure/layouts/landing","content":["Layout: Landing","Initialize with "," in your page's frontmatter.","Use this layout as a landing page to show large branded visuals, and high-level content about the\n","line of business.","Set the tone and voice for your LOB’s experience.","Use components that support your content with places to insert visuals, share any stats or an\n","introduction of LOB’s story.","Use heading styles to show the grouping of content of a section.","Page geometry"]},{"title":"Product Discover Layout","route":"/mosaic/configure/layouts/product-discover","content":["Layout: Product Discover","Initialize with "," in your page's frontmatter.","Use this layout to introduce a product feature with a description and large visual.","This layout is use for marketing and discovery content.","Page geometry"]},{"title":"Product Preview Layout","route":"/mosaic/configure/layouts/product-preview","content":["Layout: Product Preview","Initialize with "," in your page's frontmatter.","This layout has been used to introduce a product and showcase their suite of product offerings.","Use heading styles to show the grouping of content of a section.","Page geometry"]},{"title":"Active mode","route":"/mosaic/configure/modes/active","content":["In "," mode content can be ","pulled"," from heterogeneous data sources and normalized via plugins, to the configured components/theme.\n","As your content changes, the site will ","re-pull"," the content and update your site in real-time.","The standard generated site comes with 2 sources to demonstrate, how 'active' mode work.","a local source, which loads content from ","a remote source, which loads content from a ","sample Github repository","Configuring your content sources","All content is composed together within a ","namespace",".","A ","namespace"," is the scope for aggregated content, represented by the root path.\n","e.g Our sample docs are aggregated into a ","namespace"," called "," and served by the user journey ","Mosaic doc sources are defined by a file called ","Here is how that might look for a standard site.","Pull your local content","To tryout local content creation, add a file called","The load ","Each directory should contain an "," which is the default page, when a page is loaded without a path","Now create other pages and subdirectories and explore how Mosaic, builds your user-journeys from your fileset.","Pull your remote content","To tryout remote content creation, your standard site comes pre-configured to load our Mosaic sample docs.","Edit the "," and change your "," and "," to pull content from other repos."]},{"title":"Modes of operation","route":"/mosaic/configure/modes/index","content":["Mosaic can operate in 3 different modes","Active updates","In ","active"," mode, content updates in real-time.","active"," mode content is pulled at configured intervals in real-time, as defined by ",".","Read the ","active"," configuration docs.","Static content","Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself.","In a snapshot mode, the snapshot does update itself.","File based snapshots","In "," mode, immutable snapshots of content are loaded at startup from the local file-system.","Read the ","snapshot-file"," configuration docs.","S3 based snapshots","In "," mode, snapshots of content are loaded at startup from a remote S3 bucket.","Read the ","snapshot-s3"," configuration docs."]},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file","content":["In "," mode a local immutable snapshot can be loaded by the site. ","Typically, the snapshot and the site are\n","deployed together and upon startup the site can load the snapshot from the local file-system.","To use "," mode","export MOSAIC_MODE=\"snapshot-file\"\n","export MOSAIC_SNAPSHOT_DIR=\"./snapshot/latest\"","Generating a snapshot","To generate a snapshot, run","yarn gen:snapshot","Commit the snapshot to your Git repo and push the site+snapshot to your Git repo, within the same branch."]},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3","content":["In "," mode a snapshot can be loaded from a pre-configured AWS S3 bucket.","To use "," mode","> export MOSAIC_MODE=\"snapshot-s3\"\n","> MOSAIC_S3_BUCKET=\"\"\n","> MOSAIC_S3_REGION=\"\"\n","> MOSAIC_S3_ACCESS_KEY_ID=\"\"\n","> MOSAIC_S3_SECRET_ACCESS_KEY=\"\"","Generating a snapshot","To generate a snapshot, run","yarn gen:snapshot","Uploading a snapshot to S3","To upload a snapshot to S3, define the required environment variables and run","yarn mosaic upload -S "]},{"title":"$AliasPlugin","route":"/mosaic/configure/plugins/alias-plugin","content":["The "," is what powers the ","aliases"," feature of Mosaic.","It does this by scrapes "," from page metadata and also applies all aliases stored in ","Other plugins can use "," to apply new aliases, as long as they call it before this plugin has reaches the "," lifecycle event.","This plugin is added to the plugins collection by Mosaic itself so users do ","not"," need to include it in their own mosaic config file.","Priority","This plugin runs with a priority of -1 so it runs ","after"," most other plugins."]},{"title":"BreadcrumbsPlugin","route":"/mosaic/configure/plugins/breadcrumbs-plugin","content":["The "," is responsible for generating the data needed to show breadcrumbs navigation on pages. ","It then appends this data to a "," property in the page metadata.","Should a page already have a "," property in it's metadata then it is respected and not overwritten.","If a page has a "," property in it's metadata then this is used as the label for the breadcrumb, otherwise the page "," is used.","When the "," is traversing up directories, it needs to know what page in the directory represents the ","breadcrumb"," for that directory. ","It is recommended to use the "," page for this but the page to use is a configurable option of the breadcrumbs plugin.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| ------------- | ------------------------------------------------ |\n","| indexPageName | The page name to use for \"directory\" breadcrumbs |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the breadcrumbs plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/BreadcrumbsPlugin',\n"," options: {\n"," indexPageName: 'index.mdx'\n"," }\n"," }\n"," // other plugins\n","];"]},{"title":"BrokenLinksPlugin","route":"/mosaic/configure/plugins/broken-links-plugin","content":["The "," will identify any broken links in pages Mosaic has pulled into it's filesystem by making use of the ","check-links"," package.","It can identify broken links between the pages themselves and external links that pages link out to.","What this plugin is really checking is \"liveness\" of a link.","alive if the URL is reachable (2XX status code)","dead if the URL is not reachable","invalid if the URL was parsed as invalid or used an unsupported protocol","Links may be \"alive\", but the ","content"," of the linked page may not be what you want so continue\n","to check links show what you expect.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| ------------- | --------------------------------------------------------------------------------------------------------------------------------- |\n","| baseUrl | This is used to calculate the full url for links between pages. ","It should be the url Mosaic is running on |\n","| proxyEndpoint | If you are behind a corporate proxy, external link checking will not work unless you specify the proxy endpoint using this option |","Adding to Mosaic","This plugin is ","not"," included in the mosaic config shipped by the Mosaic standard generator so it must be added manually to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/BrokenLinksPlugin',\n"," priority: -1,\n"," // Exclude this plugin in builds\n"," runTimeOnly: true,\n"," options: {\n"," baseUrl: process.env.MOSAIC_ACTIVE_MODE_URL || 'http://localhost:8080',\n"," proxyEndpoint: 'http://some-proxy-url'\n"," }\n"," }\n"," // other plugins\n","];","This plugin needs to be a "," plugin because it needs Mosaic to be running in order to\n","make requests to all of the page links.","Example Output","When a link is found to be broken, you will see the following output in the console:","@jpmorganchase/mosaic-site:serve: 8080 [Mosaic] Broken links found in /local/docs/publish-site-to-vercel.mdx\n","@jpmorganchase/mosaic-site:serve: 8080 Link to https://nextjs.org/davie is dead {\n","@jpmorganchase/mosaic-site:serve: 8080 type: 'link',\n","@jpmorganchase/mosaic-site:serve: 8080 title: null,\n","@jpmorganchase/mosaic-site:serve: 8080 url: 'https://nextjs.org/davie',\n","@jpmorganchase/mosaic-site:serve: 8080 children: [ { type: 'text', value: 'Next.Js', position: [Object] } ],\n","@jpmorganchase/mosaic-site:serve: 8080 position: {\n","@jpmorganchase/mosaic-site:serve: 8080 start: { line: 4, column: 20, offset: 36 },\n","@jpmorganchase/mosaic-site:serve: 8080 end: { line: 4, column: 55, offset: 71 }\n","@jpmorganchase/mosaic-site:serve: 8080 }\n","@jpmorganchase/mosaic-site:serve: 8080 }"]},{"title":"$CodeModPlugin","route":"/mosaic/configure/plugins/codemod-plugin","content":["Todo"]},{"title":"Plugins","route":"/mosaic/configure/plugins/index","content":["Mosaic Plugins are ","lifecycle-based"," hooks that are called on ","every"," source at different stages. ","You will never need to invoke a lifecycle method directly as their execution is managed by a plugin runner.","Plugins enable Mosaic to have a lightweight and flexible, modular architecture by encapsulating features and functionality as plugins.","Installation","Configuration","Plugins are added to the "," collection of the mosaic config file. ","Like ","sources",", plugins have an options property that can be used to provide plugin specific configuration.","| Property | Description | Required |\n","| --------------- | -------------------------------------------------------------------------- | -------- |\n","| modulePath | The path to the installed plugin module | Yes |\n","| disabled | Exclude this plugin completely. ","Defaults to false | No |\n","| runtimeOnly | Exclude this plugin when generating a snapshot. ","Defaults to false | No |\n","| previewDisabled | Exclude this plugin for \"preview\" sources | No |\n","| allowMultiple | Allow multiple instances of this plugin to run. ","| No |\n","| priority | The importance of this plugin. ","Plugins with the highest priority run first | No |\n","| options | Collection of other configuration values | No |"," plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/PagesWithoutFileExtPlugin',\n"," options: {},\n"," priority: 1\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: {}\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/ReadingTimePlugin',\n"," options: {}\n"," }\n","],","There is no need to import the plugin module directly. ","As long as the plugin is installed, Mosaic\n","will be able to import it using the built-in plugin loader.","Default Plugins","The following plugins are always included by Mosaic, regardless of whether they are present in the plugins collection of the Mosaic config file:","$TagPlugin","$AliasPlugin","$CodeModPlugin","$RefPlugin","Plugin errors","Should a plugin fail, the failure will ","not"," cause a source to close or for any other plugin to not run.","Instead plugin errors are tracked by Mosaic and can be viewed in the "," property available on each source listed by the list sources ","admin API",".","Plugin errors will be split by lifecycle event and only the lifecycle events used by the loaded plugins used will be shown.","Multiple Instances","By default, Mosaic will only run one instance of a plugin.","It may be the case that you wish to run the same plugin twice with a slightly different config. ","To do this, you must have 2 instances listed in the plugins collection and they ","both"," must set the "," option to ",".","For example, the config below runs the ","SidebarPlugin"," twice:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: { rootDirGlob: 'products/product-a' },\n"," allowMultiple: true\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: { rootDirGlob: '*/!(","product-a)/*' },\n"," allowMultiple: true\n"," }\n"," // other plugins\n","];"]},{"title":"LazyPagePlugin","route":"/mosaic/configure/plugins/lazy-page-plugin","content":["The "," attempts to reduce the size of the Mosaic filesystem in memory by moving page metadata and content to disk.","It then adds a hook, so that when a page is requested the data is loaded from disk and combined with what is already in the Mosaic filesystem.","It must be the very last to run so that it can strip off metadata and content after other plugins\n","have finished with them.","Priority","This plugin runs with a priority of -2. ","Needs to be the last to run for biggest impact.","Options","| Property | Description |\n","| -------- | ------------------------------------------------------------------------------ |\n","| cacheDir | The directory to store the cache. ","Defaults to "," |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/LazyPagePlugin',\n"," // This plugin must be the very last to run, so it can strip off metadata and content after the other\n"," // plugins are done with them\n"," priority: -2,\n"," // Exclude this plugin in builds\n"," runTimeOnly: true,\n"," options: {\n"," cacheDir: '.tmp/.pull-docs-last-page-plugin-cache'\n"," }\n"," }\n"," // other plugins\n","];","This plugin needs to be a "," plugin because the goal is to reduce the in-memory\n","filesystem size."]},{"title":"PagesWithoutFileExtPlugin","route":"/mosaic/configure/plugins/pages-wthout-extensions-plugin","content":["The "," plugin creates ","aliases"," without the file extension for every page in the Mosaic filesystem.\n","This allows pages to be retrieved from the filesystem without specifying the extension e.g., ",".","The plugin also modifies the "," metadata property of a page to point to the shorter alias.","Priority","This plugin runs with a priority of 1. ","It must run after the ","$AliasPlugin",".","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/PagesWithoutFileExtPlugin',\n"," options: {},\n"," priority: 1\n"," }\n"," // other plugins\n","];"]},{"title":"PublicAssetsPlugin","route":"/mosaic/configure/plugins/public-assets-plugin","content":["The "," is responsible for finding \"assets\" in the Mosaic filesystem and copying them to another directory.","Typical usecase is for copying "," and "," to the public directory of a Next.js site as these are considered ","static assets"," for Next.js.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| --------- | ----------------------------------------------------------- |\n","| outputDir | The directory to copy the assets to. ","Defaults to "," |\n","| assets | A collection of filenames to copy to the outputDir |","Adding to Mosaic","This plugin is ","not"," included in the mosaic config shipped by the Mosaic standard generator so it must be added manually to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/PublicAssetsPlugin',\n"," priority: -1,\n"," options: {\n"," outputDir: './public',\n"," assets: ['sitemap.xml', 'search-data.json']\n"," }\n"," }\n"," // other plugins\n","];"]},{"title":"ReadingTimePlugin","route":"/mosaic/configure/plugins/reading-time-plugin","content":["The "," generates an estimation of how long a page written in MDX will take to read and adds the "," property to the metadata of a page.","Priority","This plugin runs with no special priority.","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/ReadingTimePlugin',\n"," options: {}\n"," }\n"," // other plugins\n","];"]},{"title":"$RefPlugin","route":"/mosaic/configure/plugins/ref-plugin","content":["The "," powers the ","refs"," feature of Mosaic.","The plugin scrapes "," properties from page metadata and also applies all refs stored in ",".","Other plugins can use "," to apply new refs, as long as they call it before this plugin has reaches ",".","Priority","This plugin runs with a priority of -1 so it runs ","after"," most other plugins."]},{"title":"SearchIndexPlugin","route":"/mosaic/configure/plugins/search-index-plugin","content":["The "," is responsible for generating the search index and configuration information for ","Fuse.js"," which is the matching engine powering the client-side search functionality of Mosaic sites.","It outputs 3 files:","Full Search Index - ","Condensed Search Index - ","Search Configuration - ","Full Search Index","On a Mosaic site, the full index is fetched after a page has loaded, thus removing the chance of a huge index slowing down first-load.","Practically, the full index should load in the background before a user searches for something, but should a search be initiated before that (e.g., slow-internet) then the condensed version of the search index is available.","Condensed Search Data","Search Index plugin creates a \"condensed\" version of the search index that only includes the "," and "," for each page. ","This is the \"Minimum Viable Index\" to provide somewhat useable search results client-side while the main search index is loaded in the background.","Search Configuration","Any ","options"," that need to be passed to Fuse.js.","Search relevancy configuration","| Property | Description |\n","| ---------------- | ----------------------------------------------------- |\n","| includeScore | https://www.fusejs.io/api/options.html#includescore |\n","| includeMatches | https://www.fusejs.io/api/options.html#includematches |\n","| maxPatternLength | TODO |\n","| ignoreLocation | https://www.fusejs.io/api/options.html#ignorelocation |\n","| threshold | https://www.fusejs.io/api/options.html#threshold |\n","| keys | https://www.fusejs.io/api/options.html#keys |","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| ------------- | --------------------------------------------------- |\n","| maxLineLength | TODO |\n","| maxLineCount | TODO |\n","| keys | https://www.fusejs.io/api/options.html#keys |\n","| relevancy | ","search relevancy"," |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SearchIndexPlugin',\n"," previewDisabled: true,\n"," options: { maxLineLength: 240, maxLineCount: 240 }\n"," }\n"," // other plugins\n","];","It's usually a good idea to mark this plugin as disabled for preview sources otherwise the pages\n","from the preview will appear in search results."]},{"title":"SharedConfigPlugin","route":"/mosaic/configure/plugins/shared-config-plugin","content":["The "," crawls the page hierarchy to find the closest "," metadata from any parent index's page metadata. ","It then exports a JSON file into each directory with the merged config for that level.","Shared config is typically the place where the following is configured for a Mosaic site:","App Header configuration including site name and main navigation","Footer information","Help links for the left sidebar area","Namespace Shared Configs","Consider 2 sources the share the same ","namespace"," \"product-docs\":","Source A - multiple product directories and main product index page. ","The index page specifies "," metadata.","Source B - pages relevant to a single product. ","Index page does ","not"," have any "," metadata.","Let's also assume that the pages from Source B would also naturally \"fit\" within the pages of Source B (e.g. inside a products directory).","In this scenario, the "," will attempt to copy the shared config file from Source A into the root directory of Source B allowing the Source B pages to use the Source A "," as though it were a product sourced directly from Source A.","Priority","This plugin runs with a priority of 3.","Options","| Property | Description |\n","| -------- | ---------------------------------------------- |\n","| filename | the name of the JSON file output by the plugin |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SharedConfigPlugin',\n"," options: {\n"," filename: 'shared-config.json'\n"," },\n"," priority: 3\n"," }\n"," // other plugins\n","];"]},{"title":"SidebarPlugin","route":"/mosaic/configure/plugins/sidebar-plugin","content":["The "," generates the necessary page metadata needed for the vertical navigation shown on some Mosaic pages.","The output from the plugin is added to a "," metadata property of the page.","Configuration","The "," is used to determine the \"root\" directories of the sidebar. ","So for example:"," - generate sidebar data for the pages that are 3 directories deep in the filesystem hierarchy"," - same as above but ignore the product-a directory"," - generate a sidebar just for product-b in the products directory","To rearrange pages in the sidebar or to apply a different label to a page you can specify the following in the page frontmatter:","| Property | Description |\n","| ---------------- | ----------------------------------------------------------------------------------------- |\n","| sidebar.label | the name of the page to use in the sidebar. ","Defaults to the page title |\n","| sidebar.priority | pages are ordered in the sidebar by priority high → low. ","Default is alphabetical ordering |","Priority","This plugin runs with a priority of 3.","Options","| Property | Description |\n","| ----------- | ----------------------------------------------------------------------------- |\n","| filename | filename of the sidebar json, linked to each related page via ref |\n","| rootDirGlob | Glob pattern for matching directories which should be the root of the sidebar |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: { rootDirGlob: '*/*/*' }\n"," }\n"," // other plugins\n","];"]},{"title":"SiteMapPlugin","route":"/mosaic/configure/plugins/site-map-plugin","content":["The "," generates a ","sitemap"," using the pages in the Mosaic filesystem that adheres to the ","sitemaps XML schema",".","The output of the plugin is a file is named ",".","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| -------- | --------------------------------------------------------------------------------------------------- |\n","| siteUrl | The site URL. ","Used as the prefix for loc entries in the sitemap as these must start with a protocol |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SiteMapPlugin',\n"," previewDisabled: true,\n"," options: { siteUrl: process.env.SITE_URL || 'http://localhost:3000' }\n"," }\n"," // other plugins\n","];"]},{"title":"$TagPlugin","route":"/mosaic/configure/plugins/tag-plugin","content":["The "," powers the tags feature of Mosaic.","This plugin scrapes "," from page metadata and also applies all aliases stored in ",".","Tags ultimately resolve down into ","refs",", but are different from normal refs, in that they are applied to the\n","union filesystem (all merged filesystems), not to the individual source filesystem that they were defined on. ","This can be thought of as a ","global ref",".","Other plugins can use "," and modify the "," property, to apply new global refs, as long as\n","they do so before this plugin has reaches ",".","Priority","This plugin runs with no special priority but it must run before both the "," and the ",".","Example use case - Products Page","Let's assume there is a products page on your site and each product is shown as a tile. ","The information for each product tile is sourced from multiple Mosaic sources. ","How can tags be used to reference the product data needed for each tile on the products page?","The product page should add a "," metadata prop to its frontmatter:","---\n","title: Products\n","description: Product index\n","layout: ProductPreview\n","data:\n"," items:\n"," $tag: product#/data\n","---","The tag shown in the example above is saying populate "," of the Products index page with the "," metadata property of pages tagged with ",".","A tagged product page needs to have a "," property which is a collection of tags and one of these needs to be ",". ","This will allow the "," to correctly associate the product page to the product index page. ","It will also need a "," property because thats the property our product index page wants to use for the tiles.","---\n","title: Product A\n","description: My Product description\n","layout: ProductDiscover\n","tags:\n"," - product\n","data:\n"," name:\n"," $ref: '#/title'\n"," date: 2023/02/07\n"," action: Product Overview\n"," description:\n"," $ref: '#/description'\n"," link: /products/a/index\n","---","---\n","title: Product B\n","description: My Product description\n","layout: ProductDiscover\n","tags:\n"," - product\n","data:\n"," name:\n"," $ref: '#/title'\n"," date: 2023/02/07\n"," action: Product Overview\n"," description:\n"," $ref: '#/description'\n"," link: /products/b/index\n","---"]},{"title":"TableOfContentsPlugin","route":"/mosaic/configure/plugins/toc-plugin","content":["The "," generates a Table of Contents for each page in the Mosaic filesystem using the headings on the page.","Heading ranks are used to determine which page headings should be included in the Table of Contents:","| Heading Element (markdown syntax) | Rank |\n","| --------------------------------- | ---- |\n","| h1 (#) | 1 |\n","| h2 (##) | 2 |\n","| h3 (###) | 3 |\n","| h4 (####) | 4 |\n","| h5 (#####) | 5 |\n","| h6 (######) | 6 |","The plugin output is added to a "," metadata property of a page.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| -------- | ----------------------------- |\n","| minRank | The minimum page heading rank |\n","| maxRank | The maximum page heading rank |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/TableOfContentsPlugin',\n"," options: {\n"," minRank: 2,\n"," maxRank: 3\n"," }\n"," }\n"," // other plugins\n","];"]},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source","content":["The Git Repo Source is used to pull content from a remote git repository e.g. github.","Installation","Credentials and Access tokens","To successfully clone the git repo, the source definition must include credentials that have sufficient permissions to clone the repository.","We recommend storing a ","personal access token"," in an environment variable and using the environment variable in the source definition.","This keeps credentials out of code where they may be accidentally exposed to third parties.","Example","export MOSAIC_DOCS_CLONE_CREDENTIALS=\":\",","Configuration","| Property | Description | Required |\n","| ------------------- | -------------------------------------------------------------------------------- | -------- |\n","| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-git-repo) | Yes |\n","| namespace | The scope for this source. ","| Yes |\n","| disabled | When true, content from this source is not used | No |\n","| options.credentials | Collection of URLS to make requests | Yes |\n","| options.prefixDir | The root path used in the content URL | Yes |\n","| options.subfolder | The name of the folder within the cloned repo containing the docs | Yes |\n","| options.repo | The repo URL | Yes |\n","| options.branch | The branch or tag to clone | Yes |\n","| options.extensions | Collection of file extensions that the source will look for inside the subfolder | Yes |\n","| options.remote | The name of the git remote to use. ","Defaults to origin. ","| Yes |","Example Git Repo Source Definition","\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-git-repo',\n"," namespace: 'mosaic',\n"," options: {\n"," credentials: process.env.MOSAIC_DOCS_CLONE_CREDENTIALS,\n"," prefixDir: 'mosaic',\n"," subfolder: 'docs',\n"," repo: 'https://github.com/jpmorganchase/mosaic.git',\n"," branch: 'main',\n"," extensions: ['.mdx'],\n"," remote: 'origin'\n"," }\n"," }\n"]},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source","content":["The HTTP Source is used to pull content over HTTP.","Multiple endpoints can be specified and the source will combine and transform the response from each into a single collection of pages.","Installation","Configuration","| Property | Description | Required |\n","| ------------------------------------------ | ----------------------------------------------------------------------------- | -------- |\n","| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-http) | Yes |\n","| namespace | The scope for this source | Yes |\n","| disabled | When true, content from this source is not used | No |\n","| options.endpoints | Collection of URLS to make requests | Yes |\n","| options.prefixDir | The root path used in the content URL | Yes |\n","| options.transformResponseToPagesModulePath | The path of the module used to transform endpoint responses into Mosaic pages | Yes |\n","| options.checkIntervalMins | Number of minutes to wait between requests. ","Defaults to 5 minutes | No |\n","| options.initialDelayMs | Number of milliseconds to wait for making initial request. ","Defaults to 1000 | No |","Example HTTP Source Definition"," {\n"," modulePath: '@jpmorganchase/mosaic-source-http',\n"," namespace: 'my-namespace',\n"," options: {\n"," prefixDir: 'docs',\n"," endpoints: [\n"," 'https://api.data.com/blah',\n"," 'https://api.data.com/hello'\n"," ],\n"," transformResponseToPagesModulePath: '@scope/transformer-package'\n"," }\n"," }"]},{"title":"Sources","route":"/mosaic/configure/sources/index","content":["Sources are what Mosaic uses to pull content from disparte locations and merge into a single virtual filesystem that can be used by a Mosaic Site.","Depending on the ","mode"," used, sources can update periodically ensuring that new content is made available automatically.","Source Definitions","Source Definitions are specified in the "," collection of a mosaic config file.","Each source uses a ","zod schema"," to validate the provided JSON to ensure that all required information for the source to pull content has been provided.","A source definition at a minimum needs to provide the module path of the source and the ","namespace"," that it will use. ","A namespace is not unique across sources though it is common that each source has a different namespace.","Lastly, the options field can be used as a bucket for configuration values needed to configure the source e.g. credentials.","Users are free to add any property as a source option but please read the ","gotchas","\n","first regarding the allowed ","values",".","Example Local Folder Source Definition"," /**\n"," * Demonstrates a local file-system source, in this case a relative path to where the\n"," * site was generated.\n"," * Access from your browser as http://localhost:3000/local\n"," */\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-local-folder',\n"," namespace: 'local', // each site has it's own namespace, think of this as your content's uid\n"," options: {\n"," rootDir: '..","/../docs', // relative path to content\n"," prefixDir: 'local', // root path used for namespace\n"," extensions: ['.mdx'] // extensions of content which should be pulled\n"," }\n"," }","Source Namespace","A Source Namespace is a scoping mechanism for Mosaic sources used to filter the content loaded by Mosaic. ","By default all sources specified in the mosaic config file are loaded.","sources: [\n"," {\n"," namespace: 'my-namespace',\n"," modulePath: '@jpmorganchase/mosaic-source-local-folder'\n"," }\n","];","The following command will ensure mosaic only loads sources with the "," scope.","yarn mosaic serve -c ''./mosaic.config.mjs' -p 8080 --scope \"local\"","Source Schedules","Source schedules define how often sources pull in content that exists remotely and if a failed source is retried. ","More information can be found ","here","Source Types","Out of the box, Mosaic provides 3 source \"types\":","Local Folder","Git Repo Source","HTTP Source","Sources must expose an observable interface so it is possible to compose sources together e.g. the Git Repo source uses the Local Folder source internally to watch the cloned folder for changes.","Watching for Updates","When running in ","active mode",", Mosaic will watch for any changes to the source content and if a change is detected, will initiate a pull of that new content.","How often to check for updates and how updates are triggered are a matter for the source to handle. ","Mosaic simply responds when a source emits new content.","Source Worker Thread","Sources are executed inside their own worker thread to ensure that the main thread is not overloaded. ","It is here that a local virtual filesystem for the source is created and where several of the ","Plugin Lifecycle"," events are triggered.","Gotchas","A service worker thread uses ","postMessage"," to communicate with the main thread and vice-versa.","This is important because it limits what values can be provided in the source definition to those that can be processed by the ","Structured Clone Algorithm","."]},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source","content":["The Local Folder Source is used to pull content from a folder located on the same machine as Mosaic is running.","It is common to use this source when running mosaic locally.","Installation","Configuration","| Property | Description | Required |\n","| ------------------ | ------------------------------------------------------------------------------ | -------- |\n","| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-local-folder) | Yes |\n","| namespace | The scope for this source | Yes |\n","| disabled | When true, content from this source is not used | No |\n","| options.rootDir | The top level directory content will be pulled from | Yes |\n","| options.prefixDir | The root path used in the content URL | Yes |\n","| options.extensions | Collection of file extensions that the source will look for inside the rootDir | Yes |","Example Local Folder Source Definition","{\n"," modulePath: '@jpmorganchase/mosaic-source-local-folder',\n"," namespace: 'local', // each site has it's own namespace, think of this as your content's uid\n"," options: {\n"," rootDir: '..","/../docs', // relative path to content\n"," prefixDir: 'local', // root path used for namespace\n"," extensions: ['.mdx'] // extensions of content which should be pulled\n"," }\n","}","This source will look for content with the \".mdx\" extension in a \"docs\" directory 2 levels up from the Mosaic working directory. ","That content is included in the \"local\" namespace and available from a route that is prefixed with \"local\".","So if you had a file, "," then you would be able to view it at ","."]},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules","content":["A source schedule defines how often a source initiates a content pull and what to do when there is a failure.","A schedule can be specified for each source in the source definition, but should a source not provide a schedule it will inherit the \"global\" schedule.","Configuration","| Property | Description | Required | Default |\n","| ----------------- | -------------------------------------------------------------------------------------- | -------- | ------- |\n","| checkIntervalMins | The length of time in minutes before triggering a content refresh | Yes | 30 mins |\n","| initialDelayMs | Startup delay for the source. ","| Yes | 1000 ms |\n","| retryEnabled | When true, failures will trigger another content pull | No | true |\n","| retryDelayMins | The interval between retries. ","This will rise exponentially on every failure. ","| No | 5 |\n","| maxRetries | Maximum number of retry attempts | No | 100 |\n","| resetOnSuccess | If true, when a source recovers and emits pages it's retry counter is returned to zero | No | true |","Global Schedule","The global schedule applies to all sources that do ","not"," provide their own schedule. ","It can be configured as a top-level property of the Mosaic config file."," schedule: {\n"," checkIntervalMins: 60,\n"," initialDelayMs: 1000,\n"," retryDelayMins: 15,\n"," maxRetries: 20\n"," }","Example","Given the config file below:"," schedule: {\n"," checkIntervalMins: 30,\n"," initialDelayMs: 1000,\n"," retryDelayMins: 5,\n"," maxRetries: 10\n"," },\n"," sources: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-git-repo',\n"," namespace: 'sourceA',\n"," options: {\n"," credentials: 'credentials',\n"," prefixDir: 'sourceA',\n"," subfolder: 'docs',\n"," repo: 'source-a-repo-url',\n"," branch: 'develop',\n"," extensions: ['.mdx'],\n"," remote: 'origin'\n"," }\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-git-repo',\n"," namespace: 'sourceB',\n"," schedule:{\n"," checkIntervalMins: 60,\n"," initialDelayMs: 5000,\n"," retryDelayMins: 30,\n"," maxRetries: 50\n"," }\n"," options: {\n"," credentials: 'credentials',\n"," prefixDir: 'sourceB',\n"," subfolder: 'docs',\n"," repo: 'source-b-repo-url',\n"," branch: 'develop',\n"," extensions: ['.mdx'],\n"," remote: 'origin'\n"," }\n"," }\n"," ]","Source A will inherit the global schedule so it will:","Start after a 1 second delay","Pull content every 30 minutes","Retry a failed content pull after an initial 5 minute delay","Retry 10 times and if still unsuccessful, closing","Source B has its own schedule so it will:","Start after a 5 second delay","Pull content every 60 minutes","Retry a failed content pull after an initial 30 minute delay","Retry 50 times and if still unsuccessful, closing","Retry Strategy","The retry strategy that Mosaic employs is ","Exponential Backoff",". ","This is a common strategy for networking applications that aims to prevent retries from causing more harm than good.","For example, given a source schedule that has a 1 minute retry delay and will retry a maximum of 3 times then the total time spent retrying is 7 minutes:","1 minute delay then 1st retry","2 minute delay then 2nd retry","4 minute delay then 3rd (and final) retry","Total delay: 1 + 2 + 4 = 7 minutes","As you can see, the delay between retries is growing exponentially giving the content source more time to recover after each retry."]},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components","content":["Learn how to add your own custom components to your Mosaic site.","Create Components Folder","To start, create a "," folder under "," where you'll store your custom components.","src/\n","└── components/","In this tutorial, we will create a custom "," component.","Create Card Component","Inside the "," folder, create a "," folder, which will contain your React "," component. ","The "," folder should include "," and "," files as shown in the structure below:","├── src/\n","│ ├── components/\n","│ │ └── card/\n","│ │ ├── index.tsx\n","│ │ └── card.module.css","Card Component: index.tsx","Create your "," component within the "," file:","import React from 'react';\n","import styles from './card.module.css';\n","\n","type CardProps = {\n"," title: string;\n"," content: string;\n","};\n","\n","export const Card: React.FC = ({ title, content }) => {\n"," return (\n","
\n","

{title}

\n","

{content}

\n","
\n"," );\n","};","Card Component: card.module.css","Define your component styles in the "," file:",".card {\n"," background-color: #f5f5f5;\n"," border: 1px solid #ccc;\n"," border-radius: 4px;\n"," box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n"," padding: 16px;\n"," transition: box-shadow 0.2s ease-in-out;\n","}\n","\n",".card:hover {\n"," box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n","}\n","\n",".card h2 {\n"," color: #333;\n"," font-size: 24px;\n"," margin-bottom: 8px;\n","}\n","\n",".card p {\n"," color: #666;\n"," font-size: 16px;\n"," line-height: 1.5;\n","}","In this example, we use a CSS file, but you can use whichever styling approach you prefer, such as ","vanilla extract",".","To export your "," component, create an "," file in the "," folder:","export * from './card';","Your final folder structure should look like this:","├── src/\n","│ ├── components/\n","│ │ ├── card/\n","│ │ │ ├── index.tsx\n","│ │ │ └── card.module.css\n","│ │ ├── index.ts","Import Custom Card Component","To use your custom "," component, import it into your site's "," file. ","Add the following line to your imports:","import * as myComponents from '../components';","Replace this line:","const components = mosaicComponents;","with:","const components = {\n"," ...mosaicComponents,\n"," ...myComponents\n","};","This will add your custom components to the site, and any custom components in "," will override the corresponding ones in ",". ","The spread operator (",") merges both "," and "," objects, giving priority to "," when there is a naming conflict.","Use Your Custom Card Component","Now you're ready to use your custom "," component. ","Build and run your site, and add the "," component to an MDX file in your "," folder or another source:","","You can create and add more custom components to your Mosaic site by following the same process."]},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css","content":["You can customize the look and feel of your Mosaic site by creating cusotm CSS files. ","Here is a step-by-step guide to help you create your own CSS theme.","Create a CSS folder","To get started, create a folder named \"css\" in the \"src\" folder of your Mosaic project.","src/\n","└── css/","Create your theme","Inside the \"css\" folder, create a folder named \"global\". ","This is where you will add your custom styles.","src/\n","└── css/\n"," ├── global/\n"," ├── index.css","Create an \"index.css\" file inside the \"css\" folder. ","This file will import your custom styles.","@import './global/';","Inside your global folder, create a separate CSS file for each part of your site that you want to customize. ","For instance, if you want to change the text styling, create a \"text.css\" file inside the \"global\" folder. ","Here is an example of how your \"text.css\" file could look like:","h1 {\n"," /* Set custom font size and weight */\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h2 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h3 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h4 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h5 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h6 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","p {\n"," font-size: /* insert value */ ;\n"," line-height: /* insert value */ ;\n","}","You can add as many CSS files as you need, depending on how much you want to customize your site.","Create an \"index.css\" file inside the \"global\" folder. ","This file will import your custom styles, in this example we are importing our \"text.css\" file.","@import './text.css';","Your \"css\" folder should now look like this:","src/\n","└── css/\n"," ├── global/\n"," │ ├── text.css\n"," │ ├── index.css\n"," ├── index.css","Import your custom CSS into your site","To apply your custom styles to your Mosaic site, open your \"_app.tsx\" file and add the following line to the bottom of your imports:","import '../css/index.css';","Congratulations! ","You have successfully applied your custom CSS styles to your site. ","This example demonstrated how to create text styles, but you can use the same approach to customize other aspects of your site as well."]},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index","content":["Create a unique look and feel for your Mosaic site by customizing the CSS theme and integrating your own UI components.","Customize the CSS","Adapt various design elements of your Mosaic site to create a cohesive visual theme. ","Refer to our guide to learn more about crafting a custom CSS theme:","CSS Theme Guide","Import Custom Components","Incorporate your own UI components, to tailor the look and functionality of your content. ","This tutorial will walk you through the process of adding custom components to your site:","Adding Custom Components Tutorial"]},{"title":"Aliases Test","route":"/mosaic/test/aliases/index","content":["This page is the alias test page."]},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Layouts","route":"/mosaic/test/layouts/index","content":["Pages for e2e testing of layouts."]},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Refs Data","route":"/mosaic/test/refs/data","content":[]},{"title":"Refs Test","route":"/mosaic/test/refs/index","content":["The sidebar priority is ",".","The other page data is ","."]},{"title":"$afterSource","route":"/mosaic/configure/plugins/lifecycle/after-source","content":["The first lifecycle event to trigger after receiving pages from a source and runs in a child process.\n","The pages can safely be mutated and will be reflected in the final filesystem that gets generated.\n","It ","must"," return a collection of pages.","The "," lifecycle event is called with:","pages - the collection of pages emitted by the source","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | A mutable object for sharing data with other lifecycle phases of all plugins for this source (including in the main thread) in this plugin |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |","Example - Log out all page routes","async function $afterSource(pages, { config, ignorePages, pageExtensions }) {\n"," for (const page of pages) {\n"," console.log(page.route);\n"," }\n"," return pages;\n","}"]},{"title":"afterUpdate","route":"/mosaic/configure/plugins/lifecycle/after-update","content":["The third lifecycle event to trigger overall and the first to trigger inside the main Mosaic process.","Calls after the filesystem and symlinks have been reconstructed due to a change to the current source pages. ","Pages will ","not"," be cached when read at this stage, to allow for reading content and writing a new copy of it without the cached version taking effect.\n","This method is safe to use with lazy loading, as the filesystem should return the full page when read.","The "," lifecycle event is called with:","mutableFilesystem - Mutable filesystem instance with all of this source's pages inside (and symlinks re-applied)","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | An immutable object for reading data from other lifecycle phases of all plugins for this source in the child process for this plugin. ","Shared only with this source. ","|\n","| globalConfig | An immutable object for reading data from other lifecycle phases of all plugins. ","Shared across all sources. ","|\n","| sharedFilesystem | Mutable filesystem instance independent of any sources. ","Useful for global pages, like sitemaps |\n","| globalFilesystem | Immutable union filesystem instance with all source's pages (and symlinks applied) |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]},{"title":"$beforeSend","route":"/mosaic/configure/plugins/lifecycle/before-send","content":["The second lifecycle event to trigger and does so after a filesystem has been built up from the source pages.","It is the last lifecycle event to run in a source child process before the filesystem is sent to the main Mosaic process and should ","not"," return a value.","The "," lifecycle event is called with:","mutableFilesystem - Mutable virtual filesystem instance with all of this source's pages inside (and symlinks applied)","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | A mutable object for sharing data with other lifecycle phases of all plugins for this source (including in the main thread) in this plugin |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]},{"title":"Lifecycle Events","route":"/mosaic/configure/plugins/lifecycle/index","content":["Plugin lifecycle","The plugin lifecycle is triggered when a source emits content.","Each Mosaic source has its own worker thread and plugin lifecycle events that start with a "," will execute inside the worker thread.\n","All other lifecycle events will execute in the main Mosaic process.","The 5 lifecycle events are:","$afterSource","$beforeSend","afterUpdate","shouldClearCache","shouldUpdateNamespaceSources","Plugin methods that trigger inside the main thread should be asynchronous and highly optimised to\n","avoid holding up the main thread."]},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/lifecycle/should-clear-cache","content":["The fourth lifecycle event to trigger overall and the second to trigger inside the main Mosaic process.","It is called every time ","any"," source emits new pages and should return a boolean to indicate if ","other"," sources should clear their cache in response to the source updating.","Only sources that have already run "," will call this lifecycle hook since there is no\n","cache to clear if they haven't reached that stage in the lifecycle.","The "," lifecycle event is called with:","updatedSourceFilesystem - Immutable filesystem for the source that changed i.e, not the source filesystem","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | An immutable object for reading data from other lifecycle phases of all plugins for this source in the child process for this plugin. ","Shared only with this source. ","|\n","| globalFilesystem | Immutable union filesystem instance with all source's pages (and symlinks applied) |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]},{"title":"shouldUpdateNamespaceSources","route":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources","content":["The fifth lifecycle event to trigger overall and the third to trigger inside the main Mosaic process.","It is called every time ","any"," source emits new pages and should return a boolean to indicate if ","other sources that share the same ","source namespace"," should re-run ",".","The "," lifecycle event is called with:","updatedSourceFilesystem - Immutable filesystem for the source that changed i.e, not the source filesystem","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | An immutable object for reading data from other lifecycle phases of all plugins for this source in the child process for this plugin. ","Shared only with this source. ","|\n","| globalFilesystem | Immutable union filesystem instance with all source's pages (and symlinks applied) |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]}] \ No newline at end of file diff --git a/packages/site/snapshots/latest/sitemap.xml b/packages/site/snapshots/latest/sitemap.xml deleted file mode 100644 index 1f4df5ee6..000000000 --- a/packages/site/snapshots/latest/sitemap.xml +++ /dev/null @@ -1,383 +0,0 @@ - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/aliases - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/fragments - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/frontmatter - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/markdown-syntax - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/page-templates - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/refs - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/ui-components - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/content-fragment - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/tile-a - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/tile-b - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/getting-started/create-a-site - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/getting-started/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/getting-started/publish-site-to-aws - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/publish/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/publish/publish-site-to-aws - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/publish/publish-site-to-vercel - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/admin/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/detail-highlight - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/detail-overview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/detail-technical - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/landing - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/product-discover - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/product-preview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/active - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/snapshot-file - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/snapshot-s3 - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/alias-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/breadcrumbs-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/broken-links-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/codemod-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lazy-page-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/pages-wthout-extensions-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/public-assets-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/reading-time-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/ref-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/search-index-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/shared-config-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/sidebar-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/site-map-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/tag-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/toc-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/git-repo-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/http-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/local-folder-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/schedules - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/theme/custom-components - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/theme/custom-css - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/theme/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/aliases/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/detail-highlight - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/detail-overview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/detail-technical - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/edit - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/full-width - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/landing - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/newsletter - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/product-discover - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/product-preview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/refs/data - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/refs/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/after-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/after-update - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/before-send - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/should-clear-cache - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/should-update-namespace-sources - weekly - 0.5 - - - \ No newline at end of file diff --git a/packages/types/src/Mode.ts b/packages/types/src/Mode.ts deleted file mode 100644 index f2bae09d9..000000000 --- a/packages/types/src/Mode.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Mosaic mode dictates how content is loaded - * - * `active` - * In this mode, content is pulled from configured data sources and updates in real-time. - * After content is updated, Mosaic plugins create an enhanced, in-memory file object, representing the content - * - * `snapshot-file` - * In this mode, previously created snapshot files are loaded from a local directory. - * - * `snapshot-s3` - * In this mode, previously created snapshot files are loaded from an S3 bucket. - * - * (A snapshot is an immutable/persisted copy of `active` content, created separately) - */ -export type MosaicMode = 'active' | 'snapshot-file' | 'snapshot-s3'; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 40829ed1a..3f1ec53db 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -17,7 +17,6 @@ export * from './Serialiser.js'; export * from './Source.js'; export * from './Volume.js'; export * from './WorkerData.js'; -export * from './Mode.js'; export * from './Session.js'; export { diff --git a/yarn.lock b/yarn.lock index 195e042a6..7a7fde223 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26,952 +26,6 @@ js-yaml "^4.1.0" lodash.clonedeep "^4.5.0" -"@aws-crypto/crc32@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" - integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== - dependencies: - "@aws-crypto/util" "^3.0.0" - "@aws-sdk/types" "^3.222.0" - tslib "^1.11.1" - -"@aws-crypto/crc32c@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" - integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== - dependencies: - "@aws-crypto/util" "^3.0.0" - "@aws-sdk/types" "^3.222.0" - tslib "^1.11.1" - -"@aws-crypto/ie11-detection@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" - integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== - dependencies: - tslib "^1.11.1" - -"@aws-crypto/sha1-browser@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" - integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== - dependencies: - "@aws-crypto/ie11-detection" "^3.0.0" - "@aws-crypto/supports-web-crypto" "^3.0.0" - "@aws-crypto/util" "^3.0.0" - "@aws-sdk/types" "^3.222.0" - "@aws-sdk/util-locate-window" "^3.0.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-browser@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" - integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== - dependencies: - "@aws-crypto/ie11-detection" "^3.0.0" - "@aws-crypto/sha256-js" "^3.0.0" - "@aws-crypto/supports-web-crypto" "^3.0.0" - "@aws-crypto/util" "^3.0.0" - "@aws-sdk/types" "^3.222.0" - "@aws-sdk/util-locate-window" "^3.0.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" - integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== - dependencies: - "@aws-crypto/util" "^3.0.0" - "@aws-sdk/types" "^3.222.0" - tslib "^1.11.1" - -"@aws-crypto/supports-web-crypto@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" - integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== - dependencies: - tslib "^1.11.1" - -"@aws-crypto/util@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" - integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== - dependencies: - "@aws-sdk/types" "^3.222.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - tslib "^1.11.1" - -"@aws-sdk/abort-controller@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.357.0.tgz#5c5336d18b97781d0b940700375d825f9e20d9be" - integrity sha512-nQYDJon87quPwt2JZJwUN2GFKJnvE5kWb6tZP4xb5biSGUKBqDQo06oYed7yokatCuCMouIXV462aN0fWODtOw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/chunked-blob-reader@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.310.0.tgz#2ada1b024a2745c2fe7e869606fab781325f981e" - integrity sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/client-s3@^3.359.0": - version "3.359.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.359.0.tgz#af7c04b2749ed0095f5de4680c9b69852b30d3e2" - integrity sha512-Z/RRzM1o1uX0zs0ieBdaEIn9X5Jwl6Bk/fnTPmuWDHmgJUjv7OQ9Oa7BV4azBAW6JNQ6XW1SdJrrfsOdblJ8QA== - dependencies: - "@aws-crypto/sha1-browser" "3.0.0" - "@aws-crypto/sha256-browser" "3.0.0" - "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.359.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/credential-provider-node" "3.358.0" - "@aws-sdk/eventstream-serde-browser" "3.357.0" - "@aws-sdk/eventstream-serde-config-resolver" "3.357.0" - "@aws-sdk/eventstream-serde-node" "3.357.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-blob-browser" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/hash-stream-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/md5-js" "3.357.0" - "@aws-sdk/middleware-bucket-endpoint" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-expect-continue" "3.357.0" - "@aws-sdk/middleware-flexible-checksums" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-location-constraint" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-sdk-s3" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-signing" "3.357.0" - "@aws-sdk/middleware-ssec" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/signature-v4-multi-region" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-stream" "3.358.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@aws-sdk/util-waiter" "3.357.0" - "@aws-sdk/xml-builder" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" - fast-xml-parser "4.2.5" - tslib "^2.5.0" - -"@aws-sdk/client-sso-oidc@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.358.0.tgz#0b55c9fe1428419fdddc79653479d5448068d508" - integrity sha512-Gy09fSlhJdGbr8rNNR8EdLaUynB1B34nw8kN1aFT4CdAnjFKxTainqG6Aq4vx64TbMDMhvMYWpNAluvq7UHVhw== - dependencies: - "@aws-crypto/sha256-browser" "3.0.0" - "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" - tslib "^2.5.0" - -"@aws-sdk/client-sso@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.358.0.tgz#5471a3176bf4caf0a1dbdeb2d9ab88417f16426c" - integrity sha512-Kc9IsoPIHJfkjDuStyItwQAOpnxw/I9xfF3vvukeN9vkXcRiWeMDhEXACN4L1AYFlU9FHQSRdNwpYTIz7OrD2A== - dependencies: - "@aws-crypto/sha256-browser" "3.0.0" - "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" - tslib "^2.5.0" - -"@aws-sdk/client-sts@3.359.0": - version "3.359.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.359.0.tgz#a216e9f1950c8ff82b4604800c3dd47b4d8ceea5" - integrity sha512-zpyui8hXvEUvq8MwzZsm51ni0intvPjtV8dgx10nVJnm605nqrLlAMGqQ1S/UxO7CVmhqWbh5dnGHEc//UJlsw== - dependencies: - "@aws-crypto/sha256-browser" "3.0.0" - "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/credential-provider-node" "3.358.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-sdk-sts" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-signing" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" - fast-xml-parser "4.2.5" - tslib "^2.5.0" - -"@aws-sdk/config-resolver@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.357.0.tgz#7672b3f446ed64025d1763efea0289f7f49833a1" - integrity sha512-cukfg0nX7Tzx/xFyH5F4Eyb8DA1ITCGtSQv4vnEjgUop+bkzckuGLKEeBcBhyZY+aw+2C9CVwIHwIMhRm0ul5w== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-config-provider" "3.310.0" - "@aws-sdk/util-middleware" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-env@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.357.0.tgz#9746b9f958f490db5b1502d36cba7da43da460cb" - integrity sha512-UOecwfqvXgJVqhfWSZ2S44v2Nq2oceW0PQVQp0JAa9opc2rxSVIfyOhPr0yMoPmpyNcP22rgeg6ce70KULYwiA== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-imds@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.357.0.tgz#6b5317c79e15a059a2f71623ec673bea03af04f6" - integrity sha512-upw/bfsl7/WydT6gM0lBuR4Ipp4fzYm/E3ObFr0Mg5OkgVPt5ZJE+eeFTvwCpDdBSTKs4JfrK6/iEK8A23Q1jQ== - dependencies: - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-ini@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.358.0.tgz#2078b73cc5678a14fdff914b12b89d6d0f476aa0" - integrity sha512-Blmw4bhGxpaYvPmrbRKAltqnNDDSf6ZegNqJasc5OWvAlHJNvB/hYPmyQN0oFy79BXn7PbBip1QaLWaEhJvpAA== - dependencies: - "@aws-sdk/credential-provider-env" "3.357.0" - "@aws-sdk/credential-provider-imds" "3.357.0" - "@aws-sdk/credential-provider-process" "3.357.0" - "@aws-sdk/credential-provider-sso" "3.358.0" - "@aws-sdk/credential-provider-web-identity" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-node@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.358.0.tgz#ff7bbc29cadd9350f9681c6635076156b420242d" - integrity sha512-iLjyRNOT0ycdLqkzXNW+V2zibVljkLjL8j45FpK6mNrAwc/Ynr7EYuRRp5OuRiiYDO3ZoneAxpBJQ5SqmK2Jfg== - dependencies: - "@aws-sdk/credential-provider-env" "3.357.0" - "@aws-sdk/credential-provider-imds" "3.357.0" - "@aws-sdk/credential-provider-ini" "3.358.0" - "@aws-sdk/credential-provider-process" "3.357.0" - "@aws-sdk/credential-provider-sso" "3.358.0" - "@aws-sdk/credential-provider-web-identity" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-process@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.357.0.tgz#5e661bd4431a171ee862bb60ff0054d11dea150a" - integrity sha512-qFWWilFPsc2hR7O0KIhwcE78w+pVIK+uQR6MQMfdRyxUndgiuCorJwVjedc3yZtmnoELHF34j+m8whTBXv9E7Q== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-sso@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.358.0.tgz#4598ad2fc5aa34b6467bbdf35a12566b4ce02439" - integrity sha512-hKu5NshKohSDoHaXKyeCW88J8dBt4TMljrL+WswTMifuThO9ptyMq4PCdl4z7CNjIq6zo3ftc/uNf8TY7Ga8+w== - dependencies: - "@aws-sdk/client-sso" "3.358.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/token-providers" "3.358.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-web-identity@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.357.0.tgz#32765fc53779d84c078d20e4e1585b8fedfcf61f" - integrity sha512-0KRRAFrXy5HJe2vqnCWCoCS+fQw7IoIj3KQsuURJMW4F+ifisxCgEsh3brJ2LQlN4ElWTRJhlrDHNZ/pd61D4w== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-codec@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.357.0.tgz#32b6f0d97f3ea6e479e0d59c0a9b625faf3f887b" - integrity sha512-bqenTHG6GH6aCk/Il+ooWXVVAZuc8lOgVEy9bE2hI49oVqT8zSuXxQB+w1WWyZoAOPcelsjayB1wfPub8VDBxQ== - dependencies: - "@aws-crypto/crc32" "3.0.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-hex-encoding" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-browser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.357.0.tgz#fc2074bb7a9d8a358b9e0fb601924094af33c133" - integrity sha512-hBabtmwuspVHGSKnUccDiSIbg+IVoBThx6wYt6i4edbWAITHF3ADVKXy7icV400CAyG0XTZgxjE6FKpiDxj9rQ== - dependencies: - "@aws-sdk/eventstream-serde-universal" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-config-resolver@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.357.0.tgz#d5db248a17fb22bc95d3088b7d840a065f015251" - integrity sha512-E6rwk+1KFXhKmJ+v7JW5Uyyda1yN5XRVupCnCrtFsHFmhVGQxFacoUZIee3bfuCpC58dLSyESggxGpUd3XOSsw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.357.0.tgz#4fc79eea9eb85c173f44ad8e37550231e81cf144" - integrity sha512-boXDy+JWcPfHc9OIKV6I4Bh2XrLcg+eac+/LldNZFcDIB33/gHIM2CJw8u565Iebdz1NKEkP/QPPZbk2y+abPA== - dependencies: - "@aws-sdk/eventstream-serde-universal" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-universal@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.357.0.tgz#b83fb0bbc9623eb3e5a698cb3bfd1b8c502fd351" - integrity sha512-9/Wcdxx38XQAturqOAGYNCaLOzFVnW+xwxd4af9eNOfZfZ5PP5PRKBIpvKDsN26e3l4f3GodHx7MS1WB7BBc2w== - dependencies: - "@aws-sdk/eventstream-codec" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/fetch-http-handler@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.357.0.tgz#8b33b8cefe036fd932b694242893ef3db1a74f02" - integrity sha512-5sPloTO8y8fAnS/6/Sfp/aVoL9zuhzkLdWBORNzMazdynVNEzWKWCPZ27RQpgkaCDHiXjqUY4kfuFXAGkvFfDQ== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/querystring-builder" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/hash-blob-browser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.357.0.tgz#e507929499fe0fe128664b67cd26f63f16ed4d25" - integrity sha512-RDd6UgrGHDmleTnXM9LRSSVa69euSAG2mlNhZMEDWk3OFseXVYqBDaqroVbQ01rM2UAe8MeBFchlV9OmxuVgvw== - dependencies: - "@aws-sdk/chunked-blob-reader" "3.310.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/hash-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.357.0.tgz#70666b0d6a49191cf33ef32b235c33b242de36ce" - integrity sha512-fq3LS9AxHKb7dTZkm6iM1TrGk6XOTZz96iEZPME1+vjiSEXGWuebHt87q92n+KozVGRypn9MId3lHOPBBjygNQ== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-buffer-from" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/hash-stream-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.357.0.tgz#a78c6d1ae1c78cb52854311bad50988e8fc12142" - integrity sha512-KZjN1VAw1KHNp+xKVOWBGS+MpaYQTjZFD5f+7QQqW4TfbAkFFwIAEYIHq5Q8Gw+jVh0h61OrV/LyW3J2PVzc+w== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/invalid-dependency@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.357.0.tgz#4e86c689a6b0c4d0fe43ba335218d67e9aa652a6" - integrity sha512-HnCYZczf0VdyxMVMMxmA3QJAyyPSFbcMtZzgKbxVTWTG7GKpQe0psWZu/7O2Nk31mKg6vEUdiP1FylqLBsgMOA== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/is-array-buffer@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz#f87a79f1b858c88744f07e8d8d0a791df204017e" - integrity sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/md5-js@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.357.0.tgz#61853f562e71af0ec58aeede7883de122177ed55" - integrity sha512-to42sFAL7KgV/X9X40LLfEaNMHMGQL6/7mPMVCL/W2BZf3zw5OTl3lAaNyjXA+gO5Uo4lFEiQKAQVKNbr8b8Nw== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-bucket-endpoint@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.357.0.tgz#9d19ba4a7971c5302e32d024e477755a1f6185ff" - integrity sha512-ep2T0FJXRDl6nffLqiVZUYfDocZ3B72wvHeozckkLVRX0TK91WEpzv4Zz2vdeBp6CGkM3g8oGjbb6ZqllUZ6TA== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-arn-parser" "3.310.0" - "@aws-sdk/util-config-provider" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-content-length@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.357.0.tgz#eafad2db1816cb5d91cd1e090211f040f29bbdaa" - integrity sha512-zQOFEyzOXAgN4M54tYNWGxKxnyzY0WwYDTFzh9riJRmxN1hTEKHUKmze4nILIf5rkQmOG4kTf1qmfazjkvZAhw== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-endpoint@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.357.0.tgz#bc94bbf55339aa5220011f4ae8e03a7966ce28be" - integrity sha512-ScJi0SL8X/Lyi0Fp5blg0QN/Z6PoRwV/ZJXd8dQkXSznkbSvJHfqPP0xk/w3GcQ1TKsu5YEPfeYy8ejcq+7Pgg== - dependencies: - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-middleware" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-expect-continue@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.357.0.tgz#c392c4f31300695158070223f1e337c7503aca92" - integrity sha512-KeizuiiDmdLeAbiNsJt/rZENY5iJo4wCTl7h81htDC60wSwVwFG03IdgvZlFH6jktYRh4mUDD/6Oljme6yPNxw== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-flexible-checksums@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.357.0.tgz#957a383dc66942e63493d2ba182ee775e8139507" - integrity sha512-NNQ/iPN6YyzqgVaV8AeYQMZ8y1OmUW27vmt0R66UUw5H5THGc6X9QXoKfie7OHn80Qv1S8P5jw8z5MpvDtjSnQ== - dependencies: - "@aws-crypto/crc32" "3.0.0" - "@aws-crypto/crc32c" "3.0.0" - "@aws-sdk/is-array-buffer" "3.310.0" - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-host-header@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.357.0.tgz#9d4f803fc7d9b1f5582a62844b1d841b3c849fe0" - integrity sha512-HuGLcP7JP1qJ5wGT9GSlEknDaTSnOzHY4T6IPFuvFjAy3PvY5siQNm6+VRqdVS+n6/kzpL3JP5sAVM3aoxHT6Q== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-location-constraint@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.357.0.tgz#b147973f70c82cf06d3bafcf32b6b826203bcb69" - integrity sha512-4IsIHhwZ2/o7yjLI1XtGMkJ442cbIN5/NtI/Ml0G5UHYviUm8sqvH2vldFBMK5bPuVdk6GpqXpy6wYc9rLJj2w== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-logger@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.357.0.tgz#851a44a934ad8f33465ae4665a6c07ac967a8bbb" - integrity sha512-dncT3tr+lZ9+duZo52rASgO6AKVwRcsc2/T93gmaYVrJqI6WWAwQ7yML5s72l9ZjQ5LZ+4jjrgtlufavAS0eCg== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-recursion-detection@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.357.0.tgz#2d7a8cf43f1299c1ff1e113988bd801e7f527401" - integrity sha512-AXC54IeDS3jC1dbbkYHML4STvBPcKZ4IJTWdjEK1RCOgqXd0Ze1cE1e21wyj1tM6prF03zLyvpBd+3TS++nqfA== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-retry@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.357.0.tgz#6dfbd4ddc62c415b6b6de16d3a37ad4d69c8a10c" - integrity sha512-ZCbXCYv3nglQqwREYxxpclrnR9MYPAnHlLcC8e9PbApqxGnaZdhoywxoqbgqT3hf/RM7kput4vEHDl1fyymcRQ== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/service-error-classification" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-middleware" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - tslib "^2.5.0" - uuid "^8.3.2" - -"@aws-sdk/middleware-sdk-s3@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.357.0.tgz#3962e60183930b497599357f42f531578544eb18" - integrity sha512-EFQaPD8SoXcK7RiEOZz0zIX9owQW6txu8vrOOVva9xMts36z/3E7b4FVsgEJ53Ixa1x38ddPJxp4U8EIaf+pvQ== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-arn-parser" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-sdk-sts@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.357.0.tgz#8f9be3db8f4fd8563baf66925ee326f579b6ae4d" - integrity sha512-Ng2VjLrPiL02QOcs1qs9jG2boO4Gn+v3VIbOJLG4zXcfbSq55iIWtlmr2ljfw9vP5aLhWtcODfmKHS5Bp+019Q== - dependencies: - "@aws-sdk/middleware-signing" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-serde@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.357.0.tgz#2614031c81981580bce4bee502985e28e51dadb2" - integrity sha512-bGI4kYuuEsFjlANbyJLyy4AovETnyf/SukgLOG7Qjbua+ZGuzvRhMsk21mBKKGrnsTO4PmtieJo6xClThGAN8g== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-signing@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.357.0.tgz#9aee1ad571b092ad0bbd63e0b551ffb575220688" - integrity sha512-yB9ewEqI6Fw1OrmKFrUypbCqN5ijk06UGPochybamMuPxxkwMT3bnrm7eezsCA+TZbJyKhpffpyobwuv+xGNrA== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/signature-v4" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-middleware" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-ssec@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.357.0.tgz#c99b9b457cfaee32796110b324d2d5056c86b4df" - integrity sha512-uE3nNvJclcY7SgGoOgDCUgfc7ElXQmWVpks8AZzAjJj7bG5j6Bv3FOOYtGtvtxUzTHaOdn+yQwjssV1cZ6GTQw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-stack@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.357.0.tgz#51f181691e8c76694b6583561ba0a0a14472506c" - integrity sha512-nNV+jfwGwmbOGZujAY/U8AW3EbVlxa9DJDLz3TPp/39o6Vu5KEzHJyDDNreo2k9V/TMvV+nOzHafufgPdagv7w== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/middleware-user-agent@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.357.0.tgz#d4d27549bbcfdc03f5a8db74435a345b05b40373" - integrity sha512-M/CsAXjGblZS4rEbMb0Dn9IXbfq4EjVaTHBfvuILU/dKRppWvjnm2lRtqCZ+LIT3ATbAjA3/dY7dWsjxQWwijA== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-endpoints" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/node-config-provider@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.357.0.tgz#2e47aa36e5efae89b65c79b8c27180d3d8a2d901" - integrity sha512-kwBIzKCaW3UWqLdELhy7TcN8itNMOjbzga530nalFILMvn2IxrkdKQhNgxGBXy6QK6kCOtH6OmcrG3/oZkLwig== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/node-http-handler@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.357.0.tgz#ff4861eaad9bddcb2cc9d8fc7cb05dc8e273b0fa" - integrity sha512-uoab4xIJux+Q9hQ9A/vWEAjojtBQ0U4K7xEQVa0BXEv7MHH5zv51H+VtrelU1Ed6hsHq4Sx0bxBMFpbbWhNyjA== - dependencies: - "@aws-sdk/abort-controller" "3.357.0" - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/querystring-builder" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/property-provider@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.357.0.tgz#4c1639c2d52aefab4040c2247c126c11b19d8be9" - integrity sha512-im4W0u8WaYxG7J7ko4Xl3OEzK3Mrm1Rz6/txTGe6hTIHlyUISu1ekOQJXK6XYPqNMn8v1G3BiQREoRXUEJFbHg== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/protocol-http@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.357.0.tgz#cd47413d6c1ed2d27bc30c7e9da3b262c8804cf4" - integrity sha512-w1JHiI50VEea7duDeAspUiKJmmdIQblvRyjVMOqWA6FIQAyDVuEiPX7/MdQr0ScxhtRQxHbP0I4MFyl7ctRQvA== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/querystring-builder@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.357.0.tgz#0d4627620eba4d3cc523c2e1da88dfa561617599" - integrity sha512-aQcicqB6Y2cNaXPPwunz612a01SMiQQPsdz632F/3Lzn0ua82BJKobHOtaiTUlmVJ5Q4/EAeNfwZgL7tTUNtDQ== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-uri-escape" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/querystring-parser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.357.0.tgz#6dfeb42930b2241cda43646d7c1d16ca886c78af" - integrity sha512-Svvq+atRNP9s2VxiklcUNgCzmt3T5kfs7X2C+yjmxHvOQTPjLNaNGbfC/vhjOK7aoXw0h+lBac48r5ymx1PbQA== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/service-error-classification@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.357.0.tgz#1c6f6e436997a1886d55cfec6d4796129b789076" - integrity sha512-VuXeL4g5vKO9HjgCZlxmH8Uv1FcqUSjmbPpQkbNtYIDck6u0qzM0rG+n0/1EjyQbPSr3MhW/pkWs5nx2Nljlyg== - -"@aws-sdk/shared-ini-file-loader@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.357.0.tgz#af503df79e05bb9ee0e5d689319c9b52cefe1801" - integrity sha512-ceyqM4XxQe0Plb/oQAD2t1UOV2Iy4PFe1oAGM8dfJzYrRKu7zvMwru7/WaB3NYq+/mIY6RU+jjhRmjQ3GySVqA== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/signature-v4-multi-region@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.357.0.tgz#100c573029e2b30a65634090e55be4beb50e16a1" - integrity sha512-eyO3GibYLNCPZ/YxM/ZVDh1fTMKvIUj4fpVo0bxQTKNlqNkVumAIOVLoH5um1A9FN7nDdz+40a7jwYSPlkxW6A== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/signature-v4" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/signature-v4@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.357.0.tgz#31093e87fda10bee92b6b2784cdba9af9af89e7d" - integrity sha512-itt4/Jh9FqnzK30qIjXFBvM4J7zN4S/AAqsRMnaX7U4f/MV+1YxQHmzimpdMnsCXXs2jqFqKVRu6DewxJ3nbxg== - dependencies: - "@aws-sdk/eventstream-codec" "3.357.0" - "@aws-sdk/is-array-buffer" "3.310.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-hex-encoding" "3.310.0" - "@aws-sdk/util-middleware" "3.357.0" - "@aws-sdk/util-uri-escape" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/smithy-client@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.358.0.tgz#58353892fb832c10890bf0ebe49830af82f8eebc" - integrity sha512-oqctxWb9yAqCh4ENwUkt9MC01l5uKoy+QCiSUUhQ76k7R3lyGOge9ycyRyoKl+oZWvEpnjZevXQFqEfGzkL7bA== - dependencies: - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-stream" "3.358.0" - "@smithy/types" "^1.0.0" - tslib "^2.5.0" - -"@aws-sdk/token-providers@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.358.0.tgz#a4ade4f1edb67307011414df19abb4677a138395" - integrity sha512-vATKNCwNhCSo2LzvtkIzW9Yp2/aKNR032VPtIWlDtWGGFhkzGi4FPS0VTdfefxz4rqPWfBz53mh54d9xylsWVw== - dependencies: - "@aws-sdk/client-sso-oidc" "3.358.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/types@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.357.0.tgz#8491da71a4291cc2661c26a75089e86532b6a3b5" - integrity sha512-/riCRaXg3p71BeWnShrai0y0QTdXcouPSM0Cn1olZbzTf7s71aLEewrc96qFrL70XhY4XvnxMpqQh+r43XIL3g== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/types@^3.222.0": - version "3.254.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.254.0.tgz#760b4a876efa2edcec191dd8b18b989fa717a42e" - integrity sha512-xDEDk6ZAGFO0URPgB6R2mvQANYlojHLjLC9zzOzl07F+uqYS30yZDIg4UFcqPt/x48v7mxlKZpbaZgYI2ZLgGA== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/url-parser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.357.0.tgz#1b197f252d008e201d1e301c8024bed770ef0b2c" - integrity sha512-fAaU6cFsaAba01lCRsRJiYR/LfXvX2wudyEyutBVglE4dWSoSeu3QJNxImIzTBULfbiFhz59++NQ1JUVx88IVg== - dependencies: - "@aws-sdk/querystring-parser" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/util-arn-parser@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba" - integrity sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-base64@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz#d0fd49aff358c5a6e771d0001c63b1f97acbe34c" - integrity sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg== - dependencies: - "@aws-sdk/util-buffer-from" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-body-length-browser@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz#3fca9d2f73c058edf1907e4a1d99a392fdd23eca" - integrity sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-body-length-node@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz#4846ae72834ab0636f29f89fc1878520f6543fed" - integrity sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-buffer-from@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz#7a72cb965984d3c6a7e256ae6cf1621f52e54a57" - integrity sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw== - dependencies: - "@aws-sdk/is-array-buffer" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-config-provider@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz#ff21f73d4774cfd7bd16ae56f905828600dda95f" - integrity sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-defaults-mode-browser@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.358.0.tgz#c80f4b87aaf657ccf40ff39913dd1b06087eae9f" - integrity sha512-KGfw64wRL/gROLD4Gatda8cUsaNKNhSnx+yDDcG2WkFlFfLr6FHvTijpRxvIM2Jau2ZhcdGzbegLjsFxviTJAA== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - bowser "^2.11.0" - tslib "^2.5.0" - -"@aws-sdk/util-defaults-mode-node@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.358.0.tgz#bcbfcc2c38dcf0e29519de93a6cad7b8360be820" - integrity sha512-2C5on0yppDS0xGpFkHRqfrG9TeTq6ive1hPX1V8UCkiI/TBQYl88XCKCKct8zTcejyK9klZUDGI8QQTan2UWkw== - dependencies: - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/credential-provider-imds" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/util-endpoints@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.357.0.tgz#eaa7b4481bbd9fc8f13412b308ba4129d8fa2004" - integrity sha512-XHKyS5JClT9su9hDif715jpZiWHQF9gKZXER8tW0gOizU3R9cyWc9EsJ2BRhFNhi7nt/JF/CLUEc5qDx3ETbUw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/util-hex-encoding@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz#19294c78986c90ae33f04491487863dc1d33bd87" - integrity sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-locate-window@^3.0.0": - version "3.208.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz#0f598fc238a1256e4bcb64d01459f03a922dd4c3" - integrity sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-middleware@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.357.0.tgz#1ba478dde5df4e53b231ec6651b8d44c9187f66d" - integrity sha512-pV1krjZs7BdahZBfsCJMatE8kcor7GFsBOWrQgQDm9T0We5b5xPpOO2vxAD0RytBpY8Ky2ELs/+qXMv7l5fWIA== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-retry@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.357.0.tgz#25e12e2882b2bbc5a6531c1d9344cb0c93103b3b" - integrity sha512-SUqYJE9msbuOVq+vnUy+t0LH7XuYNFz66dSF8q6tedsbJK4j8tgya0I1Ct3m06ynGrXDJMaj39I7AXCyW9bjtw== - dependencies: - "@aws-sdk/service-error-classification" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/util-stream@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream/-/util-stream-3.358.0.tgz#5daf9072f4a4535664de6d0bdbe26470eb856595" - integrity sha512-zUhpjxAXV2+0eALlTU6uXRYMs10XYpcYzl3NtLRe4wWgnrOOOZnF/t5LQDoKXOfaMdzwZ+i90+PYr+6JQ58+7g== - dependencies: - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-buffer-from" "3.310.0" - "@aws-sdk/util-hex-encoding" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-uri-escape@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz#9f942f09a715d8278875013a416295746b6085ba" - integrity sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-user-agent-browser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.357.0.tgz#21c3e6c1a3d610dd279952d3ce00909775019be5" - integrity sha512-JHaWlNIUkPNvXkqeDOrqFzAlAgdwZK5mZw7FQnCRvf8tdSogpGZSkuyb9Z6rLD9gC40Srbc2nepO1cFpeMsDkA== - dependencies: - "@aws-sdk/types" "3.357.0" - bowser "^2.11.0" - tslib "^2.5.0" - -"@aws-sdk/util-user-agent-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.357.0.tgz#a656cebce558b602e753e45a3b8174dc7c0f1fcf" - integrity sha512-RdpQoaJWQvcS99TVgSbT451iGrlH4qpWUWFA9U1IRhxOSsmC1hz8ME7xc8nci9SREx/ZlfT3ai6LpoAzAtIEMA== - dependencies: - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/util-utf8-browser@^3.0.0": - version "3.188.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz#484762bd600401350e148277731d6744a4a92225" - integrity sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-utf8@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz#4a7b9dcebb88e830d3811aeb21e9a6df4273afb4" - integrity sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA== - dependencies: - "@aws-sdk/util-buffer-from" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-waiter@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.357.0.tgz#31fdaf289ed60a633178b39e3b258f9b42a1cbe3" - integrity sha512-jQQGA5G8bm0JP5C4U85VzMpkFHdeeT7fOSUncXLG9Sh8Ambzi4XTud8m5/dA7aNJkvPwZeIF9QdgWCOzpkp1xA== - dependencies: - "@aws-sdk/abort-controller" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/xml-builder@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz#f0236f2103b438d16117e0939a6305ad69b7ff76" - integrity sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw== - dependencies: - tslib "^2.5.0" - "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -2875,21 +1929,6 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@smithy/protocol-http@^1.0.1": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.0.tgz#caf22e01cb825d7490a4915e03d6fa64954ff535" - integrity sha512-H5y/kZOqfJSqRkwtcAoVbqONmhdXwSgYNJ1Glk5Ry8qlhVVy5qUzD9EklaCH8/XLnoCsLO/F/Giee8MIvaBRkg== - dependencies: - "@smithy/types" "^1.1.0" - tslib "^2.5.0" - -"@smithy/types@^1.0.0", "@smithy/types@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.0.tgz#f30a23202c97634cca5c1ac955a9bf149c955226" - integrity sha512-KzmvisMmuwD2jZXuC9e65JrgsZM97y5NpDU7g347oB+Q+xQLU6hQZ5zFNNbEfwwOJHoOvEVTna+dk1h/lW7alw== - dependencies: - tslib "^2.5.0" - "@swagger-api/apidom-ast@^0.70.0": version "0.70.0" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ast/-/apidom-ast-0.70.0.tgz#8665af62ab8b6b02c7851429d2fe15dc4780e188" @@ -4507,11 +3546,6 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -bowser@^2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -6657,13 +5691,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-xml-parser@4.2.5: - version "4.2.5" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" - integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== - dependencies: - strnum "^1.0.5" - fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -12164,11 +11191,6 @@ strip-json-comments@~2.0.1: resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strnum@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" - integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== - style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -12512,12 +11534,12 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== @@ -12532,11 +11554,6 @@ tslib@^2.4.1: resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" integrity sha1-spWFRoTb2hZOGB0lmiLNd53Ne8M= -tslib@^2.5.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" - integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" From debafac99b5d8a66e36280d99fb83da194c8950e Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 11 Jul 2023 22:33:43 +0100 Subject: [PATCH 29/36] remove `transpilePackages` from `next.config.ts` --- packages/site/next.config.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/site/next.config.js b/packages/site/next.config.js index c447b0376..b726deb3a 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -8,14 +8,6 @@ const nextConfig = { reactStrictMode: true, output: process.env.GENERATE_STATIC_PARAMS_URL ? 'export' : 'standalone', swcMinify: true, - transpilePackages: [ - '@jpmorganchase/mosaic-components', - '@jpmorganchase/mosaic-content-editor-plugin', - '@jpmorganchase/mosaic-layouts', - '@jpmorganchase/mosaic-site-components', - '@jpmorganchase/mosaic-theme', - '@jpmorganchase/mosaic-store' - ], images: { domains: [ /** Insert the domains where you will load images from */ From 57323d4678c6e186c26413089584dc259e0b0617 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 16 Jul 2023 17:26:32 +0100 Subject: [PATCH 30/36] update Next to 13.4.10 --- packages/layouts/package.json | 2 +- packages/site-components/package.json | 2 +- packages/site/package.json | 2 +- yarn.lock | 124 +++++++++++++------------- 4 files changed, 65 insertions(+), 65 deletions(-) diff --git a/packages/layouts/package.json b/packages/layouts/package.json index b69b27460..ee3bcec09 100644 --- a/packages/layouts/package.json +++ b/packages/layouts/package.json @@ -47,7 +47,7 @@ "@vanilla-extract/sprinkles": "^1.3.0", "clsx": "^2.0.0", "lodash": "^4.17.21", - "next": "^13.4.9", + "next": "^13.4.10", "react-transition-group": "^4.4.5" }, "peerDependencies": { diff --git a/packages/site-components/package.json b/packages/site-components/package.json index 3e5a671f5..4bcc77e92 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -59,7 +59,7 @@ "https-proxy-agent": "^5.0.1", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", - "next": "^13.4.9", + "next": "^13.4.10", "next-mdx-remote": "^4.4.1", "node-cookie": "^2.1.2", "react-error-boundary": "^4.0.11", diff --git a/packages/site/package.json b/packages/site/package.json index 77d2e4d37..2572210cf 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -45,7 +45,7 @@ "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", "@philpl/buble": "^0.19.7", "@types/react": "^18.0.26", - "next": "^13.4.9", + "next": "^13.4.10", "next-auth": "^4.22.1", "remark-gfm": "3.0.1", "rehype-slug": "^5.0.1" diff --git a/yarn.lock b/yarn.lock index 7a7fde223..008630157 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1710,10 +1710,10 @@ strict-event-emitter "^0.2.4" web-encoding "^1.1.5" -"@next/env@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/env/-/env-13.4.9.tgz#b77759514dd56bfa9791770755a2482f4d6ca93e" - integrity sha1-t3dZUU3Va/qXkXcHVaJIL01sqT4= +"@next/env@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/env/-/env-13.4.10.tgz#8b17783d2c09be126bbde9ff1164566517131bff" + integrity sha1-ixd4PSwJvhJrven/EWRWZRcTG/8= "@next/eslint-plugin-next@12.3.1": version "12.3.1" @@ -1736,50 +1736,50 @@ dependencies: source-map "^0.7.0" -"@next/swc-darwin-arm64@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.9.tgz#0ed408d444bbc6b0a20f3506a9b4222684585677" - integrity sha1-DtQI1ES7xrCiDzUGqbQiJoRYVnc= - -"@next/swc-darwin-x64@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.9.tgz#a08fccdee68201522fe6618ec81f832084b222f8" - integrity sha1-oI/M3uaCAVIv5mGOyB+DIISyIvg= - -"@next/swc-linux-arm64-gnu@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.9.tgz#1798c2341bb841e96521433eed00892fb24abbd1" - integrity sha1-F5jCNBu4QellIUM+7QCJL7JKu9E= - -"@next/swc-linux-arm64-musl@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.9.tgz#cee04c51610eddd3638ce2499205083656531ea0" - integrity sha1-zuBMUWEO3dNjjOJJkgUINlZTHqA= - -"@next/swc-linux-x64-gnu@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.9.tgz#1932d0367916adbc6844b244cda1d4182bd11f7a" - integrity sha1-GTLQNnkWrbxoRLJEzaHUGCvRH3o= - -"@next/swc-linux-x64-musl@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.9.tgz#a66aa8c1383b16299b72482f6360facd5cde3c7a" - integrity sha1-pmqowTg7FimbckgvY2D6zVzePHo= - -"@next/swc-win32-arm64-msvc@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.9.tgz#39482ee856c867177a612a30b6861c75e0736a4a" - integrity sha1-OUgu6FbIZxd6YSowtoYcdeBzako= - -"@next/swc-win32-ia32-msvc@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.9.tgz#29db85e34b597ade1a918235d16a760a9213c190" - integrity sha1-KduF40tZet4akYI10Wp2CpITwZA= - -"@next/swc-win32-x64-msvc@13.4.9": - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.9.tgz#0c2758164cccd61bc5a1c6cd8284fe66173e4a2b" - integrity sha1-DCdYFkzM1hvFocbNgoT+Zhc+Sis= +"@next/swc-darwin-arm64@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.10.tgz#962ac55559970d1725163ff9d62d008bc1c33503" + integrity sha1-lirFVVmXDRclFj/51i0Ai8HDNQM= + +"@next/swc-darwin-x64@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.10.tgz#90c01fdce5101953df0039eef48e4074055cc5aa" + integrity sha1-kMAf3OUQGVPfADnu9I5AdAVcxao= + +"@next/swc-linux-arm64-gnu@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.10.tgz#8fc25052c345ffc8f6c51f61d1bb6c359b80ab2b" + integrity sha1-j8JQUsNF/8j2xR9h0btsNZuAqys= + +"@next/swc-linux-arm64-musl@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.10.tgz#25e6b0dbb87c89c44c3e3680227172862bc7072c" + integrity sha1-Jeaw27h8icRMPjaAInFyhivHByw= + +"@next/swc-linux-x64-gnu@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.10.tgz#24fa8070ea0855c0aa020832ce7d1b84d3413fc1" + integrity sha1-JPqAcOoIVcCqAggyzn0bhNNBP8E= + +"@next/swc-linux-x64-musl@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.10.tgz#ae55914d50589a4f8b91c8eeebdd713f0c1b1675" + integrity sha1-rlWRTVBYmk+Lkcju691xPwwbFnU= + +"@next/swc-win32-arm64-msvc@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.10.tgz#ab3098b2305f3c0e46dfb2e318a9988bff884047" + integrity sha1-qzCYsjBfPA5G37LjGKmYi/+IQEc= + +"@next/swc-win32-ia32-msvc@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.10.tgz#a1c5980538641ca656012c00d05b08882cf0ec9f" + integrity sha1-ocWYBThkHKZWASwA0FsIiCzw7J8= + +"@next/swc-win32-x64-msvc@13.4.10": + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.10.tgz#44dd9eea943ed14a1012edd5011b8e905f5e6fc4" + integrity sha1-RN2e6pQ+0UoQEu3VARuOkF9eb8Q= "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -8898,12 +8898,12 @@ next-router-mock@^0.9.2: resolved "https://registry.yarnpkg.com/next-router-mock/-/next-router-mock-0.9.2.tgz#750341ea0bab9fa04257fb38a85bbe5c25dc19e5" integrity sha512-rh6Mq1xhZ4Y0y9Z3seHZ04k4dAKnAyRcis7q3ZUF+Xp0uBeNqPC8Ydw5DldYncN3o1sYBqRyz25F/v/kfcg0/Q== -next@^13.4.9: - version "13.4.9" - resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/next/-/next-13.4.9.tgz#473de5997cb4c5d7a4fb195f566952a1cbffbeba" - integrity sha1-Rz3lmXy0xdek+xlfVmlSocv/vro= +next@^13.4.10: + version "13.4.10" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/next/-/next-13.4.10.tgz#a5b50696759c61663d5a1dd726995fa0576a382e" + integrity sha1-pbUGlnWcYWY9Wh3XJplfoFdqOC4= dependencies: - "@next/env" "13.4.9" + "@next/env" "13.4.10" "@swc/helpers" "0.5.1" busboy "1.6.0" caniuse-lite "^1.0.30001406" @@ -8912,15 +8912,15 @@ next@^13.4.9: watchpack "2.4.0" zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.4.9" - "@next/swc-darwin-x64" "13.4.9" - "@next/swc-linux-arm64-gnu" "13.4.9" - "@next/swc-linux-arm64-musl" "13.4.9" - "@next/swc-linux-x64-gnu" "13.4.9" - "@next/swc-linux-x64-musl" "13.4.9" - "@next/swc-win32-arm64-msvc" "13.4.9" - "@next/swc-win32-ia32-msvc" "13.4.9" - "@next/swc-win32-x64-msvc" "13.4.9" + "@next/swc-darwin-arm64" "13.4.10" + "@next/swc-darwin-x64" "13.4.10" + "@next/swc-linux-arm64-gnu" "13.4.10" + "@next/swc-linux-arm64-musl" "13.4.10" + "@next/swc-linux-x64-gnu" "13.4.10" + "@next/swc-linux-x64-musl" "13.4.10" + "@next/swc-win32-arm64-msvc" "13.4.10" + "@next/swc-win32-ia32-msvc" "13.4.10" + "@next/swc-win32-x64-msvc" "13.4.10" nice-try@^1.0.4: version "1.0.5" From 91cf27e40536c1541b4e55d4396636aca3accb69 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:28:10 +0100 Subject: [PATCH 31/36] rebase on beta.39 --- packages/icons/package.json | 4 ++-- packages/mdx-components-client/package.json | 8 ++++---- packages/mdx-components-server/package.json | 4 ++-- packages/site-mdx-loader/package.json | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/icons/package.json b/packages/icons/package.json index 500c5704d..a2a0a03bd 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-icons", "description": "Mosaic - Icons", - "version": "0.1.0-beta.38", + "version": "0.1.0-beta.39", "author": "", "license": "Apache-2.0", "repository": { @@ -41,7 +41,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.39", "@salt-ds/core": "^1.8.0-rc.0" }, "peerDependencies": { diff --git a/packages/mdx-components-client/package.json b/packages/mdx-components-client/package.json index a9086e8cc..321c0fdec 100644 --- a/packages/mdx-components-client/package.json +++ b/packages/mdx-components-client/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-client", "description": "Mosaic - Markdown Components", - "version": "0.1.0-beta.38", + "version": "0.1.0-beta.39", "author": "", "license": "Apache-2.0", "repository": { @@ -40,9 +40,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-components": "^0.1.0-beta.38", - "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.38", - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-components": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.39", "clsx": "^1.2.1", "hoist-non-react-statics": "^3.3.2", "prism-react-renderer": "^1.1.1", diff --git a/packages/mdx-components-server/package.json b/packages/mdx-components-server/package.json index 9dffe0905..6b5ac550a 100644 --- a/packages/mdx-components-server/package.json +++ b/packages/mdx-components-server/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-server", "description": "Mosaic - MDX Components", - "version": "0.1.0-beta.38", + "version": "0.1.0-beta.39", "author": "", "license": "Apache-2.0", "repository": { @@ -40,7 +40,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.39", "@mdx-js/mdx": "^2.3.0" }, "peerDependencies": { diff --git a/packages/site-mdx-loader/package.json b/packages/site-mdx-loader/package.json index 98548eec9..da63ce962 100644 --- a/packages/site-mdx-loader/package.json +++ b/packages/site-mdx-loader/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-site-mdx-loader", "description": "Mosaic - MDX Site Loader", - "version": "0.1.0-beta.38", + "version": "0.1.0-beta.39", "author": "", "license": "Apache-2.0", "repository": { @@ -29,7 +29,7 @@ "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { - "@jpmorganchase/mosaic-types": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-types": "^0.1.0-beta.39", "del-cli": "^4.0.1", "esbuild": "0.17.19", "esbuild-node-externals": "^1.7.0", @@ -37,9 +37,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.38", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.38", - "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.38", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.39", "@types/node": "^18.15.3", "deepmerge": "^4.2.2", "gray-matter": "^4.0.3", From 5f00ef060d74b3cb791568046d9d383affbd9f0f Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:48:28 +0100 Subject: [PATCH 32/36] generate static pages for site for creating a build --- packages/site/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/site/package.json b/packages/site/package.json index 2572210cf..61c1084e0 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -14,7 +14,7 @@ "style": "dist/index.css", "scripts": { "clean": "rm -fr public/.tmp .next", - "build": "next build", + "build": "yarn mosaic export:static && next build", "export:static": "yarn mosaic export:static", "build:static": "yarn cross-env GENERATE_STATIC_PARAMS_URL=\"http://localhost:8080/search-data-condensed.json\" concurrently --kill-others \"next build\"", "dev": "next dev", From 2a71440e2f277ade9221155a4c1cd728ef6f7f54 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 23 Jul 2023 17:36:18 +0100 Subject: [PATCH 33/36] ensure static sites 404 pages are served when file not found --- packages/cli/src/serveStatic.ts | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/serveStatic.ts b/packages/cli/src/serveStatic.ts index 5d4fb7cd3..54ec96e7e 100644 --- a/packages/cli/src/serveStatic.ts +++ b/packages/cli/src/serveStatic.ts @@ -1,10 +1,31 @@ #!/usr/bin/env node +import fs from 'node:fs'; import path from 'node:path'; import express from 'express'; export default function serveStatic(staticPath, rootURL = 'mosaic/index.html', port = 3000) { + function loadPage(res, fullPath) { + const extension = path.extname(fullPath) || 'html'; + if (extension !== 'html') { + return; + } + const fsPath = `${fullPath}.${extension}`; + fs.access(fsPath, fs.constants.F_OK, err => { + if (err) { + res.sendFile(path.join(staticPath, `404.html`)); + } else { + res.sendFile(fsPath); + } + }); + } + const server = express(); server.use(express.static(staticPath)); - server.get('*', (_req, res) => res.sendFile(path.join(staticPath, rootURL))); + server.get(/^\/$/, (_req, res) => { + loadPage(res, path.join(staticPath, rootURL)); + }); + server.get(`*`, (req, res) => { + loadPage(res, path.join(staticPath, req.path)); + }); server.listen(port, () => console.log(`Server is listening on port ${port}`)); } From c5e43db2ea8d25d0658bab97eb70c7e3f7cdeff8 Mon Sep 17 00:00:00 2001 From: Mark Tate <143323+mark-tate@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:58:58 +0100 Subject: [PATCH 34/36] rebase on beta.40 --- packages/icons/package.json | 4 +- packages/mdx-components-client/package.json | 8 +- packages/mdx-components-server/package.json | 4 +- .../src/AppHeaderControls/index.tsx | 5 +- packages/site-mdx-loader/package.json | 10 +- yarn.lock | 1006 ++++++++++++++++- 6 files changed, 1019 insertions(+), 18 deletions(-) diff --git a/packages/icons/package.json b/packages/icons/package.json index a2a0a03bd..a5c0dedb4 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-icons", "description": "Mosaic - Icons", - "version": "0.1.0-beta.39", + "version": "0.1.0-beta.40", "author": "", "license": "Apache-2.0", "repository": { @@ -41,7 +41,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.40", "@salt-ds/core": "^1.8.0-rc.0" }, "peerDependencies": { diff --git a/packages/mdx-components-client/package.json b/packages/mdx-components-client/package.json index 321c0fdec..0883efad7 100644 --- a/packages/mdx-components-client/package.json +++ b/packages/mdx-components-client/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-client", "description": "Mosaic - Markdown Components", - "version": "0.1.0-beta.39", + "version": "0.1.0-beta.40", "author": "", "license": "Apache-2.0", "repository": { @@ -40,9 +40,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-components": "^0.1.0-beta.39", - "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.39", - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-components": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.40", "clsx": "^1.2.1", "hoist-non-react-statics": "^3.3.2", "prism-react-renderer": "^1.1.1", diff --git a/packages/mdx-components-server/package.json b/packages/mdx-components-server/package.json index 6b5ac550a..d06eb098f 100644 --- a/packages/mdx-components-server/package.json +++ b/packages/mdx-components-server/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-server", "description": "Mosaic - MDX Components", - "version": "0.1.0-beta.39", + "version": "0.1.0-beta.40", "author": "", "license": "Apache-2.0", "repository": { @@ -40,7 +40,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.40", "@mdx-js/mdx": "^2.3.0" }, "peerDependencies": { diff --git a/packages/site-components/src/AppHeaderControls/index.tsx b/packages/site-components/src/AppHeaderControls/index.tsx index 63b2641f5..3f33fb54f 100644 --- a/packages/site-components/src/AppHeaderControls/index.tsx +++ b/packages/site-components/src/AppHeaderControls/index.tsx @@ -3,7 +3,7 @@ import { Icon, Link } from '@jpmorganchase/mosaic-components'; import { MenuButton, MenuDescriptor } from '@salt-ds/lab'; import { useRouter } from 'next/navigation'; import { useContentEditor, EditorControls } from '@jpmorganchase/mosaic-content-editor-plugin'; -import { useColorMode, useSearchIndex, useStoreActions } from '@jpmorganchase/mosaic-store'; +import { useColorMode, useStoreActions } from '@jpmorganchase/mosaic-store'; import { useSession } from 'next-auth/react'; import { UserProfile } from '../UserProfile'; @@ -29,7 +29,6 @@ export const AppHeaderControls: React.FC = () => { const isLoginEnabled = process.env.NEXT_PUBLIC_ENABLE_LOGIN === 'true' || false; const isLoggedIn = session != null; const { pageState, startEditing, stopEditing } = useContentEditor(); - const { searchEnabled } = useSearchIndex(); const inverseColorMode = colorMode === 'dark' ? 'light' : 'dark'; let actionMenuOptions: ActionMenuItem[] = [ @@ -73,7 +72,7 @@ export const AppHeaderControls: React.FC = () => { return (
{isLoginEnabled && } - {searchEnabled && } + {isLoginEnabled && (
{isLoggedIn ? ( diff --git a/packages/site-mdx-loader/package.json b/packages/site-mdx-loader/package.json index da63ce962..822587577 100644 --- a/packages/site-mdx-loader/package.json +++ b/packages/site-mdx-loader/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-site-mdx-loader", "description": "Mosaic - MDX Site Loader", - "version": "0.1.0-beta.39", + "version": "0.1.0-beta.40", "author": "", "license": "Apache-2.0", "repository": { @@ -29,7 +29,7 @@ "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { - "@jpmorganchase/mosaic-types": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-types": "^0.1.0-beta.40", "del-cli": "^4.0.1", "esbuild": "0.17.19", "esbuild-node-externals": "^1.7.0", @@ -37,9 +37,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.39", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.39", - "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.39", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.40", "@types/node": "^18.15.3", "deepmerge": "^4.2.2", "gray-matter": "^4.0.3", diff --git a/yarn.lock b/yarn.lock index 008630157..e9cb1ee0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26,6 +26,564 @@ js-yaml "^4.1.0" lodash.clonedeep "^4.5.0" +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha1-BzAOyiFECcM+P/dpzVaXtX/dOPo= + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" + integrity sha1-AWyS2lWe9jioSiRe7LdcPpfLZk8= + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha1-ZArma07DOVzuao6U682fgMJM1og= + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" + integrity sha1-+Qg8AHgrJHFPUosaH+8hdAAiZqM= + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + integrity sha1-BfFgE4q4k/HGulvlfP0QjwWCd2Y= + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/sha256-js" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha1-8GuE1VDSVSHmDSoOKpATk0HgB8I= + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha1-XRv4Ja+oByrycXw+RV81zaAQPsI= + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha1-HHypDCkpPwiDRorUgReTfw/lv7A= + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/client-s3@^3.359.0": + version "3.374.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/client-s3/-/client-s3-3.374.0.tgz#d5428ace90a24717bb35d59ff9db04ab94af5767" + integrity sha1-1UKKzpCiRxe7NdWf+dsEq5SvV2c= + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.370.0" + "@aws-sdk/credential-provider-node" "3.370.0" + "@aws-sdk/hash-stream-node" "3.374.0" + "@aws-sdk/middleware-bucket-endpoint" "3.370.0" + "@aws-sdk/middleware-expect-continue" "3.370.0" + "@aws-sdk/middleware-flexible-checksums" "3.374.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-location-constraint" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-sdk-s3" "3.370.0" + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/middleware-ssec" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/signature-v4-multi-region" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@aws-sdk/xml-builder" "3.310.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/eventstream-serde-browser" "^1.0.1" + "@smithy/eventstream-serde-config-resolver" "^1.0.1" + "@smithy/eventstream-serde-node" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-blob-browser" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/md5-js" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-stream" "^1.0.1" + "@smithy/util-utf8" "^1.0.1" + "@smithy/util-waiter" "^1.0.1" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/client-sso-oidc@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.370.0.tgz#db03c04cb6a23888dc60016eb67505a41ede410b" + integrity sha1-2wPATLaiOIjcYAFutnUFpB7eQQs= + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/client-sso@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/client-sso/-/client-sso-3.370.0.tgz#68aea97ecb2e5e6c817dfd3a1dd9fa4e09ff6e1c" + integrity sha1-aK6pfssuXmyBff06Hdn6Tgn/bhw= + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/client-sts@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/client-sts/-/client-sts-3.370.0.tgz#65879fa35b396035dcab446c782056ef768f48af" + integrity sha1-ZYefo1s5YDXcq0RseCBW73aPSK8= + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/credential-provider-node" "3.370.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-sdk-sts" "3.370.0" + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-env@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/credential-provider-env/-/credential-provider-env-3.370.0.tgz#edd507a88b36b967da048255f4a478ad92d1c5aa" + integrity sha1-7dUHqIs2uWfaBIJV9KR4rZLRxao= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-ini@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.370.0.tgz#4e569b8054b4fba2f0a0a7fa88af84b1f8d78c0b" + integrity sha1-TlabgFS0+6LwoKf6iK+EsfjXjAs= + dependencies: + "@aws-sdk/credential-provider-env" "3.370.0" + "@aws-sdk/credential-provider-process" "3.370.0" + "@aws-sdk/credential-provider-sso" "3.370.0" + "@aws-sdk/credential-provider-web-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-node@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/credential-provider-node/-/credential-provider-node-3.370.0.tgz#74605644ccbd9e8237223318a7955f4ab2ff0d86" + integrity sha1-dGBWRMy9noI3IjMYp5VfSrL/DYY= + dependencies: + "@aws-sdk/credential-provider-env" "3.370.0" + "@aws-sdk/credential-provider-ini" "3.370.0" + "@aws-sdk/credential-provider-process" "3.370.0" + "@aws-sdk/credential-provider-sso" "3.370.0" + "@aws-sdk/credential-provider-web-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-process@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/credential-provider-process/-/credential-provider-process-3.370.0.tgz#f7b94d2ccfda3b067cb23ea832b10c692c831855" + integrity sha1-97lNLM/aOwZ8sj6oMrEMaSyDGFU= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-sso@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.370.0.tgz#4c57f93d73f198d7e1e53fbfcdf72c053bc9c682" + integrity sha1-TFf5PXPxmNfh5T+/zfcsBTvJxoI= + dependencies: + "@aws-sdk/client-sso" "3.370.0" + "@aws-sdk/token-providers" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-web-identity@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.370.0.tgz#c5831bb656bea1fe3b300e495e19a33bc90f4d84" + integrity sha1-xYMbtla+of47MA5JXhmjO8kPTYQ= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/hash-stream-node@3.374.0": + version "3.374.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/hash-stream-node/-/hash-stream-node-3.374.0.tgz#d98c3d73f4ad2677acfff2d84a8b394a10c00763" + integrity sha1-2Yw9c/StJnes//LYSos5ShDAB2M= + dependencies: + "@smithy/hash-stream-node" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-bucket-endpoint@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.370.0.tgz#965a0ea2323b719703d1dec76a4e7b39d5a7463f" + integrity sha1-lloOojI7cZcD0d7Hak57OdWnRj8= + dependencies: + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-arn-parser" "3.310.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + "@smithy/util-config-provider" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-expect-continue@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.370.0.tgz#5eb7c7e65fc345ef31bcecb37522550cd12cd29a" + integrity sha1-XrfH5l/DRe8xvOyzdSJVDNEs0po= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-flexible-checksums@3.374.0": + version "3.374.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.374.0.tgz#2ba2c0d3982a7ad277269e7fa0634fe2c9122255" + integrity sha1-K6LA05gqetJ3Jp5/oGNP4skSIlU= + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/types" "3.370.0" + "@smithy/is-array-buffer" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-host-header@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-host-header/-/middleware-host-header-3.370.0.tgz#645472416efd16b22a66b0aa1d52f48cf5699feb" + integrity sha1-ZFRyQW79FrIqZrCqHVL0jPVpn+s= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-location-constraint@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.370.0.tgz#aa12d98a4cd8705dbda2642aac386a7b023ae651" + integrity sha1-qhLZikzYcF29omQqrDhqewI65lE= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-logger@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-logger/-/middleware-logger-3.370.0.tgz#c9f694d7e1dd47b5e6e8eab94793fc1e272b1e26" + integrity sha1-yfaU1+HdR7Xm6Oq5R5P8HicrHiY= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-recursion-detection@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.370.0.tgz#e5e8fd1d2ff1ade91135295dabcaa81c311ce00b" + integrity sha1-5ej9HS/xrekRNSldq8qoHDEc4As= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-s3@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.370.0.tgz#4ff48cba4da0465077230c8bdd8a117654aff9bb" + integrity sha1-T/SMuk2gRlB3IwyL3YoRdlSv+bs= + dependencies: + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-arn-parser" "3.310.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-sts@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.370.0.tgz#0599a624fe5cabe75cd7d9e7420927b102356fa2" + integrity sha1-BZmmJP5cq+dc19nnQgknsQI1b6I= + dependencies: + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-signing@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-signing/-/middleware-signing-3.370.0.tgz#c094026251faa17a24f61630d56152f7b073e6cf" + integrity sha1-wJQCYlH6oXok9hYw1WFS97Bz5s8= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/signature-v4" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-middleware" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-ssec@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-ssec/-/middleware-ssec-3.370.0.tgz#e7b6f7b6fba23c64cfc9c7ceed12613d6694f1cc" + integrity sha1-57b3tvuiPGTPycfO7RJhPWaU8cw= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-user-agent@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.370.0.tgz#a2bf71baf6407654811a02e4d276a2eec3996fdb" + integrity sha1-or9xuvZAdlSBGgLk0nai7sOZb9s= + dependencies: + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/signature-v4-multi-region@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.370.0.tgz#1a6eee2c9a197ca3d48fcf9bfaa326e8990c6042" + integrity sha1-Gm7uLJoZfKPUj8+b+qMm6JkMYEI= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/signature-v4" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/token-providers@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/token-providers/-/token-providers-3.370.0.tgz#e5229f2d116887c90ec103e024583be05c1f506c" + integrity sha1-5SKfLRFoh8kOwQPgJFg74FwfUGw= + dependencies: + "@aws-sdk/client-sso-oidc" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/types@3.370.0", "@aws-sdk/types@^3.222.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/types/-/types-3.370.0.tgz#79e0e4927529c957b5c5c2a00f7590a76784a5e4" + integrity sha1-eeDkknUpyVe1xcKgD3WQp2eEpeQ= + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/util-arn-parser@3.310.0": + version "3.310.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba" + integrity sha1-hh/4gQhRvlKjIOyeR4bxW1/HT7o= + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-endpoints@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/util-endpoints/-/util-endpoints-3.370.0.tgz#bf1f4653c3afc89d4e79aa4895dd3dffbb56c930" + integrity sha1-vx9GU8OvyJ1OeapIld09/7tWyTA= + dependencies: + "@aws-sdk/types" "3.370.0" + tslib "^2.5.0" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.310.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz#b071baf050301adee89051032bd4139bba32cc40" + integrity sha1-sHG68FAwGt7okFEDK9QTm7oyzEA= + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-browser@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.370.0.tgz#df144f5f1a65578842b79d49555c754a531d85f0" + integrity sha1-3xRPXxplV4hCt51JVVx1SlMdhfA= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-node@3.370.0": + version "3.370.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.370.0.tgz#96d8420b42cbebd498de8b94886340d11c97a34b" + integrity sha1-lthCC0LL69SY3ouUiGNA0RyXo0s= + dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha1-MnWm9eszT5bKdmNblh08UCWf2f8= + dependencies: + tslib "^2.3.1" + +"@aws-sdk/xml-builder@3.310.0": + version "3.310.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz#f0236f2103b438d16117e0939a6305ad69b7ff76" + integrity sha1-8CNvIQO0ONFhF+CTmmMFrWm3/3Y= + dependencies: + tslib "^2.5.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -1929,6 +2487,433 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@smithy/abort-controller@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/abort-controller/-/abort-controller-1.0.2.tgz#74caac052ecea15c5460438272ad8d43a6ccbc53" + integrity sha1-dMqsBS7OoVxUYEOCcq2NQ6bMvFM= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/chunked-blob-reader-native@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-1.0.2.tgz#c6045b30f37824b4648ee8d06d68b2e8df400460" + integrity sha1-xgRbMPN4JLRkjujQbWiy6N9ABGA= + dependencies: + "@smithy/util-base64" "^1.0.2" + tslib "^2.5.0" + +"@smithy/chunked-blob-reader@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/chunked-blob-reader/-/chunked-blob-reader-1.0.2.tgz#be1d2c91a4430de371207c5f143228d4cd671eb0" + integrity sha1-vh0skaRDDeNxIHxfFDIo1M1nHrA= + dependencies: + tslib "^2.5.0" + +"@smithy/config-resolver@^1.0.1", "@smithy/config-resolver@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/config-resolver/-/config-resolver-1.0.2.tgz#d4f556a44292b41b5c067662a4bd5049dea40e35" + integrity sha1-1PVWpEKStBtcBnZipL1QSd6kDjU= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-config-provider" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" + +"@smithy/credential-provider-imds@^1.0.1", "@smithy/credential-provider-imds@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz#7aa797c0d95448eb3dccb988b40e62db8989576f" + integrity sha1-eqeXwNlUSOs9zLmItA5i24mJV28= + dependencies: + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + tslib "^2.5.0" + +"@smithy/eventstream-codec@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz#06d1b6e2510cb2475a39b3a20b0c75e751917c59" + integrity sha1-BtG24lEMskdaObOiCwx151GRfFk= + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + tslib "^2.5.0" + +"@smithy/eventstream-serde-browser@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-1.0.2.tgz#2f6c9de876ca5e3f35388df9cfa31aeb4281ac76" + integrity sha1-L2yd6HbKXj81OI35z6Ma60KBrHY= + dependencies: + "@smithy/eventstream-serde-universal" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-config-resolver@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-1.0.2.tgz#37a55970c31f3e4a38d66933ab14398351553daf" + integrity sha1-N6VZcMMfPko41mkzqxQ5g1FVPa8= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-node@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/eventstream-serde-node/-/eventstream-serde-node-1.0.2.tgz#1c8ba86f70ecdad19c3a25b48b0f9a03799c2a0d" + integrity sha1-HIuob3Ds2tGcOiW0iw+aA3mcKg0= + dependencies: + "@smithy/eventstream-serde-universal" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-universal@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-1.0.2.tgz#66c1ccc639cb64049291200bcda476b26875fd8e" + integrity sha1-ZsHMxjnLZASSkSALzaR2smh1/Y4= + dependencies: + "@smithy/eventstream-codec" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/fetch-http-handler@^1.0.1", "@smithy/fetch-http-handler@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz#4186ee6451de22e867f43c05236dcff43eca6e91" + integrity sha1-QYbuZFHeIuhn9DwFI23P9D7KbpE= + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + tslib "^2.5.0" + +"@smithy/hash-blob-browser@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/hash-blob-browser/-/hash-blob-browser-1.0.2.tgz#c23b4a85540bdc3aea0e26e9fda8983b2a6006de" + integrity sha1-wjtKhVQL3DrqDibp/aiYOypgBt4= + dependencies: + "@smithy/chunked-blob-reader" "^1.0.2" + "@smithy/chunked-blob-reader-native" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/hash-node@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/hash-node/-/hash-node-1.0.2.tgz#dc65203a348d29e45c493ead3e772e4f7dfb5bc0" + integrity sha1-3GUgOjSNKeRcST6tPncuT337W8A= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/hash-stream-node@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/hash-stream-node/-/hash-stream-node-1.0.2.tgz#36083c7519f0f7e6e720da8838882ff9a65da31a" + integrity sha1-Ngg8dRnw9+bnINqIOIgv+aZdoxo= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/invalid-dependency@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz#0a9d82d1a14e5bdbdc0bd2cef5f457c85a942920" + integrity sha1-Cp2C0aFOW9vcC9LO9fRXyFqUKSA= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/is-array-buffer@^1.0.1", "@smithy/is-array-buffer@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz#224702a2364d698f0a36ecb2c240c0c9541ecfb6" + integrity sha1-IkcCojZNaY8KNuyywkDAyVQez7Y= + dependencies: + tslib "^2.5.0" + +"@smithy/md5-js@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/md5-js/-/md5-js-1.0.2.tgz#bbcbdfc7afc3497ce74b1cb84026999753a813fb" + integrity sha1-u8vfx6/DSXznSxy4QCaZl1OoE/s= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/middleware-content-length@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz#63099f8d01b3419b65e21cfd07b0c2ef47d1f473" + integrity sha1-YwmfjQGzQZtl4hz9B7DC70fR9HM= + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/middleware-endpoint@^1.0.2": + version "1.0.3" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz#ff4b1c0a83eb8d8b8d3937f434a95efbbf43e1cd" + integrity sha1-/0scCoPrjYuNOTf0NKle+79D4c0= + dependencies: + "@smithy/middleware-serde" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" + +"@smithy/middleware-retry@^1.0.3": + version "1.0.4" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz#8e9de0713dac7f7af405477d46bd4525ca7b9ea8" + integrity sha1-jp3gcT2sf3r0BUd9Rr1FJcp7nqg= + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/service-error-classification" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-retry" "^1.0.4" + tslib "^2.5.0" + uuid "^8.3.2" + +"@smithy/middleware-serde@^1.0.1", "@smithy/middleware-serde@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz#87b3a0211602ae991d9b756893eb6bf2e3e5f711" + integrity sha1-h7OgIRYCrpkdm3Vok+tr8uPl9xE= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/middleware-stack@^1.0.1", "@smithy/middleware-stack@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz#d241082bf3cb315c749dda57e233039a9aed804e" + integrity sha1-0kEIK/PLMVx0ndpX4jMDmprtgE4= + dependencies: + tslib "^2.5.0" + +"@smithy/node-config-provider@^1.0.1", "@smithy/node-config-provider@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz#2d391b96a9e10072e7e0a3698427400f4ef17ec4" + integrity sha1-LTkblqnhAHLn4KNphCdAD07xfsQ= + dependencies: + "@smithy/property-provider" "^1.0.2" + "@smithy/shared-ini-file-loader" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/node-http-handler@^1.0.2", "@smithy/node-http-handler@^1.0.3": + version "1.0.3" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz#89b556ca2bdcce7a994a9da1ea265094d76d4791" + integrity sha1-ibVWyivcznqZSp2h6iZQlNdtR5E= + dependencies: + "@smithy/abort-controller" "^1.0.2" + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/property-provider@^1.0.1", "@smithy/property-provider@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/property-provider/-/property-provider-1.0.2.tgz#f99f104cbd6576c9aca9f56cb72819b4a65208e1" + integrity sha1-+Z8QTL1ldsmsqfVstygZtKZSCOE= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/protocol-http@^1.1.0", "@smithy/protocol-http@^1.1.1": + version "1.1.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/protocol-http/-/protocol-http-1.1.1.tgz#10977cf71631eed4f5ad1845408920238d52cdba" + integrity sha1-EJd89xYx7tT1rRhFQIkgI41Szbo= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/querystring-builder@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz#ce861f6cbd14792c83aa19b4967a19923bd0706e" + integrity sha1-zoYfbL0UeSyDqhm0lnoZkjvQcG4= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-uri-escape" "^1.0.2" + tslib "^2.5.0" + +"@smithy/querystring-parser@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz#559d09c46b21e6fbda71e95deda4bcd8a46bdecc" + integrity sha1-VZ0JxGsh5vvaceld7aS82KRr3sw= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/service-error-classification@^1.0.3": + version "1.0.3" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz#c620c1562610d3351985eb6dd04262ca2657ae67" + integrity sha1-xiDBViYQ0zUZhett0EJiyiZXrmc= + +"@smithy/shared-ini-file-loader@^1.0.1", "@smithy/shared-ini-file-loader@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz#c6e79991d87925bd18e0adae00c97da6c8ecae1e" + integrity sha1-xueZkdh5Jb0Y4K2uAMl9psjsrh4= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/signature-v4@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/signature-v4/-/signature-v4-1.0.2.tgz#3a7b10ac66c337b404aa061e5f268f0550729680" + integrity sha1-OnsQrGbDN7QEqgYeXyaPBVByloA= + dependencies: + "@smithy/eventstream-codec" "^1.0.2" + "@smithy/is-array-buffer" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-uri-escape" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/smithy-client@^1.0.3": + version "1.0.4" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/smithy-client/-/smithy-client-1.0.4.tgz#96d03d123d117a637c679a79bb8eae96e3857bd9" + integrity sha1-ltA9Ej0RemN8Z5p5u46uluOFe9k= + dependencies: + "@smithy/middleware-stack" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-stream" "^1.0.2" + tslib "^2.5.0" + +"@smithy/types@^1.1.0", "@smithy/types@^1.1.1": + version "1.1.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/types/-/types-1.1.1.tgz#949394a22e13e7077471bae0d18c146e5f62c456" + integrity sha1-lJOUoi4T5wd0cbrg0YwUbl9ixFY= + dependencies: + tslib "^2.5.0" + +"@smithy/url-parser@^1.0.1", "@smithy/url-parser@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/url-parser/-/url-parser-1.0.2.tgz#fb59be6f2283399443d9e7afe08ebf63b3c266bb" + integrity sha1-+1m+byKDOZRD2eev4I6/Y7PCZrs= + dependencies: + "@smithy/querystring-parser" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/util-base64@^1.0.1", "@smithy/util-base64@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-base64/-/util-base64-1.0.2.tgz#6cdd5a9356dafad3c531123c12cd77d674762da0" + integrity sha1-bN1ak1ba+tPFMRI8Es131nR2LaA= + dependencies: + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-body-length-browser@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz#4a9a49497634b5f25ab5ff73f1a8498010b0024a" + integrity sha1-SppJSXY0tfJatf9z8ahJgBCwAko= + dependencies: + tslib "^2.5.0" + +"@smithy/util-body-length-node@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz#bc4969022f7d9ffcb239d626d80a85138e986df6" + integrity sha1-vElpAi99n/yyOdYm2AqFE46YbfY= + dependencies: + tslib "^2.5.0" + +"@smithy/util-buffer-from@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz#27e19573d721962bd2443f23d4edadb8206b2cb5" + integrity sha1-J+GVc9chlivSRD8j1O2tuCBrLLU= + dependencies: + "@smithy/is-array-buffer" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-config-provider@^1.0.1", "@smithy/util-config-provider@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz#4d2e867df1cc7b4010d1278bd5767ce1b679dae9" + integrity sha1-TS6GffHMe0AQ0SeL1XZ84bZ52uk= + dependencies: + tslib "^2.5.0" + +"@smithy/util-defaults-mode-browser@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz#31ad7b9bce7e38fd57f4a370ee416373b4fbd432" + integrity sha1-Ma17m85+OP1X9KNw7kFjc7T71DI= + dependencies: + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + bowser "^2.11.0" + tslib "^2.5.0" + +"@smithy/util-defaults-mode-node@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz#b295fe2a18568c1e21a85b6557e2b769452b4d95" + integrity sha1-spX+KhhWjB4hqFtlV+K3aUUrTZU= + dependencies: + "@smithy/config-resolver" "^1.0.2" + "@smithy/credential-provider-imds" "^1.0.2" + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/util-hex-encoding@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz#5b9f2162f2a59b2d2aa39992bd2c7f65b6616ab6" + integrity sha1-W58hYvKlmy0qo5mSvSx/ZbZharY= + dependencies: + tslib "^2.5.0" + +"@smithy/util-middleware@^1.0.1", "@smithy/util-middleware@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-middleware/-/util-middleware-1.0.2.tgz#c3d4c7a6cd31bde33901e54abd7700c8ca73dab3" + integrity sha1-w9THps0xveM5AeVKvXcAyMpz2rM= + dependencies: + tslib "^2.5.0" + +"@smithy/util-retry@^1.0.3", "@smithy/util-retry@^1.0.4": + version "1.0.4" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-retry/-/util-retry-1.0.4.tgz#9d95df3884981414163d5f780d38e3529384d9ad" + integrity sha1-nZXfOISYFBQWPV94DTjjUpOE2a0= + dependencies: + "@smithy/service-error-classification" "^1.0.3" + tslib "^2.5.0" + +"@smithy/util-stream@^1.0.1", "@smithy/util-stream@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-stream/-/util-stream-1.0.2.tgz#2d33aa5168e51d1dd7937c32a09c8334d2da44d9" + integrity sha1-LTOqUWjlHR3Xk3wyoJyDNNLaRNk= + dependencies: + "@smithy/fetch-http-handler" "^1.0.2" + "@smithy/node-http-handler" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-uri-escape@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz#c69a5423c9baa7a045a79372320bd40a437ac756" + integrity sha1-xppUI8m6p6BFp5NyMgvUCkN6x1Y= + dependencies: + tslib "^2.5.0" + +"@smithy/util-utf8@^1.0.1", "@smithy/util-utf8@^1.0.2": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-utf8/-/util-utf8-1.0.2.tgz#b34c27b4efbe4f0edb6560b6d4f743088302671f" + integrity sha1-s0wntO++Tw7bZWC21PdDCIMCZx8= + dependencies: + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-waiter@^1.0.1": + version "1.0.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@smithy/util-waiter/-/util-waiter-1.0.2.tgz#3b1498a2d4b92e78eafacc8c76f314e30eb7a5e9" + integrity sha1-OxSYotS5Lnjq+syMdvMU4w63pek= + dependencies: + "@smithy/abort-controller" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + "@swagger-api/apidom-ast@^0.70.0": version "0.70.0" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swagger-api/apidom-ast/-/apidom-ast-0.70.0.tgz#8665af62ab8b6b02c7851429d2fe15dc4780e188" @@ -3546,6 +4531,11 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" +bowser@^2.11.0: + version "2.11.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha1-XKPDV1enqldxUAxwpzqfke9CCo8= + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -5691,6 +6681,13 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha1-pnR6CSlqbLNPKuY0AZvxc487Qh8= + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -11191,6 +12188,11 @@ strip-json-comments@~2.0.1: resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strnum@^1.0.5: + version "1.0.5" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha1-XE6Cn+Fa1P8NIMPbWsl7c8mwcts= + style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -11534,7 +12536,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= @@ -11549,7 +12551,7 @@ tslib@^2.1.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha1-fOyqfwc85oCgWEeqd76UEJjzbcM= -tslib@^2.4.1: +tslib@^2.3.1, tslib@^2.4.1, tslib@^2.5.0: version "2.6.0" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" integrity sha1-spWFRoTb2hZOGB0lmiLNd53Ne8M= From 3f7df12e5d92df1c41725457259db9fe5f44deaf Mon Sep 17 00:00:00 2001 From: mark-tate <143323+mark-tate@users.noreply.github.com> Date: Tue, 12 Sep 2023 22:27:25 +0100 Subject: [PATCH 35/36] rebased onto beta.47 updated error boundary/router changes to work in Next 13 --- packages/icons/package.json | 4 +- packages/mdx-components-client/package.json | 10 +- packages/mdx-components-server/package.json | 4 +- packages/site-components/src/Body.tsx | 27 ++- .../src/Breadcrumbs/Breadcrumbs.tsx | 2 +- packages/site-mdx-loader/package.json | 10 +- .../site/public/search-data-condensed.json | 2 +- packages/site/src/app/[...slug]/layout.tsx | 4 +- yarn.lock | 189 ++++++++++++++++-- 9 files changed, 207 insertions(+), 45 deletions(-) diff --git a/packages/icons/package.json b/packages/icons/package.json index a5c0dedb4..393993a83 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-icons", "description": "Mosaic - Icons", - "version": "0.1.0-beta.40", + "version": "0.1.0-beta.47", "author": "", "license": "Apache-2.0", "repository": { @@ -41,7 +41,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.47", "@salt-ds/core": "^1.8.0-rc.0" }, "peerDependencies": { diff --git a/packages/mdx-components-client/package.json b/packages/mdx-components-client/package.json index 0883efad7..b74abac71 100644 --- a/packages/mdx-components-client/package.json +++ b/packages/mdx-components-client/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-client", "description": "Mosaic - Markdown Components", - "version": "0.1.0-beta.40", + "version": "0.1.0-beta.47", "author": "", "license": "Apache-2.0", "repository": { @@ -40,10 +40,10 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-components": "^0.1.0-beta.40", - "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.40", - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.40", - "clsx": "^1.2.1", + "@jpmorganchase/mosaic-components": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.47", + "clsx": "^2.0.0", "hoist-non-react-statics": "^3.3.2", "prism-react-renderer": "^1.1.1", "react-markdown": "^6.0.2" diff --git a/packages/mdx-components-server/package.json b/packages/mdx-components-server/package.json index d06eb098f..bd0b59dcd 100644 --- a/packages/mdx-components-server/package.json +++ b/packages/mdx-components-server/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-server", "description": "Mosaic - MDX Components", - "version": "0.1.0-beta.40", + "version": "0.1.0-beta.47", "author": "", "license": "Apache-2.0", "repository": { @@ -40,7 +40,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.47", "@mdx-js/mdx": "^2.3.0" }, "peerDependencies": { diff --git a/packages/site-components/src/Body.tsx b/packages/site-components/src/Body.tsx index 086172046..9841b9ca3 100644 --- a/packages/site-components/src/Body.tsx +++ b/packages/site-components/src/Body.tsx @@ -1,31 +1,30 @@ -import React, { useEffect } from 'react'; +import React, { Suspense } from 'react'; import { MDXRemote } from 'next-mdx-remote'; import { ErrorBoundary, useErrorBoundary } from 'react-error-boundary'; import { useContentEditor, Editor } from '@jpmorganchase/mosaic-content-editor-plugin'; import { useSession } from 'next-auth/react'; -import { useRouter } from 'next/router'; import { createMDXScope } from './utils/createMDXScope'; import { Page500 } from './500'; +import { NavigationEvents } from './NavigationEvents'; const DefaultFallBackComponent = ({ error: { message: errorMessage = 'unknown' } }) => { - const router = useRouter(); const { resetBoundary } = useErrorBoundary(); - useEffect(() => { - const handleRouteChange = () => { - resetBoundary(); - }; + const handleRouteChangeComplete = () => { + resetBoundary(); + }; - router.events.on('routeChangeComplete', handleRouteChange); - - return () => { - router.events.off('routeChangeComplete', handleRouteChange); - }; - }, [router, resetBoundary]); console.error('An un-handled error created a 500 message'); console.error(errorMessage); - return ; + return ( + <> + + + + + + ); }; function MDXRemoteWithErrorBoundary({ components, source, meta = {} }) { diff --git a/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx b/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx index 4e7ac3121..59ab9b918 100644 --- a/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx +++ b/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { Breadcrumbs as SaltBreadcrumbs } from '@salt-ds/lab'; import { Breadcrumb } from './Breadcrumb'; diff --git a/packages/site-mdx-loader/package.json b/packages/site-mdx-loader/package.json index 822587577..3bbf0f694 100644 --- a/packages/site-mdx-loader/package.json +++ b/packages/site-mdx-loader/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-site-mdx-loader", "description": "Mosaic - MDX Site Loader", - "version": "0.1.0-beta.40", + "version": "0.1.0-beta.47", "author": "", "license": "Apache-2.0", "repository": { @@ -29,7 +29,7 @@ "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { - "@jpmorganchase/mosaic-types": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-types": "^0.1.0-beta.47", "del-cli": "^4.0.1", "esbuild": "0.17.19", "esbuild-node-externals": "^1.7.0", @@ -37,9 +37,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.40", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.40", - "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.40", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.47", "@types/node": "^18.15.3", "deepmerge": "^4.2.2", "gray-matter": "^4.0.3", diff --git a/packages/site/public/search-data-condensed.json b/packages/site/public/search-data-condensed.json index 5d40b1395..73f434705 100644 --- a/packages/site/public/search-data-condensed.json +++ b/packages/site/public/search-data-condensed.json @@ -1 +1 @@ -[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Page Templates","route":"/mosaic/author/page-templates"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$afterSource","route":"/mosaic/configure/plugins/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/before-send"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/should-clear-cache"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"}] \ No newline at end of file +[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Page Templates","route":"/mosaic/author/page-templates"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Admin","route":"/mosaic/configure/admin/index"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$afterSource","route":"/mosaic/configure/plugins/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/before-send"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/should-clear-cache"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"}] \ No newline at end of file diff --git a/packages/site/src/app/[...slug]/layout.tsx b/packages/site/src/app/[...slug]/layout.tsx index 6e69759e8..4618ec2a9 100644 --- a/packages/site/src/app/[...slug]/layout.tsx +++ b/packages/site/src/app/[...slug]/layout.tsx @@ -8,7 +8,7 @@ import { StoreProvider, ThemeProvider } from '@jpmorganchase/mosaic-site-components'; -import { LayoutProvider } from '@jpmorganchase/mosaic-layouts'; +import { LayoutProvider, layouts } from '@jpmorganchase/mosaic-layouts'; import { themeClassName } from '@jpmorganchase/mosaic-theme'; import { loadPage, LoadPageError } from '@jpmorganchase/mosaic-site-mdx-loader'; import { notFound } from 'next/navigation'; @@ -37,7 +37,7 @@ export default async function Layout({ params: { slug }, children }) { - {children} + {children} diff --git a/yarn.lock b/yarn.lock index e9cb1ee0c..fb6764700 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1099,6 +1099,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.1.2": + version "7.22.15" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" + integrity sha1-OPRklMz2zwIL1O7XEktCXoPlI7g= + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.12.1": version "7.22.6" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" @@ -1668,6 +1675,90 @@ aria-hidden "^1.1.3" tabbable "^6.0.1" +"@fluentui/keyboard-keys@^9.0.4": + version "9.0.4" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fluentui/keyboard-keys/-/keyboard-keys-9.0.4.tgz#486d94ae3908f44fd11ebb496ca3e4b31163f32e" + integrity sha1-SG2UrjkI9E/RHrtJbKPksxFj8y4= + dependencies: + "@swc/helpers" "^0.5.1" + +"@fluentui/priority-overflow@^9.1.5": + version "9.1.5" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fluentui/priority-overflow/-/priority-overflow-9.1.5.tgz#1cab1cc9baac1048d67b702649f9b662a1b9968e" + integrity sha1-HKscybqsEEjWe3AmSfm2YqG5lo4= + dependencies: + "@swc/helpers" "^0.5.1" + +"@fluentui/react-context-selector@^9.1.34": + version "9.1.34" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fluentui/react-context-selector/-/react-context-selector-9.1.34.tgz#85a2711be17cf56cc2ee32764c4c5d50b3e02e7e" + integrity sha1-haJxG+F89WzC7jJ2TExdULPgLn4= + dependencies: + "@fluentui/react-utilities" "^9.13.3" + "@swc/helpers" "^0.5.1" + +"@fluentui/react-overflow@^9.0.19": + version "9.0.33" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fluentui/react-overflow/-/react-overflow-9.0.33.tgz#9c282e1c150208ad11e0f08c6c64e56294012a32" + integrity sha1-nCguHBUCCK0R4PCMbGTlYpQBKjI= + dependencies: + "@fluentui/priority-overflow" "^9.1.5" + "@fluentui/react-context-selector" "^9.1.34" + "@fluentui/react-theme" "^9.1.12" + "@fluentui/react-utilities" "^9.13.3" + "@griffel/react" "^1.5.14" + "@swc/helpers" "^0.5.1" + +"@fluentui/react-theme@^9.1.12": + version "9.1.12" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fluentui/react-theme/-/react-theme-9.1.12.tgz#f38da07a04eb80adf79ff85679effab9bcd88dc4" + integrity sha1-842gegTrgK33n/hWee/6ubzYjcQ= + dependencies: + "@fluentui/tokens" "1.0.0-alpha.9" + "@swc/helpers" "^0.5.1" + +"@fluentui/react-utilities@^9.13.3": + version "9.13.3" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fluentui/react-utilities/-/react-utilities-9.13.3.tgz#3c7c5037a0e50e4c7f6bdd85e5d8f853fb27d087" + integrity sha1-PHxQN6DlDkx/a92F5dj4U/sn0Ic= + dependencies: + "@fluentui/keyboard-keys" "^9.0.4" + "@swc/helpers" "^0.5.1" + +"@fluentui/tokens@1.0.0-alpha.9": + version "1.0.0-alpha.9" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fluentui/tokens/-/tokens-1.0.0-alpha.9.tgz#cf9cf2675eb7e57b6986331d8eff72b677128a30" + integrity sha1-z5zyZ1635XtphjMdjv9ytncSijA= + dependencies: + "@swc/helpers" "^0.5.1" + +"@griffel/core@^1.14.1": + version "1.14.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@griffel/core/-/core-1.14.1.tgz#1efe8f5cd5c4b348636264061c3a6cf4040b08f4" + integrity sha1-Hv6PXNXEs0hjYmQGHDps9AQLCPQ= + dependencies: + "@emotion/hash" "^0.9.0" + "@griffel/style-types" "^1.0.1" + csstype "^3.1.2" + rtl-css-js "^1.16.1" + stylis "^4.2.0" + tslib "^2.1.0" + +"@griffel/react@^1.5.14": + version "1.5.14" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@griffel/react/-/react-1.5.14.tgz#ea58ebd82007d421d16da49b7e57eccba391d609" + integrity sha1-6ljr2CAH1CHRbaSbflfsy6OR1gk= + dependencies: + "@griffel/core" "^1.14.1" + tslib "^2.1.0" + +"@griffel/style-types@^1.0.1": + version "1.0.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@griffel/style-types/-/style-types-1.0.1.tgz#4e7bca38d54c7371114309a5697869099a693e84" + integrity sha1-TnvKONVMc3ERQwmlaXhpCZppPoQ= + dependencies: + csstype "^3.1.2" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -2416,6 +2507,17 @@ "@salt-ds/window" "^0.1.0" clsx "^1.2.1" +"@salt-ds/core@^1.8.1": + version "1.8.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@salt-ds/core/-/core-1.8.1.tgz#79056aabb88de5296ba85cd4fadc3f563677481a" + integrity sha1-eQVqq7iN5SlrqFzU+tw/VjZ3SBo= + dependencies: + "@floating-ui/react" "^0.23.0" + "@salt-ds/icons" "^1.6.0" + "@salt-ds/styles" "^0.1.1" + "@salt-ds/window" "^0.1.1" + clsx "^2.0.0" + "@salt-ds/icons@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@salt-ds/icons/-/icons-1.4.0.tgz#a754be22c2034b1d5f8cba71a62b8eb7d5ce51c5" @@ -2425,21 +2527,31 @@ "@salt-ds/window" "^0.1.0" clsx "^1.2.1" -"@salt-ds/lab@1.0.0-alpha.10": - version "1.0.0-alpha.10" - resolved "https://registry.yarnpkg.com/@salt-ds/lab/-/lab-1.0.0-alpha.10.tgz#9fdc419c7439e4cdddeea16886d5c30bdf8a7535" - integrity sha512-iz94MCb7gzgZCthUOXu1Ve6oP4ebfaBfKlz9uVuCp8udsgwUs6XkCu5K3nxrKUzxzqnJnvcWKcZXe/L1wjJXiQ== +"@salt-ds/icons@^1.6.0": + version "1.6.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@salt-ds/icons/-/icons-1.6.0.tgz#7e47df9080ec4976c66c6c3f67ec72a1076ffe56" + integrity sha1-fkffkIDsSXbGbGw/Z+xyoQdv/lY= + dependencies: + "@salt-ds/styles" "^0.1.1" + "@salt-ds/window" "^0.1.1" + clsx "^2.0.0" + +"@salt-ds/lab@1.0.0-alpha.16": + version "1.0.0-alpha.16" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@salt-ds/lab/-/lab-1.0.0-alpha.16.tgz#ed942f80bea1973b9a9f39dae28ab796bcedebdc" + integrity sha1-7ZQvgL6hlzuanzna4oq3lrzt69w= dependencies: "@floating-ui/react" "^0.23.0" + "@fluentui/react-overflow" "^9.0.19" "@internationalized/date" "^3.0.0" - "@salt-ds/core" "^1.8.0-rc.0" - "@salt-ds/icons" "^1.4.0" - "@salt-ds/styles" "^0.1.0" - "@salt-ds/window" "^0.1.0" + "@salt-ds/core" "^1.8.1" + "@salt-ds/icons" "^1.6.0" + "@salt-ds/styles" "^0.1.1" + "@salt-ds/window" "^0.1.1" aria-hidden "^1.1.1" attr-accept "^2.0.0" clipboard-copy "^4.0.1" - clsx "^1.2.1" + clsx "^2.0.0" compute-scroll-into-view "^3.0.0" deepmerge "^4.2.2" no-scroll "^2.1.1" @@ -2453,16 +2565,26 @@ resolved "https://registry.yarnpkg.com/@salt-ds/styles/-/styles-0.1.0.tgz#7cf5da1fe081f7480b9835a37fdb0c1eeb3a8f70" integrity sha512-OjQyiHiIGlNbS9rO8jVHNFk8uD5noOtSSCAiEPHJjikFflz0BrdO8gUwU4lQseEyFSpz9vK2WIdhwYYYWdIlOQ== -"@salt-ds/theme@^1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@salt-ds/theme/-/theme-1.5.1.tgz#3bcb967b1d0dfaa42d1df620505a124ee243e468" - integrity sha512-zTRzis+jql2gCEuxWhc2cupKgyOF9UoH8wlYNDaHC9VVFRh1O7InHgxtcsDuZTjfsdFahrScK2BCvEORgBpLMA== +"@salt-ds/styles@^0.1.1": + version "0.1.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@salt-ds/styles/-/styles-0.1.1.tgz#94ad206fab56cc2675a664661bdd6e67aae7c230" + integrity sha1-lK0gb6tWzCZ1pmRmG91uZ6rnwjA= + +"@salt-ds/theme@^1.8.0": + version "1.8.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@salt-ds/theme/-/theme-1.8.0.tgz#b663d7cee17b0e9f684a774b186d3ab7278803e2" + integrity sha1-tmPXzuF7Dp9oSndLGG06tyeIA+I= "@salt-ds/window@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@salt-ds/window/-/window-0.1.0.tgz#5f0d9fd92e5a95cd3bcc809cb676e538d39f9d34" integrity sha512-ApE9dvCMDzUkW5NewfMLfw3FLpq+LdlfuHUZNlrMiyYBth1TBRNrAvhN4XkKkneI9OVCs9K1y7S1uWku0tcL6g== +"@salt-ds/window@^0.1.1": + version "0.1.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@salt-ds/window/-/window-0.1.1.tgz#1c26ab1b3e7457d271b2dd8a58bfbb423aee2cbe" + integrity sha1-HCarGz50V9Jxst2KWL+7QjruLL4= + "@sinclair/typebox@^0.24.1": version "0.24.44" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.44.tgz#0a0aa3bf4a155a678418527342a3ee84bd8caa5c" @@ -3289,6 +3411,13 @@ dependencies: tslib "^2.4.0" +"@swc/helpers@^0.5.1": + version "0.5.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" + integrity sha1-heoMdkULYa19EKNwUCie3teDwn0= + dependencies: + tslib "^2.4.0" + "@swc/jest@^0.2.22": version "0.2.23" resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.23.tgz#0b7499d5927faaa090c5b7a4a0e35122968fef30" @@ -4966,6 +5095,11 @@ clsx@^1.2.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== +clsx@^2.0.0: + version "2.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + integrity sha1-EmWPP9mPr+YgdVlaXDDkPRjz0As= + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -5255,6 +5389,11 @@ csstype@^3.0.2, csstype@^3.0.7: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== +csstype@^3.1.2: + version "3.1.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha1-HUv51XLxHBQDHwQ24cELwfVx9Qs= + csv-generate@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" @@ -10957,6 +11096,13 @@ react-error-boundary@^3.1.4: dependencies: "@babel/runtime" "^7.12.5" +react-error-boundary@^4.0.11: + version "4.0.11" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/react-error-boundary/-/react-error-boundary-4.0.11.tgz#36bf44de7746714725a814630282fee83a7c9a1c" + integrity sha1-Nr9E3ndGcUclqBRjAoL+6Dp8mhw= + dependencies: + "@babel/runtime" "^7.12.5" + react-immutable-proptypes@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz#cce96d68cc3c18e89617cbf3092d08e35126af4a" @@ -11267,6 +11413,11 @@ regenerator-runtime@^0.13.11: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha1-XhnWjrEtSG95fhWjxqkY987F60U= + regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" @@ -11570,6 +11721,13 @@ robust-predicates@^3.0.0: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== +rtl-css-js@^1.16.1: + version "1.16.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80" + integrity sha1-S0i0NUsP+RejBIjZUQD79yGaPoA= + dependencies: + "@babel/runtime" "^7.1.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -12212,6 +12370,11 @@ stylis@4.1.3, stylis@^4.1.2: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== +stylis@^4.2.0: + version "4.3.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" + integrity sha1-q+MFpmn8PYd34Q7vz8c62GHFWIw= + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" From 44353fd85625a1748ade8bc38585853d013785b9 Mon Sep 17 00:00:00 2001 From: mark-tate <143323+mark-tate@users.noreply.github.com> Date: Fri, 6 Oct 2023 23:30:19 +0100 Subject: [PATCH 36/36] rebase on beta.51 --- package.json | 3 - packages/cli/package.json | 1 + packages/cli/src/index.ts | 2 +- packages/cli/src/serveStatic.ts | 41 +- packages/icons/package.json | 4 +- packages/mdx-components-client/package.json | 8 +- packages/mdx-components-server/package.json | 4 +- packages/site-components/package.json | 12 +- packages/site-mdx-loader/package.json | 10 +- packages/site/package.json | 2 +- .../site/public/search-data-condensed.json | 2 +- packages/theme/src/icon/index.ts | 2 - packages/theme/src/index.ts | 1 - yarn.lock | 427 +++++++++++++++--- 14 files changed, 404 insertions(+), 115 deletions(-) delete mode 100644 packages/theme/src/icon/index.ts diff --git a/package.json b/package.json index 64580a982..535dfdeeb 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,6 @@ "engines": { "node": ">=16.10.0 || >=18.0.0" }, - "bin": { - "mosaic": "yarn workspace @jpmorganchase/mosaic-cli" - }, "scripts": { "build:site": "turbo run build --filter=@jpmorganchase/mosaic-site", "build": "turbo run build", diff --git a/packages/cli/package.json b/packages/cli/package.json index 4f13f3472..f929842e3 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,6 +49,7 @@ "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.51", "@aws-sdk/client-s3": "^3.359.0", "@fastify/middie": "^8.3.0", + "@fastify/static": "^6.11.2", "commander": "^9.4.1", "cors": "^2.8.5", "deepmerge": "^4.2.2", diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index a9b4574bd..bea1ba080 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -22,7 +22,7 @@ const options = program.opts(); if (program.args[0] === 'export:static') { exportStatic(); } else if (program.args[0] === 'serve:static') { - serveStatic(path.resolve(process.cwd(), options.out)); + serveStatic(path.resolve(process.cwd(), options.out), options.port); } else { let config; if (options.config !== undefined) { diff --git a/packages/cli/src/serveStatic.ts b/packages/cli/src/serveStatic.ts index 54ec96e7e..5eefbac04 100644 --- a/packages/cli/src/serveStatic.ts +++ b/packages/cli/src/serveStatic.ts @@ -1,31 +1,24 @@ #!/usr/bin/env node -import fs from 'node:fs'; -import path from 'node:path'; -import express from 'express'; +import Fastify from 'fastify'; +import fastifyStatic from '@fastify/static'; -export default function serveStatic(staticPath, rootURL = 'mosaic/index.html', port = 3000) { - function loadPage(res, fullPath) { - const extension = path.extname(fullPath) || 'html'; - if (extension !== 'html') { - return; +export default async function serveStatic(staticPath, port) { + const start = async () => { + try { + await server.listen({ port }); + console.log(`[Mosaic] Listening on port ${port}`); + } catch (err) { + server.log.error(err); + process.exit(1); } - const fsPath = `${fullPath}.${extension}`; - fs.access(fsPath, fs.constants.F_OK, err => { - if (err) { - res.sendFile(path.join(staticPath, `404.html`)); - } else { - res.sendFile(fsPath); - } - }); - } + }; - const server = express(); - server.use(express.static(staticPath)); - server.get(/^\/$/, (_req, res) => { - loadPage(res, path.join(staticPath, rootURL)); + const server = Fastify(); + await server.register(fastifyStatic, { + root: staticPath }); - server.get(`*`, (req, res) => { - loadPage(res, path.join(staticPath, req.path)); + server.setNotFoundHandler((_request, reply) => { + reply.sendFile(`404.html`); }); - server.listen(port, () => console.log(`Server is listening on port ${port}`)); + await start(); } diff --git a/packages/icons/package.json b/packages/icons/package.json index 393993a83..7eeb7163f 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-icons", "description": "Mosaic - Icons", - "version": "0.1.0-beta.47", + "version": "0.1.0-beta.51", "author": "", "license": "Apache-2.0", "repository": { @@ -41,7 +41,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", "@salt-ds/core": "^1.8.0-rc.0" }, "peerDependencies": { diff --git a/packages/mdx-components-client/package.json b/packages/mdx-components-client/package.json index b74abac71..9d3c59efe 100644 --- a/packages/mdx-components-client/package.json +++ b/packages/mdx-components-client/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-client", "description": "Mosaic - Markdown Components", - "version": "0.1.0-beta.47", + "version": "0.1.0-beta.51", "author": "", "license": "Apache-2.0", "repository": { @@ -40,9 +40,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-components": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-components": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", "clsx": "^2.0.0", "hoist-non-react-statics": "^3.3.2", "prism-react-renderer": "^1.1.1", diff --git a/packages/mdx-components-server/package.json b/packages/mdx-components-server/package.json index bd0b59dcd..fecfcb294 100644 --- a/packages/mdx-components-server/package.json +++ b/packages/mdx-components-server/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-mdx-components-server", "description": "Mosaic - MDX Components", - "version": "0.1.0-beta.47", + "version": "0.1.0-beta.51", "author": "", "license": "Apache-2.0", "repository": { @@ -40,7 +40,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.51", "@mdx-js/mdx": "^2.3.0" }, "peerDependencies": { diff --git a/packages/site-components/package.json b/packages/site-components/package.json index 4bcc77e92..8d94461c1 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -1,6 +1,6 @@ { "name": "@jpmorganchase/mosaic-site-components", - "version": "0.1.0-beta.47", + "version": "0.1.0-beta.51", "license": "Apache-2.0", "description": "Mosaic - Site components", "repository": { @@ -40,11 +40,11 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-components": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-open-api-component": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-theme": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-components": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-open-api-component": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.51", "@salt-ds/core": "^1.8.1", "@salt-ds/lab": "1.0.0-alpha.16", "@types/mdast": "^3.0.0", diff --git a/packages/site-mdx-loader/package.json b/packages/site-mdx-loader/package.json index 3bbf0f694..928bdd34c 100644 --- a/packages/site-mdx-loader/package.json +++ b/packages/site-mdx-loader/package.json @@ -1,7 +1,7 @@ { "name": "@jpmorganchase/mosaic-site-mdx-loader", "description": "Mosaic - MDX Site Loader", - "version": "0.1.0-beta.47", + "version": "0.1.0-beta.51", "author": "", "license": "Apache-2.0", "repository": { @@ -29,7 +29,7 @@ "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { - "@jpmorganchase/mosaic-types": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-types": "^0.1.0-beta.51", "del-cli": "^4.0.1", "esbuild": "0.17.19", "esbuild-node-externals": "^1.7.0", @@ -37,9 +37,9 @@ "typescript": "^4.8.3" }, "dependencies": { - "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-store": "^0.1.0-beta.47", - "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.47", + "@jpmorganchase/mosaic-mdx-components-client": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.51", + "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.51", "@types/node": "^18.15.3", "deepmerge": "^4.2.2", "gray-matter": "^4.0.3", diff --git a/packages/site/package.json b/packages/site/package.json index 61c1084e0..e4cc7df8e 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -26,7 +26,7 @@ "e2e": "npx playwright test", "e2e:codegen": "npx playwright codegen localhost:3000", "serve:fs": "yarn mosaic serve -c ./mosaic.config.mjs -p 8080", - "serve:static": "yarn mosaic serve:static -o ./out", + "serve:static": "yarn mosaic serve:static -o ./out -p 3000", "serve": "concurrently --kill-others \"yarn dev\" \"yarn mosaic serve -c ./mosaic.config.mjs\" -p 8080" }, "dependencies": { diff --git a/packages/site/public/search-data-condensed.json b/packages/site/public/search-data-condensed.json index 73f434705..4f52bb763 100644 --- a/packages/site/public/search-data-condensed.json +++ b/packages/site/public/search-data-condensed.json @@ -1 +1 @@ -[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Page Templates","route":"/mosaic/author/page-templates"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Admin","route":"/mosaic/configure/admin/index"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$afterSource","route":"/mosaic/configure/plugins/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/before-send"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/should-clear-cache"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"}] \ No newline at end of file +[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Page Templates","route":"/mosaic/author/page-templates"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Admin","route":"/mosaic/configure/admin/index"},{"title":"Detail Highlight","route":"/mosaic/configure/layouts/detail-highlight"},{"title":"Detail Overview","route":"/mosaic/configure/layouts/detail-overview"},{"title":"Detail Technical","route":"/mosaic/configure/layouts/detail-technical"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Landing Layout","route":"/mosaic/configure/layouts/landing"},{"title":"Product Discover Layout","route":"/mosaic/configure/layouts/product-discover"},{"title":"Product Preview Layout","route":"/mosaic/configure/layouts/product-preview"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$AliasPlugin","route":"/mosaic/configure/plugins/alias-plugin"},{"title":"BreadcrumbsPlugin","route":"/mosaic/configure/plugins/breadcrumbs-plugin"},{"title":"BrokenLinksPlugin","route":"/mosaic/configure/plugins/broken-links-plugin"},{"title":"$CodeModPlugin","route":"/mosaic/configure/plugins/codemod-plugin"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"LazyPagePlugin","route":"/mosaic/configure/plugins/lazy-page-plugin"},{"title":"PagesWithoutFileExtPlugin","route":"/mosaic/configure/plugins/pages-wthout-extensions-plugin"},{"title":"PublicAssetsPlugin","route":"/mosaic/configure/plugins/public-assets-plugin"},{"title":"ReadingTimePlugin","route":"/mosaic/configure/plugins/reading-time-plugin"},{"title":"$RefPlugin","route":"/mosaic/configure/plugins/ref-plugin"},{"title":"SearchIndexPlugin","route":"/mosaic/configure/plugins/search-index-plugin"},{"title":"SharedConfigPlugin","route":"/mosaic/configure/plugins/shared-config-plugin"},{"title":"SidebarPlugin","route":"/mosaic/configure/plugins/sidebar-plugin"},{"title":"SiteMapPlugin","route":"/mosaic/configure/plugins/site-map-plugin"},{"title":"$TagPlugin","route":"/mosaic/configure/plugins/tag-plugin"},{"title":"TableOfContentsPlugin","route":"/mosaic/configure/plugins/toc-plugin"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"},{"title":"$afterSource","route":"/mosaic/configure/plugins/lifecycle/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/lifecycle/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/lifecycle/before-send"},{"title":"Lifecycle Events","route":"/mosaic/configure/plugins/lifecycle/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/lifecycle/should-clear-cache"},{"title":"shouldUpdateNamespaceSources","route":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources"}] \ No newline at end of file diff --git a/packages/theme/src/icon/index.ts b/packages/theme/src/icon/index.ts deleted file mode 100644 index dc6364acf..000000000 --- a/packages/theme/src/icon/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './icons.css'; -export * from './icons'; diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts index 8821dbec6..6b395746f 100644 --- a/packages/theme/src/index.ts +++ b/packages/theme/src/index.ts @@ -23,7 +23,6 @@ export * from './config'; export * from './feature'; export * from './grid'; export * from './hero'; -export * from './icon'; export * from './impact'; export * from './link'; export * from './list'; diff --git a/yarn.lock b/yarn.lock index fb6764700..314328e89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1647,6 +1647,70 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@fastify/accept-negotiator@^1.0.0": + version "1.1.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff" + integrity sha1-wcZrO3ccCXQqVN1byHxYL2sGMP8= + +"@fastify/ajv-compiler@^3.5.0": + version "3.5.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz#459bff00fefbf86c96ec30e62e933d2379e46670" + integrity sha1-RZv/AP77+GyW7DDmLpM9I3nkZnA= + dependencies: + ajv "^8.11.0" + ajv-formats "^2.1.1" + fast-uri "^2.0.0" + +"@fastify/deepmerge@^1.0.0": + version "1.3.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/deepmerge/-/deepmerge-1.3.0.tgz#8116858108f0c7d9fd460d05a7d637a13fe3239a" + integrity sha1-gRaFgQjwx9n9Rg0Fp9Y3oT/jI5o= + +"@fastify/error@^3.2.0": + version "3.4.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/error/-/error-3.4.0.tgz#30df6601f4edce57a05ec5caaa90a28025a8554a" + integrity sha1-MN9mAfTtzlegXsXKqpCigCWoVUo= + +"@fastify/fast-json-stringify-compiler@^4.3.0": + version "4.3.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz#5df89fa4d1592cbb8780f78998355feb471646d5" + integrity sha1-XfifpNFZLLuHgPeJmDVf60cWRtU= + dependencies: + fast-json-stringify "^5.7.0" + +"@fastify/middie@^8.3.0": + version "8.3.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/middie/-/middie-8.3.0.tgz#1325e9e4373c98d69366d1e38211337dee1b9ccd" + integrity sha1-EyXp5Dc8mNaTZtHjghEzfe4bnM0= + dependencies: + "@fastify/error" "^3.2.0" + fastify-plugin "^4.0.0" + path-to-regexp "^6.1.0" + reusify "^1.0.4" + +"@fastify/send@^2.0.0": + version "2.1.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/send/-/send-2.1.0.tgz#1aa269ccb4b0940a2dadd1f844443b15d8224ea0" + integrity sha1-GqJpzLSwlAotrdH4REQ7FdgiTqA= + dependencies: + "@lukeed/ms" "^2.0.1" + escape-html "~1.0.3" + fast-decode-uri-component "^1.0.1" + http-errors "2.0.0" + mime "^3.0.0" + +"@fastify/static@^6.11.2": + version "6.11.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@fastify/static/-/static-6.11.2.tgz#1fe40c40daf055a28d29db807b459fcff431d9b6" + integrity sha1-H+QMQNrwVaKNKduAe0Wfz/Qx2bY= + dependencies: + "@fastify/accept-negotiator" "^1.0.0" + "@fastify/send" "^2.0.0" + content-disposition "^0.5.3" + fastify-plugin "^4.0.0" + glob "^8.0.1" + p-limit "^3.1.0" + "@floating-ui/core@^1.2.6": version "1.2.6" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.6.tgz#d21ace437cc919cdd8f1640302fa8851e65e75c0" @@ -2261,6 +2325,11 @@ dependencies: "@lexical/offset" "0.11.1" +"@lukeed/ms@^2.0.1": + version "2.0.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/@lukeed/ms/-/ms-2.0.1.tgz#3c2bbc258affd9cc0e0cc7828477383c73afa6ee" + integrity sha1-PCu8JYr/2cwODMeChHc4PHOvpu4= + "@manypkg/find-root@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" @@ -4178,6 +4247,18 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha1-6vVNU7YrrkE46AnKIlyEOabvs5I= + dependencies: + event-target-shim "^5.0.0" + +abstract-logging@^2.0.1: + version "2.0.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" + integrity sha1-aww3HfIS23EptX0uf88oK4vxyDk= + accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -4262,6 +4343,13 @@ ahocorasick@1.0.2: resolved "https://registry.yarnpkg.com/ahocorasick/-/ahocorasick-1.0.2.tgz#9eee93aef9d02bfb476d9b648d9b7a40ef2fd500" integrity sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA== +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha1-bmaUAGWet0lzu/LjMycYCgmWtSA= + dependencies: + ajv "^8.0.0" + ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -4272,6 +4360,16 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0: + version "8.12.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha1-0aBScyPiL1NWLFZ8AJkVd9++GdE= + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ajv@^8.0.1: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" @@ -4336,6 +4434,11 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +archy@^1.0.0: + version "1.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -4478,6 +4581,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha1-YCzUtG6EStTv/JKoARo8RuAjjcI= +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha1-64W3emAfyTLP5DLFrNNkqeLJB1s= + attr-accept@^2.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" @@ -4495,6 +4603,15 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +avvio@^8.2.1: + version "8.2.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/avvio/-/avvio-8.2.1.tgz#b5a482729847abb84d5aadce06511c04a0a62f82" + integrity sha1-taSCcphHq7hNWq3OBlEcBKCmL4I= + dependencies: + archy "^1.0.0" + debug "^4.0.0" + fastq "^1.6.1" + axe-core@^4.4.3: version "4.5.0" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.0.tgz#6efe2ecdba205fcc9d7ddb3d48c2cf630f70eb5e" @@ -4642,24 +4759,6 @@ body-parser@1.20.0: type-is "~1.6.18" unpipe "1.0.0" -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - bowser@^2.11.0: version "2.11.0" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -4747,6 +4846,14 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha1-Ks5XhFnMj74qcKqo9S7mO2p0xsY= + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + busboy@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" @@ -5209,7 +5316,7 @@ constant-case@^3.0.4: tslib "^2.0.3" upper-case "^2.0.2" -content-disposition@0.5.4: +content-disposition@0.5.4, content-disposition@^0.5.3: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha1-i4K076yCUSoCuwsdzsnSxejrW/4= @@ -6599,6 +6706,11 @@ event-target-polyfill@^0.0.3: resolved "https://registry.yarnpkg.com/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz#ed373295f3b257774b5d75afb2599331d9f3406c" integrity sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha1-XU0+vflYPWOlMzzi3rdICrKwV4k= + events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -6710,43 +6822,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -express@^4.18.2: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -6773,6 +6848,16 @@ external-editor@^3.0.3, external-editor@^3.1.0: iconv-lite "^0.4.24" tmp "^0.0.33" +fast-content-type-parse@^1.0.0: + version "1.1.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz#4087162bf5af3294d4726ff29b334f72e3a1092c" + integrity sha1-QIcWK/WvMpTUcm/ymzNPcuOhCSw= + +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" + integrity sha1-Rvi2wisw/3qBNX1PWav66TggJUM= + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -6815,11 +6900,40 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM= +fast-json-stringify@^5.7.0: + version "5.8.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz#b229ed01ac5f92f3b82001a916c31324652f46d7" + integrity sha1-sintAaxfkvO4IAGpFsMTJGUvRtc= + dependencies: + "@fastify/deepmerge" "^1.0.0" + ajv "^8.10.0" + ajv-formats "^2.1.1" + fast-deep-equal "^3.1.3" + fast-uri "^2.1.0" + rfdc "^1.2.0" + fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-querystring@^1.0.0: + version "1.1.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" + integrity sha1-ptJJN7T8b3kbTuMdy29Trq+4n1M= + dependencies: + fast-decode-uri-component "^1.0.1" + +fast-redact@^3.1.1: + version "3.3.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" + integrity sha1-fIPOOnvkiYJBpGVg1R3hD2U/djQ= + +fast-uri@^2.0.0, fast-uri@^2.1.0: + version "2.2.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" + integrity sha1-UZoPhJvvcUqtEOl1PWnY91j3RFo= + fast-xml-parser@4.2.5: version "4.2.5" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" @@ -6827,6 +6941,33 @@ fast-xml-parser@4.2.5: dependencies: strnum "^1.0.5" +fastify-plugin@^4.0.0, fastify-plugin@^4.5.1: + version "4.5.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fastify-plugin/-/fastify-plugin-4.5.1.tgz#44dc6a3cc2cce0988bc09e13f160120bbd91dbee" + integrity sha1-RNxqPMLM4JiLwJ4T8WASC72R2+4= + +fastify@^4.23.2: + version "4.23.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fastify/-/fastify-4.23.2.tgz#7072f04b544540d2523afb4a54d4095d187f5444" + integrity sha1-cHLwS1RFQNJSOvtKVNQJXRh/VEQ= + dependencies: + "@fastify/ajv-compiler" "^3.5.0" + "@fastify/error" "^3.2.0" + "@fastify/fast-json-stringify-compiler" "^4.3.0" + abstract-logging "^2.0.1" + avvio "^8.2.1" + fast-content-type-parse "^1.0.0" + fast-json-stringify "^5.7.0" + find-my-way "^7.6.0" + light-my-request "^5.9.1" + pino "^8.12.0" + process-warning "^2.2.0" + proxy-addr "^2.0.7" + rfdc "^1.3.0" + secure-json-parse "^2.5.0" + semver "^7.5.0" + toad-cache "^3.2.0" + fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -6834,6 +6975,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fastq@^1.6.1: + version "1.15.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha1-0E0HxqKmj+RZn+qNLhA6k3+uazo= + dependencies: + reusify "^1.0.4" + fault@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" @@ -6882,6 +7030,15 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +find-my-way@^7.6.0: + version "7.6.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/find-my-way/-/find-my-way-7.6.2.tgz#4dd40200d3536aeef5c7342b10028e04cf79146c" + integrity sha1-TdQCANNTau71xzQrEAKOBM95FGw= + dependencies: + fast-deep-equal "^3.1.3" + fast-querystring "^1.0.0" + safe-regex2 "^2.0.0" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -7178,6 +7335,17 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.1.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4= + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -8754,6 +8922,15 @@ lexical@^0.11.1: resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.11.1.tgz#a4ca061c16d9798b3c0b9f2f8e89cc077385e4ea" integrity sha512-PhAGADxqzwJldmkVK5tvkaARTULCdeJjfhxWTnJQXTAlApE9heJir7SWxbxeUx1G5gdKZQFicGhOQlDXJmma2Q== +light-my-request@^5.9.1: + version "5.11.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/light-my-request/-/light-my-request-5.11.0.tgz#90e446c303b3a47b59df38406d5f5c2cf224f2d1" + integrity sha1-kORGwwOzpHtZ3zhAbV9cLPIk8tE= + dependencies: + cookie "^0.5.0" + process-warning "^2.0.0" + set-cookie-parser "^2.4.1" + lilconfig@2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" @@ -9803,6 +9980,11 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE= +mime@^3.0.0: + version "3.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha1-s3RVDco6DBhEOwyVCmpY8ZMc96c= + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -9842,6 +10024,13 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY= + dependencies: + brace-expansion "^2.0.1" + minimatch@^7.4.3: version "7.4.6" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" @@ -10342,6 +10531,11 @@ oidc-token-hash@^5.0.1: resolved "https://registry.yarnpkg.com/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz#ae6beec3ec20f0fd885e5400d175191d6e2f10c6" integrity sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ== +on-exit-leak-free@^2.1.0: + version "2.1.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + integrity sha1-/tGVyevdt9nkw4Qvk/KBrI2t07g= + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -10671,7 +10865,7 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^6.2.0: +path-to-regexp@^6.1.0, path-to-regexp@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== @@ -10726,6 +10920,36 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pino-abstract-transport@v1.1.0: + version "1.1.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" + integrity sha1-CD2Y+WYmIWRQSvuYm8zQX2ZZN6g= + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + +pino-std-serializers@^6.0.0: + version "6.2.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" + integrity sha1-2am18rmkAkhqX8TbCnN1cKhgqrM= + +pino@^8.12.0: + version "8.15.6" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/pino/-/pino-8.15.6.tgz#55c361e3c4dadabbbb47543e0d3bf5759fe9c052" + integrity sha1-VcNh48Ta2ru7R1Q+DTv1dZ/pwFI= + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport v1.1.0 + pino-std-serializers "^6.0.0" + process-warning "^2.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^3.1.0" + thread-stream "^2.0.0" + pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -10861,6 +11085,11 @@ prismjs@~1.27.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +process-warning@^2.0.0, process-warning@^2.2.0: + version "2.2.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/process-warning/-/process-warning-2.2.0.tgz#008ec76b579820a8e5c35d81960525ca64feb626" + integrity sha1-AI7Ha1eYIKjlw12BlgUlymT+tiY= + process@^0.11.10: version "0.11.10" resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -10910,7 +11139,7 @@ property-information@^6.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.2.0.tgz#b74f522c31c097b5149e3c3cb8d7f3defd986a1d" integrity sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg== -proxy-addr@~2.0.7: +proxy-addr@^2.0.7, proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU= @@ -10958,7 +11187,7 @@ qs@6.10.3: dependencies: side-channel "^1.0.4" -qs@6.11.0, qs@^6.10.2: +qs@^6.10.2: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== @@ -10980,6 +11209,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha1-SSkii7xyTfrEPg77BYyve2z7YkM= +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha1-k+9t2NNFPLx5cN1hT61MWVTWtac= + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -11335,6 +11569,17 @@ readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.0.0: + version "4.4.2" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/readable-stream/-/readable-stream-4.4.2.tgz#e6aced27ad3b9d726d8308515b9a1b98dc1b9d13" + integrity sha1-5qztJ607nXJtgwhRW5obmNwbnRM= + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -11347,6 +11592,11 @@ reading-time@^1.5.0: resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" integrity sha1-0qfxtgV8suFpvq+HETzDQRtbxbs= +real-require@^0.2.0: + version "0.2.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + integrity sha1-IJYy3qGBC+KuBjpqwIT+5+M/ung= + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -11682,7 +11932,7 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@^0.2.0: +ret@^0.2.0, ret@~0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== @@ -11692,7 +11942,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY= -rfdc@^1.3.0: +rfdc@^1.2.0, rfdc@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== @@ -11785,6 +12035,18 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-regex2@^2.0.0: + version "2.0.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/safe-regex2/-/safe-regex2-2.0.0.tgz#b287524c397c7a2994470367e0185e1916b1f5b9" + integrity sha1-sodSTDl8eimURwNn4BheGRax9bk= + dependencies: + ret "~0.2.0" + +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha1-E4yEtvbts9tfjvPvcRW49VzL+IY= + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -11817,6 +12079,11 @@ section-matter@^1.0.0: extend-shallow "^2.0.1" kind-of "^6.0.0" +secure-json-parse@^2.5.0: + version "2.7.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" + integrity sha1-Wl+c1q5H3yPboxUe3QaFXUfgmGI= + "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -11827,7 +12094,7 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: +semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -11884,6 +12151,11 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-cookie-parser@^2.4.1: + version "2.6.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" + integrity sha1-Exkh5Q9i/xpmpGHX1i17IdXRWlE= + set-cookie-parser@^2.4.6: version "2.5.1" resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz#ddd3e9a566b0e8e0862aca974a6ac0e01349430b" @@ -12046,6 +12318,13 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" +sonic-boom@^3.1.0: + version "3.6.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/sonic-boom/-/sonic-boom-3.6.0.tgz#24b9b45cee54910701dc6a80025d7c621f685aac" + integrity sha1-JLm0XO5UkQcB3GqAAl18Yh9oWqw= + dependencies: + atomic-sleep "^1.0.0" + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -12141,6 +12420,11 @@ split.js@^1.6.0: resolved "https://registry.yarnpkg.com/split.js/-/split.js-1.6.5.tgz#f7f61da1044c9984cb42947df4de4fadb5a3f300" integrity sha512-mPTnGCiS/RiuTNsVhCm9De9cCAUsrNFFviRbADdKiiV+Kk8HKp/0fWu7Kr8pi3/yBmsqLFHuXGT9UUZ+CNLwFw== +split2@^4.0.0: + version "4.2.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha1-ycWSCQTRSLqwufZxRfJFqGqtv6Q= + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -12268,7 +12552,7 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -12537,6 +12821,13 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +thread-stream@^2.0.0: + version "2.4.1" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/thread-stream/-/thread-stream-2.4.1.tgz#6d588b14f0546e59d3f306614f044bc01ce43351" + integrity sha1-bViLFPBUblnT8wZhTwRLwBzkM1E= + dependencies: + real-require "^0.2.0" + through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -12578,6 +12869,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toad-cache@^3.2.0: + version "3.3.0" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/toad-cache/-/toad-cache-3.3.0.tgz#5b7dc67b36bc8b960567eb77bdf9ac6c26f204a1" + integrity sha1-W33Geza8i5YFZ+t3vfmsbCbyBKE= + toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" @@ -13740,6 +14036,11 @@ zod@^3.19.1: resolved "https://registry.yarnpkg.com/zod/-/zod-3.19.1.tgz#112f074a97b50bfc4772d4ad1576814bd8ac4473" integrity sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA== +zod@^3.22.3: + version "3.22.4" + resolved "https://artifacts.jpmchase.net/artifactory/api/npm/npm/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha1-8xw6k4b2Gx8iivVvqpJV6EXPP/8= + zustand@^4.1.1: version "4.3.2" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.2.tgz#bb121fcad84c5a569e94bd1a2695e1a93ba85d39"
+); diff --git a/packages/mdx-components-client/src/Th.tsx b/packages/mdx-components-client/src/Th.tsx new file mode 100644 index 000000000..8e6daadcc --- /dev/null +++ b/packages/mdx-components-client/src/Th.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import classnames from 'clsx'; +import { th } from '@jpmorganchase/mosaic-theme'; + +export interface ThProps extends React.HTMLProps {} + +export const Th: React.FC> = ({ className, ...rest }) => ( + +); diff --git a/packages/mdx-components-client/src/Thead.tsx b/packages/mdx-components-client/src/Thead.tsx new file mode 100644 index 000000000..a355e5a3a --- /dev/null +++ b/packages/mdx-components-client/src/Thead.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import classnames from 'clsx'; +import { thead } from '@jpmorganchase/mosaic-theme'; + +export interface TheadProps extends React.HTMLProps {} + +export const Thead: React.FC> = ({ className, ...rest }) => ( +