-
-
Notifications
You must be signed in to change notification settings - Fork 10.1k
Vue: Replace vue-docgen-api with Volar vue-component-meta #22285
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
203 commits
Select commit
Hold shift + click to select a range
fecc165
add component meta 1.5.4 + tests
chakAs3 1744729
upgrade vue-component-meta
chakAs3 ee87fb7
remoe "vue-docgen-loader"
chakAs3 2d155af
run yarn to update deps
chakAs3 50f37e4
Merge branch 'chaks/fix-sandbox-nx-deps' into chaks/vue-component-meta
chakAs3 c15f27a
add some logs
chakAs3 8f47cb1
add all type of components + tests
chakAs3 23e0ab7
remove the undefined string from event descriptions
chakAs3 c730333
Merge branch 'next' into chaks/vue-component-meta
chakAs3 dd02f17
refactory extractArgTypes vue3
chakAs3 d4c34ef
refactory stories for vue-component meta
chakAs3 5f2f547
add unity tests for extractArgTypes
chakAs3 291ec4c
refactory component meta plugin
chakAs3 bfb8bd9
Merge branch 'next' into chaks/vue-component-meta
chakAs3 7c18b7b
refactory export function
chakAs3 a37d65d
refactory for better types
chakAs3 4e87c9c
remove vue-component-meta from main project, keep it only in packag…
chakAs3 975ddd7
revert back nx version update for darwin
chakAs3 815f0e9
add vue3 meta-component support
chakAs3 9a7cf88
Merge branch 'next' into chaks/vue-component-meta
chakAs3 b306138
refactory to pass type check
chakAs3 c84d8f8
Merge branch 'next' into chaks/vue-component-meta
chakAs3 045b450
update vue-component-meta
chakAs3 c781baa
fix type check for addon docs
chakAs3 e8870a0
Merge branch 'next' into chaks/vue-component-meta
chakAs3 8f5f871
refactory for type check
chakAs3 5cd3604
Merge branch 'next' into chaks/vue-component-meta
chakAs3 3c26a03
revert to next
chakAs3 c377d73
Merge branch 'next' into chaks/vue-component-meta
chakAs3 29fce71
update vue component meta
chakAs3 3fd9b33
Merge branch 'next' into chaks/vue-component-meta
chakAs3 9c7a13d
fix type checking errors
chakAs3 acf6c26
Merge branch 'next' into chaks/vue-component-meta
chakAs3 b05339a
Merge branch 'next' into chaks/vue-component-meta
chakAs3 184e71d
new defineComponent API, passing setup function as param
chakAs3 f47be75
reset vue-component-meta to stable version
chakAs3 52fe01c
i remove the Omit cause i don't see the purpose of it
chakAs3 d566404
add vue 3.3.0 peerDeps
chakAs3 52bc921
fix type check
chakAs3 729fe65
fix type check
chakAs3 e1ad917
fix webpack vue sandbox deps
chakAs3 2ba5cf7
disable controls for exposed and events and fix Record type control
chakAs3 c221ff7
update the unit test
chakAs3 80456d7
add meta load for vue on webpack
chakAs3 ade42a3
Merge branch 'next' into chaks/vue-component-meta
chakAs3 a3b474b
revert back webpack
chakAs3 3457d60
Merge branch 'next' into chaks/vue-component-meta
chakAs3 330ff55
lockfile chnge
chakAs3 693381b
remove meta-loader for later
chakAs3 9cee347
update vue-component-meta to fix typescript peerDeps
chakAs3 3992919
Merge branch 'next' into chaks/vue-component-meta
chakAs3 42c907d
add typescript to deps
chakAs3 bfad9fc
remove display nested props info for now
chakAs3 fe0c4ec
fix unit-test and update vue-jest
chakAs3 addf64d
remove nested type info dispay on vue2 for now
chakAs3 7e4c4c9
Merge branch 'next' into chaks/vue-component-meta
chakAs3 27455c9
add typescript as peerDeps, required by vue-component-meta
chakAs3 a8e39e7
add typescript peerDeps for @storybook/vue
chakAs3 8db7905
fix typeName index
chakAs3 bad08e7
set defaut control for boolean
chakAs3 3892050
add description to test component
chakAs3 f413b93
fix story template invalide event
chakAs3 1f99b2d
refactory and cleanup
chakAs3 91c807c
fix vue2 deps
chakAs3 c2404bb
add onClick to argTypes to pass to e2e test
chakAs3 da10cff
fix test story args type
chakAs3 ffc29d8
fix onClick action log cli
chakAs3 7c98b8d
add more get control info
chakAs3 226400c
Merge branch 'next' into chaks/vue-component-meta
chakAs3 9a2b924
unit test changes
chakAs3 fd3a600
add extra type union prop in test story
chakAs3 0600ec7
add emits to component in order to expose the event
chakAs3 d52a733
Merge branch 'next' into chaks/vue-component-meta
chakAs3 7a96d9c
lockfile after install
chakAs3 4015a93
optional control.disable to match tests
chakAs3 f0f2336
add emits events
chakAs3 cdd6dcf
use consistent event attributes, remove unused code
chakAs3 64a9c4f
add description to example cli
chakAs3 52446b5
Merge branch 'next' into chaks/vue-component-meta
chakAs3 e08af56
Merge branch 'next' into chaks/vue-component-meta
chakAs3 4ef7b67
Merge branch 'next' into chaks/vue-component-meta
chakAs3 985d90d
vue tools version
chakAs3 b859b35
vue version
chakAs3 49323a3
Merge branch 'next' into chaks/vue-component-meta
chakAs3 45858bc
normalize the cli template. update vue2 deps
chakAs3 abeecca
Merge branch 'next' into chaks/vue-component-meta
chakAs3 9ef0eab
Merge branch 'next' into chaks/vue-component-meta
chakAs3 28f2f31
update meta-component to get new api type
chakAs3 2059de1
ajust cli template for types
chakAs3 881db6c
Merge branch 'next' into chaks/vue-component-meta
chakAs3 a4aed06
update vue-componen-meta
chakAs3 de3f548
adapt vue 2 to emits events
chakAs3 b0b8d8e
Merge branch 'next' into chaks/vue-component-meta
chakAs3 5bfdd33
remove unecessary deps
chakAs3 4305146
fix sub packages
chakAs3 411944c
set vue-template-compiler as devDep
chakAs3 367f0c0
fix out of project deps for vue-cli sandbox
chakAs3 4bb564b
fix type issue after api changes
chakAs3 1f4889b
Merge branch 'next' into chaks/vue-component-meta
chakAs3 0b71dcc
fix typo removed a line
chakAs3 7554510
clean up cli template code
chakAs3 a225ce5
Merge branch 'next' into chaks/vue-component-meta
chakAs3 8547960
Merge branch 'chaks/fix-ts-deps-react' into chaks/vue-component-meta
chakAs3 7e19547
Merge branch 'next' into chaks/vue-component-meta
chakAs3 26a79b3
Merge branch 'chaks/fix-ts-deps-react' into chaks/vue-component-meta
chakAs3 85b1741
Merge branch 'next' into chaks/vue-component-meta
chakAs3 f4adf08
generate yarn to fix unit-tests
chakAs3 74ec395
fix deps on vue3
chakAs3 209fe54
move vue-component-type-helpers to devDeps
chakAs3 f954f2c
no need to redeclare __STORYBOOK_ADDONS_CHANNEL__
chakAs3 6be4d3b
Merge branch 'chaks/vue-move-type-helpers-deps' into chaks/vue-compon…
chakAs3 3bd8831
move deps to right type
chakAs3 8c7afa0
Merge branch 'chaks/vue-move-type-helpers-deps' into chaks/vue-compon…
chakAs3 7f822b0
fix deps and cleanup
chakAs3 0b64013
generate lockfile
chakAs3 224deb2
Merge branch 'chaks/fix-ts-deps-react' into chaks/vue-move-type-helpe…
chakAs3 5a63650
Merge branch 'chaks/vue-move-type-helpers-deps' into chaks/vue-compon…
chakAs3 ac232dc
Merge branch 'chaks/fix-ts-deps-react' into chaks/vue-component-meta
chakAs3 72b8137
Merge branch 'next' into chaks/vue-component-meta
chakAs3 2940ff7
provide vue/compiler-core
chakAs3 953698c
update vue-component-meta & ajust extractArgTypes
chakAs3 dc6fd47
Merge branch 'next' into chaks/vue-component-meta
chakAs3 d0eddb6
update deps vue
chakAs3 35dfb9a
use getProjectRoot + add tsx,jsx
chakAs3 d76391e
add support JSX,expertName components,class & function
chakAs3 4ba2231
set es target 2021
chakAs3 56314ce
safe using component type
chakAs3 0586d82
refactory & update unit-tests
chakAs3 787edd3
add support for jsx & named export component
chakAs3 d27c4dc
refactor and cleanup fix some egdes
chakAs3 edce7aa
add tests stories for ts named export
chakAs3 cde0696
move typescript to peerDep
chakAs3 babd3a4
Merge branch 'next' into chaks/vue-component-meta
chakAs3 08bc358
generate lockfile
chakAs3 774f22f
use no ts typechecker
chakAs3 9726aa4
fix undefined type
chakAs3 1f28986
Merge branch 'next' into chaks/vue-component-meta
chakAs3 0f5eeab
Merge branch 'next' into chaks/vue-component-meta
chakAs3 9e65b62
generate lockfile
chakAs3 e7cab9e
Merge remote-tracking branch 'origin/next' into chaks/vue-component-meta
kasperpeulen 2b90791
Merge remote-tracking branch 'origin/next' into chaks/vue-component-meta
kasperpeulen bdd08f4
Fix yarn.lock
kasperpeulen 81eb09e
Don't change target in tsconfig.json
kasperpeulen 035010c
Move vue-component-type-helpers to normal deps
kasperpeulen d07bfc5
Merge branch 'next' into chaks/vue-component-meta
kasperpeulen 60b8540
Merge branch 'next' of https://github.com/storybookjs/storybook into …
chakAs3 41d2be4
upgrade component-meta
chakAs3 8fe06a9
Merge branch 'next' of https://github.com/storybookjs/storybook into …
chakAs3 93a3790
update deps and exclude stories files from check
chakAs3 f535efd
fix type check
chakAs3 02fd3c1
Merge branch 'next' of https://github.com/storybookjs/storybook into …
chakAs3 e0a27ca
Merge branch 'next' of https://github.com/storybookjs/storybook into …
chakAs3 f618233
Merge branch 'next' into chaks/vue-component-meta
yannbf bc68613
Merge branch 'next' into chaks/vue-component-meta
chakAs3 1ea44ac
Merge branch 'chaks/vue-component-meta' of https://github.com/storybo…
chakAs3 c00d17a
Merge branch next into chaks/vue-component-meta
chakAs3 800bb4f
refactory & cleanup to fix long time merge
chakAs3 b3d1020
refactory
chakAs3 f467388
refactory & cleanup
chakAs3 9b9cd5d
Merge branch 'next' into chaks/vue-component-meta
chakAs3 75e2ca9
Merge branch 'next' into chaks/vue-component-meta
chakAs3 337c0f6
fix linting
chakAs3 170ed94
Merge branch 'chaks/vue-component-meta' of https://github.com/storybo…
chakAs3 8d74d95
replace jest with vitest
chakAs3 70cd79a
Merge branch 'next' into chaks/vue-component-meta
chakAs3 f4b8636
added find-package-json
chakAs3 5198b6a
fix imports
chakAs3 b19dc7d
cleanup logs
chakAs3 d60d546
fix deps + types
chakAs3 81cc6a1
Merge branch 'next' into chaks/vue-component-meta
chakAs3 6d7087d
Merge branch 'next' into chaks/vue-component-meta
larsrickert 6000c7c
remove unwanted exposed slots/events
larsrickert 6566d07
remove unnecessary schema
larsrickert 9fae623
use project tsconfig for meta checker
larsrickert 63ec7a0
fix error for non-vue component exports from .ts files
larsrickert 75732a3
use fallback checker if no tsconfig.json exists
larsrickert 9b57d80
fix check CI
larsrickert 87d007d
add temp workaround for missing Volar event descriptions
larsrickert 226bf21
fix ReferenceError for re-exports
larsrickert 96c64cc
fix typo
larsrickert 80bb204
remove unused extends
larsrickert 624ddff
extract code to "createChecker" method
larsrickert d8e8640
Update code/frameworks/vue3-vite/src/plugins/vue-component-meta.ts
larsrickert 59743ea
Merge branch 'next' into chaks/vue-component-meta
chakAs3 f79c7cc
fix lint error
larsrickert 5832537
add temporary workaround for tsconfig with references
larsrickert c202721
prevent reference errors
larsrickert 21557c1
remove ts from runtime code
larsrickert 95acca3
add missing error handling
larsrickert 79c8078
Merge branch 'next' into chaks/vue-component-meta
larsrickert d5e7fdb
style: update code formatting
larsrickert dd85701
update exclude filter
larsrickert 07702dd
support both "vue-docgen-api" and "volar"
larsrickert e3a1d4a
rename "docgen-api" to "vue-docgen-api"
larsrickert e047e7b
rename "docgen-api" to "vue-docgen-api"
larsrickert e6c0cc3
use real framework options
larsrickert cd4fd8c
Merge branch 'next' into chaks/vue-component-meta
larsrickert 4b6f889
Merge branch 'next' into chaks/vue-component-meta
chakAs3 3ab790c
fix: update arg types extractor
larsrickert b47da2b
Merge branch 'next' into chaks/vue-component-meta
kasperpeulen ae87a4a
fix tests
larsrickert 388e29c
Merge branch 'chaks/vue-component-meta' of https://github.com/storybo…
larsrickert f910dcc
rename docgen option "volar" to "vue-component-meta"
larsrickert File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
253 changes: 253 additions & 0 deletions
253
code/frameworks/vue3-vite/src/plugins/vue-component-meta.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,253 @@ | ||
| import findPackageJson from 'find-package-json'; | ||
| import fs from 'fs/promises'; | ||
| import MagicString from 'magic-string'; | ||
| import path from 'path'; | ||
| import type { PluginOption } from 'vite'; | ||
| import { | ||
| TypeMeta, | ||
| createComponentMetaChecker, | ||
| createComponentMetaCheckerByJsonConfig, | ||
| type ComponentMeta, | ||
| type MetaCheckerOptions, | ||
| } from 'vue-component-meta'; | ||
| import { parseMulti } from 'vue-docgen-api'; | ||
|
|
||
| type MetaSource = { | ||
| exportName: string; | ||
| displayName: string; | ||
| sourceFiles: string; | ||
| } & ComponentMeta & | ||
| MetaCheckerOptions['schema']; | ||
|
|
||
| export async function vueComponentMeta(): Promise<PluginOption> { | ||
| const { createFilter } = await import('vite'); | ||
|
|
||
| // exclude stories, virtual modules and storybook internals | ||
| const exclude = | ||
| /\.stories\.(ts|tsx|js|jsx)$|^\/virtual:|^\/sb-preview\/|\.storybook\/.*\.(ts|js)$/; | ||
| const include = /\.(vue|ts|js|tsx|jsx)$/; | ||
| const filter = createFilter(include, exclude); | ||
|
|
||
| const checker = await createChecker(); | ||
|
|
||
| return { | ||
| name: 'storybook:vue-component-meta-plugin', | ||
| async transform(src, id) { | ||
| if (!filter(id)) return undefined; | ||
|
|
||
| try { | ||
| const exportNames = checker.getExportNames(id); | ||
| let componentsMeta = exportNames.map((name) => checker.getComponentMeta(id, name)); | ||
| componentsMeta = await applyTempFixForEventDescriptions(id, componentsMeta); | ||
|
|
||
| const metaSources: MetaSource[] = []; | ||
|
|
||
| componentsMeta.forEach((meta, index) => { | ||
| // filter out empty meta | ||
| const isEmpty = | ||
| !meta.props.length && !meta.events.length && !meta.slots.length && !meta.exposed.length; | ||
| if (isEmpty || meta.type === TypeMeta.Unknown) return; | ||
|
|
||
| const exportName = exportNames[index]; | ||
|
|
||
| const exposed = | ||
| // the meta also includes duplicated entries in the "exposed" array with "on" | ||
| // prefix (e.g. onClick instead of click), so we need to filter them out here | ||
| meta.exposed | ||
| .filter((expose) => { | ||
| let nameWithoutOnPrefix = expose.name; | ||
|
|
||
| if (nameWithoutOnPrefix.startsWith('on')) { | ||
| nameWithoutOnPrefix = lowercaseFirstLetter(expose.name.replace('on', '')); | ||
| } | ||
|
|
||
| const hasEvent = meta.events.find((event) => event.name === nameWithoutOnPrefix); | ||
| return !hasEvent; | ||
| }) | ||
| // remove unwanted duplicated "$slots" expose | ||
| .filter((expose) => { | ||
| if (expose.name === '$slots') { | ||
| const slotNames = meta.slots.map((slot) => slot.name); | ||
| return !slotNames.every((slotName) => expose.type.includes(slotName)); | ||
| } | ||
| return true; | ||
| }); | ||
|
|
||
| metaSources.push({ | ||
| exportName, | ||
| displayName: exportName === 'default' ? getFilenameWithoutExtension(id) : exportName, | ||
| ...meta, | ||
| exposed, | ||
| sourceFiles: id, | ||
| }); | ||
| }); | ||
|
|
||
| // if there is no component meta, return undefined | ||
| if (metaSources.length === 0) return undefined; | ||
|
|
||
| const s = new MagicString(src); | ||
|
|
||
| metaSources.forEach((meta) => { | ||
| const isDefaultExport = meta.exportName === 'default'; | ||
| const name = isDefaultExport ? '_sfc_main' : meta.exportName; | ||
|
|
||
| // we can only add the "__docgenInfo" to variables that are actually defined in the current file | ||
| // so e.g. re-exports like "export { default as MyComponent } from './MyComponent.vue'" must be ignored | ||
| // to prevent runtime errors | ||
| if (new RegExp(`export {.*${name}.*}`).test(src)) { | ||
| return; | ||
| } | ||
|
|
||
| if (!id.endsWith('.vue') && isDefaultExport) { | ||
| // we can not add the __docgenInfo if the component is default exported directly | ||
| // so we need to safe it to a variable instead and export default it instead | ||
| s.replace('export default ', 'const _sfc_main = '); | ||
| s.append('\nexport default _sfc_main;'); | ||
| } | ||
|
|
||
| s.append(`\n;${name}.__docgenInfo = ${JSON.stringify(meta)}`); | ||
| }); | ||
|
|
||
| return { | ||
| code: s.toString(), | ||
| map: s.generateMap({ hires: true, source: id }), | ||
| }; | ||
| } catch (e) { | ||
| return undefined; | ||
| } | ||
| }, | ||
| }; | ||
| } | ||
|
|
||
| /** | ||
| * Creates the vue-component-meta checker to use for extracting component meta/docs. | ||
| */ | ||
| async function createChecker() { | ||
| const checkerOptions: MetaCheckerOptions = { | ||
| forceUseTs: true, | ||
| noDeclarations: true, | ||
| printer: { newLine: 1 }, | ||
| }; | ||
|
|
||
| const projectRoot = getProjectRoot(); | ||
| const projectTsConfigPath = path.join(projectRoot, 'tsconfig.json'); | ||
|
|
||
| const defaultChecker = createComponentMetaCheckerByJsonConfig( | ||
| projectRoot, | ||
| { include: ['**/*'] }, | ||
| checkerOptions | ||
| ); | ||
|
|
||
| // prefer the tsconfig.json file of the project to support alias resolution etc. | ||
| if (await fileExists(projectTsConfigPath)) { | ||
| // tsconfig that uses references is currently not supported by vue-component-meta | ||
| // see: https://github.com/vuejs/language-tools/issues/3896 | ||
| // so we return the no-tsconfig defaultChecker if tsconfig references are found | ||
| // remove this workaround once the above issue is fixed | ||
| const references = await getTsConfigReferences(projectTsConfigPath); | ||
| if (references.length > 0) { | ||
| // TODO: paths/aliases are not resolvable, find workaround for this | ||
| return defaultChecker; | ||
| } | ||
| return createComponentMetaChecker(projectTsConfigPath, checkerOptions); | ||
| } | ||
|
|
||
| return defaultChecker; | ||
| } | ||
|
|
||
| /** | ||
| * Gets the absolute path to the project root. | ||
| */ | ||
| function getProjectRoot() { | ||
| const projectRoot = findPackageJson().next().value?.path ?? ''; | ||
|
|
||
| const currentFileDir = path.dirname(__filename); | ||
| const relativePathToProjectRoot = path.relative(currentFileDir, projectRoot); | ||
|
|
||
| return path.resolve(currentFileDir, relativePathToProjectRoot); | ||
| } | ||
|
|
||
| /** | ||
| * Gets the filename without file extension. | ||
| */ | ||
| function getFilenameWithoutExtension(filename: string) { | ||
| return path.parse(filename).name; | ||
| } | ||
|
|
||
| /** | ||
| * Lowercases the first letter. | ||
| */ | ||
| function lowercaseFirstLetter(string: string) { | ||
| return string.charAt(0).toLowerCase() + string.slice(1); | ||
| } | ||
|
|
||
| /** | ||
| * Checks whether the given file path exists. | ||
| */ | ||
| async function fileExists(fullPath: string) { | ||
| try { | ||
| await fs.stat(fullPath); | ||
| return true; | ||
| } catch { | ||
| return false; | ||
| } | ||
| } | ||
|
|
||
| /** | ||
| * Applies a temporary workaround/fix for missing event descriptions because | ||
| * Volar is currently not able to extract them. | ||
| * Will modify the events of the passed meta. | ||
| * Performance note: Based on some quick tests, calling "parseMulti" only takes a few milliseconds (8-20ms) | ||
| * so it should not decrease performance that much. Especially because it is only execute if the component actually | ||
| * has events. | ||
| * | ||
| * Check status of this Volar issue: https://github.com/vuejs/language-tools/issues/3893 | ||
| * and update/remove this workaround once Volar supports it: | ||
| * - delete this function | ||
| * - uninstall vue-docgen-api dependency | ||
| */ | ||
| async function applyTempFixForEventDescriptions(filename: string, componentMeta: ComponentMeta[]) { | ||
| // do not apply temp fix if no events exist for performance reasons | ||
| const hasEvents = componentMeta.some((meta) => meta.events.length); | ||
| if (!hasEvents) return componentMeta; | ||
|
|
||
| try { | ||
| const parsedComponentDocs = await parseMulti(filename); | ||
|
|
||
| // add event descriptions to the existing Volar meta if available | ||
| componentMeta.map((meta, index) => { | ||
| const eventsWithDescription = parsedComponentDocs[index].events; | ||
| if (!meta.events.length || !eventsWithDescription?.length) return meta; | ||
|
|
||
| meta.events = meta.events.map((event) => { | ||
| const description = eventsWithDescription.find((i) => i.name === event.name)?.description; | ||
| if (description) { | ||
| (event as typeof event & { description: string }).description = description; | ||
| } | ||
| return event; | ||
| }); | ||
|
|
||
| return meta; | ||
| }); | ||
| } catch { | ||
| // noop | ||
| } | ||
|
|
||
| return componentMeta; | ||
| } | ||
|
|
||
| /** | ||
| * Gets a list of tsconfig references for the given tsconfig path. | ||
| * This is only needed for the temporary workaround/fix for: | ||
| * https://github.com/vuejs/language-tools/issues/3896 | ||
| */ | ||
| async function getTsConfigReferences(tsConfigPath: string) { | ||
| try { | ||
| const content = JSON.parse(await fs.readFile(tsConfigPath, 'utf-8')); | ||
| if (!('references' in content) || !Array.isArray(content.references)) return []; | ||
| return content.references as unknown[]; | ||
| } catch { | ||
| // invalid project tsconfig | ||
| return []; | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.