Copy disabled (too large)
Download .txt
Showing preview only (23,526K chars total). Download the full file to get everything.
Repository: storybooks/storybook
Branch: next
Commit: 95aa11484a25
Files: 5188
Total size: 21.3 MB
Directory structure:
gitextract_tuwty4el/
├── .agents/
│ └── skills/
│ ├── canary/
│ │ └── SKILL.md
│ ├── fix-linting-types-on-pr/
│ │ └── SKILL.md
│ ├── github-qa-labels/
│ │ └── SKILL.md
│ ├── pr/
│ │ └── SKILL.md
│ └── storybook-upgrade/
│ └── SKILL.md
├── .circleci/
│ └── config.yml
├── .cursor/
│ ├── environment.json
│ └── rules/
│ └── spy-mocking.mdc
├── .cursorrules
├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── DISCUSSION_TEMPLATE/
│ │ ├── help.yml
│ │ ├── ideas.yml
│ │ └── rfc.yml
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ ├── tracking_issue.yml
│ │ └── update_docs.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── actions/
│ │ └── setup-node-and-install/
│ │ └── action.yml
│ ├── comments/
│ │ ├── good-first-issue.md
│ │ └── invalid-link.md
│ ├── copilot-mcp.json
│ └── workflows/
│ ├── code-simplifier.lock.yml
│ ├── code-simplifier.md
│ ├── copilot-setup-steps.yml
│ ├── cron-weekly.yml
│ ├── danger-js.yml
│ ├── duplicate-code-detector.lock.yml
│ ├── duplicate-code-detector.md
│ ├── fork-checks.yml
│ ├── generate-sandboxes.yml
│ ├── handle-release-branches.yml
│ ├── markdown-link-check-config.json
│ ├── nx.yml
│ ├── prepare-non-patch-release.yml
│ ├── prepare-patch-release.yml
│ ├── publish.yml
│ ├── shared/
│ │ ├── mood.md
│ │ └── reporting.md
│ ├── stale.yml
│ ├── triage.yml
│ └── trigger-circle-ci-workflow.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .lintstagedrc.mjs
├── .mailmap
├── .nvmrc
├── .nx/
│ └── workflows/
│ ├── agents.yaml
│ ├── distribution-config-daily.yaml
│ └── distribution-config.yaml
├── .oxfmtrc.json
├── .serena/
│ ├── .gitignore
│ ├── memories/
│ │ ├── project_overview.md
│ │ ├── style_and_conventions.md
│ │ ├── suggested_commands.md
│ │ └── task_completion_checklist.md
│ └── project.yml
├── .spelling
├── .vscode/
│ ├── extensions.json
│ ├── launch.json
│ └── settings.json
├── .yarn/
│ ├── patches/
│ │ ├── @testing-library-user-event-npm-14.6.1-5da7e1d4e2.patch
│ │ ├── @types-babel__traverse-npm-7.20.6-fac4243243.patch
│ │ ├── @vitest-expect-npm-3.2.4-97c526d5cc.patch
│ │ └── react-aria-components-npm-1.12.2-6c5dcdafab.patch
│ └── releases/
│ └── yarn-4.10.3.cjs
├── .yarnrc.yml
├── AGENTS.md
├── CHANGELOG.md
├── CHANGELOG.prerelease.md
├── CHANGELOG.v1-5.md
├── CHANGELOG.v6.md
├── CLAUDE.md
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING/
│ └── RELEASING.md
├── CONTRIBUTING.md
├── CONTRIBUTING.old.md
├── MAINTAINERS.md
├── MIGRATION.md
├── README.md
├── RESOLUTIONS.md
├── SECURITY.md
├── code/
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .remarkignore
│ ├── .storybook/
│ │ ├── bench/
│ │ │ ├── bench.stories.tsx
│ │ │ └── bundle-analyzer/
│ │ │ ├── index.css
│ │ │ ├── index.html
│ │ │ └── index.js
│ │ ├── isChromatic.ts
│ │ ├── main.ts
│ │ ├── manager.tsx
│ │ ├── preview.tsx
│ │ ├── storybook.setup.ts
│ │ └── utils/
│ │ └── todo.tsx
│ ├── .swcrc
│ ├── .vscode/
│ │ └── settings.json
│ ├── __mocks__/
│ │ ├── fileMock.js
│ │ ├── fs/
│ │ │ └── promises.ts
│ │ ├── fs-extra.ts
│ │ ├── fs.ts
│ │ ├── htmlMock.js
│ │ ├── inject-decorator.angular-stories.txt
│ │ ├── inject-decorator.flow-stories.txt
│ │ ├── inject-decorator.no-stories.txt
│ │ ├── inject-decorator.stories.txt
│ │ ├── inject-decorator.ts.csf-meta-var.txt
│ │ ├── inject-decorator.ts.csf.txt
│ │ ├── inject-decorator.ts.csf3.txt
│ │ ├── inject-decorator.ts.txt
│ │ ├── inject-decorator.ts.ugly-comments-stories.txt
│ │ ├── inject-decorator.ugly-comments-stories.txt
│ │ ├── inject-parameters.ts.csf.txt
│ │ ├── lodash-es/
│ │ │ └── add.js
│ │ ├── lodash-es.js
│ │ ├── styleMock.js
│ │ └── uuid.js
│ ├── addons/
│ │ ├── a11y/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── manager.js
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── preview.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── AccessibilityRuleMaps.ts
│ │ │ │ ├── a11yRunner.test.ts
│ │ │ │ ├── a11yRunner.ts
│ │ │ │ ├── a11yRunnerUtils.test.ts
│ │ │ │ ├── a11yRunnerUtils.ts
│ │ │ │ ├── axeRuleMappingHelper.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── A11YPanel.stories.tsx
│ │ │ │ │ ├── A11YPanel.test.tsx
│ │ │ │ │ ├── A11YPanel.tsx
│ │ │ │ │ ├── A11yContext.test.tsx
│ │ │ │ │ ├── A11yContext.tsx
│ │ │ │ │ ├── Report/
│ │ │ │ │ │ ├── Details.tsx
│ │ │ │ │ │ ├── Report.stories.tsx
│ │ │ │ │ │ └── Report.tsx
│ │ │ │ │ ├── Tabs.tsx
│ │ │ │ │ ├── TestDiscrepancyMessage.stories.tsx
│ │ │ │ │ ├── TestDiscrepancyMessage.tsx
│ │ │ │ │ ├── VisionSimulator.stories.tsx
│ │ │ │ │ └── VisionSimulator.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager.test.tsx
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── params.ts
│ │ │ │ ├── postinstall.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── preview.test.tsx
│ │ │ │ ├── preview.tsx
│ │ │ │ ├── results.mock.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ ├── utils.ts
│ │ │ │ ├── visionSimulatorFilters.ts
│ │ │ │ └── withVisionSimulator.ts
│ │ │ ├── template/
│ │ │ │ └── stories/
│ │ │ │ ├── parameters.stories.ts
│ │ │ │ └── tests.stories.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── docs/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── docs/
│ │ │ │ ├── docspage.md
│ │ │ │ ├── faq.md
│ │ │ │ ├── frameworks/
│ │ │ │ │ ├── ANGULAR.md
│ │ │ │ │ ├── COMMON.md
│ │ │ │ │ ├── EMBER.md
│ │ │ │ │ ├── REACT.md
│ │ │ │ │ ├── VUE.md
│ │ │ │ │ ├── VUE3.md
│ │ │ │ │ └── WEB_COMPONENTS.md
│ │ │ │ ├── mdx.md
│ │ │ │ ├── multiframework.md
│ │ │ │ ├── props-tables.md
│ │ │ │ ├── recipes.md
│ │ │ │ └── theming.md
│ │ │ ├── manager.js
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── preview.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── DocsRenderer.tsx
│ │ │ │ ├── angular/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── blocks/
│ │ │ │ │ ├── blocks/
│ │ │ │ │ │ ├── Anchor.stories.tsx
│ │ │ │ │ │ ├── Anchor.tsx
│ │ │ │ │ │ ├── ArgTypes.stories.tsx
│ │ │ │ │ │ ├── ArgTypes.tsx
│ │ │ │ │ │ ├── Canvas.stories.tsx
│ │ │ │ │ │ ├── Canvas.tsx
│ │ │ │ │ │ ├── Controls.stories.tsx
│ │ │ │ │ │ ├── Controls.tsx
│ │ │ │ │ │ ├── Description.stories.tsx
│ │ │ │ │ │ ├── Description.tsx
│ │ │ │ │ │ ├── Docs.tsx
│ │ │ │ │ │ ├── DocsContainer.tsx
│ │ │ │ │ │ ├── DocsContext.ts
│ │ │ │ │ │ ├── DocsPage.stories.tsx
│ │ │ │ │ │ ├── DocsPage.test.ts
│ │ │ │ │ │ ├── DocsPage.tsx
│ │ │ │ │ │ ├── DocsStory.tsx
│ │ │ │ │ │ ├── Heading.tsx
│ │ │ │ │ │ ├── Markdown.stories.tsx
│ │ │ │ │ │ ├── Markdown.tsx
│ │ │ │ │ │ ├── Meta.tsx
│ │ │ │ │ │ ├── Primary.stories.tsx
│ │ │ │ │ │ ├── Primary.tsx
│ │ │ │ │ │ ├── Source.stories.tsx
│ │ │ │ │ │ ├── Source.tsx
│ │ │ │ │ │ ├── SourceContainer.tsx
│ │ │ │ │ │ ├── Stories.stories.tsx
│ │ │ │ │ │ ├── Stories.tsx
│ │ │ │ │ │ ├── Story.stories.tsx
│ │ │ │ │ │ ├── Story.tsx
│ │ │ │ │ │ ├── Subheading.tsx
│ │ │ │ │ │ ├── Subtitle.stories.tsx
│ │ │ │ │ │ ├── Subtitle.tsx
│ │ │ │ │ │ ├── Title.stories.tsx
│ │ │ │ │ │ ├── Title.tsx
│ │ │ │ │ │ ├── Unstyled.mdx
│ │ │ │ │ │ ├── Unstyled.tsx
│ │ │ │ │ │ ├── Wrapper.tsx
│ │ │ │ │ │ ├── external/
│ │ │ │ │ │ │ ├── ExternalDocs.tsx
│ │ │ │ │ │ │ ├── ExternalDocsContainer.tsx
│ │ │ │ │ │ │ ├── ExternalDocsContext.ts
│ │ │ │ │ │ │ └── ExternalPreview.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── mdx.tsx
│ │ │ │ │ │ ├── types.ts
│ │ │ │ │ │ ├── useArgs.ts
│ │ │ │ │ │ ├── useGlobals.ts
│ │ │ │ │ │ ├── useOf.ts
│ │ │ │ │ │ ├── usePrimaryStory.test.tsx
│ │ │ │ │ │ ├── usePrimaryStory.ts
│ │ │ │ │ │ ├── useStory.ts
│ │ │ │ │ │ ├── useTransformCode.tsx
│ │ │ │ │ │ ├── utils.ts
│ │ │ │ │ │ └── with-mdx-component-override.tsx
│ │ │ │ │ ├── component-overrides.mdx
│ │ │ │ │ ├── component-overrides.stories.tsx
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── ArgsTable/
│ │ │ │ │ │ │ ├── ArgControl.tsx
│ │ │ │ │ │ │ ├── ArgJsDoc.tsx
│ │ │ │ │ │ │ ├── ArgRow.stories.tsx
│ │ │ │ │ │ │ ├── ArgRow.tsx
│ │ │ │ │ │ │ ├── ArgValue.tsx
│ │ │ │ │ │ │ ├── ArgsTable.stories.tsx
│ │ │ │ │ │ │ ├── ArgsTable.tsx
│ │ │ │ │ │ │ ├── Empty.tsx
│ │ │ │ │ │ │ ├── SectionRow.stories.tsx
│ │ │ │ │ │ │ ├── SectionRow.tsx
│ │ │ │ │ │ │ ├── Skeleton.tsx
│ │ │ │ │ │ │ ├── TabbedArgsTable.stories.tsx
│ │ │ │ │ │ │ ├── TabbedArgsTable.tsx
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── types.ts
│ │ │ │ │ │ ├── BlockBackgroundStyles.tsx
│ │ │ │ │ │ ├── ColorPalette.stories.tsx
│ │ │ │ │ │ ├── ColorPalette.tsx
│ │ │ │ │ │ ├── DocsPage.stories.tsx
│ │ │ │ │ │ ├── DocsPage.test.tsx
│ │ │ │ │ │ ├── DocsPage.tsx
│ │ │ │ │ │ ├── DocsPageExampleCaption.md
│ │ │ │ │ │ ├── DocsPageExampleCaption.mdx
│ │ │ │ │ │ ├── EmptyBlock.stories.tsx
│ │ │ │ │ │ ├── EmptyBlock.tsx
│ │ │ │ │ │ ├── IFrame.tsx
│ │ │ │ │ │ ├── IconGallery.stories.tsx
│ │ │ │ │ │ ├── IconGallery.tsx
│ │ │ │ │ │ ├── Preview.stories.tsx
│ │ │ │ │ │ ├── Preview.tsx
│ │ │ │ │ │ ├── Source.stories.tsx
│ │ │ │ │ │ ├── Source.tsx
│ │ │ │ │ │ ├── Story.stories.tsx
│ │ │ │ │ │ ├── Story.tsx
│ │ │ │ │ │ ├── TableOfContents.stories.tsx
│ │ │ │ │ │ ├── TableOfContents.tsx
│ │ │ │ │ │ ├── Title.stories.ts
│ │ │ │ │ │ ├── Title.tsx
│ │ │ │ │ │ ├── Toolbar.tsx
│ │ │ │ │ │ ├── Typeset.stories.tsx
│ │ │ │ │ │ ├── Typeset.tsx
│ │ │ │ │ │ ├── ZoomContext.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── controls/
│ │ │ │ │ │ ├── Boolean.stories.tsx
│ │ │ │ │ │ ├── Boolean.tsx
│ │ │ │ │ │ ├── Color.stories.tsx
│ │ │ │ │ │ ├── Color.tsx
│ │ │ │ │ │ ├── Date.stories.tsx
│ │ │ │ │ │ ├── Date.test.ts
│ │ │ │ │ │ ├── Date.tsx
│ │ │ │ │ │ ├── Files.stories.tsx
│ │ │ │ │ │ ├── Files.tsx
│ │ │ │ │ │ ├── Number.stories.tsx
│ │ │ │ │ │ ├── Number.tsx
│ │ │ │ │ │ ├── Object.stories.tsx
│ │ │ │ │ │ ├── Object.tsx
│ │ │ │ │ │ ├── Range.stories.tsx
│ │ │ │ │ │ ├── Range.tsx
│ │ │ │ │ │ ├── Text.stories.tsx
│ │ │ │ │ │ ├── Text.tsx
│ │ │ │ │ │ ├── helpers.test.ts
│ │ │ │ │ │ ├── helpers.ts
│ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ ├── options/
│ │ │ │ │ │ │ ├── CheckOptions.stories.tsx
│ │ │ │ │ │ │ ├── Checkbox.tsx
│ │ │ │ │ │ │ ├── Options.tsx
│ │ │ │ │ │ │ ├── Radio.tsx
│ │ │ │ │ │ │ ├── RadioOptions.stories.tsx
│ │ │ │ │ │ │ ├── Select.tsx
│ │ │ │ │ │ │ ├── SelectOptions.stories.tsx
│ │ │ │ │ │ │ ├── helpers.ts
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── react-editable-json-tree/
│ │ │ │ │ │ │ ├── JsonNodeAccordion.tsx
│ │ │ │ │ │ │ ├── JsonNodes.stories.tsx
│ │ │ │ │ │ │ ├── JsonNodes.tsx
│ │ │ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ │ ├── types/
│ │ │ │ │ │ │ │ ├── dataTypes.ts
│ │ │ │ │ │ │ │ ├── deltaTypes.ts
│ │ │ │ │ │ │ │ └── inputUsageTypes.ts
│ │ │ │ │ │ │ └── utils/
│ │ │ │ │ │ │ ├── objectTypes.ts
│ │ │ │ │ │ │ ├── parse.ts
│ │ │ │ │ │ │ └── styles.ts
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── examples/
│ │ │ │ │ │ ├── ArgTypesParameters.stories.tsx
│ │ │ │ │ │ ├── ArgTypesParameters.tsx
│ │ │ │ │ │ ├── ArgTypesWithSubcomponentsParameters.stories.tsx
│ │ │ │ │ │ ├── Button.stories.tsx
│ │ │ │ │ │ ├── Button.tsx
│ │ │ │ │ │ ├── ButtonNoAutodocs.stories.tsx
│ │ │ │ │ │ ├── ButtonReadonly.stories.tsx
│ │ │ │ │ │ ├── ButtonSomeAutodocs.stories.tsx
│ │ │ │ │ │ ├── ButtonWithMetaDescriptionAsBoth.stories.tsx
│ │ │ │ │ │ ├── ButtonWithMetaDescriptionAsComment.stories.tsx
│ │ │ │ │ │ ├── ButtonWithMetaDescriptionAsParameter.stories.tsx
│ │ │ │ │ │ ├── ButtonWithMetaSubtitleAsBoth.stories.tsx
│ │ │ │ │ │ ├── ButtonWithMetaSubtitleAsComponentSubtitle.stories.tsx
│ │ │ │ │ │ ├── ButtonWithMetaSubtitleAsDocsSubtitle.stories.tsx
│ │ │ │ │ │ ├── CanvasParameters.stories.tsx
│ │ │ │ │ │ ├── ControlsParameters.stories.tsx
│ │ │ │ │ │ ├── ControlsParameters.tsx
│ │ │ │ │ │ ├── ControlsWithSubcomponentsParameters.stories.tsx
│ │ │ │ │ │ ├── DocsPageParameters.stories.tsx
│ │ │ │ │ │ ├── EmptyArgTypes.stories.tsx
│ │ │ │ │ │ ├── EmptyExample.tsx
│ │ │ │ │ │ ├── Markdown-content.md
│ │ │ │ │ │ ├── SimpleSizeTest.tsx
│ │ │ │ │ │ ├── SourceParameters.stories.tsx
│ │ │ │ │ │ ├── StoriesParameters.stories.tsx
│ │ │ │ │ │ └── StoryParameters.stories.tsx
│ │ │ │ │ └── getStoryHref.ts
│ │ │ │ ├── blocks.ts
│ │ │ │ ├── compiler/
│ │ │ │ │ ├── index.test.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── ember/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── manifest.test.ts
│ │ │ │ ├── manifest.ts
│ │ │ │ ├── mdx-loader.ts
│ │ │ │ ├── mdx-plugin.ts
│ │ │ │ ├── mdx-react-shim.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ └── web-components/
│ │ │ │ └── index.ts
│ │ │ ├── template/
│ │ │ │ └── stories/
│ │ │ │ ├── codePanel/
│ │ │ │ │ └── index.stories.tsx
│ │ │ │ ├── docs2/
│ │ │ │ │ ├── Error.mdx
│ │ │ │ │ ├── MetaOf.mdx
│ │ │ │ │ ├── MetaOfNamed.mdx
│ │ │ │ │ ├── NoTitle.mdx
│ │ │ │ │ ├── ResolvedReact.jsx
│ │ │ │ │ ├── ResolvedReact.mdx
│ │ │ │ │ ├── Tags.mdx
│ │ │ │ │ ├── Title.mdx
│ │ │ │ │ ├── UtfSymbolScroll.mdx
│ │ │ │ │ ├── button.stories.ts
│ │ │ │ │ ├── multiple-csf-files-a.stories.ts
│ │ │ │ │ ├── multiple-csf-files-b.stories.ts
│ │ │ │ │ └── resolved-react.stories.ts
│ │ │ │ ├── docspage/
│ │ │ │ │ ├── autoplay.stories.ts
│ │ │ │ │ ├── basic.stories.ts
│ │ │ │ │ ├── description.stories.ts
│ │ │ │ │ ├── error.stories.ts
│ │ │ │ │ ├── extract-description.stories.ts
│ │ │ │ │ ├── iframe.stories.ts
│ │ │ │ │ ├── overflow.stories.ts
│ │ │ │ │ ├── override.stories.ts
│ │ │ │ │ └── source.stories.ts
│ │ │ │ └── toc/
│ │ │ │ ├── basic.stories.ts
│ │ │ │ ├── custom-selector.stories.ts
│ │ │ │ ├── custom-title.stories.ts
│ │ │ │ └── ignore-selector.stories.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── links/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── manager.js
│ │ │ ├── package.json
│ │ │ ├── preview.js
│ │ │ ├── project.json
│ │ │ ├── react.d.ts
│ │ │ ├── react.js
│ │ │ ├── scripts/
│ │ │ │ └── fix-preview-api-reference.ts
│ │ │ ├── src/
│ │ │ │ ├── constants.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── react/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── link.test.tsx
│ │ │ │ │ │ └── link.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── utils.test.ts
│ │ │ │ └── utils.ts
│ │ │ ├── template/
│ │ │ │ └── stories/
│ │ │ │ ├── decorator.stories.ts
│ │ │ │ ├── hrefto.stories.ts
│ │ │ │ └── linkto.stories.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── onboarding/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── example-stories/
│ │ │ │ ├── Button.stories.tsx
│ │ │ │ ├── Button.tsx
│ │ │ │ └── button.css
│ │ │ ├── manager.js
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── Onboarding.tsx
│ │ │ │ ├── Survey.tsx
│ │ │ │ ├── components/
│ │ │ │ │ ├── Confetti/
│ │ │ │ │ │ ├── Confetti.stories.tsx
│ │ │ │ │ │ └── Confetti.tsx
│ │ │ │ │ └── List/
│ │ │ │ │ ├── List.stories.tsx
│ │ │ │ │ ├── List.styled.tsx
│ │ │ │ │ ├── List.tsx
│ │ │ │ │ └── ListItem/
│ │ │ │ │ ├── ListItem.styled.tsx
│ │ │ │ │ └── ListItem.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── features/
│ │ │ │ │ ├── IntentSurvey/
│ │ │ │ │ │ ├── IntentSurvey.stories.tsx
│ │ │ │ │ │ └── IntentSurvey.tsx
│ │ │ │ │ └── SplashScreen/
│ │ │ │ │ ├── SplashScreen.stories.tsx
│ │ │ │ │ └── SplashScreen.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── preset.ts
│ │ │ │ └── types.d.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── pseudo-states/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── manager.js
│ │ │ ├── package.json
│ │ │ ├── preview.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── constants.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager/
│ │ │ │ │ └── PseudoStateTool.tsx
│ │ │ │ ├── manager.ts
│ │ │ │ ├── preview/
│ │ │ │ │ ├── rewriteStyleSheet.test.ts
│ │ │ │ │ ├── rewriteStyleSheet.ts
│ │ │ │ │ ├── splitSelectors.test.ts
│ │ │ │ │ ├── splitSelectors.ts
│ │ │ │ │ └── withPseudoState.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── stories/
│ │ │ │ │ ├── Button.stories.tsx
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ ├── CSSAtRules.stories.tsx
│ │ │ │ │ ├── CSSAtRules.tsx
│ │ │ │ │ ├── CustomElement.stories.tsx
│ │ │ │ │ ├── CustomElement.tsx
│ │ │ │ │ ├── CustomElementNested.stories.tsx
│ │ │ │ │ ├── CustomElementNested.tsx
│ │ │ │ │ ├── Input.stories.tsx
│ │ │ │ │ ├── Input.tsx
│ │ │ │ │ ├── NestedRules.stories.tsx
│ │ │ │ │ ├── NestedRules.tsx
│ │ │ │ │ ├── Portal.stories.tsx
│ │ │ │ │ ├── PseudoStateGrid.tsx
│ │ │ │ │ ├── ShadowRoot.stories.tsx
│ │ │ │ │ ├── ShadowRoot.tsx
│ │ │ │ │ ├── ShadowRootWithPart.css
│ │ │ │ │ ├── ShadowRootWithPart.stories.tsx
│ │ │ │ │ ├── ShadowRootWithPart.tsx
│ │ │ │ │ ├── button.css
│ │ │ │ │ ├── cssatrules.css
│ │ │ │ │ ├── grid.css
│ │ │ │ │ ├── input.css
│ │ │ │ │ └── nested.css
│ │ │ │ ├── types.test-d.ts
│ │ │ │ └── types.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── themes/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── docs/
│ │ │ │ ├── api.md
│ │ │ │ └── getting-started/
│ │ │ │ ├── bootstrap.md
│ │ │ │ ├── emotion.md
│ │ │ │ ├── material-ui.md
│ │ │ │ ├── postcss.md
│ │ │ │ ├── styled-components.md
│ │ │ │ └── tailwind.md
│ │ │ ├── manager.js
│ │ │ ├── package.json
│ │ │ ├── preview.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── constants.ts
│ │ │ │ ├── decorators/
│ │ │ │ │ ├── class-name.decorator.tsx
│ │ │ │ │ ├── data-attribute.decorator.tsx
│ │ │ │ │ ├── helpers.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── provider.decorator.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── postinstall.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── theme-switcher.tsx
│ │ │ │ └── types.ts
│ │ │ ├── template/
│ │ │ │ └── stories/
│ │ │ │ ├── decorators.stories.ts
│ │ │ │ ├── globals.stories.ts
│ │ │ │ └── parameters.stories.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ └── vitest/
│ │ ├── README.md
│ │ ├── build-config.ts
│ │ ├── manager.js
│ │ ├── package.json
│ │ ├── preset.js
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── Description.tsx
│ │ │ │ ├── GlobalErrorModal.stories.tsx
│ │ │ │ ├── GlobalErrorModal.tsx
│ │ │ │ ├── RelativeTime.stories.tsx
│ │ │ │ ├── RelativeTime.tsx
│ │ │ │ ├── SidebarContextMenu.tsx
│ │ │ │ ├── TestProviderRender.stories.tsx
│ │ │ │ ├── TestProviderRender.tsx
│ │ │ │ ├── TestStatusIcon.stories.tsx
│ │ │ │ └── TestStatusIcon.tsx
│ │ │ ├── constants.ts
│ │ │ ├── index.ts
│ │ │ ├── logger.ts
│ │ │ ├── manager-store.mock.ts
│ │ │ ├── manager-store.ts
│ │ │ ├── manager.tsx
│ │ │ ├── node/
│ │ │ │ ├── boot-test-runner.test.ts
│ │ │ │ ├── boot-test-runner.ts
│ │ │ │ ├── coverage-reporter.ts
│ │ │ │ ├── reporter.ts
│ │ │ │ ├── test-manager.test.ts
│ │ │ │ ├── test-manager.ts
│ │ │ │ ├── vitest-manager.ts
│ │ │ │ └── vitest.ts
│ │ │ ├── postinstall.test.ts
│ │ │ ├── postinstall.ts
│ │ │ ├── preset.ts
│ │ │ ├── stories.tsx
│ │ │ ├── types.ts
│ │ │ ├── typings.d.ts
│ │ │ ├── updateVitestFile.config.3.2.test.ts
│ │ │ ├── updateVitestFile.config.4.test.ts
│ │ │ ├── updateVitestFile.config.test.ts
│ │ │ ├── updateVitestFile.config.workspace.test.ts
│ │ │ ├── updateVitestFile.test.ts
│ │ │ ├── updateVitestFile.ts
│ │ │ ├── use-test-provider-state.ts
│ │ │ ├── utils.ts
│ │ │ └── vitest-plugin/
│ │ │ ├── global-setup.ts
│ │ │ ├── index.ts
│ │ │ ├── setup-file-with-project-annotations.ts
│ │ │ ├── setup-file.test.ts
│ │ │ ├── setup-file.ts
│ │ │ ├── test-utils.ts
│ │ │ ├── types.ts
│ │ │ ├── utils.ts
│ │ │ ├── viewports.test.ts
│ │ │ └── viewports.ts
│ │ ├── template/
│ │ │ └── stories/
│ │ │ ├── basics.stories.ts
│ │ │ └── unhandled-errors.stories.ts
│ │ ├── templates/
│ │ │ ├── vitest.config.3.2.template.ts
│ │ │ ├── vitest.config.4.template.ts
│ │ │ ├── vitest.config.template.ts
│ │ │ └── vitest.workspace.template.ts
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── builders/
│ │ ├── builder-vite/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── input/
│ │ │ │ └── iframe.html
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── build.ts
│ │ │ │ ├── codegen-importfn-script.test.ts
│ │ │ │ ├── codegen-importfn-script.ts
│ │ │ │ ├── codegen-modern-iframe-script.test.ts
│ │ │ │ ├── codegen-modern-iframe-script.ts
│ │ │ │ ├── codegen-project-annotations.ts
│ │ │ │ ├── codegen-set-addon-channel.ts
│ │ │ │ ├── envs.ts
│ │ │ │ ├── index.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── logger.ts
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── code-generator-plugin.ts
│ │ │ │ │ ├── csf-plugin.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── inject-export-order-plugin.ts
│ │ │ │ │ ├── storybook-config-plugin.ts
│ │ │ │ │ ├── storybook-entry-plugin.ts
│ │ │ │ │ ├── storybook-external-globals-plugin.test.ts
│ │ │ │ │ ├── storybook-external-globals-plugin.ts
│ │ │ │ │ ├── storybook-optimize-deps-plugin.test.ts
│ │ │ │ │ ├── storybook-optimize-deps-plugin.ts
│ │ │ │ │ ├── storybook-project-annotations-plugin.ts
│ │ │ │ │ ├── storybook-runtime-plugin.ts
│ │ │ │ │ ├── strip-story-hmr-boundaries.ts
│ │ │ │ │ ├── vite-inject-mocker/
│ │ │ │ │ │ ├── plugin.test.ts
│ │ │ │ │ │ └── plugin.ts
│ │ │ │ │ ├── vite-mock/
│ │ │ │ │ │ ├── plugin.ts
│ │ │ │ │ │ └── utils.ts
│ │ │ │ │ └── webpack-stats-plugin.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── transform-iframe-html.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── utils/
│ │ │ │ │ ├── build-module-graph.test.ts
│ │ │ │ │ ├── build-module-graph.ts
│ │ │ │ │ ├── has-vite-plugins.test.ts
│ │ │ │ │ ├── has-vite-plugins.ts
│ │ │ │ │ ├── process-preview-annotation.test.ts
│ │ │ │ │ ├── process-preview-annotation.ts
│ │ │ │ │ ├── unique-import-paths.ts
│ │ │ │ │ ├── vite-features.ts
│ │ │ │ │ ├── without-vite-plugins.test.ts
│ │ │ │ │ └── without-vite-plugins.ts
│ │ │ │ ├── virtual-file-names.ts
│ │ │ │ ├── vite-config.test.ts
│ │ │ │ ├── vite-config.ts
│ │ │ │ └── vite-server.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ └── builder-webpack5/
│ │ ├── README.md
│ │ ├── build-config.ts
│ │ ├── package.json
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── index.ts
│ │ │ ├── loaders/
│ │ │ │ ├── export-order-loader.ts
│ │ │ │ ├── storybook-mock-transform-loader.ts
│ │ │ │ └── webpack-automock-loader.ts
│ │ │ ├── plugins/
│ │ │ │ ├── webpack-inject-mocker-runtime-plugin.ts
│ │ │ │ └── webpack-mock-plugin.ts
│ │ │ ├── presets/
│ │ │ │ ├── custom-webpack-preset.ts
│ │ │ │ └── preview-preset.ts
│ │ │ ├── preview/
│ │ │ │ ├── base-webpack.config.ts
│ │ │ │ ├── iframe-webpack.config.ts
│ │ │ │ └── virtual-module-mapping.ts
│ │ │ └── types.ts
│ │ ├── templates/
│ │ │ ├── preview.ejs
│ │ │ └── virtualModuleModernEntry.js
│ │ ├── tsconfig.json
│ │ ├── typings.d.ts
│ │ └── vitest.config.ts
│ ├── chromatic.config.json
│ ├── core/
│ │ ├── .eslintrc.json
│ │ ├── README.md
│ │ ├── assets/
│ │ │ └── server/
│ │ │ ├── addon.tsconfig.json
│ │ │ ├── base-preview-body.html
│ │ │ ├── base-preview-head.html
│ │ │ ├── openBrowser.applescript
│ │ │ └── template.ejs
│ │ ├── build-config.ts
│ │ ├── package.json
│ │ ├── project.json
│ │ ├── scripts/
│ │ │ └── generate-source-files.ts
│ │ ├── src/
│ │ │ ├── ERRORS.md
│ │ │ ├── __mocks__/
│ │ │ │ ├── composeStories.txt
│ │ │ │ ├── composeStory.txt
│ │ │ │ ├── page.ts
│ │ │ │ └── path/
│ │ │ │ └── to/
│ │ │ │ └── Screens/
│ │ │ │ └── index.jsx
│ │ │ ├── __tests/
│ │ │ │ ├── preview-errors.test.ts
│ │ │ │ ├── server-errors.test.ts
│ │ │ │ └── storybook-error.test.ts
│ │ │ ├── actions/
│ │ │ │ ├── README.md
│ │ │ │ ├── addArgs.ts
│ │ │ │ ├── addArgsHelpers.test.ts
│ │ │ │ ├── addArgsHelpers.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── ActionLogger/
│ │ │ │ │ │ ├── index.tsx
│ │ │ │ │ │ └── style.tsx
│ │ │ │ │ └── Title.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── containers/
│ │ │ │ │ └── ActionLogger/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── decorator.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── loaders.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── models/
│ │ │ │ │ ├── ActionDisplay.ts
│ │ │ │ │ ├── ActionOptions.ts
│ │ │ │ │ ├── ActionsFunction.ts
│ │ │ │ │ ├── ActionsMap.ts
│ │ │ │ │ ├── DecoratorFunction.ts
│ │ │ │ │ ├── HandlerFunction.test-d.ts
│ │ │ │ │ ├── HandlerFunction.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── runtime/
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── action.test.js
│ │ │ │ │ │ ├── actions.test.js
│ │ │ │ │ │ └── configureActions.test.js
│ │ │ │ │ ├── action.ts
│ │ │ │ │ ├── actions.ts
│ │ │ │ │ ├── configureActions.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── babel/
│ │ │ │ ├── babelParse.ts
│ │ │ │ ├── expression-resolver.test.ts
│ │ │ │ ├── expression-resolver.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── vitest-config-helpers.test.ts
│ │ │ │ └── vitest-config-helpers.ts
│ │ │ ├── backgrounds/
│ │ │ │ ├── components/
│ │ │ │ │ └── Tool.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── decorator.ts
│ │ │ │ ├── defaults.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ └── utils.ts
│ │ │ ├── bin/
│ │ │ │ ├── core.ts
│ │ │ │ ├── dispatcher.ts
│ │ │ │ ├── loader.test.ts
│ │ │ │ └── loader.ts
│ │ │ ├── builder-manager/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils/
│ │ │ │ ├── data.ts
│ │ │ │ ├── files.test.ts
│ │ │ │ ├── files.ts
│ │ │ │ ├── framework.ts
│ │ │ │ ├── managerEntries.ts
│ │ │ │ └── template.ts
│ │ │ ├── channels/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── main.ts
│ │ │ │ ├── postmessage/
│ │ │ │ │ ├── getEventSourceUrl.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── websocket/
│ │ │ │ └── index.ts
│ │ │ ├── cli/
│ │ │ │ ├── AddonVitestService.constants.ts
│ │ │ │ ├── AddonVitestService.test.ts
│ │ │ │ ├── AddonVitestService.ts
│ │ │ │ ├── NpmOptions.ts
│ │ │ │ ├── angular/
│ │ │ │ │ └── helpers.ts
│ │ │ │ ├── build.ts
│ │ │ │ ├── buildIndex.ts
│ │ │ │ ├── detect.ts
│ │ │ │ ├── dev.ts
│ │ │ │ ├── dirs.ts
│ │ │ │ ├── eslintPlugin.test.ts
│ │ │ │ ├── eslintPlugin.ts
│ │ │ │ ├── globalSettings.test.ts
│ │ │ │ ├── globalSettings.ts
│ │ │ │ ├── helpers.test.ts
│ │ │ │ ├── helpers.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── projectTypes.ts
│ │ │ ├── client-logger/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.test.ts
│ │ │ │ └── index.ts
│ │ │ ├── common/
│ │ │ │ ├── README.md
│ │ │ │ ├── config.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── js-package-manager/
│ │ │ │ │ ├── BUNProxy.ts
│ │ │ │ │ ├── JsPackageManager.test.ts
│ │ │ │ │ ├── JsPackageManager.ts
│ │ │ │ │ ├── JsPackageManagerFactory.test.ts
│ │ │ │ │ ├── JsPackageManagerFactory.ts
│ │ │ │ │ ├── NPMProxy.test.ts
│ │ │ │ │ ├── NPMProxy.ts
│ │ │ │ │ ├── PNPMProxy.test.ts
│ │ │ │ │ ├── PNPMProxy.ts
│ │ │ │ │ ├── PackageJson.ts
│ │ │ │ │ ├── Yarn1Proxy.test.ts
│ │ │ │ │ ├── Yarn1Proxy.ts
│ │ │ │ │ ├── Yarn2Proxy.test.ts
│ │ │ │ │ ├── Yarn2Proxy.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ ├── multiple-lockfiles/
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── yarn.lock
│ │ │ │ │ │ ├── multiple-lockfiles-pnpm-closer/
│ │ │ │ │ │ │ ├── inner/
│ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ └── yarn.lock
│ │ │ │ │ │ └── pnpm-workspace/
│ │ │ │ │ │ ├── package/
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── util.ts
│ │ │ │ ├── presets.test.ts
│ │ │ │ ├── presets.ts
│ │ │ │ ├── satellite-addons.ts
│ │ │ │ ├── utils/
│ │ │ │ │ ├── HandledError.ts
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── formatter.test.ts.snap
│ │ │ │ │ ├── __tests-formatter__/
│ │ │ │ │ │ ├── withPrettierConfig/
│ │ │ │ │ │ │ └── .prettierrc
│ │ │ │ │ │ ├── withoutEditorConfig/
│ │ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ │ └── .prettierrc
│ │ │ │ │ │ └── withoutPrettierConfig/
│ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ └── .prettierrc
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── interpret-files.test.ts
│ │ │ │ │ │ ├── normalize-stories.test.ts
│ │ │ │ │ │ ├── paths.test.ts
│ │ │ │ │ │ └── template.test.ts
│ │ │ │ │ ├── cache.ts
│ │ │ │ │ ├── check-addon-order.ts
│ │ │ │ │ ├── cli.test.ts
│ │ │ │ │ ├── cli.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── common-glob-options.ts
│ │ │ │ │ ├── envs.ts
│ │ │ │ │ ├── file-cache.ts
│ │ │ │ │ ├── formatter.test.ts
│ │ │ │ │ ├── formatter.ts
│ │ │ │ │ ├── framework.ts
│ │ │ │ │ ├── get-addon-annotations.test.ts
│ │ │ │ │ ├── get-addon-annotations.ts
│ │ │ │ │ ├── get-addon-names.test.ts
│ │ │ │ │ ├── get-addon-names.ts
│ │ │ │ │ ├── get-builder-options.ts
│ │ │ │ │ ├── get-framework-name.test.ts
│ │ │ │ │ ├── get-framework-name.ts
│ │ │ │ │ ├── get-renderer-name.test.ts
│ │ │ │ │ ├── get-renderer-name.ts
│ │ │ │ │ ├── get-story-id.test.ts
│ │ │ │ │ ├── get-story-id.ts
│ │ │ │ │ ├── get-storybook-configuration.test.ts
│ │ │ │ │ ├── get-storybook-configuration.ts
│ │ │ │ │ ├── get-storybook-info.ts
│ │ │ │ │ ├── get-storybook-refs.test.ts
│ │ │ │ │ ├── get-storybook-refs.ts
│ │ │ │ │ ├── glob-to-regexp.ts
│ │ │ │ │ ├── interpolate.ts
│ │ │ │ │ ├── interpret-files.ts
│ │ │ │ │ ├── interpret-require.ts
│ │ │ │ │ ├── load-main-config.ts
│ │ │ │ │ ├── load-manager-or-addons-file.ts
│ │ │ │ │ ├── load-preview-or-config-file.ts
│ │ │ │ │ ├── log-config.ts
│ │ │ │ │ ├── normalize-path.test.ts
│ │ │ │ │ ├── normalize-path.ts
│ │ │ │ │ ├── normalize-stories.ts
│ │ │ │ │ ├── paths.ts
│ │ │ │ │ ├── posix.test.ts
│ │ │ │ │ ├── posix.ts
│ │ │ │ │ ├── readTemplate.ts
│ │ │ │ │ ├── remove.ts
│ │ │ │ │ ├── resolve-path-in-sb-cache.test.ts
│ │ │ │ │ ├── resolve-path-in-sb-cache.ts
│ │ │ │ │ ├── satisfies.ts
│ │ │ │ │ ├── scan-and-transform-files.test.ts
│ │ │ │ │ ├── scan-and-transform-files.ts
│ │ │ │ │ ├── setup-addon-in-config.test.ts
│ │ │ │ │ ├── setup-addon-in-config.ts
│ │ │ │ │ ├── strip-abs-node-modules-path.ts
│ │ │ │ │ ├── symlinks.ts
│ │ │ │ │ ├── sync-main-preview-addons.test.ts
│ │ │ │ │ ├── sync-main-preview-addons.ts
│ │ │ │ │ ├── template.ts
│ │ │ │ │ ├── transform-imports.test.ts
│ │ │ │ │ ├── transform-imports.ts
│ │ │ │ │ ├── utils.test.ts
│ │ │ │ │ ├── utils.ts
│ │ │ │ │ ├── validate-config.test.ts
│ │ │ │ │ ├── validate-config.ts
│ │ │ │ │ ├── validate-configuration-files.ts
│ │ │ │ │ ├── wrap-getAbsolutePath-utils.ts
│ │ │ │ │ ├── write-file-with-retry.test.ts
│ │ │ │ │ └── write-file-with-retry.ts
│ │ │ │ └── versions.ts
│ │ │ ├── component-testing/
│ │ │ │ ├── components/
│ │ │ │ │ ├── DetachedDebuggerMessage.tsx
│ │ │ │ │ ├── EmptyState.tsx
│ │ │ │ │ ├── Interaction.stories.tsx
│ │ │ │ │ ├── Interaction.tsx
│ │ │ │ │ ├── InteractionsPanel.stories.tsx
│ │ │ │ │ ├── InteractionsPanel.tsx
│ │ │ │ │ ├── MatcherResult.stories.tsx
│ │ │ │ │ ├── MatcherResult.tsx
│ │ │ │ │ ├── MethodCall.stories.tsx
│ │ │ │ │ ├── MethodCall.tsx
│ │ │ │ │ ├── Panel.test.ts
│ │ │ │ │ ├── Panel.tsx
│ │ │ │ │ ├── PanelTitle.tsx
│ │ │ │ │ ├── StatusBadge.stories.tsx
│ │ │ │ │ ├── StatusBadge.tsx
│ │ │ │ │ ├── StatusIcon.stories.tsx
│ │ │ │ │ ├── StatusIcon.tsx
│ │ │ │ │ ├── TestDiscrepancyMessage.stories.tsx
│ │ │ │ │ ├── TestDiscrepancyMessage.tsx
│ │ │ │ │ ├── Toolbar.stories.tsx
│ │ │ │ │ ├── Toolbar.tsx
│ │ │ │ │ └── test-fn.stories.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── manager.test.tsx
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── mocks/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils.ts
│ │ │ ├── components/
│ │ │ │ ├── README.md
│ │ │ │ ├── brand/
│ │ │ │ │ ├── SideBySide.tsx
│ │ │ │ │ ├── StorybookIcon.stories.tsx
│ │ │ │ │ ├── StorybookIcon.tsx
│ │ │ │ │ ├── StorybookLogo.stories.tsx
│ │ │ │ │ ├── StorybookLogo.tsx
│ │ │ │ │ ├── colorpalette.mdx
│ │ │ │ │ └── typography.mdx
│ │ │ │ ├── components/
│ │ │ │ │ ├── ActionBar/
│ │ │ │ │ │ ├── ActionBar.stories.tsx
│ │ │ │ │ │ └── ActionBar.tsx
│ │ │ │ │ ├── ActionList/
│ │ │ │ │ │ ├── ActionList.stories.tsx
│ │ │ │ │ │ └── ActionList.tsx
│ │ │ │ │ ├── Badge/
│ │ │ │ │ │ ├── Badge.stories.tsx
│ │ │ │ │ │ └── Badge.tsx
│ │ │ │ │ ├── Bar/
│ │ │ │ │ │ ├── Bar.stories.tsx
│ │ │ │ │ │ ├── Bar.tsx
│ │ │ │ │ │ ├── FlexBar.stories.tsx
│ │ │ │ │ │ └── Separator.tsx
│ │ │ │ │ ├── Button/
│ │ │ │ │ │ ├── Button.stories.tsx
│ │ │ │ │ │ ├── Button.tsx
│ │ │ │ │ │ ├── Docs.mdx
│ │ │ │ │ │ └── helpers/
│ │ │ │ │ │ ├── InteractiveTooltipWrapper.stories.tsx
│ │ │ │ │ │ ├── InteractiveTooltipWrapper.tsx
│ │ │ │ │ │ └── useAriaDescription.tsx
│ │ │ │ │ ├── Card/
│ │ │ │ │ │ ├── Card.stories.tsx
│ │ │ │ │ │ └── Card.tsx
│ │ │ │ │ ├── Collapsible/
│ │ │ │ │ │ ├── Collapsible.stories.tsx
│ │ │ │ │ │ └── Collapsible.tsx
│ │ │ │ │ ├── ErrorFormatter/
│ │ │ │ │ │ ├── ErrorFormatter.stories.tsx
│ │ │ │ │ │ └── ErrorFormatter.tsx
│ │ │ │ │ ├── Form/
│ │ │ │ │ │ ├── Checkbox.stories.tsx
│ │ │ │ │ │ ├── Checkbox.tsx
│ │ │ │ │ │ ├── Field.stories.tsx
│ │ │ │ │ │ ├── Field.tsx
│ │ │ │ │ │ ├── Form.tsx
│ │ │ │ │ │ ├── Input.stories.tsx
│ │ │ │ │ │ ├── Input.tsx
│ │ │ │ │ │ ├── Radio.stories.tsx
│ │ │ │ │ │ ├── Radio.tsx
│ │ │ │ │ │ ├── Select.stories.tsx
│ │ │ │ │ │ ├── Select.tsx
│ │ │ │ │ │ ├── Textarea.stories.tsx
│ │ │ │ │ │ ├── Textarea.tsx
│ │ │ │ │ │ └── styles.ts
│ │ │ │ │ ├── Loader/
│ │ │ │ │ │ ├── Loader.stories.tsx
│ │ │ │ │ │ └── Loader.tsx
│ │ │ │ │ ├── Modal/
│ │ │ │ │ │ ├── Modal.stories.tsx
│ │ │ │ │ │ ├── Modal.styled.tsx
│ │ │ │ │ │ └── Modal.tsx
│ │ │ │ │ ├── Popover/
│ │ │ │ │ │ ├── Popover.stories.tsx
│ │ │ │ │ │ ├── Popover.tsx
│ │ │ │ │ │ ├── PopoverProvider.stories.tsx
│ │ │ │ │ │ └── PopoverProvider.tsx
│ │ │ │ │ ├── ProgressSpinner/
│ │ │ │ │ │ ├── ProgressSpinner.stories.tsx
│ │ │ │ │ │ └── ProgressSpinner.tsx
│ │ │ │ │ ├── ScrollArea/
│ │ │ │ │ │ ├── ScrollArea.stories.tsx
│ │ │ │ │ │ └── ScrollArea.tsx
│ │ │ │ │ ├── Select/
│ │ │ │ │ │ ├── Select.stories.tsx
│ │ │ │ │ │ ├── Select.tsx
│ │ │ │ │ │ ├── SelectOption.stories.tsx
│ │ │ │ │ │ ├── SelectOption.tsx
│ │ │ │ │ │ └── helpers.tsx
│ │ │ │ │ ├── Tabs/
│ │ │ │ │ │ ├── Button.tsx
│ │ │ │ │ │ ├── EmptyTabContent.stories.tsx
│ │ │ │ │ │ ├── EmptyTabContent.tsx
│ │ │ │ │ │ ├── StatelessTab.tsx
│ │ │ │ │ │ ├── StatelessTabList.tsx
│ │ │ │ │ │ ├── StatelessTabPanel.tsx
│ │ │ │ │ │ ├── StatelessTabsView.stories.tsx
│ │ │ │ │ │ ├── StatelessTabsView.tsx
│ │ │ │ │ │ ├── TabList.stories.tsx
│ │ │ │ │ │ ├── TabList.tsx
│ │ │ │ │ │ ├── TabPanel.stories.tsx
│ │ │ │ │ │ ├── TabPanel.tsx
│ │ │ │ │ │ ├── Tabs.helpers.tsx
│ │ │ │ │ │ ├── Tabs.hooks.tsx
│ │ │ │ │ │ ├── Tabs.stories.tsx
│ │ │ │ │ │ ├── Tabs.tsx
│ │ │ │ │ │ ├── TabsView.stories.tsx
│ │ │ │ │ │ └── TabsView.tsx
│ │ │ │ │ ├── ToggleButton/
│ │ │ │ │ │ ├── ToggleButton.stories.tsx
│ │ │ │ │ │ └── ToggleButton.tsx
│ │ │ │ │ ├── Toolbar/
│ │ │ │ │ │ ├── AbstractToolbar.stories.tsx
│ │ │ │ │ │ ├── Toolbar.stories.tsx
│ │ │ │ │ │ └── Toolbar.tsx
│ │ │ │ │ ├── Zoom/
│ │ │ │ │ │ ├── Zoom.stories.tsx
│ │ │ │ │ │ ├── Zoom.tsx
│ │ │ │ │ │ ├── ZoomElement.tsx
│ │ │ │ │ │ └── ZoomIFrame.tsx
│ │ │ │ │ ├── addon-panel/
│ │ │ │ │ │ └── addon-panel.tsx
│ │ │ │ │ ├── clipboard/
│ │ │ │ │ │ └── ClipboardCode.tsx
│ │ │ │ │ ├── icon/
│ │ │ │ │ │ ├── icon.stories.tsx
│ │ │ │ │ │ └── icon.tsx
│ │ │ │ │ ├── placeholder/
│ │ │ │ │ │ ├── placeholder.stories.tsx
│ │ │ │ │ │ └── placeholder.tsx
│ │ │ │ │ ├── shared/
│ │ │ │ │ │ ├── animation.ts
│ │ │ │ │ │ └── overlayHelpers.tsx
│ │ │ │ │ ├── spaced/
│ │ │ │ │ │ ├── Spaced.stories.tsx
│ │ │ │ │ │ └── Spaced.tsx
│ │ │ │ │ ├── syntaxhighlighter/
│ │ │ │ │ │ ├── clipboard.ts
│ │ │ │ │ │ ├── formatter.test.ts
│ │ │ │ │ │ ├── formatter.ts
│ │ │ │ │ │ ├── lazy-syntaxhighlighter.tsx
│ │ │ │ │ │ ├── syntaxhighlighter-types.ts
│ │ │ │ │ │ ├── syntaxhighlighter.stories.tsx
│ │ │ │ │ │ └── syntaxhighlighter.tsx
│ │ │ │ │ ├── tooltip/
│ │ │ │ │ │ ├── ListItem.stories.tsx
│ │ │ │ │ │ ├── ListItem.tsx
│ │ │ │ │ │ ├── Tooltip.stories.tsx
│ │ │ │ │ │ ├── Tooltip.tsx
│ │ │ │ │ │ ├── TooltipLinkList.stories.tsx
│ │ │ │ │ │ ├── TooltipLinkList.tsx
│ │ │ │ │ │ ├── TooltipMessage.stories.tsx
│ │ │ │ │ │ ├── TooltipMessage.tsx
│ │ │ │ │ │ ├── TooltipNote.stories.tsx
│ │ │ │ │ │ ├── TooltipNote.tsx
│ │ │ │ │ │ ├── TooltipProvider.stories.tsx
│ │ │ │ │ │ ├── TooltipProvider.tsx
│ │ │ │ │ │ ├── WithTooltip.stories.tsx
│ │ │ │ │ │ ├── WithTooltip.tsx
│ │ │ │ │ │ └── lazy-WithTooltip.tsx
│ │ │ │ │ ├── typography/
│ │ │ │ │ │ ├── DocumentFormatting.tsx
│ │ │ │ │ │ ├── DocumentWrapper.stories.tsx
│ │ │ │ │ │ ├── DocumentWrapper.test.tsx
│ │ │ │ │ │ ├── DocumentWrapper.tsx
│ │ │ │ │ │ ├── ResetWrapper.tsx
│ │ │ │ │ │ ├── components.tsx
│ │ │ │ │ │ ├── elements/
│ │ │ │ │ │ │ ├── A.test.tsx
│ │ │ │ │ │ │ ├── A.tsx
│ │ │ │ │ │ │ ├── Blockquote.tsx
│ │ │ │ │ │ │ ├── Code.tsx
│ │ │ │ │ │ │ ├── DL.tsx
│ │ │ │ │ │ │ ├── Div.tsx
│ │ │ │ │ │ │ ├── H1.tsx
│ │ │ │ │ │ │ ├── H2.tsx
│ │ │ │ │ │ │ ├── H3.tsx
│ │ │ │ │ │ │ ├── H4.tsx
│ │ │ │ │ │ │ ├── H5.tsx
│ │ │ │ │ │ │ ├── H6.tsx
│ │ │ │ │ │ │ ├── HR.tsx
│ │ │ │ │ │ │ ├── Img.tsx
│ │ │ │ │ │ │ ├── LI.tsx
│ │ │ │ │ │ │ ├── Link.tsx
│ │ │ │ │ │ │ ├── OL.tsx
│ │ │ │ │ │ │ ├── P.tsx
│ │ │ │ │ │ │ ├── Pre.tsx
│ │ │ │ │ │ │ ├── Span.tsx
│ │ │ │ │ │ │ ├── TT.tsx
│ │ │ │ │ │ │ ├── Table.tsx
│ │ │ │ │ │ │ └── UL.tsx
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ ├── common.tsx
│ │ │ │ │ │ │ └── isReactChildString.tsx
│ │ │ │ │ │ └── link/
│ │ │ │ │ │ ├── link.stories.tsx
│ │ │ │ │ │ ├── link.test.tsx
│ │ │ │ │ │ └── link.tsx
│ │ │ │ │ └── utils/
│ │ │ │ │ └── getStoryHref.ts
│ │ │ │ └── index.ts
│ │ │ ├── controls/
│ │ │ │ ├── README.md
│ │ │ │ ├── components/
│ │ │ │ │ ├── ControlsPanel.tsx
│ │ │ │ │ ├── SaveStory.stories.tsx
│ │ │ │ │ ├── SaveStory.tsx
│ │ │ │ │ └── Title.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── decorator.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── preview.ts
│ │ │ │ ├── stringifyArgs.tsx
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── core-events/
│ │ │ │ ├── data/
│ │ │ │ │ ├── argtypes-info.ts
│ │ │ │ │ ├── create-new-story.ts
│ │ │ │ │ ├── file-component-search.ts
│ │ │ │ │ ├── open-in-editor.ts
│ │ │ │ │ ├── phases.ts
│ │ │ │ │ ├── request-response.ts
│ │ │ │ │ ├── save-story.ts
│ │ │ │ │ └── whats-new.ts
│ │ │ │ ├── index.test.ts
│ │ │ │ └── index.ts
│ │ │ ├── core-server/
│ │ │ │ ├── README.md
│ │ │ │ ├── __for-testing__/
│ │ │ │ │ └── main.ts
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── web-components-kitchen-sink_manager-dev-posix
│ │ │ │ │ ├── web-components-kitchen-sink_manager-dev-windows
│ │ │ │ │ ├── web-components-kitchen-sink_manager-prod-posix
│ │ │ │ │ ├── web-components-kitchen-sink_manager-prod-windows
│ │ │ │ │ ├── web-components-kitchen-sink_preview-dev-posix
│ │ │ │ │ ├── web-components-kitchen-sink_preview-dev-windows
│ │ │ │ │ ├── web-components-kitchen-sink_preview-prod-posix
│ │ │ │ │ └── web-components-kitchen-sink_preview-prod-windows
│ │ │ │ ├── build-dev.ts
│ │ │ │ ├── build-index.test.ts
│ │ │ │ ├── build-index.ts
│ │ │ │ ├── build-static.ts
│ │ │ │ ├── change-detection/
│ │ │ │ │ ├── ChangeDetectionService.test.ts
│ │ │ │ │ ├── ChangeDetectionService.ts
│ │ │ │ │ ├── GitDiffProvider.test.ts
│ │ │ │ │ ├── GitDiffProvider.ts
│ │ │ │ │ ├── errors.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── readiness.ts
│ │ │ │ │ ├── trace-changed.test.ts
│ │ │ │ │ └── trace-changed.ts
│ │ │ │ ├── dev-server.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── load.ts
│ │ │ │ ├── presets/
│ │ │ │ │ ├── common-manager.ts
│ │ │ │ │ ├── common-override-preset.ts
│ │ │ │ │ ├── common-preset.ts
│ │ │ │ │ ├── favicon.test.ts
│ │ │ │ │ └── wsToken.ts
│ │ │ │ ├── server-channel/
│ │ │ │ │ ├── create-new-story-channel.test.ts
│ │ │ │ │ ├── create-new-story-channel.ts
│ │ │ │ │ ├── file-search-channel.test.ts
│ │ │ │ │ ├── file-search-channel.ts
│ │ │ │ │ ├── ghost-stories-channel.test.ts
│ │ │ │ │ ├── ghost-stories-channel.ts
│ │ │ │ │ ├── open-in-editor-channel.ts
│ │ │ │ │ ├── telemetry-channel.test.ts
│ │ │ │ │ └── telemetry-channel.ts
│ │ │ │ ├── standalone.ts
│ │ │ │ ├── stores/
│ │ │ │ │ ├── status.ts
│ │ │ │ │ └── test-provider.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ ├── utils/
│ │ │ │ │ ├── IndexingError.ts
│ │ │ │ │ ├── StoryIndexGenerator.test.ts
│ │ │ │ │ ├── StoryIndexGenerator.ts
│ │ │ │ │ ├── __mockdata__/
│ │ │ │ │ │ ├── E.stories.ts
│ │ │ │ │ │ ├── complex/
│ │ │ │ │ │ │ ├── MetaOfImportOrder.mdx
│ │ │ │ │ │ │ └── TwoStoryReferences.mdx
│ │ │ │ │ │ ├── deeply/
│ │ │ │ │ │ │ └── nested/
│ │ │ │ │ │ │ └── single/
│ │ │ │ │ │ │ └── File.stories.ts
│ │ │ │ │ │ ├── docs-id-generation/
│ │ │ │ │ │ │ ├── A.stories.jsx
│ │ │ │ │ │ │ ├── B.docs.mdx
│ │ │ │ │ │ │ └── B.stories.jsx
│ │ │ │ │ │ ├── duplicate/
│ │ │ │ │ │ │ ├── A.stories.js
│ │ │ │ │ │ │ └── SecondA.stories.js
│ │ │ │ │ │ ├── errors/
│ │ │ │ │ │ │ ├── A.mdx
│ │ │ │ │ │ │ ├── B.mdx
│ │ │ │ │ │ │ ├── MetaOfClashingDefaultName.mdx
│ │ │ │ │ │ │ ├── MetaOfClashingName.mdx
│ │ │ │ │ │ │ ├── MetaOfName.mdx
│ │ │ │ │ │ │ ├── MetaOfNoName.mdx
│ │ │ │ │ │ │ ├── NoMeta.stories.ts
│ │ │ │ │ │ │ ├── NoStories.stories.ts
│ │ │ │ │ │ │ └── duplicate/
│ │ │ │ │ │ │ └── A.mdx
│ │ │ │ │ │ ├── main.js
│ │ │ │ │ │ ├── preview.js
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── A.js
│ │ │ │ │ │ ├── A.stories.js
│ │ │ │ │ │ ├── B.stories.ts
│ │ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ │ ├── C.js
│ │ │ │ │ │ ├── D.stories.jsx
│ │ │ │ │ │ ├── Empty.stories.ts
│ │ │ │ │ │ ├── F.story.ts
│ │ │ │ │ │ ├── H.stories.mjs
│ │ │ │ │ │ ├── componentPath/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ ├── extension.stories.js
│ │ │ │ │ │ │ ├── noExtension.stories.js
│ │ │ │ │ │ │ └── package.stories.js
│ │ │ │ │ │ ├── docs2/
│ │ │ │ │ │ │ ├── ComponentReference.js
│ │ │ │ │ │ │ ├── ComponentReference.mdx
│ │ │ │ │ │ │ ├── MetaOf.mdx
│ │ │ │ │ │ │ ├── NoTitle.mdx
│ │ │ │ │ │ │ ├── SecondMetaOf.mdx
│ │ │ │ │ │ │ ├── Tags.mdx
│ │ │ │ │ │ │ ├── Template.mdx
│ │ │ │ │ │ │ └── Title.mdx
│ │ │ │ │ │ ├── first-nested/
│ │ │ │ │ │ │ └── deeply/
│ │ │ │ │ │ │ ├── F.stories.js
│ │ │ │ │ │ │ └── Features.stories.jsx
│ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ │ │ └── Button.ts
│ │ │ │ │ │ ├── second-nested/
│ │ │ │ │ │ │ └── G.stories.ts
│ │ │ │ │ │ └── stories.ts
│ │ │ │ │ ├── __search-files-tests__/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ ├── asset.css
│ │ │ │ │ │ │ └── asset.json
│ │ │ │ │ │ ├── commonjs-module-default.js
│ │ │ │ │ │ ├── commonjs-module.js
│ │ │ │ │ │ ├── es-module.js
│ │ │ │ │ │ ├── es-module.stories.js
│ │ │ │ │ │ ├── file-extensions/
│ │ │ │ │ │ │ ├── extension.cjs
│ │ │ │ │ │ │ ├── extension.cts
│ │ │ │ │ │ │ ├── extension.js
│ │ │ │ │ │ │ ├── extension.jsx
│ │ │ │ │ │ │ ├── extension.mjs
│ │ │ │ │ │ │ ├── extension.mts
│ │ │ │ │ │ │ ├── extension.ts
│ │ │ │ │ │ │ └── extension.tsx
│ │ │ │ │ │ ├── no-export.js
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ ├── some.spec.ts
│ │ │ │ │ │ └── some.test.ts
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── IndexingError.test.ts
│ │ │ │ │ │ ├── autoName.test.ts
│ │ │ │ │ │ ├── getHostValidationMiddleware.test.ts
│ │ │ │ │ │ ├── index-extraction.test.ts
│ │ │ │ │ │ ├── remove-mdx-stories.test.ts
│ │ │ │ │ │ ├── server-address.test.ts
│ │ │ │ │ │ ├── server-channel.test.ts
│ │ │ │ │ │ ├── server-statics.test.ts
│ │ │ │ │ │ └── validate-token.test.ts
│ │ │ │ │ ├── autoName.ts
│ │ │ │ │ ├── build-or-throw.ts
│ │ │ │ │ ├── checklist.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── copy-all-static-files.ts
│ │ │ │ │ ├── doTelemetry.ts
│ │ │ │ │ ├── generate-story.ts
│ │ │ │ │ ├── get-builders.ts
│ │ │ │ │ ├── get-caching-middleware.ts
│ │ │ │ │ ├── get-component-variable-name.test.ts
│ │ │ │ │ ├── get-component-variable-name.ts
│ │ │ │ │ ├── get-dummy-args-from-argtypes.test.ts
│ │ │ │ │ ├── get-dummy-args-from-argtypes.ts
│ │ │ │ │ ├── get-new-story-file.test.ts
│ │ │ │ │ ├── get-new-story-file.ts
│ │ │ │ │ ├── get-server-channel.ts
│ │ │ │ │ ├── getAccessControlMiddleware.ts
│ │ │ │ │ ├── getHostValidationMiddleware.ts
│ │ │ │ │ ├── ghost-stories/
│ │ │ │ │ │ ├── component-analyzer.test.ts
│ │ │ │ │ │ ├── component-analyzer.ts
│ │ │ │ │ │ ├── get-candidates.test.ts
│ │ │ │ │ │ ├── get-candidates.ts
│ │ │ │ │ │ ├── parse-vitest-report.test.ts
│ │ │ │ │ │ ├── parse-vitest-report.ts
│ │ │ │ │ │ ├── run-story-tests.ts
│ │ │ │ │ │ ├── test-annotations.ts
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── index-json.test.ts
│ │ │ │ │ ├── index-json.ts
│ │ │ │ │ ├── manifests/
│ │ │ │ │ │ ├── manifests.test.ts
│ │ │ │ │ │ ├── manifests.ts
│ │ │ │ │ │ └── render-components-manifest.ts
│ │ │ │ │ ├── metadata.ts
│ │ │ │ │ ├── middleware.ts
│ │ │ │ │ ├── new-story-templates/
│ │ │ │ │ │ ├── csf-factory-template.test.ts
│ │ │ │ │ │ ├── csf-factory-template.ts
│ │ │ │ │ │ ├── javascript.test.ts
│ │ │ │ │ │ ├── javascript.ts
│ │ │ │ │ │ ├── typescript.test.ts
│ │ │ │ │ │ └── typescript.ts
│ │ │ │ │ ├── open-browser/
│ │ │ │ │ │ ├── open-in-browser.ts
│ │ │ │ │ │ ├── opener.test.ts
│ │ │ │ │ │ └── opener.ts
│ │ │ │ │ ├── output-startup-information.ts
│ │ │ │ │ ├── output-stats.ts
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── generic-parser.test.ts
│ │ │ │ │ │ ├── generic-parser.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── remove-mdx-entries.ts
│ │ │ │ │ ├── safeString.test.ts
│ │ │ │ │ ├── safeString.ts
│ │ │ │ │ ├── save-story/
│ │ │ │ │ │ ├── duplicate-story-with-new-name.test.ts
│ │ │ │ │ │ ├── duplicate-story-with-new-name.ts
│ │ │ │ │ │ ├── getDiff.ts
│ │ │ │ │ │ ├── mocks/
│ │ │ │ │ │ │ ├── csf-variances.stories.tsx
│ │ │ │ │ │ │ ├── csf4-variances.stories.tsx
│ │ │ │ │ │ │ ├── data-variances.stories.tsx
│ │ │ │ │ │ │ ├── export-variances.stories.tsx
│ │ │ │ │ │ │ ├── typescript-constructs.stories.tsx
│ │ │ │ │ │ │ └── unsupported-csf-variances.stories.tsx
│ │ │ │ │ │ ├── save-story.ts
│ │ │ │ │ │ ├── update-args-in-csf-file.test.ts
│ │ │ │ │ │ ├── update-args-in-csf-file.ts
│ │ │ │ │ │ ├── utils.ts
│ │ │ │ │ │ └── valueToAST.ts
│ │ │ │ │ ├── search-files.test.ts
│ │ │ │ │ ├── search-files.ts
│ │ │ │ │ ├── server-address.test.ts
│ │ │ │ │ ├── server-address.ts
│ │ │ │ │ ├── server-init.ts
│ │ │ │ │ ├── server-statics.ts
│ │ │ │ │ ├── strip-comments-and-strings.test.ts
│ │ │ │ │ ├── strip-comments-and-strings.ts
│ │ │ │ │ ├── summarizeIndex.test.ts
│ │ │ │ │ ├── summarizeIndex.ts
│ │ │ │ │ ├── summarizeStats.test.ts
│ │ │ │ │ ├── summarizeStats.ts
│ │ │ │ │ ├── update-check.ts
│ │ │ │ │ ├── validate-token.ts
│ │ │ │ │ ├── versionStatus.ts
│ │ │ │ │ ├── warnOnIncompatibleAddons.ts
│ │ │ │ │ ├── warnWhenUsingArgTypesRegex.ts
│ │ │ │ │ ├── watch-story-specifiers.test.ts
│ │ │ │ │ ├── watch-story-specifiers.ts
│ │ │ │ │ ├── watchConfig.ts
│ │ │ │ │ └── whats-new.ts
│ │ │ │ ├── withTelemetry.test.ts
│ │ │ │ └── withTelemetry.ts
│ │ │ ├── csf/
│ │ │ │ ├── SBType.ts
│ │ │ │ ├── core-annotations.ts
│ │ │ │ ├── csf-factories.test.ts
│ │ │ │ ├── csf-factories.ts
│ │ │ │ ├── includeConditionalArg.test.ts
│ │ │ │ ├── includeConditionalArg.ts
│ │ │ │ ├── index.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── story.test.ts
│ │ │ │ ├── story.ts
│ │ │ │ ├── toStartCaseStr.test.ts
│ │ │ │ └── toStartCaseStr.ts
│ │ │ ├── csf-tools/
│ │ │ │ ├── ConfigFile.test.ts
│ │ │ │ ├── ConfigFile.ts
│ │ │ │ ├── CsfFile.test.ts
│ │ │ │ ├── CsfFile.ts
│ │ │ │ ├── PrintResultType.ts
│ │ │ │ ├── README.md
│ │ │ │ ├── enrichCsf.test.ts
│ │ │ │ ├── enrichCsf.ts
│ │ │ │ ├── findVarInitialization.ts
│ │ │ │ ├── getStorySortParameter.test.ts
│ │ │ │ ├── getStorySortParameter.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── storyIndexer.test.ts
│ │ │ │ └── vitest-plugin/
│ │ │ │ ├── component-transformer.test.ts
│ │ │ │ ├── component-transformer.ts
│ │ │ │ ├── transformer.test.ts
│ │ │ │ └── transformer.ts
│ │ │ ├── docs-tools/
│ │ │ │ ├── README.md
│ │ │ │ ├── argTypes/
│ │ │ │ │ ├── convert/
│ │ │ │ │ │ ├── __testfixtures__/
│ │ │ │ │ │ │ ├── proptypes/
│ │ │ │ │ │ │ │ ├── arrays.js
│ │ │ │ │ │ │ │ ├── enums.js
│ │ │ │ │ │ │ │ ├── misc.js
│ │ │ │ │ │ │ │ ├── objects.js
│ │ │ │ │ │ │ │ ├── react.js
│ │ │ │ │ │ │ │ └── scalars.js
│ │ │ │ │ │ │ └── typescript/
│ │ │ │ │ │ │ ├── aliases.tsx
│ │ │ │ │ │ │ ├── arrays.tsx
│ │ │ │ │ │ │ ├── enums.tsx
│ │ │ │ │ │ │ ├── functions.tsx
│ │ │ │ │ │ │ ├── interfaces.tsx
│ │ │ │ │ │ │ ├── intersections.tsx
│ │ │ │ │ │ │ ├── optionals.tsx
│ │ │ │ │ │ │ ├── records.tsx
│ │ │ │ │ │ │ ├── scalars.tsx
│ │ │ │ │ │ │ ├── tuples.tsx
│ │ │ │ │ │ │ └── unions.tsx
│ │ │ │ │ │ ├── convert.test.ts
│ │ │ │ │ │ ├── flow/
│ │ │ │ │ │ │ ├── convert.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── types.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── proptypes/
│ │ │ │ │ │ │ ├── convert.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── types.ts
│ │ │ │ │ │ ├── typescript/
│ │ │ │ │ │ │ ├── convert.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── types.ts
│ │ │ │ │ │ └── utils.ts
│ │ │ │ │ ├── docgen/
│ │ │ │ │ │ ├── PropDef.ts
│ │ │ │ │ │ ├── createPropDef.ts
│ │ │ │ │ │ ├── extractDocgenProps.test.ts
│ │ │ │ │ │ ├── extractDocgenProps.ts
│ │ │ │ │ │ ├── flow/
│ │ │ │ │ │ │ ├── createDefaultValue.ts
│ │ │ │ │ │ │ ├── createPropDef.test.ts
│ │ │ │ │ │ │ ├── createPropDef.ts
│ │ │ │ │ │ │ └── createType.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── typeScript/
│ │ │ │ │ │ │ ├── createDefaultValue.ts
│ │ │ │ │ │ │ ├── createPropDef.test.ts
│ │ │ │ │ │ │ ├── createPropDef.ts
│ │ │ │ │ │ │ └── createType.ts
│ │ │ │ │ │ ├── types.ts
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ ├── defaultValue.ts
│ │ │ │ │ │ ├── docgenInfo.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── string.ts
│ │ │ │ │ ├── enhanceArgTypes.test.ts
│ │ │ │ │ ├── enhanceArgTypes.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── jsdocParser.test.ts
│ │ │ │ │ ├── jsdocParser.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ ├── typings.d.ts
│ │ │ │ │ ├── utils.test.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── shared.ts
│ │ │ ├── highlight/
│ │ │ │ ├── StoryContent.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── icons.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ ├── useHighlights.stories.tsx
│ │ │ │ ├── useHighlights.ts
│ │ │ │ ├── utils.test.ts
│ │ │ │ └── utils.ts
│ │ │ ├── instrumenter/
│ │ │ │ ├── EVENTS.ts
│ │ │ │ ├── README.md
│ │ │ │ ├── index.ts
│ │ │ │ ├── instrumenter.test.ts
│ │ │ │ ├── instrumenter.ts
│ │ │ │ ├── preview-api.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── manager/
│ │ │ │ ├── App.tsx
│ │ │ │ ├── README.md
│ │ │ │ ├── __tests__/
│ │ │ │ │ └── index.test.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── Focus/
│ │ │ │ │ │ └── Focus.tsx
│ │ │ │ │ ├── Optional/
│ │ │ │ │ │ ├── Optional.stories.tsx
│ │ │ │ │ │ └── Optional.tsx
│ │ │ │ │ ├── Particles/
│ │ │ │ │ │ ├── Particles.stories.tsx
│ │ │ │ │ │ └── Particles.tsx
│ │ │ │ │ ├── Shortcut.tsx
│ │ │ │ │ ├── TextFlip.stories.tsx
│ │ │ │ │ ├── TextFlip.tsx
│ │ │ │ │ ├── TourGuide/
│ │ │ │ │ │ ├── HighlightElement.stories.tsx
│ │ │ │ │ │ ├── HighlightElement.tsx
│ │ │ │ │ │ ├── TourGuide.stories.tsx
│ │ │ │ │ │ ├── TourGuide.tsx
│ │ │ │ │ │ └── TourTooltip.tsx
│ │ │ │ │ ├── error-boundary/
│ │ │ │ │ │ ├── ManagerErrorBoundary.stories.tsx
│ │ │ │ │ │ ├── ManagerErrorBoundary.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── Drag.stories.tsx
│ │ │ │ │ │ ├── Drag.tsx
│ │ │ │ │ │ ├── Layout.stories.tsx
│ │ │ │ │ │ ├── Layout.tsx
│ │ │ │ │ │ ├── LayoutProvider.tsx
│ │ │ │ │ │ ├── MainAreaContainer.tsx
│ │ │ │ │ │ ├── PanelContainer.tsx
│ │ │ │ │ │ ├── SidebarContainer.tsx
│ │ │ │ │ │ ├── useDragging.ts
│ │ │ │ │ │ └── useLandmarkIndicator.ts
│ │ │ │ │ ├── mobile/
│ │ │ │ │ │ ├── about/
│ │ │ │ │ │ │ ├── MobileAbout.stories.tsx
│ │ │ │ │ │ │ └── MobileAbout.tsx
│ │ │ │ │ │ └── navigation/
│ │ │ │ │ │ ├── MobileAddonsDrawer.tsx
│ │ │ │ │ │ ├── MobileMenuDrawer.tsx
│ │ │ │ │ │ ├── MobileNavigation.stories.tsx
│ │ │ │ │ │ └── MobileNavigation.tsx
│ │ │ │ │ ├── notifications/
│ │ │ │ │ │ ├── NotificationItem.stories.tsx
│ │ │ │ │ │ ├── NotificationItem.tsx
│ │ │ │ │ │ ├── NotificationList.stories.tsx
│ │ │ │ │ │ └── NotificationList.tsx
│ │ │ │ │ ├── panel/
│ │ │ │ │ │ ├── Panel.stories.tsx
│ │ │ │ │ │ └── Panel.tsx
│ │ │ │ │ ├── preview/
│ │ │ │ │ │ ├── FramesRenderer.tsx
│ │ │ │ │ │ ├── Iframe.stories.tsx
│ │ │ │ │ │ ├── Iframe.tsx
│ │ │ │ │ │ ├── NumericInput.stories.tsx
│ │ │ │ │ │ ├── NumericInput.tsx
│ │ │ │ │ │ ├── Preview.tsx
│ │ │ │ │ │ ├── SizeInput.tsx
│ │ │ │ │ │ ├── Toolbar.tsx
│ │ │ │ │ │ ├── Viewport.stories.tsx
│ │ │ │ │ │ ├── Viewport.tsx
│ │ │ │ │ │ ├── Wrappers.tsx
│ │ │ │ │ │ ├── tools/
│ │ │ │ │ │ │ ├── addons.tsx
│ │ │ │ │ │ │ ├── menu.tsx
│ │ │ │ │ │ │ ├── open-in-editor.tsx
│ │ │ │ │ │ │ ├── remount.tsx
│ │ │ │ │ │ │ ├── share.stories.tsx
│ │ │ │ │ │ │ ├── share.tsx
│ │ │ │ │ │ │ ├── zoom.stories.tsx
│ │ │ │ │ │ │ └── zoom.tsx
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ ├── components.ts
│ │ │ │ │ │ └── types.tsx
│ │ │ │ │ ├── sidebar/
│ │ │ │ │ │ ├── Brand.tsx
│ │ │ │ │ │ ├── ChecklistWidget.stories.tsx
│ │ │ │ │ │ ├── ChecklistWidget.tsx
│ │ │ │ │ │ ├── ContextMenu.tsx
│ │ │ │ │ │ ├── CreateNewStoryFileModal.tsx
│ │ │ │ │ │ ├── Explorer.stories.tsx
│ │ │ │ │ │ ├── Explorer.tsx
│ │ │ │ │ │ ├── FIleSearchList.utils.tsx
│ │ │ │ │ │ ├── FileList.tsx
│ │ │ │ │ │ ├── FileSearchList.stories.tsx
│ │ │ │ │ │ ├── FileSearchList.tsx
│ │ │ │ │ │ ├── FileSearchListSkeleton.stories.tsx
│ │ │ │ │ │ ├── FileSearchListSkeleton.tsx
│ │ │ │ │ │ ├── FileSearchModal.stories.tsx
│ │ │ │ │ │ ├── FileSearchModal.tsx
│ │ │ │ │ │ ├── FileSearchModal.utils.test.tsx
│ │ │ │ │ │ ├── FileSearchModal.utils.tsx
│ │ │ │ │ │ ├── Filter.stories.tsx
│ │ │ │ │ │ ├── Filter.story-helpers.tsx
│ │ │ │ │ │ ├── Filter.tsx
│ │ │ │ │ │ ├── FilterPanel.stories.tsx
│ │ │ │ │ │ ├── FilterPanel.tsx
│ │ │ │ │ │ ├── FilterPanel.utils.ts
│ │ │ │ │ │ ├── FilterPanelLink.tsx
│ │ │ │ │ │ ├── Heading.stories.tsx
│ │ │ │ │ │ ├── Heading.tsx
│ │ │ │ │ │ ├── HighlightStyles.tsx
│ │ │ │ │ │ ├── IconSymbols.stories.tsx
│ │ │ │ │ │ ├── IconSymbols.tsx
│ │ │ │ │ │ ├── Loader.tsx
│ │ │ │ │ │ ├── Menu.stories.tsx
│ │ │ │ │ │ ├── Menu.tsx
│ │ │ │ │ │ ├── NoResults.tsx
│ │ │ │ │ │ ├── RefBlocks.tsx
│ │ │ │ │ │ ├── RefIndicator.tsx
│ │ │ │ │ │ ├── Refs.stories.tsx
│ │ │ │ │ │ ├── Refs.tsx
│ │ │ │ │ │ ├── Search.stories.tsx
│ │ │ │ │ │ ├── Search.tsx
│ │ │ │ │ │ ├── SearchResults.stories.tsx
│ │ │ │ │ │ ├── SearchResults.tsx
│ │ │ │ │ │ ├── Sidebar.stories.tsx
│ │ │ │ │ │ ├── Sidebar.tsx
│ │ │ │ │ │ ├── SidebarBottom.stories.tsx
│ │ │ │ │ │ ├── SidebarBottom.tsx
│ │ │ │ │ │ ├── StatusButton.tsx
│ │ │ │ │ │ ├── StatusContext.tsx
│ │ │ │ │ │ ├── TestingWidget.stories.tsx
│ │ │ │ │ │ ├── TestingWidget.tsx
│ │ │ │ │ │ ├── Tree.stories.tsx
│ │ │ │ │ │ ├── Tree.tsx
│ │ │ │ │ │ ├── TreeNode.stories.tsx
│ │ │ │ │ │ ├── TreeNode.tsx
│ │ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ │ └── Sidebar.test.tsx
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── CollapseIcon.tsx
│ │ │ │ │ │ ├── mockdata.large.ts
│ │ │ │ │ │ ├── mockdata.ts
│ │ │ │ │ │ ├── types.ts
│ │ │ │ │ │ ├── useChecklist.ts
│ │ │ │ │ │ ├── useDynamicFavicon.stories.tsx
│ │ │ │ │ │ ├── useDynamicFavicon.ts
│ │ │ │ │ │ ├── useExpanded.ts
│ │ │ │ │ │ ├── useFilterData.tsx
│ │ │ │ │ │ ├── useHighlighted.ts
│ │ │ │ │ │ └── useLastViewed.ts
│ │ │ │ │ └── upgrade/
│ │ │ │ │ ├── UpgradeBlock.stories.tsx
│ │ │ │ │ └── UpgradeBlock.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── container/
│ │ │ │ │ ├── Menu.stories.tsx
│ │ │ │ │ ├── Menu.tsx
│ │ │ │ │ ├── Notifications.tsx
│ │ │ │ │ ├── Panel.stories.tsx
│ │ │ │ │ ├── Panel.tsx
│ │ │ │ │ ├── Preview.tsx
│ │ │ │ │ └── Sidebar.tsx
│ │ │ │ ├── globals/
│ │ │ │ │ ├── exports.ts
│ │ │ │ │ ├── globals-module-info.ts
│ │ │ │ │ ├── globals.ts
│ │ │ │ │ └── runtime.ts
│ │ │ │ ├── globals-runtime.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── hooks/
│ │ │ │ │ ├── useDebounce.ts
│ │ │ │ │ ├── useLandmark.ts
│ │ │ │ │ ├── useLocation.ts
│ │ │ │ │ ├── useMeasure.tsx
│ │ │ │ │ └── useMedia.tsx
│ │ │ │ ├── index.stories.tsx
│ │ │ │ ├── index.tsx
│ │ │ │ ├── keybinding.ts
│ │ │ │ ├── manager-stores.mock.ts
│ │ │ │ ├── manager-stores.ts
│ │ │ │ ├── provider.ts
│ │ │ │ ├── runtime.tsx
│ │ │ │ ├── settings/
│ │ │ │ │ ├── About.tsx
│ │ │ │ │ ├── AboutPage.tsx
│ │ │ │ │ ├── Checklist/
│ │ │ │ │ │ ├── Checklist.stories.tsx
│ │ │ │ │ │ └── Checklist.tsx
│ │ │ │ │ ├── GuidePage.stories.tsx
│ │ │ │ │ ├── GuidePage.tsx
│ │ │ │ │ ├── SettingsFooter.stories.tsx
│ │ │ │ │ ├── SettingsFooter.tsx
│ │ │ │ │ ├── ShortcutsPage.tsx
│ │ │ │ │ ├── about.stories.tsx
│ │ │ │ │ ├── defaultShortcuts.tsx
│ │ │ │ │ ├── index.tsx
│ │ │ │ │ ├── shortcuts.stories.tsx
│ │ │ │ │ ├── shortcuts.tsx
│ │ │ │ │ ├── whats_new.tsx
│ │ │ │ │ ├── whats_new_footer.stories.tsx
│ │ │ │ │ └── whats_new_page.tsx
│ │ │ │ ├── typings.d.ts
│ │ │ │ └── utils/
│ │ │ │ ├── prepareForTelemetry.ts
│ │ │ │ ├── status.test.ts
│ │ │ │ ├── status.tsx
│ │ │ │ ├── tree.test.js
│ │ │ │ ├── tree.ts
│ │ │ │ └── trySelectStory.ts
│ │ │ ├── manager-api/
│ │ │ │ ├── context.ts
│ │ │ │ ├── index.mock.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── initial-state.ts
│ │ │ │ ├── lib/
│ │ │ │ │ ├── addons.ts
│ │ │ │ │ ├── events.ts
│ │ │ │ │ ├── intersect.ts
│ │ │ │ │ ├── merge.ts
│ │ │ │ │ ├── platform.ts
│ │ │ │ │ ├── request-response.ts
│ │ │ │ │ ├── shortcut.test.ts
│ │ │ │ │ ├── shortcut.ts
│ │ │ │ │ ├── store-setup.ts
│ │ │ │ │ ├── stories.test.ts
│ │ │ │ │ ├── stories.ts
│ │ │ │ │ ├── storybook-channel-mock.ts
│ │ │ │ │ ├── types.tsx
│ │ │ │ │ └── url.ts
│ │ │ │ ├── modules/
│ │ │ │ │ ├── addons.ts
│ │ │ │ │ ├── channel.ts
│ │ │ │ │ ├── globals.ts
│ │ │ │ │ ├── layout.ts
│ │ │ │ │ ├── notifications.ts
│ │ │ │ │ ├── open-in-editor.tsx
│ │ │ │ │ ├── provider.ts
│ │ │ │ │ ├── refs.ts
│ │ │ │ │ ├── settings.ts
│ │ │ │ │ ├── shortcuts.ts
│ │ │ │ │ ├── statuses.ts
│ │ │ │ │ ├── stories.ts
│ │ │ │ │ ├── tags.ts
│ │ │ │ │ ├── url.ts
│ │ │ │ │ ├── versions.ts
│ │ │ │ │ └── whatsnew.tsx
│ │ │ │ ├── root.tsx
│ │ │ │ ├── store.ts
│ │ │ │ ├── stores/
│ │ │ │ │ ├── __mocks__/
│ │ │ │ │ │ ├── checklist.ts
│ │ │ │ │ │ ├── status.ts
│ │ │ │ │ │ └── test-provider.ts
│ │ │ │ │ ├── checklist.ts
│ │ │ │ │ ├── status.ts
│ │ │ │ │ └── test-provider.ts
│ │ │ │ ├── test-utils/
│ │ │ │ │ └── store.ts
│ │ │ │ ├── tests/
│ │ │ │ │ ├── addons.test.js
│ │ │ │ │ ├── events.test.ts
│ │ │ │ │ ├── globals.test.ts
│ │ │ │ │ ├── intersect.test.ts
│ │ │ │ │ ├── layout.test.ts
│ │ │ │ │ ├── mockStoriesEntries.ts
│ │ │ │ │ ├── notifications.test.js
│ │ │ │ │ ├── ref-mockdata.login-required.json
│ │ │ │ │ ├── ref-mockdata.success.json
│ │ │ │ │ ├── refs.test.ts
│ │ │ │ │ ├── shortcut.test.js
│ │ │ │ │ ├── shortcuts.test.js
│ │ │ │ │ ├── statuses.test.ts
│ │ │ │ │ ├── store.test.js
│ │ │ │ │ ├── stories.test.ts
│ │ │ │ │ ├── tags.test.js
│ │ │ │ │ ├── url.test.js
│ │ │ │ │ └── versions.test.js
│ │ │ │ ├── typings.d.ts
│ │ │ │ └── version.ts
│ │ │ ├── manager-errors.ts
│ │ │ ├── measure/
│ │ │ │ ├── README.md
│ │ │ │ ├── Tool.tsx
│ │ │ │ ├── box-model/
│ │ │ │ │ ├── canvas.ts
│ │ │ │ │ ├── labels.ts
│ │ │ │ │ └── visualizer.ts
│ │ │ │ ├── constants.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── util-types.ts
│ │ │ │ ├── util.ts
│ │ │ │ └── withMeasure.ts
│ │ │ ├── mocking-utils/
│ │ │ │ ├── automock.ts
│ │ │ │ ├── esmWalker.ts
│ │ │ │ ├── extract.test.ts
│ │ │ │ ├── extract.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mocker-runtime.js
│ │ │ │ ├── redirect.ts
│ │ │ │ ├── resolve.ts
│ │ │ │ └── runtime.ts
│ │ │ ├── node-logger/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── logger/
│ │ │ │ │ ├── colors.ts
│ │ │ │ │ ├── console.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── log-tracker.ts
│ │ │ │ │ └── logger.ts
│ │ │ │ ├── prompts/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── prompt-config.ts
│ │ │ │ │ ├── prompt-functions.ts
│ │ │ │ │ ├── prompt-provider-base.ts
│ │ │ │ │ ├── prompt-provider-clack.ts
│ │ │ │ │ └── storage.ts
│ │ │ │ ├── tasks.test.ts
│ │ │ │ ├── tasks.ts
│ │ │ │ ├── wrap-utils.test.ts
│ │ │ │ └── wrap-utils.ts
│ │ │ ├── outline/
│ │ │ │ ├── OutlineSelector.tsx
│ │ │ │ ├── README.md
│ │ │ │ ├── constants.ts
│ │ │ │ ├── helpers.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── outlineCSS.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── withOutline.ts
│ │ │ ├── preview/
│ │ │ │ ├── README.md
│ │ │ │ ├── globals/
│ │ │ │ │ ├── globals.ts
│ │ │ │ │ └── runtime.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── preview-navigator.stories.tsx
│ │ │ │ ├── preview-navigator.ts
│ │ │ │ ├── runtime.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ └── utils.ts
│ │ │ ├── preview-api/
│ │ │ │ ├── Errors.stories.tsx
│ │ │ │ ├── README-addons.md
│ │ │ │ ├── README-core-client.md
│ │ │ │ ├── README-preview-web.md
│ │ │ │ ├── README-store.md
│ │ │ │ ├── README.md
│ │ │ │ ├── addons.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── modules/
│ │ │ │ │ ├── addons/
│ │ │ │ │ │ ├── hooks.test.js
│ │ │ │ │ │ ├── hooks.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ ├── make-decorator.test.ts
│ │ │ │ │ │ ├── make-decorator.ts
│ │ │ │ │ │ └── storybook-channel-mock.ts
│ │ │ │ │ ├── preview-web/
│ │ │ │ │ │ ├── Preview.tsx
│ │ │ │ │ │ ├── PreviewWeb.integration.test.ts
│ │ │ │ │ │ ├── PreviewWeb.mockdata.ts
│ │ │ │ │ │ ├── PreviewWeb.test.ts
│ │ │ │ │ │ ├── PreviewWeb.tsx
│ │ │ │ │ │ ├── PreviewWithSelection.tsx
│ │ │ │ │ │ ├── SelectionStore.ts
│ │ │ │ │ │ ├── UrlStore.test.ts
│ │ │ │ │ │ ├── UrlStore.ts
│ │ │ │ │ │ ├── View.ts
│ │ │ │ │ │ ├── WebView.ts
│ │ │ │ │ │ ├── docs-context/
│ │ │ │ │ │ │ ├── DocsContext.test.ts
│ │ │ │ │ │ │ ├── DocsContext.ts
│ │ │ │ │ │ │ ├── DocsContextProps.ts
│ │ │ │ │ │ │ ├── DocsRenderFunction.ts
│ │ │ │ │ │ │ └── test-utils.ts
│ │ │ │ │ │ ├── emitTransformCode.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── parseArgsParam.test.ts
│ │ │ │ │ │ ├── parseArgsParam.ts
│ │ │ │ │ │ ├── render/
│ │ │ │ │ │ │ ├── CsfDocsRender.test.ts
│ │ │ │ │ │ │ ├── CsfDocsRender.ts
│ │ │ │ │ │ │ ├── MdxDocsRender.test.ts
│ │ │ │ │ │ │ ├── MdxDocsRender.ts
│ │ │ │ │ │ │ ├── Render.ts
│ │ │ │ │ │ │ ├── StoryRender.test.ts
│ │ │ │ │ │ │ ├── StoryRender.ts
│ │ │ │ │ │ │ ├── animation-utils.ts
│ │ │ │ │ │ │ ├── mount-utils.test.ts
│ │ │ │ │ │ │ └── mount-utils.ts
│ │ │ │ │ │ ├── simulate-pageload.test.ts
│ │ │ │ │ │ └── simulate-pageload.ts
│ │ │ │ │ └── store/
│ │ │ │ │ ├── ArgsStore.test.ts
│ │ │ │ │ ├── ArgsStore.ts
│ │ │ │ │ ├── GlobalsStore.test.ts
│ │ │ │ │ ├── GlobalsStore.ts
│ │ │ │ │ ├── StoryIndexStore.test.ts
│ │ │ │ │ ├── StoryIndexStore.ts
│ │ │ │ │ ├── StoryStore.test.ts
│ │ │ │ │ ├── StoryStore.ts
│ │ │ │ │ ├── args.test.ts
│ │ │ │ │ ├── args.ts
│ │ │ │ │ ├── autoTitle.test.ts
│ │ │ │ │ ├── autoTitle.ts
│ │ │ │ │ ├── csf/
│ │ │ │ │ │ ├── __mocks__/
│ │ │ │ │ │ │ ├── defaultExportAnnotations.mockfile.ts
│ │ │ │ │ │ │ └── namedExportAnnotations.mockfile.ts
│ │ │ │ │ │ ├── beforeAll.test.ts
│ │ │ │ │ │ ├── beforeAll.ts
│ │ │ │ │ │ ├── composeConfigs.test.ts
│ │ │ │ │ │ ├── composeConfigs.ts
│ │ │ │ │ │ ├── csf-factory-utils.ts
│ │ │ │ │ │ ├── getValuesFromGlobalTypes.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── normalizeArrays.ts
│ │ │ │ │ │ ├── normalizeComponentAnnotations.ts
│ │ │ │ │ │ ├── normalizeInputTypes.test.ts
│ │ │ │ │ │ ├── normalizeInputTypes.ts
│ │ │ │ │ │ ├── normalizeProjectAnnotations.test.ts
│ │ │ │ │ │ ├── normalizeProjectAnnotations.ts
│ │ │ │ │ │ ├── normalizeStory.test.ts
│ │ │ │ │ │ ├── normalizeStory.ts
│ │ │ │ │ │ ├── portable-stories.test.ts
│ │ │ │ │ │ ├── portable-stories.ts
│ │ │ │ │ │ ├── prepareStory.test.ts
│ │ │ │ │ │ ├── prepareStory.ts
│ │ │ │ │ │ ├── processCSFFile.test.ts
│ │ │ │ │ │ ├── processCSFFile.ts
│ │ │ │ │ │ ├── stepRunners.test.ts
│ │ │ │ │ │ └── stepRunners.ts
│ │ │ │ │ ├── decorators.test.ts
│ │ │ │ │ ├── decorators.ts
│ │ │ │ │ ├── filterArgTypes.ts
│ │ │ │ │ ├── hooks.test.ts
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── inferArgTypes.test.ts
│ │ │ │ │ ├── inferArgTypes.ts
│ │ │ │ │ ├── inferControls.test.ts
│ │ │ │ │ ├── inferControls.ts
│ │ │ │ │ ├── parameters.test.ts
│ │ │ │ │ ├── parameters.ts
│ │ │ │ │ ├── reporter-api.ts
│ │ │ │ │ ├── sortStories.ts
│ │ │ │ │ ├── storySort.test.ts
│ │ │ │ │ └── storySort.ts
│ │ │ │ ├── preview-web.ts
│ │ │ │ └── store.ts
│ │ │ ├── preview-errors.ts
│ │ │ ├── router/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.ts
│ │ │ │ ├── router.tsx
│ │ │ │ ├── types.ts
│ │ │ │ ├── utils.test.ts
│ │ │ │ └── utils.ts
│ │ │ ├── server-errors.ts
│ │ │ ├── shared/
│ │ │ │ ├── checklist-store/
│ │ │ │ │ ├── checklistData.state.ts
│ │ │ │ │ ├── checklistData.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── constants/
│ │ │ │ │ ├── environments-support.ts
│ │ │ │ │ └── tags.ts
│ │ │ │ ├── status-store/
│ │ │ │ │ ├── index.test-d.ts
│ │ │ │ │ ├── index.test.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── test-provider-store/
│ │ │ │ │ ├── index.test-d.ts
│ │ │ │ │ ├── index.test.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── universal-store/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── __mocks__/
│ │ │ │ │ │ └── instances.ts
│ │ │ │ │ ├── index.test-d.ts
│ │ │ │ │ ├── index.test.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── instances.ts
│ │ │ │ │ ├── mock.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ ├── use-universal-store-manager.test.ts
│ │ │ │ │ ├── use-universal-store-manager.ts
│ │ │ │ │ └── use-universal-store-preview.ts
│ │ │ │ └── utils/
│ │ │ │ ├── categorize-render-errors.test.ts
│ │ │ │ ├── categorize-render-errors.ts
│ │ │ │ ├── ecosystem-identifier.test.ts
│ │ │ │ ├── ecosystem-identifier.ts
│ │ │ │ └── module.ts
│ │ │ ├── storybook-error.ts
│ │ │ ├── telemetry/
│ │ │ │ ├── README.md
│ │ │ │ ├── anonymous-id.test.ts
│ │ │ │ ├── anonymous-id.ts
│ │ │ │ ├── detect-agent.test.ts
│ │ │ │ ├── detect-agent.ts
│ │ │ │ ├── error-collector.test.ts
│ │ │ │ ├── error-collector.ts
│ │ │ │ ├── event-cache.test.ts
│ │ │ │ ├── event-cache.ts
│ │ │ │ ├── exec-command-count-lines.test.ts
│ │ │ │ ├── exec-command-count-lines.ts
│ │ │ │ ├── fetch.ts
│ │ │ │ ├── get-application-file-count.test.ts
│ │ │ │ ├── get-application-file-count.ts
│ │ │ │ ├── get-chromatic-version.test.ts
│ │ │ │ ├── get-chromatic-version.ts
│ │ │ │ ├── get-framework-info.test.ts
│ │ │ │ ├── get-framework-info.ts
│ │ │ │ ├── get-has-router-package.test.ts
│ │ │ │ ├── get-has-router-package.ts
│ │ │ │ ├── get-known-packages.test.ts
│ │ │ │ ├── get-known-packages.ts
│ │ │ │ ├── get-monorepo-type.test.ts
│ │ │ │ ├── get-monorepo-type.ts
│ │ │ │ ├── get-package-manager-info.test.ts
│ │ │ │ ├── get-package-manager-info.ts
│ │ │ │ ├── get-portable-stories-usage.test.ts
│ │ │ │ ├── get-portable-stories-usage.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── notify.ts
│ │ │ │ ├── one-way-hash.ts
│ │ │ │ ├── package-json.ts
│ │ │ │ ├── run-telemetry-operation.ts
│ │ │ │ ├── sanitize.test.ts
│ │ │ │ ├── sanitize.ts
│ │ │ │ ├── session-id.test.ts
│ │ │ │ ├── session-id.ts
│ │ │ │ ├── storybook-metadata.test.ts
│ │ │ │ ├── storybook-metadata.ts
│ │ │ │ ├── telemetry.test.ts
│ │ │ │ ├── telemetry.ts
│ │ │ │ └── types.ts
│ │ │ ├── test/
│ │ │ │ ├── README.md
│ │ │ │ ├── expect.ts
│ │ │ │ ├── index.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── spy.test.ts
│ │ │ │ ├── spy.ts
│ │ │ │ ├── testing-library.ts
│ │ │ │ └── utils.ts
│ │ │ ├── theming/
│ │ │ │ ├── README.md
│ │ │ │ ├── animation.ts
│ │ │ │ ├── base.ts
│ │ │ │ ├── convert.ts
│ │ │ │ ├── create.ts
│ │ │ │ ├── ensure.ts
│ │ │ │ ├── global.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── modules/
│ │ │ │ │ └── syntax.ts
│ │ │ │ ├── tests/
│ │ │ │ │ ├── convert.test.js
│ │ │ │ │ ├── create.test.js
│ │ │ │ │ └── util.test.js
│ │ │ │ ├── themes/
│ │ │ │ │ ├── dark.ts
│ │ │ │ │ └── light.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils.ts
│ │ │ ├── toolbar/
│ │ │ │ ├── components/
│ │ │ │ │ ├── ToolbarManager.tsx
│ │ │ │ │ └── ToolbarMenuSelect.tsx
│ │ │ │ ├── constants.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── manager.tsx
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils/
│ │ │ │ ├── get-selected.ts
│ │ │ │ ├── normalize-toolbar-arg-type.ts
│ │ │ │ └── register-shortcuts.ts
│ │ │ ├── types/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.ts
│ │ │ │ └── modules/
│ │ │ │ ├── addons.ts
│ │ │ │ ├── api-stories.ts
│ │ │ │ ├── api.ts
│ │ │ │ ├── builder.ts
│ │ │ │ ├── builders.ts
│ │ │ │ ├── channelApi.ts
│ │ │ │ ├── composedStory.ts
│ │ │ │ ├── core-common.ts
│ │ │ │ ├── csf.ts
│ │ │ │ ├── docs.ts
│ │ │ │ ├── features.ts
│ │ │ │ ├── frameworks.ts
│ │ │ │ ├── indexer.ts
│ │ │ │ ├── languages.ts
│ │ │ │ ├── renderers.ts
│ │ │ │ ├── status.ts
│ │ │ │ ├── story.ts
│ │ │ │ ├── test-provider.ts
│ │ │ │ ├── universal-store.ts
│ │ │ │ └── webpack.ts
│ │ │ ├── typings.d.ts
│ │ │ └── viewport/
│ │ │ ├── README.md
│ │ │ ├── components/
│ │ │ │ └── Tool.tsx
│ │ │ ├── constants.ts
│ │ │ ├── defaults.ts
│ │ │ ├── index.ts
│ │ │ ├── manager.tsx
│ │ │ ├── preview.ts
│ │ │ ├── responsiveViewport.tsx
│ │ │ ├── types.ts
│ │ │ ├── useViewport.ts
│ │ │ └── viewportIcons.tsx
│ │ ├── template/
│ │ │ ├── __mocks__/
│ │ │ │ ├── lodash-es/
│ │ │ │ │ └── add.js
│ │ │ │ ├── lodash-es.js
│ │ │ │ └── uuid.js
│ │ │ └── stories/
│ │ │ ├── argMapping.stories.ts
│ │ │ ├── argTypes.stories.ts
│ │ │ ├── args.stories.ts
│ │ │ ├── argtype.stories.ts
│ │ │ ├── autotitle.stories.ts
│ │ │ ├── backgrounds/
│ │ │ │ └── globals.stories.ts
│ │ │ ├── basics.stories.ts
│ │ │ ├── before-each.stories.ts
│ │ │ ├── component-play.stories.ts
│ │ │ ├── component-test.basics.stories.ts
│ │ │ ├── component-test.unhandled-errors.stories.ts
│ │ │ ├── configs.stories.ts
│ │ │ ├── controls/
│ │ │ │ ├── basics.stories.ts
│ │ │ │ ├── conditional.stories.ts
│ │ │ │ ├── disable.stories.ts
│ │ │ │ ├── filters.stories.ts
│ │ │ │ ├── issues.stories.ts
│ │ │ │ ├── matchers.stories.ts
│ │ │ │ └── sorting.stories.ts
│ │ │ ├── decorators.stories.ts
│ │ │ ├── destructuring-not-transpiled.stories.ts
│ │ │ ├── expect.stories.tsx
│ │ │ ├── exportOrder.stories.ts
│ │ │ ├── global.d.ts
│ │ │ ├── globals.stories.ts
│ │ │ ├── hooks.stories.ts
│ │ │ ├── import.js
│ │ │ ├── indexer.stories.ts
│ │ │ ├── interleavedExports.stories.ts
│ │ │ ├── layout.stories.ts
│ │ │ ├── loader-enhancements.stories.ts
│ │ │ ├── loaders.stories.ts
│ │ │ ├── moduleMocking.stories.ts
│ │ │ ├── mount-in-play.stories.ts
│ │ │ ├── names.stories.ts
│ │ │ ├── order-of-hooks.stories.ts
│ │ │ ├── parameters-actions.stories.ts
│ │ │ ├── parameters.stories.ts
│ │ │ ├── preview.ts
│ │ │ ├── rendering.stories.ts
│ │ │ ├── shortcuts.stories.ts
│ │ │ ├── spies.stories.ts
│ │ │ ├── tags-add.stories.ts
│ │ │ ├── tags-config.stories.ts
│ │ │ ├── tags-remove.stories.ts
│ │ │ ├── test/
│ │ │ │ ├── CjsNodeModuleMocking.stories.js
│ │ │ │ ├── ClearModuleMocksMocking.api.ts
│ │ │ │ ├── ClearModuleMocksMocking.stories.ts
│ │ │ │ ├── ModuleAutoMocking.stories.ts
│ │ │ │ ├── ModuleAutoMocking.utils.ts
│ │ │ │ ├── ModuleMocking.stories.ts
│ │ │ │ ├── ModuleMocking.utils.ts
│ │ │ │ ├── ModuleSpyMocking.stories.ts
│ │ │ │ ├── ModuleSpyMocking.utils.ts
│ │ │ │ ├── NodeModuleMocking.stories.js
│ │ │ │ └── __mocks__/
│ │ │ │ └── ModuleAutoMocking.utils.ts
│ │ │ ├── title.stories.ts
│ │ │ ├── toolbars/
│ │ │ │ └── globals.stories.ts
│ │ │ ├── unicode.stories.ts
│ │ │ ├── utils.mock.ts
│ │ │ ├── utils.ts
│ │ │ └── viewport/
│ │ │ └── globals.stories.ts
│ │ ├── tsconfig.json
│ │ ├── vitest.config.ts
│ │ └── vitest.d.ts
│ ├── e2e-tests/
│ │ ├── addon-a11y.spec.ts
│ │ ├── addon-actions.spec.ts
│ │ ├── addon-backgrounds.spec.ts
│ │ ├── addon-controls.spec.ts
│ │ ├── addon-docs.spec.ts
│ │ ├── addon-mcp.spec.ts
│ │ ├── addon-onboarding.spec.ts
│ │ ├── addon-toolbars.spec.ts
│ │ ├── addon-viewport.spec.ts
│ │ ├── component-tests.spec.ts
│ │ ├── framework-nextjs.spec.ts
│ │ ├── framework-svelte.spec.ts
│ │ ├── framework-vue3.spec.ts
│ │ ├── json-files.spec.ts
│ │ ├── manager.spec.ts
│ │ ├── module-mocking.spec.ts
│ │ ├── navigation.spec.ts
│ │ ├── preview-api.spec.ts
│ │ ├── sb-module-mocking.spec.ts
│ │ ├── storybook-hooks.spec.ts
│ │ ├── storybook.setup.ts
│ │ ├── tags.spec.ts
│ │ └── util.ts
│ ├── frameworks/
│ │ ├── angular/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── build-schema.json
│ │ │ ├── builders.json
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── __tests__/
│ │ │ │ │ └── button.css
│ │ │ │ ├── builders/
│ │ │ │ │ ├── build-storybook/
│ │ │ │ │ │ ├── index.spec.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── start-storybook/
│ │ │ │ │ │ ├── index.spec.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── error-handler.ts
│ │ │ │ │ ├── run-compodoc.spec.ts
│ │ │ │ │ ├── run-compodoc.ts
│ │ │ │ │ └── standalone-options.ts
│ │ │ │ ├── client/
│ │ │ │ │ ├── angular-beta/
│ │ │ │ │ │ ├── AbstractRenderer.ts
│ │ │ │ │ │ ├── CanvasRenderer.ts
│ │ │ │ │ │ ├── ComputesTemplateFromComponent.test.ts
│ │ │ │ │ │ ├── ComputesTemplateFromComponent.ts
│ │ │ │ │ │ ├── DocsRenderer.ts
│ │ │ │ │ │ ├── RendererFactory.test.ts
│ │ │ │ │ │ ├── RendererFactory.ts
│ │ │ │ │ │ ├── StorybookModule.test.ts
│ │ │ │ │ │ ├── StorybookModule.ts
│ │ │ │ │ │ ├── StorybookProvider.ts
│ │ │ │ │ │ ├── StorybookWrapperComponent.ts
│ │ │ │ │ │ ├── __testfixtures__/
│ │ │ │ │ │ │ ├── input.component.ts
│ │ │ │ │ │ │ └── test.module.ts
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ ├── BootstrapQueue.test.ts
│ │ │ │ │ │ ├── BootstrapQueue.ts
│ │ │ │ │ │ ├── NgComponentAnalyzer.test.ts
│ │ │ │ │ │ ├── NgComponentAnalyzer.ts
│ │ │ │ │ │ ├── NgModulesAnalyzer.test.ts
│ │ │ │ │ │ ├── NgModulesAnalyzer.ts
│ │ │ │ │ │ ├── PropertyExtractor.test.ts
│ │ │ │ │ │ ├── PropertyExtractor.ts
│ │ │ │ │ │ ├── StoryUID.ts
│ │ │ │ │ │ └── Zoneless.ts
│ │ │ │ │ ├── argsToTemplate.test.ts
│ │ │ │ │ ├── argsToTemplate.ts
│ │ │ │ │ ├── compodoc-types.ts
│ │ │ │ │ ├── compodoc.test.ts
│ │ │ │ │ ├── compodoc.ts
│ │ │ │ │ ├── config.ts
│ │ │ │ │ ├── csf-factories.test.ts
│ │ │ │ │ ├── decorateStory.test.ts
│ │ │ │ │ ├── decorateStory.ts
│ │ │ │ │ ├── decorators.test.ts
│ │ │ │ │ ├── decorators.ts
│ │ │ │ │ ├── docs/
│ │ │ │ │ │ ├── __testfixtures__/
│ │ │ │ │ │ │ └── doc-button/
│ │ │ │ │ │ │ ├── argtypes.snapshot
│ │ │ │ │ │ │ ├── compodoc-posix.snapshot
│ │ │ │ │ │ │ ├── compodoc-undefined.snapshot
│ │ │ │ │ │ │ ├── compodoc-windows.snapshot
│ │ │ │ │ │ │ ├── input.ts
│ │ │ │ │ │ │ ├── properties.snapshot
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── angular-properties.test.ts
│ │ │ │ │ │ ├── config.ts
│ │ │ │ │ │ └── sourceDecorator.ts
│ │ │ │ │ ├── globals.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── portable-stories.ts
│ │ │ │ │ ├── preview-prod.ts
│ │ │ │ │ ├── preview.ts
│ │ │ │ │ ├── public-types.ts
│ │ │ │ │ ├── render.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── renderer.ts
│ │ │ │ ├── server/
│ │ │ │ │ ├── __mocks-ng-workspace__/
│ │ │ │ │ │ ├── empty-projects-entry/
│ │ │ │ │ │ │ └── angular.json
│ │ │ │ │ │ ├── minimal-config/
│ │ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ │ └── tsconfig.app.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── some-config/
│ │ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ │ └── tsconfig.app.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── with-angularBrowserTarget/
│ │ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ │ ├── styles.css
│ │ │ │ │ │ │ │ └── tsconfig.app.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── with-lib/
│ │ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ │ ├── projects/
│ │ │ │ │ │ │ │ └── pattern-lib/
│ │ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ │ └── main.ts
│ │ │ │ │ │ │ │ └── tsconfig.lib.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── with-nx/
│ │ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ │ ├── nx.json
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ │ ├── styles.css
│ │ │ │ │ │ │ │ ├── styles.scss
│ │ │ │ │ │ │ │ └── tsconfig.app.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── with-nx-workspace/
│ │ │ │ │ │ │ ├── nx.json
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ │ ├── styles.css
│ │ │ │ │ │ │ │ ├── styles.scss
│ │ │ │ │ │ │ │ └── tsconfig.app.json
│ │ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ │ └── workspace.json
│ │ │ │ │ │ ├── with-options-styles/
│ │ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ │ ├── styles.css
│ │ │ │ │ │ │ │ ├── styles.scss
│ │ │ │ │ │ │ │ └── tsconfig.app.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── without-architect-build/
│ │ │ │ │ │ │ └── angular.json
│ │ │ │ │ │ ├── without-architect-build-options/
│ │ │ │ │ │ │ └── angular.json
│ │ │ │ │ │ ├── without-compatible-projects/
│ │ │ │ │ │ │ └── angular.json
│ │ │ │ │ │ ├── without-projects-entry/
│ │ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ │ ├── projects/
│ │ │ │ │ │ │ │ └── pattern-lib/
│ │ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ │ └── main.ts
│ │ │ │ │ │ │ │ └── tsconfig.lib.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ └── without-tsConfig/
│ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ └── tsconfig.app.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ └── angular.json
│ │ │ │ │ ├── angular-cli-webpack.d.ts
│ │ │ │ │ ├── angular-cli-webpack.js
│ │ │ │ │ ├── framework-preset-angular-cli.test.ts
│ │ │ │ │ ├── framework-preset-angular-cli.ts
│ │ │ │ │ ├── framework-preset-angular-ivy.ts
│ │ │ │ │ ├── plugins/
│ │ │ │ │ │ └── storybook-normalize-angular-entry-plugin.js
│ │ │ │ │ ├── preset-options.ts
│ │ │ │ │ └── utils/
│ │ │ │ │ └── filter-out-styling-rules.ts
│ │ │ │ ├── test-setup.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── start-schema.json
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── button.component.ts
│ │ │ │ │ ├── button.stories.ts
│ │ │ │ │ ├── header.component.ts
│ │ │ │ │ ├── header.stories.ts
│ │ │ │ │ ├── page.component.ts
│ │ │ │ │ ├── page.stories.ts
│ │ │ │ │ └── user.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── button.component.ts
│ │ │ │ │ ├── button.css
│ │ │ │ │ ├── form.component.ts
│ │ │ │ │ ├── html.component.ts
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── pre.component.ts
│ │ │ │ ├── stories/
│ │ │ │ │ ├── argTypes/
│ │ │ │ │ │ ├── doc-button/
│ │ │ │ │ │ │ ├── doc-button.component.html
│ │ │ │ │ │ │ ├── doc-button.component.scss
│ │ │ │ │ │ │ ├── doc-button.component.ts
│ │ │ │ │ │ │ └── doc-button.stories.ts
│ │ │ │ │ │ ├── doc-directive/
│ │ │ │ │ │ │ ├── doc-directive.directive.ts
│ │ │ │ │ │ │ └── doc-directive.stories.ts
│ │ │ │ │ │ ├── doc-injectable/
│ │ │ │ │ │ │ ├── doc-injectable.service.ts
│ │ │ │ │ │ │ └── doc-injectable.stories.ts
│ │ │ │ │ │ └── doc-pipe/
│ │ │ │ │ │ ├── doc-pipe.pipe.ts
│ │ │ │ │ │ └── doc-pipe.stories.ts
│ │ │ │ │ ├── basics/
│ │ │ │ │ │ ├── README.mdx
│ │ │ │ │ │ ├── angular-forms/
│ │ │ │ │ │ │ └── customControlValueAccessor/
│ │ │ │ │ │ │ ├── custom-cva-component.stories.ts
│ │ │ │ │ │ │ └── custom-cva.component.ts
│ │ │ │ │ │ ├── component-with-complex-selectors/
│ │ │ │ │ │ │ ├── attribute-selector.component.ts
│ │ │ │ │ │ │ ├── attribute-selectors.component.stories.ts
│ │ │ │ │ │ │ ├── class-selector.component.stories.ts
│ │ │ │ │ │ │ ├── class-selector.component.ts
│ │ │ │ │ │ │ ├── multiple-class-selector.component.stories.ts
│ │ │ │ │ │ │ ├── multiple-selector.component.stories.ts
│ │ │ │ │ │ │ └── multiple-selector.component.ts
│ │ │ │ │ │ ├── component-with-enums/
│ │ │ │ │ │ │ ├── enums.component.html
│ │ │ │ │ │ │ ├── enums.component.stories.ts
│ │ │ │ │ │ │ └── enums.component.ts
│ │ │ │ │ │ ├── component-with-inheritance/
│ │ │ │ │ │ │ ├── base-button.component.ts
│ │ │ │ │ │ │ ├── base-button.stories.ts
│ │ │ │ │ │ │ ├── icon-button.component.ts
│ │ │ │ │ │ │ └── icon-button.stories.ts
│ │ │ │ │ │ ├── component-with-ng-content/
│ │ │ │ │ │ │ ├── ng-content-about-parent.stories.ts
│ │ │ │ │ │ │ └── ng-content-simple.stories.ts
│ │ │ │ │ │ ├── component-with-ng-on-destroy/
│ │ │ │ │ │ │ └── component-with-on-destroy.stories.ts
│ │ │ │ │ │ ├── component-with-on-push/
│ │ │ │ │ │ │ ├── on-push-box.component.ts
│ │ │ │ │ │ │ └── on-push.stories.ts
│ │ │ │ │ │ ├── component-with-pipe/
│ │ │ │ │ │ │ ├── custom-pipes.stories.ts
│ │ │ │ │ │ │ ├── custom.pipe.ts
│ │ │ │ │ │ │ └── with-pipe.component.ts
│ │ │ │ │ │ ├── component-with-provider/
│ │ │ │ │ │ │ ├── di.component.html
│ │ │ │ │ │ │ ├── di.component.stories.ts
│ │ │ │ │ │ │ └── di.component.ts
│ │ │ │ │ │ ├── component-with-style/
│ │ │ │ │ │ │ ├── styled.component.css
│ │ │ │ │ │ │ ├── styled.component.html
│ │ │ │ │ │ │ ├── styled.component.scss
│ │ │ │ │ │ │ ├── styled.component.stories.ts
│ │ │ │ │ │ │ └── styled.component.ts
│ │ │ │ │ │ ├── component-with-template/
│ │ │ │ │ │ │ ├── template.component.ts
│ │ │ │ │ │ │ └── template.stories.ts
│ │ │ │ │ │ ├── component-without-selector/
│ │ │ │ │ │ │ ├── without-selector-ng-component-outlet.stories.ts
│ │ │ │ │ │ │ ├── without-selector.component.ts
│ │ │ │ │ │ │ └── without-selector.stories.ts
│ │ │ │ │ │ └── ng-module/
│ │ │ │ │ │ ├── angular-src/
│ │ │ │ │ │ │ ├── chip-color.token.ts
│ │ │ │ │ │ │ ├── chip-text.pipe.ts
│ │ │ │ │ │ │ ├── chip.component.ts
│ │ │ │ │ │ │ ├── chips-group.component.ts
│ │ │ │ │ │ │ └── chips.module.ts
│ │ │ │ │ │ ├── import-module-chip.stories.ts
│ │ │ │ │ │ ├── import-module-for-root.stories.ts
│ │ │ │ │ │ └── import-module.stories.ts
│ │ │ │ │ ├── button.component.ts
│ │ │ │ │ ├── core/
│ │ │ │ │ │ ├── README.mdx
│ │ │ │ │ │ ├── decorators/
│ │ │ │ │ │ │ ├── componentWrapperDecorator/
│ │ │ │ │ │ │ │ ├── child.component.ts
│ │ │ │ │ │ │ │ ├── decorators.stories.ts
│ │ │ │ │ │ │ │ └── parent.component.ts
│ │ │ │ │ │ │ └── theme-decorator/
│ │ │ │ │ │ │ └── decorators.stories.ts
│ │ │ │ │ │ ├── moduleMetadata/
│ │ │ │ │ │ │ ├── angular-src/
│ │ │ │ │ │ │ │ ├── custom.pipe.ts
│ │ │ │ │ │ │ │ ├── dummy.service.ts
│ │ │ │ │ │ │ │ ├── service.component.ts
│ │ │ │ │ │ │ │ └── token.component.ts
│ │ │ │ │ │ │ ├── in-export-default.stories.ts
│ │ │ │ │ │ │ ├── in-stories.stories.ts
│ │ │ │ │ │ │ └── merge-default-and-story.stories.ts
│ │ │ │ │ │ ├── parameters/
│ │ │ │ │ │ │ └── bootstrap-options.stories.ts
│ │ │ │ │ │ └── styles/
│ │ │ │ │ │ └── story-styles.stories.ts
│ │ │ │ │ └── others/
│ │ │ │ │ ├── app-initializer-use-factory/
│ │ │ │ │ │ └── app-initializer-use-factory.stories.ts
│ │ │ │ │ ├── issues/
│ │ │ │ │ │ └── 12009-unknown-component.stories.ts
│ │ │ │ │ └── ngx-translate/
│ │ │ │ │ └── README.mdx
│ │ │ │ ├── stories_angular-cli-default-ts/
│ │ │ │ │ └── signal/
│ │ │ │ │ ├── button.component.ts
│ │ │ │ │ ├── button.css
│ │ │ │ │ └── button.stories.ts
│ │ │ │ └── stories_angular-cli-prerelease/
│ │ │ │ └── signal/
│ │ │ │ ├── button.component.ts
│ │ │ │ ├── button.css
│ │ │ │ └── button.stories.ts
│ │ │ ├── tsconfig.json
│ │ │ ├── tsconfig.spec.json
│ │ │ └── vitest.config.ts
│ │ ├── ember/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── client/
│ │ │ │ │ └── preview/
│ │ │ │ │ ├── config.ts
│ │ │ │ │ ├── globals.ts
│ │ │ │ │ ├── jsondoc.ts
│ │ │ │ │ ├── render.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── server/
│ │ │ │ │ └── framework-preset-babel-ember.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ └── util.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ └── Button.stories.js
│ │ │ │ ├── components/
│ │ │ │ │ └── index.js
│ │ │ │ └── stories/
│ │ │ │ └── .gitkeep
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── html-vite/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ └── types.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ ├── js/
│ │ │ │ │ ├── Button.js
│ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ ├── Header.js
│ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ ├── Page.js
│ │ │ │ │ └── Page.stories.js
│ │ │ │ └── ts/
│ │ │ │ ├── Button.stories.ts
│ │ │ │ ├── Button.ts
│ │ │ │ ├── Header.stories.ts
│ │ │ │ ├── Header.ts
│ │ │ │ ├── Page.stories.ts
│ │ │ │ └── Page.ts
│ │ │ └── tsconfig.json
│ │ ├── nextjs/
│ │ │ ├── .eslintrc.json
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── aliases/
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── babel/
│ │ │ │ │ ├── loader.ts
│ │ │ │ │ ├── plugins/
│ │ │ │ │ │ ├── amp-attributes.ts
│ │ │ │ │ │ ├── jsx-pragma.ts
│ │ │ │ │ │ ├── optimize-hook-destructuring.ts
│ │ │ │ │ │ └── react-loadable-plugin.ts
│ │ │ │ │ └── preset.ts
│ │ │ │ ├── compatibility/
│ │ │ │ │ ├── compatibility-map.ts
│ │ │ │ │ └── draft-mode.compat.ts
│ │ │ │ ├── config/
│ │ │ │ │ ├── preview.ts
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── css/
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── export-mocks/
│ │ │ │ │ ├── cache/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── headers/
│ │ │ │ │ │ ├── cookies.ts
│ │ │ │ │ │ ├── headers.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── link/
│ │ │ │ │ │ └── index.tsx
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── router/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── fastRefresh/
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── font/
│ │ │ │ │ ├── babel/
│ │ │ │ │ │ ├── helpers.ts
│ │ │ │ │ │ ├── index.test.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── webpack/
│ │ │ │ │ ├── configureNextFont.ts
│ │ │ │ │ └── loader/
│ │ │ │ │ ├── google/
│ │ │ │ │ │ └── get-font-face-declarations.ts
│ │ │ │ │ ├── local/
│ │ │ │ │ │ └── get-font-face-declarations.ts
│ │ │ │ │ ├── storybook-nextjs-font-loader.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── get-css-meta.ts
│ │ │ │ │ └── set-font-declarations-in-head.ts
│ │ │ │ ├── globals.d.ts
│ │ │ │ ├── head-manager/
│ │ │ │ │ ├── decorator.tsx
│ │ │ │ │ └── head-manager-provider.tsx
│ │ │ │ ├── image-context.ts
│ │ │ │ ├── images/
│ │ │ │ │ ├── decorator.tsx
│ │ │ │ │ ├── next-image-default-loader.tsx
│ │ │ │ │ ├── next-image.tsx
│ │ │ │ │ ├── next-legacy-image.tsx
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── imports/
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── next-image-loader-stub.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── nodePolyfills/
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── portable-stories.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── preview.tsx
│ │ │ │ ├── routing/
│ │ │ │ │ ├── app-router-provider.tsx
│ │ │ │ │ ├── decorator.tsx
│ │ │ │ │ ├── page-router-provider.tsx
│ │ │ │ │ └── types.tsx
│ │ │ │ ├── rsc/
│ │ │ │ │ ├── server-only.ts
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── styledJsx/
│ │ │ │ │ ├── decorator.tsx
│ │ │ │ │ └── webpack.ts
│ │ │ │ ├── swc/
│ │ │ │ │ ├── loader.ts
│ │ │ │ │ └── next-swc-loader-patch.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── .eslintrc.json
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.jsx
│ │ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ │ ├── Configure.mdx
│ │ │ │ │ │ ├── Header.jsx
│ │ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ │ ├── Page.jsx
│ │ │ │ │ │ └── Page.stories.js
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ ├── Configure.mdx
│ │ │ │ │ ├── Header.stories.ts
│ │ │ │ │ ├── Header.tsx
│ │ │ │ │ ├── Page.stories.ts
│ │ │ │ │ └── Page.tsx
│ │ │ │ ├── next-env.d.ts
│ │ │ │ ├── stories/
│ │ │ │ │ ├── DynamicImport.stories.tsx
│ │ │ │ │ ├── Font.stories.tsx
│ │ │ │ │ ├── Font.tsx
│ │ │ │ │ ├── Head.stories.tsx
│ │ │ │ │ ├── Image.stories.tsx
│ │ │ │ │ ├── ImageLegacy.stories.tsx
│ │ │ │ │ ├── Link.stories.module.css
│ │ │ │ │ ├── Link.stories.tsx
│ │ │ │ │ ├── Navigation.stories.tsx
│ │ │ │ │ ├── RSC.stories.tsx
│ │ │ │ │ ├── RSC.tsx
│ │ │ │ │ ├── Router.stories.tsx
│ │ │ │ │ ├── StyledJsx.stories.tsx
│ │ │ │ │ ├── dynamic-component.tsx
│ │ │ │ │ └── fonts/
│ │ │ │ │ └── OFL.txt
│ │ │ │ ├── stories_nextjs-default-ts/
│ │ │ │ │ ├── GetImageProps.stories.tsx
│ │ │ │ │ ├── NextHeader.stories.tsx
│ │ │ │ │ ├── NextHeader.tsx
│ │ │ │ │ ├── Redirect.stories.tsx
│ │ │ │ │ ├── ServerActions.stories.tsx
│ │ │ │ │ └── server-actions.tsx
│ │ │ │ ├── stories_nextjs-prerelease/
│ │ │ │ │ ├── GetImageProps.stories.tsx
│ │ │ │ │ ├── NextHeader.stories.tsx
│ │ │ │ │ ├── NextHeader.tsx
│ │ │ │ │ ├── Redirect.stories.tsx
│ │ │ │ │ ├── ServerActions.stories.tsx
│ │ │ │ │ └── server-actions.tsx
│ │ │ │ └── typings.d.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── nextjs-vite/
│ │ │ ├── .eslintrc.json
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── config/
│ │ │ │ │ └── preview.ts
│ │ │ │ ├── export-mocks/
│ │ │ │ │ ├── cache/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── headers/
│ │ │ │ │ │ ├── cookies.ts
│ │ │ │ │ │ ├── headers.ts
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── navigation/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── router/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── find-postcss-config.ts
│ │ │ │ ├── head-manager/
│ │ │ │ │ ├── decorator.tsx
│ │ │ │ │ └── head-manager-provider.tsx
│ │ │ │ ├── images/
│ │ │ │ │ └── decorator.tsx
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── portable-stories.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── preview.tsx
│ │ │ │ ├── routing/
│ │ │ │ │ ├── app-router-provider.tsx
│ │ │ │ │ ├── decorator.tsx
│ │ │ │ │ ├── page-router-provider.tsx
│ │ │ │ │ └── types.tsx
│ │ │ │ ├── styledJsx/
│ │ │ │ │ └── decorator.tsx
│ │ │ │ ├── types.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ ├── utils.ts
│ │ │ │ └── vite-plugin/
│ │ │ │ └── index.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── .eslintrc.json
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.jsx
│ │ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ │ ├── Configure.mdx
│ │ │ │ │ │ ├── Header.jsx
│ │ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ │ ├── Page.jsx
│ │ │ │ │ │ └── Page.stories.js
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ ├── Configure.mdx
│ │ │ │ │ ├── Header.stories.ts
│ │ │ │ │ ├── Header.tsx
│ │ │ │ │ ├── Page.stories.ts
│ │ │ │ │ └── Page.tsx
│ │ │ │ ├── next-env.d.ts
│ │ │ │ ├── stories/
│ │ │ │ │ ├── DynamicImport.stories.tsx
│ │ │ │ │ ├── DynamicImport.tsx
│ │ │ │ │ ├── Font.stories.tsx
│ │ │ │ │ ├── Font.tsx
│ │ │ │ │ ├── GetImageProps.stories.tsx
│ │ │ │ │ ├── Head.stories.tsx
│ │ │ │ │ ├── Image.stories.tsx
│ │ │ │ │ ├── ImageLegacy.stories.tsx
│ │ │ │ │ ├── Link.stories.module.css
│ │ │ │ │ ├── Link.stories.tsx
│ │ │ │ │ ├── Navigation.stories.tsx
│ │ │ │ │ ├── NextHeader.stories.tsx
│ │ │ │ │ ├── NextHeader.tsx
│ │ │ │ │ ├── RSC.stories.tsx
│ │ │ │ │ ├── RSC.tsx
│ │ │ │ │ ├── Redirect.stories.tsx
│ │ │ │ │ ├── Router.stories.tsx
│ │ │ │ │ ├── ServerActions.stories.tsx
│ │ │ │ │ ├── ServerActions.tsx
│ │ │ │ │ ├── StyledJsx.stories.tsx
│ │ │ │ │ └── fonts/
│ │ │ │ │ └── OFL.txt
│ │ │ │ └── typings.d.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── preact-vite/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ └── types.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ ├── Button.jsx
│ │ │ │ ├── Button.stories.jsx
│ │ │ │ ├── Header.jsx
│ │ │ │ ├── Header.stories.jsx
│ │ │ │ ├── Page.jsx
│ │ │ │ └── Page.stories.jsx
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── react-native-web-vite/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── vite-plugin.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ ├── js/
│ │ │ │ │ ├── Button.jsx
│ │ │ │ │ ├── Button.stories.jsx
│ │ │ │ │ ├── Header.jsx
│ │ │ │ │ ├── Header.stories.jsx
│ │ │ │ │ ├── Page.jsx
│ │ │ │ │ └── Page.stories.jsx
│ │ │ │ └── ts/
│ │ │ │ ├── Button.stories.tsx
│ │ │ │ ├── Button.tsx
│ │ │ │ ├── Header.stories.tsx
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── Page.stories.tsx
│ │ │ │ └── Page.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── react-vite/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── docgen-handlers/
│ │ │ │ │ │ └── actualNameHandler.ts
│ │ │ │ │ ├── docgen-resolver.ts
│ │ │ │ │ ├── react-docgen.test.ts
│ │ │ │ │ └── react-docgen.ts
│ │ │ │ ├── preset.ts
│ │ │ │ └── types.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ ├── js/
│ │ │ │ │ ├── Button.jsx
│ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ ├── Header.jsx
│ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ ├── Page.jsx
│ │ │ │ │ └── Page.stories.js
│ │ │ │ └── ts/
│ │ │ │ ├── Button.stories.ts
│ │ │ │ ├── Button.tsx
│ │ │ │ ├── Header.stories.ts
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── Page.stories.ts
│ │ │ │ └── Page.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── react-webpack5/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ └── types.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ ├── js/
│ │ │ │ │ ├── Button.jsx
│ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ ├── Header.jsx
│ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ ├── Page.jsx
│ │ │ │ │ └── Page.stories.js
│ │ │ │ └── ts/
│ │ │ │ ├── Button.stories.ts
│ │ │ │ ├── Button.tsx
│ │ │ │ ├── Header.stories.ts
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── Page.stories.ts
│ │ │ │ └── Page.tsx
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── server-webpack5/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ └── types.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── button.stories.json
│ │ │ │ ├── header.stories.json
│ │ │ │ └── page.stories.yaml
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── svelte-vite/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── generateDocgen.ts
│ │ │ │ │ └── svelte-docgen.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.stories.svelte
│ │ │ │ │ │ ├── Button.svelte
│ │ │ │ │ │ ├── Header.stories.svelte
│ │ │ │ │ │ ├── Header.svelte
│ │ │ │ │ │ ├── Page.stories.svelte
│ │ │ │ │ │ └── Page.svelte
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.svelte
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── Header.stories.svelte
│ │ │ │ │ ├── Header.svelte
│ │ │ │ │ ├── Page.stories.svelte
│ │ │ │ │ └── Page.svelte
│ │ │ │ ├── stories_svelte-vite-default-js/
│ │ │ │ │ └── docgen/
│ │ │ │ │ ├── jsdoc.stories.js
│ │ │ │ │ └── jsdoc.svelte
│ │ │ │ └── stories_svelte-vite-default-ts/
│ │ │ │ └── docgen/
│ │ │ │ ├── jsdoc.stories.js
│ │ │ │ ├── jsdoc.svelte
│ │ │ │ ├── ts-inline-prop-types.stories.ts
│ │ │ │ ├── ts-inline-prop-types.svelte
│ │ │ │ ├── ts-legacy.stories.ts
│ │ │ │ ├── ts-legacy.svelte
│ │ │ │ ├── ts-referenced-prop-types.stories.ts
│ │ │ │ ├── ts-referenced-prop-types.svelte
│ │ │ │ ├── ts.stories.ts
│ │ │ │ ├── ts.svelte
│ │ │ │ └── types.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── sveltekit/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── preview.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── mocks/
│ │ │ │ │ └── app/
│ │ │ │ │ ├── forms.ts
│ │ │ │ │ ├── navigation.ts
│ │ │ │ │ └── stores.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── config-overrides.ts
│ │ │ │ │ └── mock-sveltekit-stores.ts
│ │ │ │ ├── portable-stories.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── vite-plugin.ts
│ │ │ ├── static/
│ │ │ │ ├── MockProvider.svelte
│ │ │ │ └── app-state-mock.svelte.js
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.stories.svelte
│ │ │ │ │ │ ├── Button.svelte
│ │ │ │ │ │ ├── Header.stories.svelte
│ │ │ │ │ │ ├── Header.svelte
│ │ │ │ │ │ ├── Page.stories.svelte
│ │ │ │ │ │ └── Page.svelte
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.svelte
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── Header.stories.svelte
│ │ │ │ │ ├── Header.svelte
│ │ │ │ │ ├── Page.stories.svelte
│ │ │ │ │ └── Page.svelte
│ │ │ │ └── stories_svelte-kit-skeleton-ts/
│ │ │ │ └── modules/
│ │ │ │ ├── Environment.svelte
│ │ │ │ ├── Forms.svelte
│ │ │ │ ├── Hrefs.svelte
│ │ │ │ ├── Navigation.svelte
│ │ │ │ ├── Paths.svelte
│ │ │ │ ├── State.svelte
│ │ │ │ ├── Stores.svelte
│ │ │ │ ├── environment.stories.js
│ │ │ │ ├── forms.stories.js
│ │ │ │ ├── hrefs.stories.js
│ │ │ │ ├── navigation.stories.js
│ │ │ │ ├── paths.stories.js
│ │ │ │ ├── state.stories.js
│ │ │ │ └── stores.stories.js
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── vue3-vite/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node/
│ │ │ │ │ └── index.ts
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── vue-component-meta.ts
│ │ │ │ │ ├── vue-docgen.ts
│ │ │ │ │ └── vue-template.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── vite-plugin.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── js/
│ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ ├── Button.vue
│ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ ├── Header.vue
│ │ │ │ │ ├── Page.stories.js
│ │ │ │ │ └── Page.vue
│ │ │ │ └── ts/
│ │ │ │ ├── Button.stories.ts
│ │ │ │ ├── Button.vue
│ │ │ │ ├── Header.stories.ts
│ │ │ │ ├── Header.vue
│ │ │ │ ├── Page.stories.ts
│ │ │ │ └── Page.vue
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ └── web-components-vite/
│ │ ├── README.md
│ │ ├── build-config.ts
│ │ ├── package.json
│ │ ├── preset.js
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── index.ts
│ │ │ ├── node/
│ │ │ │ └── index.ts
│ │ │ ├── preset.ts
│ │ │ └── types.ts
│ │ ├── template/
│ │ │ └── cli/
│ │ │ ├── .eslintrc.json
│ │ │ ├── js/
│ │ │ │ ├── Button.js
│ │ │ │ ├── Button.stories.js
│ │ │ │ ├── Header.js
│ │ │ │ ├── Header.stories.js
│ │ │ │ ├── Page.js
│ │ │ │ └── Page.stories.js
│ │ │ └── ts/
│ │ │ ├── Button.stories.ts
│ │ │ ├── Button.ts
│ │ │ ├── Header.stories.ts
│ │ │ ├── Header.ts
│ │ │ ├── Page.stories.ts
│ │ │ └── Page.ts
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── lib/
│ │ ├── cli-sb/
│ │ │ ├── README.md
│ │ │ ├── index.js
│ │ │ ├── package.json
│ │ │ ├── project.json
│ │ │ └── vitest.config.ts
│ │ ├── cli-storybook/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── add.test.ts
│ │ │ │ ├── add.ts
│ │ │ │ ├── autoblock/
│ │ │ │ │ ├── block-dependencies-versions.ts
│ │ │ │ │ ├── block-experimental-addon-test.test.ts
│ │ │ │ │ ├── block-experimental-addon-test.ts
│ │ │ │ │ ├── block-major-version.test.ts
│ │ │ │ │ ├── block-major-version.ts
│ │ │ │ │ ├── block-node-version.ts
│ │ │ │ │ ├── block-webpack5-frameworks.ts
│ │ │ │ │ ├── index.test.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── automigrate/
│ │ │ │ │ ├── codemod.ts
│ │ │ │ │ ├── fixes/
│ │ │ │ │ │ ├── __test__/
│ │ │ │ │ │ │ ├── main-config-with-essential-options.js
│ │ │ │ │ │ │ ├── main-config-with-wrappers.js
│ │ │ │ │ │ │ └── main-config-without-wrappers.js
│ │ │ │ │ │ ├── addon-a11y-addon-test.test.ts
│ │ │ │ │ │ ├── addon-a11y-addon-test.ts
│ │ │ │ │ │ ├── addon-a11y-parameters.test.ts
│ │ │ │ │ │ ├── addon-a11y-parameters.ts
│ │ │ │ │ │ ├── addon-experimental-test.test.ts
│ │ │ │ │ │ ├── addon-experimental-test.ts
│ │ │ │ │ │ ├── addon-globals-api.test.ts
│ │ │ │ │ │ ├── addon-globals-api.ts
│ │ │ │ │ │ ├── addon-mdx-gfm-remove.test.ts
│ │ │ │ │ │ ├── addon-mdx-gfm-remove.ts
│ │ │ │ │ │ ├── addon-storysource-code-panel.test.ts
│ │ │ │ │ │ ├── addon-storysource-code-panel.ts
│ │ │ │ │ │ ├── consolidated-imports.test.ts
│ │ │ │ │ │ ├── consolidated-imports.ts
│ │ │ │ │ │ ├── eslint-plugin.test.ts
│ │ │ │ │ │ ├── eslint-plugin.ts
│ │ │ │ │ │ ├── fix-faux-esm-require.test.ts
│ │ │ │ │ │ ├── fix-faux-esm-require.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── initial-globals.test.ts
│ │ │ │ │ │ ├── initial-globals.ts
│ │ │ │ │ │ ├── migrate-addon-console.test.ts
│ │ │ │ │ │ ├── migrate-addon-console.ts
│ │ │ │ │ │ ├── nextjs-to-nextjs-vite.test.ts
│ │ │ │ │ │ ├── nextjs-to-nextjs-vite.ts
│ │ │ │ │ │ ├── remove-addon-interactions.test.ts
│ │ │ │ │ │ ├── remove-addon-interactions.ts
│ │ │ │ │ │ ├── remove-docs-autodocs.test.ts
│ │ │ │ │ │ ├── remove-docs-autodocs.ts
│ │ │ │ │ │ ├── remove-essentials.test.ts
│ │ │ │ │ │ ├── remove-essentials.ts
│ │ │ │ │ │ ├── remove-essentials.utils.ts
│ │ │ │ │ │ ├── renderer-to-framework.test.ts
│ │ │ │ │ │ ├── renderer-to-framework.ts
│ │ │ │ │ │ ├── rnstorybook-config.test.ts
│ │ │ │ │ │ ├── rnstorybook-config.ts
│ │ │ │ │ │ ├── storybook-package-name-conflict.test.ts
│ │ │ │ │ │ ├── storybook-package-name-conflict.ts
│ │ │ │ │ │ ├── upgrade-storybook-related-dependencies.test.ts
│ │ │ │ │ │ ├── upgrade-storybook-related-dependencies.ts
│ │ │ │ │ │ ├── wrap-getAbsolutePath.test.ts
│ │ │ │ │ │ └── wrap-getAbsolutePath.ts
│ │ │ │ │ ├── helpers/
│ │ │ │ │ │ ├── addon-a11y-parameters.test.ts
│ │ │ │ │ │ ├── addon-a11y-parameters.ts
│ │ │ │ │ │ ├── ast-utils.ts
│ │ │ │ │ │ ├── consolidated-packages.ts
│ │ │ │ │ │ ├── logMigrationSummary.ts
│ │ │ │ │ │ ├── mainConfigFile.test.ts
│ │ │ │ │ │ ├── mainConfigFile.ts
│ │ │ │ │ │ └── testing-helpers.ts
│ │ │ │ │ ├── index.test.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── multi-project.test.ts
│ │ │ │ │ ├── multi-project.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── bin/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── run.ts
│ │ │ │ ├── codemod/
│ │ │ │ │ ├── csf-factories.ts
│ │ │ │ │ └── helpers/
│ │ │ │ │ ├── config-to-csf-factory.test.ts
│ │ │ │ │ ├── config-to-csf-factory.ts
│ │ │ │ │ ├── csf-factories-utils.test.ts
│ │ │ │ │ ├── csf-factories-utils.ts
│ │ │ │ │ ├── remove-unused-types.test.ts
│ │ │ │ │ ├── remove-unused-types.ts
│ │ │ │ │ ├── story-to-csf-factory.test.ts
│ │ │ │ │ └── story-to-csf-factory.ts
│ │ │ │ ├── doctor/
│ │ │ │ │ ├── getDuplicatedDepsWarnings.ts
│ │ │ │ │ ├── getIncompatibleStorybookPackages.test.ts
│ │ │ │ │ ├── getIncompatibleStorybookPackages.ts
│ │ │ │ │ ├── getMismatchingVersionsWarning.ts
│ │ │ │ │ ├── hasMultipleVersions.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── link.ts
│ │ │ │ ├── migrate.ts
│ │ │ │ ├── postinstallAddon.ts
│ │ │ │ ├── sandbox-templates.ts
│ │ │ │ ├── sandbox.ts
│ │ │ │ ├── typings.d.ts
│ │ │ │ ├── upgrade.test.ts
│ │ │ │ ├── upgrade.ts
│ │ │ │ ├── util.ts
│ │ │ │ ├── warn.test.ts
│ │ │ │ ├── warn.ts
│ │ │ │ └── window.d.ts
│ │ │ ├── test/
│ │ │ │ ├── default/
│ │ │ │ │ └── cli.test.cjs
│ │ │ │ └── helpers.cjs
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── codemod/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── index.test.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── lib/
│ │ │ │ │ ├── utils.test.js
│ │ │ │ │ └── utils.ts
│ │ │ │ └── transforms/
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ └── upgrade-hierarchy-separators/
│ │ │ │ │ ├── csf.input.js
│ │ │ │ │ ├── csf.output.snapshot
│ │ │ │ │ ├── dynamic-storiesof.input.js
│ │ │ │ │ ├── dynamic-storiesof.output.snapshot
│ │ │ │ │ ├── storiesof.input.js
│ │ │ │ │ └── storiesof.output.snapshot
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── upgrade-deprecated-types.test.ts.snap
│ │ │ │ │ ├── csf-2-to-3.test.ts
│ │ │ │ │ ├── find-implicit-spies.test.ts
│ │ │ │ │ └── upgrade-deprecated-types.test.ts
│ │ │ │ ├── csf-2-to-3.ts
│ │ │ │ ├── find-implicit-spies.ts
│ │ │ │ ├── upgrade-deprecated-types.ts
│ │ │ │ └── upgrade-hierarchy-separators.js
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── core-webpack/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── merge-webpack-config.test.ts.snap
│ │ │ │ ├── check-webpack-version.ts
│ │ │ │ ├── importPipeline.test.ts
│ │ │ │ ├── importPipeline.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── load-custom-webpack-config.ts
│ │ │ │ ├── merge-webpack-config.test.ts
│ │ │ │ ├── merge-webpack-config.ts
│ │ │ │ ├── to-importFn.test.ts
│ │ │ │ ├── to-importFn.ts
│ │ │ │ ├── to-require-context.test.ts
│ │ │ │ ├── to-require-context.ts
│ │ │ │ └── types.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── create-storybook/
│ │ │ ├── .eslintrc.cjs
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── project.json
│ │ │ ├── rendererAssets/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ └── common/
│ │ │ │ ├── Configure.mdx
│ │ │ │ ├── assets/
│ │ │ │ │ └── avif-test-image.avif
│ │ │ │ ├── button.css
│ │ │ │ ├── header.css
│ │ │ │ └── page.css
│ │ │ ├── src/
│ │ │ │ ├── bin/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── modernInputs.ts
│ │ │ │ │ └── run.ts
│ │ │ │ ├── commands/
│ │ │ │ │ ├── AddonConfigurationCommand.test.ts
│ │ │ │ │ ├── AddonConfigurationCommand.ts
│ │ │ │ │ ├── DependencyInstallationCommand.test.ts
│ │ │ │ │ ├── DependencyInstallationCommand.ts
│ │ │ │ │ ├── FinalizationCommand.test.ts
│ │ │ │ │ ├── FinalizationCommand.ts
│ │ │ │ │ ├── FrameworkDetectionCommand.ts
│ │ │ │ │ ├── GeneratorExecutionCommand.test.ts
│ │ │ │ │ ├── GeneratorExecutionCommand.ts
│ │ │ │ │ ├── PreflightCheckCommand.test.ts
│ │ │ │ │ ├── PreflightCheckCommand.ts
│ │ │ │ │ ├── ProjectDetectionCommand.test.ts
│ │ │ │ │ ├── ProjectDetectionCommand.ts
│ │ │ │ │ ├── UserPreferencesCommand.test.ts
│ │ │ │ │ ├── UserPreferencesCommand.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── dependency-collector.test.ts
│ │ │ │ ├── dependency-collector.ts
│ │ │ │ ├── generators/
│ │ │ │ │ ├── ANGULAR/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── EMBER/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── GeneratorRegistry.test.ts
│ │ │ │ │ ├── GeneratorRegistry.ts
│ │ │ │ │ ├── HTML/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── NEXTJS/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── NUXT/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── PREACT/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── QWIK/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── REACT/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── REACT_NATIVE/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── REACT_NATIVE_AND_RNW/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── REACT_NATIVE_WEB/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── REACT_SCRIPTS/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── SERVER/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── SOLID/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── SVELTE/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── SVELTEKIT/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── VUE3/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── WEB-COMPONENTS/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── baseGenerator.ts
│ │ │ │ │ ├── configure.test.ts
│ │ │ │ │ ├── configure.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── modules/
│ │ │ │ │ │ └── GeneratorModule.ts
│ │ │ │ │ ├── registerGenerators.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── initiate.test.ts
│ │ │ │ ├── initiate.ts
│ │ │ │ ├── scaffold-new-project.ts
│ │ │ │ ├── services/
│ │ │ │ │ ├── AddonService.test.ts
│ │ │ │ │ ├── AddonService.ts
│ │ │ │ │ ├── FeatureCompatibilityService.test.ts
│ │ │ │ │ ├── FeatureCompatibilityService.ts
│ │ │ │ │ ├── FrameworkDetectionService.test.ts
│ │ │ │ │ ├── FrameworkDetectionService.ts
│ │ │ │ │ ├── ProjectTypeService.test.ts
│ │ │ │ │ ├── ProjectTypeService.ts
│ │ │ │ │ ├── TelemetryService.test.ts
│ │ │ │ │ ├── TelemetryService.ts
│ │ │ │ │ ├── VersionService.test.ts
│ │ │ │ │ ├── VersionService.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── templates/
│ │ │ │ ├── angular/
│ │ │ │ │ ├── application/
│ │ │ │ │ │ └── template-csf/
│ │ │ │ │ │ └── .storybook/
│ │ │ │ │ │ ├── tsconfig.doc.json
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── typings.d.ts
│ │ │ │ │ └── library/
│ │ │ │ │ └── template-csf/
│ │ │ │ │ └── .storybook/
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── typings.d.ts
│ │ │ │ └── aurelia/
│ │ │ │ └── template-csf/
│ │ │ │ └── .storybook/
│ │ │ │ ├── tsconfig.json
│ │ │ │ └── typings.d.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── csf-plugin/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── constants.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── rollup-based-plugin.ts
│ │ │ │ └── webpack-loader.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── eslint-plugin/
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── docs/
│ │ │ │ └── rules/
│ │ │ │ ├── await-interactions.md
│ │ │ │ ├── context-in-play-function.md
│ │ │ │ ├── csf-component.md
│ │ │ │ ├── default-exports.md
│ │ │ │ ├── hierarchy-separator.md
│ │ │ │ ├── meta-inline-properties.md
│ │ │ │ ├── meta-satisfies-type.md
│ │ │ │ ├── no-redundant-story-name.md
│ │ │ │ ├── no-renderer-packages.md
│ │ │ │ ├── no-stories-of.md
│ │ │ │ ├── no-title-property-in-meta.md
│ │ │ │ ├── no-uninstalled-addons.md
│ │ │ │ ├── prefer-pascal-case.md
│ │ │ │ ├── story-exports.md
│ │ │ │ ├── use-storybook-expect.md
│ │ │ │ └── use-storybook-testing-library.md
│ │ │ ├── package.json
│ │ │ ├── project.json
│ │ │ ├── scripts/
│ │ │ │ ├── generate-rule.ts
│ │ │ │ ├── update-all.ts
│ │ │ │ ├── update-configs.ts
│ │ │ │ ├── update-lib-configs.ts
│ │ │ │ ├── update-lib-flat-configs.ts
│ │ │ │ ├── update-lib-index.ts
│ │ │ │ ├── update-rules-list.ts
│ │ │ │ └── utils/
│ │ │ │ ├── categories.ts
│ │ │ │ ├── docs.ts
│ │ │ │ ├── rules.ts
│ │ │ │ └── updates.ts
│ │ │ ├── src/
│ │ │ │ ├── configs/
│ │ │ │ │ ├── addon-interactions.ts
│ │ │ │ │ ├── csf-strict.ts
│ │ │ │ │ ├── csf.ts
│ │ │ │ │ ├── flat/
│ │ │ │ │ │ ├── addon-interactions.ts
│ │ │ │ │ │ ├── csf-strict.ts
│ │ │ │ │ │ ├── csf.ts
│ │ │ │ │ │ └── recommended.ts
│ │ │ │ │ └── recommended.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── rules/
│ │ │ │ │ ├── await-interactions.test.ts
│ │ │ │ │ ├── await-interactions.ts
│ │ │ │ │ ├── context-in-play-function.test.ts
│ │ │ │ │ ├── context-in-play-function.ts
│ │ │ │ │ ├── csf-component.test.ts
│ │ │ │ │ ├── csf-component.ts
│ │ │ │ │ ├── default-exports.test.ts
│ │ │ │ │ ├── default-exports.ts
│ │ │ │ │ ├── hierarchy-separator.test.ts
│ │ │ │ │ ├── hierarchy-separator.ts
│ │ │ │ │ ├── meta-inline-properties.test.ts
│ │ │ │ │ ├── meta-inline-properties.ts
│ │ │ │ │ ├── meta-satisfies-type.test.ts
│ │ │ │ │ ├── meta-satisfies-type.ts
│ │ │ │ │ ├── no-redundant-story-name.test.ts
│ │ │ │ │ ├── no-redundant-story-name.ts
│ │ │ │ │ ├── no-renderer-packages.test.ts
│ │ │ │ │ ├── no-renderer-packages.ts
│ │ │ │ │ ├── no-stories-of.test.ts
│ │ │ │ │ ├── no-stories-of.ts
│ │ │ │ │ ├── no-title-property-in-meta.test.ts
│ │ │ │ │ ├── no-title-property-in-meta.ts
│ │ │ │ │ ├── no-uninstalled-addons.test.ts
│ │ │ │ │ ├── no-uninstalled-addons.ts
│ │ │ │ │ ├── prefer-pascal-case.test.ts
│ │ │ │ │ ├── prefer-pascal-case.ts
│ │ │ │ │ ├── story-exports.test.ts
│ │ │ │ │ ├── story-exports.ts
│ │ │ │ │ ├── use-storybook-expect.test.ts
│ │ │ │ │ ├── use-storybook-expect.ts
│ │ │ │ │ ├── use-storybook-testing-library.test.ts
│ │ │ │ │ └── use-storybook-testing-library.ts
│ │ │ │ ├── test-utils.ts
│ │ │ │ ├── types/
│ │ │ │ │ └── index.ts
│ │ │ │ └── utils/
│ │ │ │ ├── ast.ts
│ │ │ │ ├── constants.ts
│ │ │ │ ├── create-storybook-rule.ts
│ │ │ │ └── index.ts
│ │ │ ├── tsconfig.json
│ │ │ ├── vitest-setup.ts
│ │ │ ├── vitest.config.ts
│ │ │ └── vitest.integration.config.ts
│ │ └── react-dom-shim/
│ │ ├── README.md
│ │ ├── build-config.ts
│ │ ├── package.json
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── preset.ts
│ │ │ ├── react-16.tsx
│ │ │ └── react-18.tsx
│ │ └── tsconfig.json
│ ├── package.json
│ ├── playwright.config.ts
│ ├── presets/
│ │ ├── create-react-app/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── checkPresets.ts
│ │ │ │ │ ├── getModulePath.ts
│ │ │ │ │ ├── getReactScriptsPath.ts
│ │ │ │ │ ├── mergePlugins.ts
│ │ │ │ │ └── processCraConfig.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ └── tsconfig.json
│ │ ├── react-webpack/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── cra-config.test.ts
│ │ │ │ ├── cra-config.ts
│ │ │ │ ├── framework-preset-cra.ts
│ │ │ │ ├── framework-preset-react-docs.test.ts
│ │ │ │ ├── framework-preset-react-docs.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── loaders/
│ │ │ │ │ ├── docgen-resolver.ts
│ │ │ │ │ ├── react-docgen-loader.test.ts
│ │ │ │ │ └── react-docgen-loader.ts
│ │ │ │ └── types.ts
│ │ │ └── tsconfig.json
│ │ └── server-webpack/
│ │ ├── README.md
│ │ ├── build-config.ts
│ │ ├── package.json
│ │ ├── preset.js
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── index.ts
│ │ │ ├── lib/
│ │ │ │ └── compiler/
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ ├── a11y.json
│ │ │ │ │ ├── a11y.snapshot
│ │ │ │ │ ├── actions.json
│ │ │ │ │ ├── actions.snapshot
│ │ │ │ │ ├── backgrounds.json
│ │ │ │ │ ├── backgrounds.snapshot
│ │ │ │ │ ├── controls.json
│ │ │ │ │ ├── controls.snapshot
│ │ │ │ │ ├── kitchen_sink.json
│ │ │ │ │ ├── kitchen_sink.snapshot
│ │ │ │ │ ├── links.json
│ │ │ │ │ ├── links.snapshot
│ │ │ │ │ ├── multiple_stories.json
│ │ │ │ │ ├── multiple_stories.snapshot
│ │ │ │ │ ├── params.json
│ │ │ │ │ ├── params.snapshot
│ │ │ │ │ ├── params_override.json
│ │ │ │ │ ├── params_override.snapshot
│ │ │ │ │ ├── yaml.snapshot
│ │ │ │ │ ├── yaml.yaml
│ │ │ │ │ ├── yml.snapshot
│ │ │ │ │ └── yml.yml
│ │ │ │ ├── index.ts
│ │ │ │ ├── json-to-csf-compiler.test.ts
│ │ │ │ ├── stringifier.ts
│ │ │ │ └── types.ts
│ │ │ ├── loader.ts
│ │ │ ├── types.ts
│ │ │ └── typings.d.ts
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── project.json
│ ├── renderers/
│ │ ├── html/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── docs/
│ │ │ │ │ ├── sourceDecorator.test.ts
│ │ │ │ │ └── sourceDecorator.ts
│ │ │ │ ├── entry-preview-docs.ts
│ │ │ │ ├── entry-preview.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── portable-stories.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── public-types.ts
│ │ │ │ ├── render.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── .eslintrc.json
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.js
│ │ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ │ ├── Header.js
│ │ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ │ ├── Page.js
│ │ │ │ │ │ └── Page.stories.js
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ ├── Button.ts
│ │ │ │ │ ├── Header.stories.ts
│ │ │ │ │ ├── Header.ts
│ │ │ │ │ ├── Page.stories.ts
│ │ │ │ │ └── Page.ts
│ │ │ │ ├── components/
│ │ │ │ │ ├── Button.js
│ │ │ │ │ ├── Form.js
│ │ │ │ │ ├── Html.js
│ │ │ │ │ ├── Pre.js
│ │ │ │ │ └── index.js
│ │ │ │ └── stories/
│ │ │ │ └── README.md
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── preact/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── entry-preview-docs.ts
│ │ │ │ ├── entry-preview.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── portable-stories.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── public-types.test.tsx
│ │ │ │ ├── public-types.ts
│ │ │ │ ├── render.tsx
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── .eslintrc.json
│ │ │ │ │ ├── Button.jsx
│ │ │ │ │ ├── Button.stories.jsx
│ │ │ │ │ ├── Header.jsx
│ │ │ │ │ ├── Header.stories.jsx
│ │ │ │ │ ├── Page.jsx
│ │ │ │ │ └── Page.stories.jsx
│ │ │ │ ├── components/
│ │ │ │ │ ├── Button.jsx
│ │ │ │ │ ├── Form.jsx
│ │ │ │ │ ├── Html.jsx
│ │ │ │ │ ├── Pre.jsx
│ │ │ │ │ └── index.js
│ │ │ │ └── stories/
│ │ │ │ ├── React.jsx
│ │ │ │ └── react-compat.stories.jsx
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── react/
│ │ │ ├── README.md
│ │ │ ├── __mocks__/
│ │ │ │ ├── fs/
│ │ │ │ │ └── promises.cjs
│ │ │ │ └── fs.cjs
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── preview.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── __test__/
│ │ │ │ │ ├── Button.csf4.stories.tsx
│ │ │ │ │ ├── Button.stories.tsx
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ ├── ComponentWithError.stories.tsx
│ │ │ │ │ ├── ComponentWithError.tsx
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── portable-stories-factory.test.tsx.snap
│ │ │ │ │ │ ├── portable-stories-legacy.test.tsx.snap
│ │ │ │ │ │ └── portable-stories.test.tsx.snap
│ │ │ │ │ ├── button.css
│ │ │ │ │ ├── portable-stories-factory.test.tsx
│ │ │ │ │ ├── portable-stories-legacy.test.tsx
│ │ │ │ │ └── portable-stories.test.tsx
│ │ │ │ ├── act-compat.ts
│ │ │ │ ├── applyDecorators.ts
│ │ │ │ ├── componentManifest/
│ │ │ │ │ ├── __testfixtures__/
│ │ │ │ │ │ ├── Arrow.ts
│ │ │ │ │ │ ├── Button.ts
│ │ │ │ │ │ ├── DefaultExport.ts
│ │ │ │ │ │ ├── DefaultValues.ts
│ │ │ │ │ │ ├── DisplayNameOverride.ts
│ │ │ │ │ │ ├── Documented.ts
│ │ │ │ │ │ ├── DtsComponent.tsx
│ │ │ │ │ │ ├── ForwardRef.tsx
│ │ │ │ │ │ ├── FunctionProps.ts
│ │ │ │ │ │ ├── Generic.ts
│ │ │ │ │ │ ├── ImportedProps.ts
│ │ │ │ │ │ ├── Intersection.ts
│ │ │ │ │ │ ├── MultipleExports.ts
│ │ │ │ │ │ ├── NoComponents.ts
│ │ │ │ │ │ ├── PickOmit.ts
│ │ │ │ │ │ ├── ReExport.ts
│ │ │ │ │ │ ├── RenamedExport.ts
│ │ │ │ │ │ ├── UnionProps.ts
│ │ │ │ │ │ ├── barrel/
│ │ │ │ │ │ │ ├── Button.ts
│ │ │ │ │ │ │ ├── Input.ts
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── componentMeta/
│ │ │ │ │ │ ├── ComponentMetaManager.test.ts
│ │ │ │ │ │ ├── ComponentMetaManager.ts
│ │ │ │ │ │ ├── ComponentMetaProject.storyExtraction.test.ts
│ │ │ │ │ │ ├── ComponentMetaProject.test.ts
│ │ │ │ │ │ ├── ComponentMetaProject.ts
│ │ │ │ │ │ ├── componentMetaExtractor.defaultValue.test.ts
│ │ │ │ │ │ ├── componentMetaExtractor.detection.test.ts
│ │ │ │ │ │ ├── componentMetaExtractor.displayName.test.ts
│ │ │ │ │ │ ├── componentMetaExtractor.parentTracking.test.ts
│ │ │ │ │ │ ├── componentMetaExtractor.props.test.ts
│ │ │ │ │ │ ├── componentMetaExtractor.qa.test.ts
│ │ │ │ │ │ ├── componentMetaExtractor.test-helpers.ts
│ │ │ │ │ │ ├── componentMetaExtractor.ts
│ │ │ │ │ │ └── test-helpers.ts
│ │ │ │ │ ├── fixtures.ts
│ │ │ │ │ ├── generateCodeSnippet.test.tsx
│ │ │ │ │ ├── generateCodeSnippet.ts
│ │ │ │ │ ├── generator.test.ts
│ │ │ │ │ ├── generator.ts
│ │ │ │ │ ├── getComponentImports.test.ts
│ │ │ │ │ ├── getComponentImports.ts
│ │ │ │ │ ├── jsdocTags.test.ts
│ │ │ │ │ ├── jsdocTags.ts
│ │ │ │ │ ├── memfs-test-setup.ts
│ │ │ │ │ ├── reactDocgen/
│ │ │ │ │ │ ├── actualNameHandler.ts
│ │ │ │ │ │ ├── docgenResolver.ts
│ │ │ │ │ │ ├── exportNameHandler.ts
│ │ │ │ │ │ ├── extractReactDocgenInfo.test.ts
│ │ │ │ │ │ ├── extractReactDocgenInfo.ts
│ │ │ │ │ │ ├── extractReactTypescriptDocgenInfo.test.ts
│ │ │ │ │ │ ├── extractReactTypescriptDocgenInfo.ts
│ │ │ │ │ │ └── utils.ts
│ │ │ │ │ ├── reactDocgen.test.ts
│ │ │ │ │ ├── reactDocgen.ts
│ │ │ │ │ ├── reactDocgenTypescript.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ ├── utils.test.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── csf-factories.test.tsx
│ │ │ │ ├── docs/
│ │ │ │ │ ├── applyDecorators.ts
│ │ │ │ │ ├── jsxDecorator.test.tsx
│ │ │ │ │ ├── jsxDecorator.tsx
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ ├── captions.ts
│ │ │ │ │ │ ├── componentTypes.ts
│ │ │ │ │ │ ├── defaultValues/
│ │ │ │ │ │ │ ├── createDefaultValue.ts
│ │ │ │ │ │ │ ├── createFromRawDefaultProp.ts
│ │ │ │ │ │ │ ├── generateArray.ts
│ │ │ │ │ │ │ ├── generateObject.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── prettyIdentifier.ts
│ │ │ │ │ │ ├── generateCode.ts
│ │ │ │ │ │ ├── inspection/
│ │ │ │ │ │ │ ├── acornParser.test.ts
│ │ │ │ │ │ │ ├── acornParser.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── inspectValue.ts
│ │ │ │ │ │ │ └── types.ts
│ │ │ │ │ │ └── isHtmlTag.ts
│ │ │ │ │ ├── propTypes/
│ │ │ │ │ │ ├── createType.ts
│ │ │ │ │ │ ├── generateFuncSignature.test.ts
│ │ │ │ │ │ ├── generateFuncSignature.ts
│ │ │ │ │ │ ├── handleProp.test.tsx
│ │ │ │ │ │ ├── handleProp.ts
│ │ │ │ │ │ ├── rawDefaultPropResolvers.ts
│ │ │ │ │ │ └── sortProps.ts
│ │ │ │ │ └── typeScript/
│ │ │ │ │ ├── handleProp.test.tsx
│ │ │ │ │ └── handleProp.ts
│ │ │ │ ├── enrichCsf.test.ts
│ │ │ │ ├── enrichCsf.ts
│ │ │ │ ├── entry-preview-argtypes.ts
│ │ │ │ ├── entry-preview-docs.ts
│ │ │ │ ├── entry-preview-rsc.tsx
│ │ │ │ ├── entry-preview.tsx
│ │ │ │ ├── extractArgTypes.test.ts
│ │ │ │ ├── extractArgTypes.ts
│ │ │ │ ├── extractProps.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mount.ts
│ │ │ │ ├── playwright.ts
│ │ │ │ ├── portable-stories.tsx
│ │ │ │ ├── preset.test.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── preview.tsx
│ │ │ │ ├── public-types.test.tsx
│ │ │ │ ├── public-types.ts
│ │ │ │ ├── render.tsx
│ │ │ │ ├── renderToCanvas.tsx
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── .eslintrc.json
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.jsx
│ │ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ │ ├── Header.jsx
│ │ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ │ ├── Page.jsx
│ │ │ │ │ │ └── Page.stories.js
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ ├── Header.stories.ts
│ │ │ │ │ ├── Header.tsx
│ │ │ │ │ ├── Page.stories.ts
│ │ │ │ │ └── Page.tsx
│ │ │ │ ├── components/
│ │ │ │ │ ├── Button.jsx
│ │ │ │ │ ├── Form.jsx
│ │ │ │ │ ├── Html.jsx
│ │ │ │ │ ├── Pre.jsx
│ │ │ │ │ └── index.js
│ │ │ │ └── stories/
│ │ │ │ ├── csf1.stories.tsx
│ │ │ │ ├── csf2.stories.tsx
│ │ │ │ ├── csf4.mdx
│ │ │ │ ├── csf4.stories.tsx
│ │ │ │ ├── decorators.stories.tsx
│ │ │ │ ├── docgen-components/
│ │ │ │ │ ├── 10017-ts-union/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 10278-ts-multiple-components/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 8140-js-prop-types-oneof/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 8143-ts-imported-types/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ ├── properties.snapshot
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── 8143-ts-react-fc-generics/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 8428-js-static-prop-types/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 8740-ts-multi-props/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 8894-9511-ts-forward-ref/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9023-js-hoc/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9399-js-proptypes-shape/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9465-ts-type-props/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9493-ts-display-name/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9556-ts-react-default-exports/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9575-ts-camel-case/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9586-js-react-memo/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9591-ts-import-types/
│ │ │ │ │ │ ├── Bar.tsx
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9626-js-default-values/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9668-js-proptypes-no-jsdoc/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9721-ts-deprecated-jsdoc/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9764-ts-extend-props/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9827-ts-default-values/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9832-ts-enum-export/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── 9922-ts-component-props/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── imported.js
│ │ │ │ │ ├── imported.module.css
│ │ │ │ │ ├── js-class-component/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── js-function-component/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── js-function-component-inline-defaults/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── js-function-component-inline-defaults-no-propTypes/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── js-proptypes/
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── ext.js
│ │ │ │ │ │ └── input.jsx
│ │ │ │ │ ├── js-re-exported-component/
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ └── input.jsx
│ │ │ │ │ ├── jsdoc/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.jsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── ts-function-component/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── ts-function-component-inline-defaults/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── ts-html/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── ts-jsdoc/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ ├── ts-react-fc/
│ │ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ │ ├── input.tsx
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ └── ts-types/
│ │ │ │ │ ├── argTypes.snapshot
│ │ │ │ │ ├── docgen.snapshot
│ │ │ │ │ ├── input.tsx
│ │ │ │ │ └── properties.snapshot
│ │ │ │ ├── errors.stories.tsx
│ │ │ │ ├── hooks.stories.tsx
│ │ │ │ ├── js-argtypes.stories.jsx
│ │ │ │ ├── jsx-docgen.stories.tsx
│ │ │ │ ├── mount-in-play.stories.tsx
│ │ │ │ ├── preview.ts
│ │ │ │ ├── teardown.stories.tsx
│ │ │ │ ├── test-fn.stories.tsx
│ │ │ │ └── ts-argtypes.stories.tsx
│ │ │ ├── tsconfig.json
│ │ │ ├── vitest.config.ts
│ │ │ └── vitest.setup.ts
│ │ ├── server/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── entry-preview.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── public-types.ts
│ │ │ │ ├── render.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── template/
│ │ │ │ └── cli/
│ │ │ │ ├── button.stories.json
│ │ │ │ ├── header.stories.json
│ │ │ │ └── page.stories.yaml
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── svelte/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── __test__/
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── Decorator.svelte
│ │ │ │ │ ├── Decorator2.svelte
│ │ │ │ │ └── composeStories/
│ │ │ │ │ ├── AddWrapperDecorator.svelte
│ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── CustomRenderComponent.svelte
│ │ │ │ │ ├── InputFilledStoryComponent.svelte
│ │ │ │ │ ├── LoaderStoryComponent.svelte
│ │ │ │ │ ├── StoryWithLocaleComponent.svelte
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── portable-stories.test.ts.snap
│ │ │ │ │ └── portable-stories.test.ts
│ │ │ │ ├── decorators.ts
│ │ │ │ ├── docs/
│ │ │ │ │ ├── sourceDecorator.test.ts
│ │ │ │ │ └── sourceDecorator.ts
│ │ │ │ ├── entry-preview-docs.ts
│ │ │ │ ├── entry-preview.ts
│ │ │ │ ├── extractArgTypes.test.ts
│ │ │ │ ├── extractArgTypes.ts
│ │ │ │ ├── extractComponentDescription.test.ts
│ │ │ │ ├── extractComponentDescription.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mount.ts
│ │ │ │ ├── playwright.ts
│ │ │ │ ├── portable-stories.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── public-types.test.ts
│ │ │ │ ├── public-types.ts
│ │ │ │ ├── render.ts
│ │ │ │ ├── sample/
│ │ │ │ │ └── MockButton.svelte
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── static/
│ │ │ │ ├── AddStorybookIdDecorator.svelte
│ │ │ │ ├── DecoratorHandler.svelte
│ │ │ │ ├── PreviewRender.svelte
│ │ │ │ └── createReactiveProps.svelte.js
│ │ │ ├── svelte.config.js
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.stories.svelte
│ │ │ │ │ │ ├── Button.svelte
│ │ │ │ │ │ ├── Header.stories.svelte
│ │ │ │ │ │ ├── Header.svelte
│ │ │ │ │ │ ├── Page.stories.svelte
│ │ │ │ │ │ └── Page.svelte
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.svelte
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── Header.stories.svelte
│ │ │ │ │ ├── Header.svelte
│ │ │ │ │ ├── Page.stories.svelte
│ │ │ │ │ └── Page.svelte
│ │ │ │ ├── components/
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── Form.svelte
│ │ │ │ │ ├── Html.svelte
│ │ │ │ │ ├── Pre.svelte
│ │ │ │ │ └── index.js
│ │ │ │ └── stories/
│ │ │ │ ├── AsyncComponent.svelte
│ │ │ │ ├── BorderDecoratorBlue.svelte
│ │ │ │ ├── BorderDecoratorProps.svelte
│ │ │ │ ├── BorderDecoratorRed.svelte
│ │ │ │ ├── Button.svelte
│ │ │ │ ├── SyncComponent.svelte
│ │ │ │ ├── args.stories.js
│ │ │ │ ├── decorators.stories.js
│ │ │ │ ├── mount-in-play.stories.ts
│ │ │ │ └── settled.stories.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ ├── vue3/
│ │ │ ├── README.md
│ │ │ ├── build-config.ts
│ │ │ ├── package.json
│ │ │ ├── preset.js
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── extractArgTypes.test.ts.snap
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── BaseLayout.vue
│ │ │ │ │ ├── Button.vue
│ │ │ │ │ ├── Decorator.vue
│ │ │ │ │ ├── Decorator2.vue
│ │ │ │ │ ├── GenericComponent.vue
│ │ │ │ │ ├── button.css
│ │ │ │ │ └── composeStories/
│ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ ├── Button.vue
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── portable-stories.test.ts.snap
│ │ │ │ │ └── portable-stories.test.ts
│ │ │ │ ├── csf-factories.test.ts
│ │ │ │ ├── decorateStory.ts
│ │ │ │ ├── docs/
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── extractArgTypes.test.ts.snap
│ │ │ │ │ ├── sourceDecorator.test.ts
│ │ │ │ │ ├── sourceDecorator.ts
│ │ │ │ │ └── tests-meta-components/
│ │ │ │ │ └── meta-components.ts
│ │ │ │ ├── entry-preview-docs.ts
│ │ │ │ ├── entry-preview.ts
│ │ │ │ ├── extractArgTypes.test.ts
│ │ │ │ ├── extractArgTypes.ts
│ │ │ │ ├── globals.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mount.ts
│ │ │ │ ├── playwright.ts
│ │ │ │ ├── portable-stories.ts
│ │ │ │ ├── preset.ts
│ │ │ │ ├── preview.ts
│ │ │ │ ├── public-types.test.ts
│ │ │ │ ├── public-types.ts
│ │ │ │ ├── render.test.ts
│ │ │ │ ├── render.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── typings.d.ts
│ │ │ ├── template/
│ │ │ │ ├── cli/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ │ ├── Button.vue
│ │ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ │ ├── Header.vue
│ │ │ │ │ │ ├── Page.stories.js
│ │ │ │ │ │ └── Page.vue
│ │ │ │ │ └── ts/
│ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ ├── Button.vue
│ │ │ │ │ ├── Header.stories.ts
│ │ │ │ │ ├── Header.vue
│ │ │ │ │ ├── Page.stories.ts
│ │ │ │ │ └── Page.vue
│ │ │ │ ├── components/
│ │ │ │ │ ├── Button.vue
│ │ │ │ │ ├── Form.vue
│ │ │ │ │ ├── Html.vue
│ │ │ │ │ ├── Pre.vue
│ │ │ │ │ ├── button.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── stories/
│ │ │ │ │ └── preview.js
│ │ │ │ └── stories_vue3-vite-default-ts/
│ │ │ │ ├── BaseLayout.vue
│ │ │ │ ├── CustomRenderFunctionalComponent.stories.ts
│ │ │ │ ├── CustomRenderOptionsArgsFromData.stories.ts
│ │ │ │ ├── GlobalSetup.stories.ts
│ │ │ │ ├── GlobalSetup.vue
│ │ │ │ ├── GlobalUsage.stories.ts
│ │ │ │ ├── GlobalUsage.vue
│ │ │ │ ├── MySlotComponent.vue
│ │ │ │ ├── OverrideArgs.stories.js
│ │ │ │ ├── OverrideArgs.vue
│ │ │ │ ├── ReactiveArgs.stories.ts
│ │ │ │ ├── ReactiveArgs.vue
│ │ │ │ ├── ReactiveDecorators.stories.ts
│ │ │ │ ├── ReactiveSlots.stories.ts
│ │ │ │ ├── Reactivity.vue
│ │ │ │ ├── ScopedSlots.stories.ts
│ │ │ │ ├── SourceCode.stories.ts
│ │ │ │ ├── SourceCode.vue
│ │ │ │ ├── SourceDecorator.stories.ts
│ │ │ │ ├── component-meta/
│ │ │ │ │ ├── DefineModel.stories.ts
│ │ │ │ │ ├── DefineSlots.stories.ts
│ │ │ │ │ ├── OptionApi.stories.ts
│ │ │ │ │ ├── ReferenceTypeEvents.stories.ts
│ │ │ │ │ ├── ReferenceTypeExposed.stories.ts
│ │ │ │ │ ├── ReferenceTypeProps.stories.ts
│ │ │ │ │ ├── TemplateSlots.stories.ts
│ │ │ │ │ ├── TsComponent.stories.ts
│ │ │ │ │ ├── TsNameExport.stories.ts
│ │ │ │ │ ├── class-slots/
│ │ │ │ │ │ └── component.vue
│ │ │ │ │ ├── define-model/
│ │ │ │ │ │ └── component.vue
│ │ │ │ │ ├── define-slots/
│ │ │ │ │ │ └── component.vue
│ │ │ │ │ ├── options-api/
│ │ │ │ │ │ └── component.ts
│ │ │ │ │ ├── reference-type-events/
│ │ │ │ │ │ └── component.vue
│ │ │ │ │ ├── reference-type-exposed/
│ │ │ │ │ │ └── component.vue
│ │ │ │ │ ├── reference-type-props/
│ │ │ │ │ │ ├── component-js-setup.vue
│ │ │ │ │ │ ├── component-js.vue
│ │ │ │ │ │ ├── component.vue
│ │ │ │ │ │ └── my-props.ts
│ │ │ │ │ ├── template-slots/
│ │ │ │ │ │ ├── component-no-script.vue
│ │ │ │ │ │ └── component.vue
│ │ │ │ │ ├── ts-component/
│ │ │ │ │ │ └── component.ts
│ │ │ │ │ └── ts-named-export/
│ │ │ │ │ └── component.ts
│ │ │ │ ├── decorators.stories.ts
│ │ │ │ ├── mount-in-play.stories.ts
│ │ │ │ └── preview.ts
│ │ │ ├── tsconfig.json
│ │ │ └── vitest.config.ts
│ │ └── web-components/
│ │ ├── README.md
│ │ ├── build-config.ts
│ │ ├── package.json
│ │ ├── preset.js
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── csf-factories.test.ts
│ │ │ ├── docs/
│ │ │ │ ├── __testfixtures__/
│ │ │ │ │ ├── custom-elements.json
│ │ │ │ │ ├── lit-element-demo-card/
│ │ │ │ │ │ ├── custom-elements.snapshot
│ │ │ │ │ │ ├── input.js
│ │ │ │ │ │ └── properties.snapshot
│ │ │ │ │ └── lit-html-welcome/
│ │ │ │ │ ├── custom-elements.snapshot
│ │ │ │ │ ├── input.js
│ │ │ │ │ └── properties.snapshot
│ │ │ │ ├── custom-elements.test.ts
│ │ │ │ ├── custom-elements.ts
│ │ │ │ ├── sourceDecorator.test.ts
│ │ │ │ ├── sourceDecorator.ts
│ │ │ │ └── web-components-properties.test.ts
│ │ │ ├── entry-preview-argtypes.ts
│ │ │ ├── entry-preview-docs.ts
│ │ │ ├── entry-preview.ts
│ │ │ ├── framework-api.ts
│ │ │ ├── globals.ts
│ │ │ ├── index.ts
│ │ │ ├── portable-stories.ts
│ │ │ ├── preset.ts
│ │ │ ├── preview.ts
│ │ │ ├── public-types.ts
│ │ │ ├── render.ts
│ │ │ ├── types.ts
│ │ │ └── typings.d.ts
│ │ ├── template/
│ │ │ ├── cli/
│ │ │ │ ├── .eslintrc.json
│ │ │ │ ├── js/
│ │ │ │ │ ├── Button.js
│ │ │ │ │ ├── Button.stories.js
│ │ │ │ │ ├── Header.js
│ │ │ │ │ ├── Header.stories.js
│ │ │ │ │ ├── Page.js
│ │ │ │ │ └── Page.stories.js
│ │ │ │ └── ts/
│ │ │ │ ├── Button.stories.ts
│ │ │ │ ├── Button.ts
│ │ │ │ ├── Header.stories.ts
│ │ │ │ ├── Header.ts
│ │ │ │ ├── Page.stories.ts
│ │ │ │ └── Page.ts
│ │ │ ├── components/
│ │ │ │ ├── Button.js
│ │ │ │ ├── Form.js
│ │ │ │ ├── Html.js
│ │ │ │ ├── Pre.js
│ │ │ │ ├── button.css
│ │ │ │ └── index.js
│ │ │ └── stories/
│ │ │ ├── custom-elements-experimental.json
│ │ │ ├── custom-elements.json
│ │ │ ├── demo-wc-card/
│ │ │ │ ├── DemoWcCard.js
│ │ │ │ ├── demoWcCardStyle.css.js
│ │ │ │ └── index.js
│ │ │ ├── demo-wc-card.stories.js
│ │ │ ├── preview.js
│ │ │ └── script.stories.js
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── sandbox/
│ │ ├── angular-cli-default-ts/
│ │ │ └── project.json
│ │ ├── angular-cli-prerelease/
│ │ │ └── project.json
│ │ ├── bench-react-vite-default-ts/
│ │ │ └── project.json
│ │ ├── bench-react-vite-default-ts-nodocs/
│ │ │ └── project.json
│ │ ├── bench-react-vite-default-ts-test-build/
│ │ │ └── project.json
│ │ ├── bench-react-webpack-18-ts/
│ │ │ └── project.json
│ │ ├── bench-react-webpack-18-ts-test-build/
│ │ │ └── project.json
│ │ ├── cra-default-js/
│ │ │ └── project.json
│ │ ├── cra-default-ts/
│ │ │ └── project.json
│ │ ├── ember-3-js/
│ │ │ └── project.json
│ │ ├── ember-default-js/
│ │ │ └── project.json
│ │ ├── html-rsbuild-default-ts/
│ │ │ └── project.json
│ │ ├── html-vite-default-js/
│ │ │ └── project.json
│ │ ├── html-vite-default-ts/
│ │ │ └── project.json
│ │ ├── internal-react16-webpack/
│ │ │ └── project.json
│ │ ├── internal-react18-webpack-babel/
│ │ │ └── project.json
│ │ ├── internal-server-webpack5/
│ │ │ └── project.json
│ │ ├── lit-rsbuild-default-ts/
│ │ │ └── project.json
│ │ ├── lit-vite-default-js/
│ │ │ └── project.json
│ │ ├── lit-vite-default-ts/
│ │ │ └── project.json
│ │ ├── nextjs-14-ts/
│ │ │ └── project.json
│ │ ├── nextjs-15-ts/
│ │ │ └── project.json
│ │ ├── nextjs-default-ts/
│ │ │ └── project.json
│ │ ├── nextjs-prerelease/
│ │ │ └── project.json
│ │ ├── nextjs-vite-14-ts/
│ │ │ └── project.json
│ │ ├── nextjs-vite-15-ts/
│ │ │ └── project.json
│ │ ├── nextjs-vite-default-ts/
│ │ │ └── project.json
│ │ ├── preact-vite-default-js/
│ │ │ └── project.json
│ │ ├── preact-vite-default-ts/
│ │ │ └── project.json
│ │ ├── qwik-vite-default-ts/
│ │ │ └── project.json
│ │ ├── react-native-web-vite-expo-ts/
│ │ │ └── project.json
│ │ ├── react-native-web-vite-rn-cli-ts/
│ │ │ └── project.json
│ │ ├── react-rsbuild-default-ts/
│ │ │ └── project.json
│ │ ├── react-vite-default-js/
│ │ │ └── project.json
│ │ ├── react-vite-default-ts/
│ │ │ └── project.json
│ │ ├── react-vite-prerelease-ts/
│ │ │ └── project.json
│ │ ├── react-webpack-17-ts/
│ │ │ └── project.json
│ │ ├── react-webpack-18-ts/
│ │ │ └── project.json
│ │ ├── react-webpack-prerelease-ts/
│ │ │ └── project.json
│ │ ├── solid-vite-default-js/
│ │ │ └── project.json
│ │ ├── solid-vite-default-ts/
│ │ │ └── project.json
│ │ ├── svelte-kit-skeleton-ts/
│ │ │ └── project.json
│ │ ├── svelte-vite-default-js/
│ │ │ └── project.json
│ │ ├── svelte-vite-default-ts/
│ │ │ └── project.json
│ │ ├── vue3-rsbuild-default-ts/
│ │ │ └── project.json
│ │ ├── vue3-vite-default-js/
│ │ │ └── project.json
│ │ └── vue3-vite-default-ts/
│ │ └── project.json
│ ├── tsconfig.json
│ ├── vitest-setup.ts
│ ├── vitest.config.storybook.ts
│ ├── vitest.helpers.ts
│ └── vitest.shared.ts
├── codecov.yml
├── dependabot.yml
├── docs/
│ ├── _snippets/
│ │ ├── actions-filtering-example.md
│ │ ├── actions-spyon-basic-example.md
│ │ ├── addon-a11y-add.md
│ │ ├── addon-a11y-config-context-in-story.md
│ │ ├── addon-a11y-config-in-meta-and-story.md
│ │ ├── addon-a11y-config-in-preview.md
│ │ ├── addon-a11y-config-rules-in-story.md
│ │ ├── addon-a11y-config-rulesets-in-preview.md
│ │ ├── addon-a11y-disable.md
│ │ ├── addon-a11y-install.md
│ │ ├── addon-a11y-parameter-error-in-preview.md
│ │ ├── addon-a11y-parameter-example.md
│ │ ├── addon-a11y-parameter-remove.md
│ │ ├── addon-a11y-parameter-todo-in-meta.md
│ │ ├── addon-a11y-register.md
│ │ ├── addon-actions-action-function.md
│ │ ├── addon-backgrounds-define-globals.md
│ │ ├── addon-backgrounds-disabled.md
│ │ ├── addon-backgrounds-grid.md
│ │ ├── addon-backgrounds-options-in-meta.md
│ │ ├── addon-backgrounds-options-in-preview.md
│ │ ├── addon-consume-and-update-globaltype.md
│ │ ├── addon-consume-globaltype.md
│ │ ├── addon-docs-options.md
│ │ ├── addon-mcp-add.md
│ │ ├── addon-mcp-options.md
│ │ ├── addon-test-install.md
│ │ ├── addon-viewport-add-viewport-in-preview.md
│ │ ├── addon-viewport-configuration-in-meta.md
│ │ ├── addon-viewport-define-globals.md
│ │ ├── addon-viewport-options-in-preview.md
│ │ ├── after-each-in-meta.md
│ │ ├── angular-add-compodoc.md
│ │ ├── angular-add-framework.md
│ │ ├── angular-application-providers-in-meta-and-story.md
│ │ ├── angular-builder-production.md
│ │ ├── angular-framework-options-enable-ivy-false.md
│ │ ├── angular-framework-options-enable-ngcc-false.md
│ │ ├── angular-framework-options.md
│ │ ├── angular-install.md
│ │ ├── angular-project-compodoc-config.md
│ │ ├── api-doc-block-argtypes-parameter.md
│ │ ├── api-doc-block-canvas-parameter.md
│ │ ├── api-doc-block-controls-parameter.md
│ │ ├── api-doc-block-description-example.md
│ │ ├── api-doc-block-source-parameter.md
│ │ ├── api-doc-block-story-parameter.md
│ │ ├── arg-types-control.md
│ │ ├── arg-types-default-value.md
│ │ ├── arg-types-description.md
│ │ ├── arg-types-if.md
│ │ ├── arg-types-in-meta.md
│ │ ├── arg-types-in-preview.md
│ │ ├── arg-types-in-story.md
│ │ ├── arg-types-mapping.md
│ │ ├── arg-types-name.md
│ │ ├── arg-types-options.md
│ │ ├── arg-types-table.md
│ │ ├── arg-types-type.md
│ │ ├── args-in-preview.md
│ │ ├── args-usage-with-addons.md
│ │ ├── automock-register-full.md
│ │ ├── automock-register-mock-file.md
│ │ ├── automock-register-spy.md
│ │ ├── automocked-modules-in-story.md
│ │ ├── before-all-in-preview.md
│ │ ├── before-each-in-meta-mock-date.md
│ │ ├── before-each-in-preview.md
│ │ ├── best-practices-in-story.md
│ │ ├── build-storybook-production-mode.md
│ │ ├── button-component-with-proptypes.md
│ │ ├── button-group-story.md
│ │ ├── button-implementation.md
│ │ ├── button-snapshot-test-portable-stories.md
│ │ ├── button-story-argtypes-with-categories.md
│ │ ├── button-story-argtypes-with-subcategories.md
│ │ ├── button-story-baseline-with-satisfies-story-level.md
│ │ ├── button-story-baseline-with-satisfies.md
│ │ ├── button-story-baseline.md
│ │ ├── button-story-click-handler-args.md
│ │ ├── button-story-click-handler-simplificated.md
│ │ ├── button-story-click-handler.md
│ │ ├── button-story-component-args-primary.md
│ │ ├── button-story-component-decorator.md
│ │ ├── button-story-controls-primary-variant.md
│ │ ├── button-story-controls-radio-group.md
│ │ ├── button-story-decorator.md
│ │ ├── button-story-default-export-with-component.md
│ │ ├── button-story-default-export.md
│ │ ├── button-story-disable-addon.md
│ │ ├── button-story-grouped.md
│ │ ├── button-story-hoisted.md
│ │ ├── button-story-hypothetical-example.md
│ │ ├── button-story-matching-argtypes.md
│ │ ├── button-story-onclick-action-spy.md
│ │ ├── button-story-primary-composition.md
│ │ ├── button-story-primary-long-name.md
│ │ ├── button-story-rename-story.md
│ │ ├── button-story-using-args.md
│ │ ├── button-story-with-addon-example.md
│ │ ├── button-story-with-args.md
│ │ ├── button-story-with-emojis.md
│ │ ├── button-story-with-sample.md
│ │ ├── button-story.md
│ │ ├── checkbox-story-csf.md
│ │ ├── checkbox-story-grouped.md
│ │ ├── checkbox-story.md
│ │ ├── chromatic-github-action.md
│ │ ├── chromatic-install.md
│ │ ├── chromatic-storybook-add.md
│ │ ├── code-panel-enable-in-preview.md
│ │ ├── code-panel-in-meta-and-story.md
│ │ ├── compodoc-install.md
│ │ ├── component-cypress-test.md
│ │ ├── component-playwright-test.md
│ │ ├── component-story-conditional-controls-mutual-exclusion.md
│ │ ├── component-story-conditional-controls-toggle.md
│ │ ├── component-story-custom-args-complex.md
│ │ ├── component-story-custom-args-mapping.md
│ │ ├── component-story-disable-controls-alt.md
│ │ ├── component-story-disable-controls-regex.md
│ │ ├── component-story-disable-controls.md
│ │ ├── component-story-figma-integration.md
│ │ ├── component-story-highlight.md
│ │ ├── component-story-sort-controls.md
│ │ ├── component-story-static-asset-cdn.md
│ │ ├── component-story-static-asset-with-import.md
│ │ ├── component-story-static-asset-without-import.md
│ │ ├── component-story-with-custom-render-function.md
│ │ ├── component-styled-variables-object-notation.md
│ │ ├── component-styled-variables-template-literals.md
│ │ ├── component-test-with-testing-library.md
│ │ ├── configure-mock-provider-with-story-parameter.md
│ │ ├── create-command-custom-package-manager.md
│ │ ├── create-command-custom-version.md
│ │ ├── create-command-manual-framework.md
│ │ ├── create-command.md
│ │ ├── csf-2-example-primary-dark-story.md
│ │ ├── csf-2-example-starter.md
│ │ ├── csf-2-example-story.md
│ │ ├── csf-2-example-title.md
│ │ ├── csf-3-example-auto-title.md
│ │ ├── csf-3-example-default-render.md
│ │ ├── csf-3-example-primary-dark-story.md
│ │ ├── csf-3-example-render.md
│ │ ├── csf-3-example-starter.md
│ │ ├── csf-3-example-title.md
│ │ ├── csf-factories-automigrate-with-config-directory.md
│ │ ├── csf-factories-automigrate.md
│ │ ├── custom-docs-page.md
│ │ ├── decorator-parameterized-in-preview.md
│ │ ├── decorator-with-reactive-globals.md
│ │ ├── decorator-with-updateArgs.md
│ │ ├── document-screen-fetch.md
│ │ ├── document-screen-with-graphql.md
│ │ ├── eslint-install.md
│ │ ├── eslint-plugin-storybook-install.md
│ │ ├── essential-feature-disable.md
│ │ ├── foo-bar-baz-story.md
│ │ ├── ghp-github-action.md
│ │ ├── gizmo-story-controls-customization.md
│ │ ├── highlight-custom-style.md
│ │ ├── highlight-menu.md
│ │ ├── highlight-remove.md
│ │ ├── highlight-reset.md
│ │ ├── highlight-scroll-into-view.md
│ │ ├── histogram-story.md
│ │ ├── individual-snapshot-tests-portable-stories.md
│ │ ├── init-command-custom-version.md
│ │ ├── init-command.md
│ │ ├── initialize-library-in-preview.md
│ │ ├── interaction-test-complex.md
│ │ ├── interaction-test-fn-mock-spy.md
│ │ ├── interaction-test-simple.md
│ │ ├── list-story-expanded.md
│ │ ├── list-story-reuse-data.md
│ │ ├── list-story-starter.md
│ │ ├── list-story-template.md
│ │ ├── list-story-unchecked.md
│ │ ├── list-story-with-subcomponents.md
│ │ ├── list-story-with-unchecked-children.md
│ │ ├── loader-story.md
│ │ ├── login-form-with-play-function.md
│ │ ├── main-config-addons.md
│ │ ├── main-config-babel.md
│ │ ├── main-config-builder-custom-config.md
│ │ ├── main-config-core-allowed-hosts.md
│ │ ├── main-config-core-builder.md
│ │ ├── main-config-core-cross-origin-isolated.md
│ │ ├── main-config-core-disable-project-json.md
│ │ ├── main-config-core-disable-telemetry.md
│ │ ├── main-config-core-disable-update-notifications.md
│ │ ├── main-config-core-disable-webpack-defaults.md
│ │ ├── main-config-core-enable-crash-reports.md
│ │ ├── main-config-docs-default-name.md
│ │ ├── main-config-docs-docs-mode.md
│ │ ├── main-config-env.md
│ │ ├── main-config-features-arg-type-targets-v7.md
│ │ ├── main-config-features-components-manifest.md
│ │ ├── main-config-features-development-mode-for-build.md
│ │ ├── main-config-features-experimental-code-examples.md
│ │ ├── main-config-features-experimental-test-syntax.md
│ │ ├── main-config-features-legacy-decorator-file-order.md
│ │ ├── main-config-framework.md
│ │ ├── main-config-indexers-jsonstories.md
│ │ ├── main-config-indexers-title.md
│ │ ├── main-config-indexers.md
│ │ ├── main-config-log-level.md
│ │ ├── main-config-manager-head.md
│ │ ├── main-config-preview-body.md
│ │ ├── main-config-preview-head.md
│ │ ├── main-config-preview.md
│ │ ├── main-config-refs-disable.md
│ │ ├── main-config-refs-with-function.md
│ │ ├── main-config-refs.md
│ │ ├── main-config-static-dirs-with-object.md
│ │ ├── main-config-static-dirs.md
│ │ ├── main-config-stories-only-mdx.md
│ │ ├── main-config-stories-ordered.md
│ │ ├── main-config-stories-with-logic.md
│ │ ├── main-config-stories-with-object.md
│ │ ├── main-config-stories.md
│ │ ├── main-config-svelte-csf-register.md
│ │ ├── main-config-swc-jsx-transform.md
│ │ ├── main-config-swc.md
│ │ ├── main-config-tags-test-fn-exclude.md
│ │ ├── main-config-tags.md
│ │ ├── main-config-test-disable-autodocs.md
│ │ ├── main-config-test-disable-blocks.md
│ │ ├── main-config-test-disable-disableaddons.md
│ │ ├── main-config-test-disable-docgen.md
│ │ ├── main-config-test-disable-mdx.md
│ │ ├── main-config-test-disable-sourcemaps.md
│ │ ├── main-config-test-disable-treeshaking.md
│ │ ├── main-config-typescript-check-options.md
│ │ ├── main-config-typescript-check.md
│ │ ├── main-config-typescript-react-docgen-typescript-options.md
│ │ ├── main-config-typescript-react-docgen.md
│ │ ├── main-config-typescript-skip-compiler.md
│ │ ├── main-config-typical.md
│ │ ├── main-config-vite-final-env.md
│ │ ├── main-config-vite-final.md
│ │ ├── main-config-webpack-final.md
│ │ ├── margindecorator.md
│ │ ├── mcp-add.md
│ │ ├── migrate-csf-2-to-3.md
│ │ ├── mock-context-container-global.md
│ │ ├── mock-context-container-provider.md
│ │ ├── mock-context-container.md
│ │ ├── mock-context-create.md
│ │ ├── mock-context-in-use.md
│ │ ├── mock-provider-in-preview.md
│ │ ├── module-aliases-config.md
│ │ ├── mount-advanced.md
│ │ ├── mount-basic.md
│ │ ├── msw-addon-configure-handlers-graphql.md
│ │ ├── msw-addon-configure-handlers-http.md
│ │ ├── msw-addon-initialize.md
│ │ ├── msw-addon-install.md
│ │ ├── msw-generate-service-worker.md
│ │ ├── multiple-stories-test.md
│ │ ├── my-component-disable-toc.md
│ │ ├── my-component-env-var-config.md
│ │ ├── my-component-exclude-tags.md
│ │ ├── my-com
================================================
FILE CONTENTS
================================================
================================================
FILE: .agents/skills/canary/SKILL.md
================================================
---
name: canary
description: Triggers a canary release for a Storybook PR. Use when the user wants to publish a canary version, create a pre-release, or test a PR via npm.
allowed-tools: Bash
---
# Publish Canary Release
Publishes a canary version of Storybook from a PR to npm.
## Usage
To trigger a canary release, run:
```bash
gh workflow run --repo storybookjs/storybook publish.yml --field pr=<PR_NUMBER>
```
## What happens
1. GitHub Actions builds and publishes the PR as `0.0.0-pr-<PR_NUMBER>-sha-<SHORT_SHA>`
2. The version is published to npm with the `canary` tag
3. The PR body is updated with the exact version and install instructions
## Version format
The canary version follows a **predictable structure**:
```
0.0.0-pr-<PR_NUMBER>-sha-<SHORT_SHA>
```
- `<PR_NUMBER>`: The PR number (e.g., `33526`)
- `<SHORT_SHA>`: First 8 characters of the commit SHA (e.g., `a2e09fa2`)
**Example:** For PR #33526 with commit `a2e09fa284a...`, the canary version is:
`0.0.0-pr-33526-sha-a2e09fa2`
You can construct the version yourself if you know the PR number and the latest commit SHA on that PR.
## After publishing
Check the PR body for the published version. It will show something like:
> This pull request has been released as version `0.0.0-pr-33365-sha-b6656566`
Then test with:
```bash
npx storybook@<VERSION_FROM_PR> sandbox
```
Or upgrade an existing project:
```bash
npx storybook@<VERSION_FROM_PR> upgrade
```
## Requirements
- You must have admin permissions on the storybookjs/storybook repo
- The PR must exist and be open
- You need `gh` CLI authenticated
## Monitor progress
Watch the workflow run at:
https://github.com/storybookjs/storybook/actions/workflows/publish.yml
================================================
FILE: .agents/skills/fix-linting-types-on-pr/SKILL.md
================================================
---
name: fix-linting-types-on-pr
description: Checks out a PR (including fork PRs), fixes all linting and TypeScript errors, then pushes the changes back. Use when asked to fix lint, types, or TS errors on a PR.
---
# Fix Linting and TypeScript Issues on a PR
Checks out a PR, auto-fixes linting and TypeScript issues, and pushes the fixes.
## Step 1 — Get the PR number
If the user provided a PR number, use it directly. Otherwise ask for it.
## Step 2 — Check out the PR
Use `gh pr checkout` so it works for both fork and non-fork PRs:
```bash
gh pr checkout <PR_NUMBER>
```
This automatically sets up the correct remote tracking and switches to the PR branch, even when the PR comes from a fork.
## Step 3 — Install dependencies
```bash
yarn
```
## Step 4 — Compile the repo
Compiling first ensures TS declarations referenced by the linter are present:
```bash
yarn nx run-many -t compile
```
## Step 5 — Fix linting errors
```bash
yarn lint
```
## Step 6 — Fix TypeScript errors
Run the TypeScript checker to surface remaining type errors:
```bash
yarn nx run-many -t check
```
Read the output carefully. Fix each type error manually by editing the relevant file(s). Common fixes:
- Add or correct type annotations
- Fix incorrect generics
- Resolve `any` assignments that violate strict mode
- Add missing imports or re-exports
Re-run `yarn nx run-many -t check` after each batch of edits to confirm errors are resolved.
## Step 7 — Commit the fixes
Stage only the files you changed:
```bash
git add <files-you-modified>
git commit -m "Maintenance: Fix linting and TypeScript errors"
```
Do not use `git add -A` — avoid accidentally staging unrelated files.
## Step 8 — Push the fixes
For fork PRs `gh pr checkout` sets up the correct upstream tracking. Push directly:
```bash
git push
```
## Notes
- Only fix errors that are clearly linting or TypeScript issues. Do not refactor logic.
- If a TypeScript error requires a non-trivial code change, surface it to the user and ask before proceeding.
- If `gh pr checkout` fails due to permissions on a fork, inform the user — they may need to grant write access to the fork or the maintainer must push directly.
- After pushing, confirm with the user that the CI is green.
================================================
FILE: .agents/skills/github-qa-labels/SKILL.md
================================================
---
name: github-qa-labels
description: Label GitHub issues and PRs found during QA testing. Use when organizing QA findings with proper labels.
allowed-tools: Bash
---
# GitHub QA Labels
When creating or organizing issues/PRs found during QA testing, apply these labels.
## QA tracking label
Add `upgrade:<version>` label to track all QA findings for a release:
```bash
# Create label if it doesn't exist
gh label create "upgrade:10.2" --repo storybookjs/storybook --color "0E8A16" --description "Issues/PRs found during 10.2 upgrade QA"
# Add to issue/PR
gh issue edit <NUMBER> --repo storybookjs/storybook --add-label "upgrade:10.2"
gh pr edit <NUMBER> --repo storybookjs/storybook --add-label "upgrade:10.2"
```
## Severity labels
Add `sev:S1` through `sev:S4` to **bugs only** (not docs or feature requests):
```bash
gh issue edit <NUMBER> --repo storybookjs/storybook --add-label "sev:S2"
```
Severity levels:
- **sev:S1**: Critical, blocking, no workaround
- **sev:S2**: Significant issue, may have workaround
- **sev:S3**: Moderate issue, workaround exists
- **sev:S4**: Minor issue, edge case, easy workaround
## What gets severity labels
| Type | Severity label? |
| ----------------------- | --------------- |
| Bug (runtime error) | Yes |
| Bug (type error) | Yes |
| Bug (automigrate issue) | Yes |
| Documentation issue | No |
| Feature request | No |
| Enhancement | No |
## Batch labeling
Label multiple issues at once:
```bash
gh issue edit 33524 --repo storybookjs/storybook --add-label "upgrade:10.2" && \
gh issue edit 33527 --repo storybookjs/storybook --add-label "upgrade:10.2" && \
gh pr edit 33526 --repo storybookjs/storybook --add-label "upgrade:10.2"
```
================================================
FILE: .agents/skills/pr/SKILL.md
================================================
---
name: pr
description: Creates a pull request following Storybook conventions. Use when creating PRs, opening pull requests, or submitting changes for review.
allowed-tools: Bash, Read
---
# Create Pull Request
Creates a PR following Storybook conventions.
## Title format
`[Area]: [Description]`
- Area is capitalized, no spaces (dashes allowed)
- Examples:
- `CSFFactories: Fix type export`
- `Nextjs-Vite: Add support`
- `CLI: Fix automigrate issue`
## Labels
Add these labels to the PR:
**Category (required, pick one):**
- `bug` - fixes incorrect behavior
- `maintenance` - user-facing maintenance
- `dependencies` - upgrading/downgrading deps
- `build` - internal build/test updates (no changelog)
- `cleanup` - minor cleanup (no changelog)
- `documentation` - docs only (no changelog)
- `feature request` - new feature
- `BREAKING CHANGE` - breaks compatibility
- `other` - doesn't fit above
**CI (required, pick one):**
- `ci:normal` - standard sandbox set; default for most code changes
- `ci:merged` - merged sandbox set
- `ci:daily` - daily sandbox set; use this when changes affect prerelease sandboxes or sandboxes pinned to a framework or React version other than latest
- `ci:docs` - documentation-only changes (use with `documentation` category)
## PR body
Read `.github/PULL_REQUEST_TEMPLATE.md` from the repository root.
Copy that template **EXACTLY**, including all HTML comments (`<!-- ... -->`). Fill in the relevant sections based on the changes, but keep all comments intact.
## Command
Always create PRs in draft mode:
```bash
gh pr create --draft --title "<Area>: <Description>" --body "<FILLED_TEMPLATE>" --label "<category>,<ci>"
```
================================================
FILE: .agents/skills/storybook-upgrade/SKILL.md
================================================
---
name: storybook-upgrade
description: Upgrade Storybook to a specific version (canary or release). Use this when upgrading Storybook packages in an external app, reproduction, or test project.
allowed-tools: Bash
---
# Storybook Upgrade
Upgrades all Storybook packages in a project to a specific version.
## Why this matters for the monorepo
This skill is mainly for validating Storybook changes outside this repository.
- QA a canary build from a Storybook PR in a downstream app
- Reproduce or verify a bug in an external project
## Usage
```bash
npx storybook@<VERSION> upgrade
```
## Examples
### Upgrade to canary version
```bash
npx storybook@0.0.0-pr-33526-sha-a2e09fa2 upgrade
```
### Upgrade to latest stable
```bash
npx storybook@latest upgrade
```
### Upgrade to specific release
```bash
npx storybook@8.5.0 upgrade
```
## What it does
1. Detects all `@storybook/*` packages in your project
2. Upgrades them all to the specified version
3. Handles peer dependencies automatically
4. Works with npm, yarn, and pnpm
## Important
- **DO NOT** manually install storybook packages with `npm add` / `yarn add` / `pnpm add`
- Always use `npx storybook@<version> upgrade` to ensure all packages stay in sync
- The upgrade command handles version resolution across all storybook packages
- **ALWAYS upgrade only 1 major version at a time!**
- Example: 8.x → 9.x → 10.x → canary of 10
- Never skip major versions (e.g., don't go from 8.x directly to 10.x)
================================================
FILE: .circleci/config.yml
================================================
version: 2.1
# https://circleci.com/docs/guides/orchestrate/dynamic-config/
setup: true
orbs:
git-shallow-clone: guitarrapc/git-shallow-clone@2.8.0
continuation: circleci/continuation@2.0.1
node: circleci/node@7.2.1
parameters:
ghBaseBranch:
default: next
description: The name of the base branch (the target of the PR)
type: string
ghPrNumber:
default: ''
description: The PR number
type: string
workflow:
default: skipped
description: Which workflow to run
enum:
- normal
- merged
- daily
- skipped
- docs
type: enum
jobs:
generate-and-run-config:
executor:
name: node/default
resource_class: small
steps:
- node/install:
install-yarn: true
- git-shallow-clone/checkout_advanced:
clone_options: '--depth 1'
- run:
name: Install dependencies
command: yarn workspaces focus @storybook/scripts
- run:
name: Generate config
command: |
yarn dlx jiti ./scripts/ci/main.ts --workflow=<< pipeline.parameters.workflow >>
- continuation/continue:
configuration_path: .circleci/config.generated.yml
workflows:
setup:
jobs:
- generate-and-run-config
when: pipeline.parameters.workflow != "skipped"
================================================
FILE: .cursor/environment.json
================================================
{
"snapshot": "snapshot-20250521-0222c8bd-0a11-48ab-a2a8-380203843e05",
"install": "yarn && yarn task --task=compile --start-from=compile",
"start": "cd /workspace/code && yarn test",
"terminals": []
}
================================================
FILE: .cursor/rules/spy-mocking.mdc
================================================
---
description: Rules for consistent and type-safe mocking in Vitest tests
globs: "**/*.test.{ts,tsx,js,jsx}"
alwaysApply: true
---
# Spy Mocking Rules for Vitest Tests
## Mocking Approach
When mocking packages or files in Vitest-based tests, follow these rules:
1. Use `vi.mock()` with the `spy: true` option for all package and file mocks
2. Place all mocks at the top of the test file before any test cases
3. Use `vi.mocked()` to type and access the mocked functions
4. Implement mock behaviors in `beforeEach` blocks
5. Mock all required dependencies that the test subject uses
## Mock Implementation Rules
1. Mock implementations should be placed in `beforeEach` blocks
2. Each mock implementation should return a Promise for async functions
3. Mock implementations should match the expected return type of the original function
4. Use `vi.mocked()` to access and implement mock behaviors
5. Mock all required properties and methods that the test subject uses
## Avoided Patterns
The following mocking patterns should be avoided:
1. Direct function mocking without `vi.mocked()`
2. Mock implementations outside of `beforeEach` blocks
3. Mocking without the `spy: true` option
4. Inline mock implementations within test cases
5. Mocking only a subset of required dependencies
## Best Practices
1. Mock at the highest level of abstraction needed
2. Keep mock implementations simple and focused
3. Use type-safe mocking with `vi.mocked()`
4. Document complex mock behaviors
5. Group related mocks together
================================================
FILE: .cursorrules
================================================
## Test Configuration
This Storybook repository uses Vitest as the test runner. Here are the key commands and configuration:
### Test Scripts
- `yarn test` - Run all tests (from root directory, delegates to `cd code; yarn test`)
- `yarn test <test-name>` - Run focused tests matching the pattern
- `yarn test:watch` - Run tests in watch mode
- `yarn test:watch <test-name>` - Run focused tests in watch mode
### Test Directory Structure
- Tests are located in the `code/` directory
- Vitest configuration is in `code/vitest.workspace.ts`
- Test files typically follow the pattern `*.test.ts`, `*.test.tsx`, `*.spec.ts`, or `*.spec.tsx`
### Running Tests in Cursor
1. Use Cmd+Shift+P (or Ctrl+Shift+P) and search for "Tasks: Run Task"
2. Select from the available test tasks:
- "Run All Tests" - Runs all tests
- "Run Test (Watch Mode)" - Runs tests in watch mode
- "Run Focused Test" - Prompts for test name/pattern to run specific tests
- "Run Focused Test (Watch Mode)" - Runs specific tests in watch mode
### Vitest Configuration
- Workspace configuration: `./code/vitest.workspace.ts`
- Command line: `yarn --cwd code test`
- Root directory for tests: `./code/`
### Test Execution Context
- Tests run from the `code/` directory
- Use `NODE_OPTIONS=--max_old_space_size=4096` for memory optimization
- Supports both watch mode and single-run execution
### Focused Test Patterns
When running focused tests, you can use:
- File names: `Button.test.ts`
- Test descriptions: `"should render correctly"`
- Directory patterns: `components/`
- Vitest patterns: `-t "pattern"` for test name matching
### Test Mocking Rules
Follow the spy mocking rules defined in `.cursor/rules/spy-mocking.mdc` for consistent mocking patterns with Vitest.
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
[*.{js,json,ts,vue,svelte,html}]
indent_style = space
indent_size = 2
[*.{yml,yaml}]
quote_type = single
================================================
FILE: .git-blame-ignore-revs
================================================
34e364a0ca1d93555d36a7367d78e8e229493de8
c0896915fb7fb9a8dd416b9aebca17abd909d1c1
a41c227037e7e7249b8b376f838f4f8bcc3e3e59
13c46e6c0b7f3dd8cf4ba42d1cfd6714f4777d54
0a4522a3f84773f39daec4820c49b8a92e9f9d11
e12039c0593ba021ce27cb7245b6067677f27625
513bb66bb9729ece57581b6eb50e5b338c47c0b9
================================================
FILE: .gitattributes
================================================
/**/.yarn/** linguist-generated
* -text
.github/workflows/*.lock.yml linguist-generated=true merge=ours
================================================
FILE: .github/DISCUSSION_TEMPLATE/help.yml
================================================
body:
- type: markdown
id: intro
attributes:
value: |
Thanks for taking the time to start a new discussion!
### Before you post
Check if someone has already asked/answered your question in a previous discussion.
### When you're ready to post
Add labels to your discussion (e.g. React, Vue, Vite) to make it clearer for other users.
- type: textarea
id: summary
attributes:
label: Summary
description: How can we help?
validations:
required: true
- type: textarea
id: additional-info
attributes:
label: Additional information
description: |
Share Your Storybook configuration (`main.js` or `main.ts`), your Storybook version number, any error messages, and any relevant dependencies. These help us get a clearer understanding of what might be going wrong.
P.S. Please [share code as text](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks) rather than as a screenshot! It makes debugging much easier and faster.
validations:
required: false
- type: input
id: reproduction
attributes:
label: Create a reproduction
description: |
Help us debug by creating a minimal reproduction with [https://storybook.new](https://storybook.new). Learn more about creating a reproduction [here](https://storybook.js.org/docs/react/contribute/how-to-reproduce).
validations:
required: false
================================================
FILE: .github/DISCUSSION_TEMPLATE/ideas.yml
================================================
labels:
- needs triage
- feature request
body:
- type: textarea
id: problem
attributes:
label: Is your feature request related to a problem? Please describe.
description: >-
A clear and concise description of the problem. E.g. I'm always
frustrated when [...]
- type: textarea
id: describe
attributes:
label: Describe the solution you'd like
description: What would you like to see added to Storybook to solve problem?
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Describe alternatives you've considered
description: Any alternative solutions or features you've considered.
- type: dropdown
id: help
attributes:
label: Are you able to assist to bring the feature to reality?
options:
- 'no'
- yes, I can
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
================================================
FILE: .github/DISCUSSION_TEMPLATE/rfc.yml
================================================
title: '[RFC] '
labels: ['RFC']
body:
- type: markdown
attributes:
value: |
# Request For Comments
Welcome! 👋
If you are interested in proposing a new feature or improvement to Storybook, then you are in the right place!
This template is designed to help users and contributors propose a solution to a problem, receive feedback, and finally gain alignment.
Thank you for taking the time to improve Storybook.
- type: textarea
id: summary
attributes:
label: Summary
description: |
A brief, 1-5 sentences explanation of the RFC.
validations:
required: true
- type: markdown
attributes:
value: |
## The Problem
- type: textarea
id: problem-statement
attributes:
label: Problem Statement
description: |
A few sentences or bullets summarizing the problem we are trying to solve. Non-core members should be able to read this and understand why we are doing this.
placeholder: |
Doing X is hard because combining Y and Z makes Storybook go 💥...
validations:
required: true
- type: textarea
id: non-goals
attributes:
label: Non-goals
description: |
Key bullets explicitly outlining what is not in-scope.
placeholder: |
Making Y work with W is not part of this proposal because...
- type: markdown
attributes:
value: |
## 🚀 Proposed Solution
Here is where you can get technical!
The goal of this section is to outline the technical changes necessary for the proposed solution.
In most cases, the content of this section will evolve as discussions take place.
- type: textarea
id: implementation
attributes:
label: Implementation
description: |
What are the high level technical (architecture, data structure, UI, etc) changes? Diagrams can be very helpful here.
placeholder: |
I propose a new API for integrating Y with Z to achieve X. The API will be...
validations:
required: true
- type: textarea
id: prior-art
attributes:
label: Prior Art
description: |
Has this been done before, maybe in the broader ecosystem?
placeholder: |
Project A has done something similar for a long time, and the B addon supports this by...
- type: textarea
id: deliverables
attributes:
label: Deliverables
description: |
List out the high-level deliverables that make up this body of work.
Each deliverable should be small enough to be reliably estimable but large enough to represent a meaningful delivery, usually one cycle (2 weeks) worth of work.
placeholder: |
1. Restructure Y to support incoming Z
2. Integrate Z into Y
3. Build V on top of Y and Z
- type: textarea
id: risks
attributes:
label: Risks
description: |
What risks might be introduced by this set of changes? How can we mitigate these risks?
placeholder: |
- This will make it harder to use X in this scenario because...
- type: textarea
id: unresolved-questions
attributes:
label: Unresolved Questions
description: |
Questions we hope to answer as part of this proposal review process.
value: |
- [ ] Using a to do list makes it easy to resolve the questions as we move the RFC along.
- type: textarea
id: alternatives
attributes:
label: Alternatives considered / Abandoned Ideas
description: |
Describe alternative approaches that have been considered and why they have been dropped.
As we discuss this project, it is common for some ideas to be abandoned. Instead of deleting them, let's document the rationale. This way, when people review this proposal in the future, they can avoid the same thinking path and pitfalls we have already learned from.
placeholder: |
I've considered combining U and I, but that is a worse solution because...
================================================
FILE: .github/FUNDING.yml
================================================
open_collective: storybook
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug report 🐞
description: >-
Something is broken and you have a reliable reproduction? Let us know here.
For questions, please post in GitHub Discussion.
title: '[Bug]: '
labels:
- needs triage
- bug
body:
- type: textarea
id: description
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is
validations:
required: true
- type: input
id: repro-link
attributes:
label: Reproduction link
description: >-
Please provide a link to a reproduction of the issue. We accept reproductions hosted on GitHub, CodeSandbox, and StackBlitz. Due to the high volume of reports, we prioritize those with clear reproductions. The easiest way to create a reproduction is to use [storybook.new](https://storybook.new). For detailed guidance, please refer to our [documentation](https://storybook.js.org/docs/react/contribute/how-to-reproduce).
Important: If the provided URL is invalid (e.g., 404 error or private repository), we may close the issue. Thank you for your understanding!
validations:
required: true
- type: textarea
id: repro-steps
attributes:
label: Reproduction steps
description: >-
Include the steps to reproduce the issue using the provided link. Additionally, provide a clear and concise description of what you expected to happen.
placeholder: >-
1. Go to above link
2. Click on '....'
3. ...
- type: textarea
id: system
attributes:
label: System
description: Please paste the results of `npx storybook@latest info` here.
render: bash
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: View documentation 📚
url: https://storybook.js.org/docs/
about: Check out the official docs for answers to common questions.
- name: Feature requests 💡
url: https://github.com/storybookjs/storybook/discussions/new?category=ideas
about: Suggest a feature idea for this project.
- name: Open an RFC 🦄
url: https://github.com/storybookjs/storybook/discussions/new?category=rfc
about: Do you want to propose a more involved change to Storybook? Open an RFC (Request for Comments) to start a discussion.
- name: Questions 💭
url: https://github.com/storybookjs/storybook/discussions/new?category=help
about: Need support with a Storybook problem? Open up a help request.
- name: Discussions 🙌
url: https://github.com/storybookjs/storybook/discussions
about: Show off your Storybook or discuss the project.
- name: Community Discord 🎉
url: https://discord.gg/storybook
about: Meet other community members and get contributor help.
================================================
FILE: .github/ISSUE_TEMPLATE/tracking_issue.yml
================================================
name: Tracking Issue
description: For tracking a large body of work. For internal use only.
title: '[Tracking]: '
type: 'Tracking'
body:
- type: textarea
attributes:
label: Problem statement
description: A brief description of the problem we're trying to solve.
validations:
required: true
- type: textarea
attributes:
label: Milestones
description: |
A good milestone is a unit of work that is *shippable and usable*. This should be done in two weeks.
Milestone definitions should have:
* a clear goal (the title of the milestone)
* a specific person responsible for seeing through the milestone (the owner)
* the target completion date (complete by)
* a list of tasks to get the *one piece done*
value: |
### M1: milestone 1
**Owner: `@mention`**
**Complete by: `@date`**
- [ ] task1
- [ ] task2
### M2: milestone 2
**Owner: `@mention`**
**Complete by: `@date`**
- [ ] task1
- [ ] task2
### Milestone n: be sure to always scope these in
**Owner: `@mention`**
**Complete by: `@date`**
- [ ] Metric collection
- [ ] Documentation
- [ ] Blog posts
**========= Everything below this line is strictly nice-to-have =========**
### Related issues that may be resolved by this project
- [ ] issue1
- [ ] issue2
================================================
FILE: .github/ISSUE_TEMPLATE/update_docs.yml
================================================
name: Update docs ✍️
description: >-
Find a mistake in our documentation, or have a suggestion to improve them? Let us know here.
title: '[Documentation]: '
labels:
- needs triage
- documentation
body:
- type: textarea
id: description
attributes:
label: Describe the problem
description: A clear and concise description of what is wrong in the documentation or what you would like to improve. Please include URLs to the pages you're referring to.
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context about the problem here.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
Closes #
<!-- If your PR is related to an issue, provide the number(s) above; if it resolves multiple issues, be sure to break them up (e.g. "closes #1000, closes #1001"). -->
<!--
Thank you for contributing to Storybook! Please submit all PRs to the `next` branch unless they are specific to the current release. Storybook maintainers cherry-pick bug and documentation fixes into the `main` branch as part of the release process, so you shouldn't need to worry about this. For additional guidance: https://storybook.js.org/docs/contribute
-->
## What I did
<!-- Briefly describe what your PR does -->
## Checklist for Contributors
### Testing
<!-- Please check (put an "x" inside the "[ ]") the applicable items below to communicate how to test your changes -->
#### The changes in this PR are covered in the following automated tests:
- [ ] stories
- [ ] unit tests
- [ ] integration tests
- [ ] end-to-end tests
#### Manual testing
> [!CAUTION]
> This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!
<!-- Please include the steps to test your changes here. For example:
1. Run a sandbox for template, e.g. `yarn task --task sandbox --start-from auto --template react-vite/default-ts`
2. Open Storybook in your browser
3. Access X story
-->
### Documentation
<!-- Please check (put an "x" inside the "[ ]") the applicable items below to indicate which documentation has been updated. -->
- [ ] Add or update documentation reflecting your changes
- [ ] If you are deprecating/removing a feature, make sure to update
[MIGRATION.MD](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md)
## Checklist for Maintainers
- [ ] When this PR is ready for testing, make sure to add `ci:normal`, `ci:merged` or `ci:daily` GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in `code/lib/cli-storybook/src/sandbox-templates.ts`
- [ ] Make sure this PR contains **one** of the labels below:
<details>
<summary>Available labels</summary>
- `bug`: Internal changes that fixes incorrect behavior.
- `maintenance`: User-facing maintenance tasks.
- `dependencies`: Upgrading (sometimes downgrading) dependencies.
- `build`: Internal-facing build tooling & test updates. Will not show up in release changelog.
- `cleanup`: Minor cleanup style change. Will not show up in release changelog.
- `documentation`: Documentation **only** changes. Will not show up in release changelog.
- `feature request`: Introducing a new feature.
- `BREAKING CHANGE`: Changes that break compatibility in some way with current major version.
- `other`: Changes that don't fit in the above categories.
</details>
### 🦋 Canary release
<!-- CANARY_RELEASE_SECTION -->
This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the `@storybookjs/core` team here.
_core team members can create a canary release [here](https://github.com/storybookjs/storybook/actions/workflows/publish.yml) or locally with `gh workflow run --repo storybookjs/storybook publish.yml --field pr=<PR_NUMBER>`_
<!-- CANARY_RELEASE_SECTION -->
<!-- BENCHMARK_SECTION -->
<!-- BENCHMARK_SECTION -->
================================================
FILE: .github/actions/setup-node-and-install/action.yml
================================================
name: 'Setup Node.js and Install Dependencies'
description: 'Sets up Node.js, caches dependencies, and installs packages for Storybook'
inputs:
install-code-deps:
description: 'Whether to install code dependencies in addition to script dependencies'
required: false
default: 'false'
runs:
using: 'composite'
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Update npm to latest
shell: bash
run: npm install -g npm@latest
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
~/.yarn/berry/cache
key: yarn-v1-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-v1-${{ hashFiles('yarn.lock') }}
yarn-v1
- name: Install script dependencies
shell: bash
working-directory: scripts
run: yarn install
- name: Install code dependencies
if: inputs.install-code-deps == 'true'
shell: bash
working-directory: code
run: yarn install
================================================
FILE: .github/comments/good-first-issue.md
================================================
The issue was marked with the `good first issue` label by a maintainer.
This means that it is a good candidate for someone interested in contributing to the project, but does not know where to start.
To get started, read the [Contributing Guide](https://storybook.js.org/docs/contribute/how-to-contribute). When you are ready, open a PR and link back to this issue in the form of adding `Fixes #1234` to the PR description, where `1234` is the issue number. This will automatically close the issue when the PR gets merged, making it easier for us to keep track of what has been fixed.
Please remember to add tests to confirm your code changes will fix the issue and we do not regress in the future.
If you have any questions, feel free to ask below or hop onto the [Storybook Discord](https://discord.gg/storybook) and ask in the #contributing channel. We're looking forward to your contribution! ✨
> [!NOTE]
> There is no need to ask to be assigned or for permission (e.g. "can I work on this?"). Please, go ahead if there is no linked PR. :slightly_smiling_face:
================================================
FILE: .github/comments/invalid-link.md
================================================
We could not detect a valid reproduction link. **Make sure to follow the bug report template carefully.**
### Why was this issue closed?
To be able to investigate, we need access to a reproduction to identify what triggered the issue. We need a link to a **public** GitHub repository, Stackblitz or CodeSandbox. The easiest way to create a reproduction is with [storybook.new](https://storybook.new).
The bug template that you filled out has a section called "To reproduce", which is where you should provide the link to the reproduction.
- If you did not provide a link or the link you provided is not valid, we will close the issue.
- If you provide a link to a private repository, we will close the issue.
- If you provide a link to a repository but not in the correct section, we will close the issue.
### What should I do?
Depending on the reason the issue was closed, you can do the following:
- If you did not provide a link, please open a new issue with a link to a reproduction.
- If you provided a link to a private repository, please open a new issue with a link to a public repository.
- If you provided a link to a repository but not in the correct section, please open a new issue with a link to a reproduction in the correct section.
**In general, assume that we should not go through a lengthy onboarding process at your company code only to be able to verify an issue.**
### My repository is private and cannot be public
In most cases, a private repo will not be a sufficient **minimal reproduction**, as this codebase might contain a lot of unrelated parts that would make our investigation take longer. Please do **not** make it public. Instead, create a new repository using the templates above, adding the relevant code to reproduce the issue. Common things to look out for:
- Remove any code that is not related to the issue. (pages, API routes, irrelevant components, etc.)
- Remove any dependencies that are not related to the issue.
- Remove any third-party service that would require us to sign up for an account to reproduce the issue.
- Remove any environment variables that are not related to the issue.
- Remove private packages that we do not have access to.
- If the issue is not related to a monorepo specifically, try to reproduce the issue without a complex monorepo setup
### I did not open this issue, but it is relevant to me, what can I do to help?
Anyone experiencing the same issue is welcome to provide a minimal reproduction following the above steps by opening a new issue.
### I think my reproduction is good enough, why aren't you looking into it quickly?
We look into every Storybook issue and constantly monitor open issues for new comments.
However, sometimes we might miss one or two due to the popularity/high traffic of the repository. We apologize, and kindly ask you to refrain from tagging core maintainers, as that will usually not result in increased priority.
Upvoting issues to show your interest will help us prioritize and address them as quickly as possible. That said, every issue is important to us, and if an issue gets closed by accident, we encourage you to open a new one linking to the old issue and we will look into it.
### Useful Resources
- [Create a Storybook reproduction](https://storybook.js.org/docs/react/contribute/how-to-reproduce)
- [How to create a Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve)
- [Contributing to Storybook](https://storybook.js.org/docs/contribute/how-to-contribute)
================================================
FILE: .github/copilot-mcp.json
================================================
{
"mcpServers": {
"nx": {
"command": "npx",
"args": ["-y", "nx-mcp@latest"]
}
}
}
================================================
FILE: .github/workflows/code-simplifier.lock.yml
================================================
#
# ___ _ _
# / _ \ | | (_)
# | |_| | __ _ ___ _ __ | |_ _ ___
# | _ |/ _` |/ _ \ '_ \| __| |/ __|
# | | | | (_| | __/ | | | |_| | (__
# \_| |_/\__, |\___|_| |_|\__|_|\___|
# __/ |
# _ _ |___/
# | | | | / _| |
# | | | | ___ _ __ _ __| |_| | _____ ____
# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___|
# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \
# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/
#
# This file was automatically generated by gh-aw (v0.55.0). DO NOT EDIT.
#
# To update this file, edit github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619 and run:
# gh aw compile
# Not all edits will cause changes to this file.
#
# For more information: https://github.github.com/gh-aw/introduction/overview/
#
# Analyzes recently modified code and creates pull requests with simplifications that improve clarity, consistency, and maintainability while preserving functionality
#
# Source: github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619
#
# Resolved workflow manifest:
# Imports:
# - shared/mood.md
# - shared/reporting.md
#
# gh-aw-metadata: {"schema_version":"v2","frontmatter_hash":"dbddcd7da0eefb6c24a3380b4e555d7aacd3ba78c14d79ebc131c33cb86f02ea","compiler_version":"v0.55.0","strict":true}
name: "Code Simplifier"
"on":
schedule:
- cron: "6 12 * * *"
# Friendly format: daily (scattered)
# skip-if-match: is:pr is:open in:title "[code-simplifier]" # Skip-if-match processed as search check in pre-activation job
workflow_dispatch:
permissions: {}
concurrency:
group: "gh-aw-${{ github.workflow }}"
run-name: "Code Simplifier"
jobs:
activation:
needs: pre_activation
if: needs.pre_activation.outputs.activated == 'true'
runs-on: ubuntu-slim
permissions:
contents: read
outputs:
comment_id: ""
comment_repo: ""
model: ${{ steps.generate_aw_info.outputs.model }}
secret_verification_result: ${{ steps.validate-secret.outputs.verification_result }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Generate agentic run info
id: generate_aw_info
env:
GH_AW_INFO_ENGINE_ID: "copilot"
GH_AW_INFO_ENGINE_NAME: "GitHub Copilot CLI"
GH_AW_INFO_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}
GH_AW_INFO_VERSION: ""
GH_AW_INFO_AGENT_VERSION: "latest"
GH_AW_INFO_CLI_VERSION: "v0.55.0"
GH_AW_INFO_WORKFLOW_NAME: "Code Simplifier"
GH_AW_INFO_EXPERIMENTAL: "false"
GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "true"
GH_AW_INFO_STAGED: "false"
GH_AW_INFO_ALLOWED_DOMAINS: '["defaults"]'
GH_AW_INFO_FIREWALL_ENABLED: "true"
GH_AW_INFO_AWF_VERSION: "v0.23.0"
GH_AW_INFO_AWMG_VERSION: ""
GH_AW_INFO_FIREWALL_TYPE: "squid"
GH_AW_COMPILED_STRICT: "true"
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { main } = require('/opt/gh-aw/actions/generate_aw_info.cjs');
await main(core, context);
- name: Validate COPILOT_GITHUB_TOKEN secret
id: validate-secret
run: /opt/gh-aw/actions/validate_multi_secret.sh COPILOT_GITHUB_TOKEN 'GitHub Copilot CLI' https://github.github.com/gh-aw/reference/engines/#github-copilot-default
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
- name: Checkout .github and .agents folders
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
sparse-checkout: |
.github
.agents
sparse-checkout-cone-mode: true
fetch-depth: 1
persist-credentials: false
- name: Check workflow file timestamps
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_FILE: "code-simplifier.lock.yml"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_workflow_timestamp_api.cjs');
await main();
- name: Create prompt with built-in context
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
run: |
bash /opt/gh-aw/actions/create_prompt_first.sh
{
cat << 'GH_AW_PROMPT_EOF'
<system>
GH_AW_PROMPT_EOF
cat "/opt/gh-aw/prompts/xpia.md"
cat "/opt/gh-aw/prompts/temp_folder_prompt.md"
cat "/opt/gh-aw/prompts/markdown.md"
cat "/opt/gh-aw/prompts/safe_outputs_prompt.md"
cat << 'GH_AW_PROMPT_EOF'
<safe-output-tools>
Tools: create_pull_request, missing_tool, missing_data, noop
GH_AW_PROMPT_EOF
cat "/opt/gh-aw/prompts/safe_outputs_create_pull_request.md"
cat << 'GH_AW_PROMPT_EOF'
</safe-output-tools>
<github-context>
The following GitHub context information is available for this workflow:
{{#if __GH_AW_GITHUB_ACTOR__ }}
- **actor**: __GH_AW_GITHUB_ACTOR__
{{/if}}
{{#if __GH_AW_GITHUB_REPOSITORY__ }}
- **repository**: __GH_AW_GITHUB_REPOSITORY__
{{/if}}
{{#if __GH_AW_GITHUB_WORKSPACE__ }}
- **workspace**: __GH_AW_GITHUB_WORKSPACE__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ }}
- **issue-number**: #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ }}
- **discussion-number**: #__GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ }}
- **pull-request-number**: #__GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_COMMENT_ID__ }}
- **comment-id**: __GH_AW_GITHUB_EVENT_COMMENT_ID__
{{/if}}
{{#if __GH_AW_GITHUB_RUN_ID__ }}
- **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__
{{/if}}
</github-context>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
</system>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/shared/mood.md}}
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/shared/reporting.md}}
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/code-simplifier.md}}
GH_AW_PROMPT_EOF
} > "$GH_AW_PROMPT"
- name: Interpolate variables and render templates
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/interpolate_prompt.cjs');
await main();
- name: Substitute placeholders
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: ${{ needs.pre_activation.outputs.activated }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const substitutePlaceholders = require('/opt/gh-aw/actions/substitute_placeholders.cjs');
// Call the substitution function
return await substitutePlaceholders({
file: process.env.GH_AW_PROMPT,
substitutions: {
GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR,
GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID,
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER,
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: process.env.GH_AW_GITHUB_EVENT_ISSUE_NUMBER,
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: process.env.GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER,
GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY,
GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID,
GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE,
GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: process.env.GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED
}
});
- name: Validate prompt placeholders
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash /opt/gh-aw/actions/validate_prompt_placeholders.sh
- name: Print prompt
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash /opt/gh-aw/actions/print_prompt_summary.sh
- name: Upload activation artifact
if: success()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: activation
path: |
/tmp/gh-aw/aw_info.json
/tmp/gh-aw/aw-prompts/prompt.txt
retention-days: 1
agent:
needs: activation
runs-on: ubuntu-latest
permissions:
contents: read
issues: read
pull-requests: read
concurrency:
group: "gh-aw-copilot-${{ github.workflow }}"
env:
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
GH_AW_ASSETS_ALLOWED_EXTS: ""
GH_AW_ASSETS_BRANCH: ""
GH_AW_ASSETS_MAX_SIZE_KB: 0
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
GH_AW_SAFE_OUTPUTS: /opt/gh-aw/safeoutputs/outputs.jsonl
GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json
GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json
GH_AW_WORKFLOW_ID_SANITIZED: codesimplifier
outputs:
checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }}
detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }}
detection_success: ${{ steps.detection_conclusion.outputs.success }}
has_patch: ${{ steps.collect_output.outputs.has_patch }}
inference_access_error: ${{ steps.detect-inference-error.outputs.inference_access_error || 'false' }}
model: ${{ needs.activation.outputs.model }}
output: ${{ steps.collect_output.outputs.output }}
output_types: ${{ steps.collect_output.outputs.output_types }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Create gh-aw temp directory
run: bash /opt/gh-aw/actions/create_gh_aw_tmp_dir.sh
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Checkout PR branch
id: checkout-pr
if: |
(github.event.pull_request) || (github.event.issue.pull_request)
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/checkout_pr_branch.cjs');
await main();
- name: Install GitHub Copilot CLI
run: /opt/gh-aw/actions/install_copilot_cli.sh latest
- name: Install awf binary
run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.23.0
- name: Determine automatic lockdown mode for GitHub MCP Server
id: determine-automatic-lockdown
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
with:
script: |
const determineAutomaticLockdown = require('/opt/gh-aw/actions/determine_automatic_lockdown.cjs');
await determineAutomaticLockdown(github, context, core);
- name: Download container images
run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-firewall/agent:0.23.0 ghcr.io/github/gh-aw-firewall/api-proxy:0.23.0 ghcr.io/github/gh-aw-firewall/squid:0.23.0 ghcr.io/github/gh-aw-mcpg:v0.1.8 ghcr.io/github/github-mcp-server:v0.31.0 node:lts-alpine
- name: Write Safe Outputs Config
run: |
mkdir -p /opt/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs
cat > /opt/gh-aw/safeoutputs/config.json << 'GH_AW_SAFE_OUTPUTS_CONFIG_EOF'
{"create_pull_request":{"expires":24,"max":1,"reviewers":["copilot"],"title_prefix":"[code-simplifier] "},"missing_data":{},"missing_tool":{},"noop":{"max":1}}
GH_AW_SAFE_OUTPUTS_CONFIG_EOF
cat > /opt/gh-aw/safeoutputs/tools.json << 'GH_AW_SAFE_OUTPUTS_TOOLS_EOF'
[
{
"description": "Create a new GitHub pull request to propose code changes. Use this after making file edits to submit them for review and merging. The PR will be created from the current branch with your committed changes. For code review comments on an existing PR, use create_pull_request_review_comment instead. CONSTRAINTS: Maximum 1 pull request(s) can be created. Title will be prefixed with \"[code-simplifier] \". Labels [\"refactoring\" \"code-quality\" \"automation\"] will be automatically added. Reviewers [\"copilot\"] will be assigned.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Detailed PR description in Markdown. Include what changes were made, why, testing notes, and any breaking changes. Do NOT repeat the title as a heading.",
"type": "string"
},
"branch": {
"description": "Source branch name containing the changes. If omitted, uses the current working branch.",
"type": "string"
},
"draft": {
"description": "Whether to create the PR as a draft. Draft PRs cannot be merged until marked as ready for review. Use mark_pull_request_as_ready_for_review to convert a draft PR. Default: true.",
"type": "boolean"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"labels": {
"description": "Labels to categorize the PR (e.g., 'enhancement', 'bugfix'). Labels must exist in the repository.",
"items": {
"type": "string"
},
"type": "array"
},
"repo": {
"description": "Target repository in 'owner/repo' format. For multi-repo workflows where the target repo differs from the workflow repo, this must match a repo in the allowed-repos list or the configured target-repo. If omitted, defaults to the configured target-repo (from safe-outputs config), NOT the workflow repository. In most cases, you should omit this parameter and let the system use the configured default.",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"title": {
"description": "Concise PR title describing the changes. Follow repository conventions (e.g., conventional commits). The title appears as the main heading.",
"type": "string"
}
},
"required": [
"title",
"body"
],
"type": "object"
},
"name": "create_pull_request"
},
{
"description": "Report that a tool or capability needed to complete the task is not available, or share any information you deem important about missing functionality or limitations. Use this when you cannot accomplish what was requested because the required functionality is missing or access is restricted.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"alternatives": {
"description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"reason": {
"description": "Explanation of why this tool is needed or what information you want to share about the limitation (max 256 characters).",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"tool": {
"description": "Optional: Name or description of the missing tool or capability (max 128 characters). Be specific about what functionality is needed.",
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"name": "missing_tool"
},
{
"description": "Log a transparency message when no significant actions are needed. Use this to confirm workflow completion and provide visibility when analysis is complete but no changes or outputs are required (e.g., 'No issues found', 'All checks passed'). This ensures the workflow produces human-visible output even when no other actions are taken.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"message": {
"description": "Status or completion message to log. Should explain what was analyzed and the outcome (e.g., 'Code review complete - no issues found', 'Analysis complete - all tests passing').",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"name": "noop"
},
{
"description": "Report that data or information needed to complete the task is not available. Use this when you cannot accomplish what was requested because required data, context, or information is missing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"alternatives": {
"description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).",
"type": "string"
},
"context": {
"description": "Additional context about the missing data or where it should come from (max 256 characters).",
"type": "string"
},
"data_type": {
"description": "Type or description of the missing data or information (max 128 characters). Be specific about what data is needed.",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"reason": {
"description": "Explanation of why this data is needed to complete the task (max 256 characters).",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "missing_data"
}
]
GH_AW_SAFE_OUTPUTS_TOOLS_EOF
cat > /opt/gh-aw/safeoutputs/validation.json << 'GH_AW_SAFE_OUTPUTS_VALIDATION_EOF'
{
"create_pull_request": {
"defaultMax": 1,
"fields": {
"body": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
},
"branch": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 256
},
"draft": {
"type": "boolean"
},
"labels": {
"type": "array",
"itemType": "string",
"itemSanitize": true,
"itemMaxLength": 128
},
"repo": {
"type": "string",
"maxLength": 256
},
"title": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"missing_data": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"context": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"data_type": {
"type": "string",
"sanitize": true,
"maxLength": 128
},
"reason": {
"type": "string",
"sanitize": true,
"maxLength": 256
}
}
},
"missing_tool": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 512
},
"reason": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 256
},
"tool": {
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"noop": {
"defaultMax": 1,
"fields": {
"message": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
}
}
}
}
GH_AW_SAFE_OUTPUTS_VALIDATION_EOF
- name: Generate Safe Outputs MCP Server Config
id: safe-outputs-config
run: |
# Generate a secure random API key (360 bits of entropy, 40+ chars)
# Mask immediately to prevent timing vulnerabilities
API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${API_KEY}"
PORT=3001
# Set outputs for next steps
{
echo "safe_outputs_api_key=${API_KEY}"
echo "safe_outputs_port=${PORT}"
} >> "$GITHUB_OUTPUT"
echo "Safe Outputs MCP server will run on port ${PORT}"
- name: Start Safe Outputs MCP HTTP Server
id: safe-outputs-start
env:
DEBUG: '*'
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-config.outputs.safe_outputs_port }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-config.outputs.safe_outputs_api_key }}
GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json
GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
run: |
# Environment variables are set above to prevent template injection
export DEBUG
export GH_AW_SAFE_OUTPUTS_PORT
export GH_AW_SAFE_OUTPUTS_API_KEY
export GH_AW_SAFE_OUTPUTS_TOOLS_PATH
export GH_AW_SAFE_OUTPUTS_CONFIG_PATH
export GH_AW_MCP_LOG_DIR
bash /opt/gh-aw/actions/start_safe_outputs_server.sh
- name: Start MCP Gateway
id: start-mcp-gateway
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-start.outputs.api_key }}
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-start.outputs.port }}
GITHUB_MCP_LOCKDOWN: ${{ steps.determine-automatic-lockdown.outputs.lockdown == 'true' && '1' || '0' }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
run: |
set -eo pipefail
mkdir -p /tmp/gh-aw/mcp-config
# Export gateway environment variables for MCP config and gateway script
export MCP_GATEWAY_PORT="80"
export MCP_GATEWAY_DOMAIN="host.docker.internal"
MCP_GATEWAY_API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${MCP_GATEWAY_API_KEY}"
export MCP_GATEWAY_API_KEY
export MCP_GATEWAY_PAYLOAD_DIR="/tmp/gh-aw/mcp-payloads"
mkdir -p "${MCP_GATEWAY_PAYLOAD_DIR}"
export MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD="524288"
export DEBUG="*"
export GH_AW_ENGINE="copilot"
export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_LOCKDOWN -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.1.8'
mkdir -p /home/runner/.copilot
cat << GH_AW_MCP_CONFIG_EOF | bash /opt/gh-aw/actions/start_mcp_gateway.sh
{
"mcpServers": {
"github": {
"type": "stdio",
"container": "ghcr.io/github/github-mcp-server:v0.31.0",
"env": {
"GITHUB_LOCKDOWN_MODE": "$GITHUB_MCP_LOCKDOWN",
"GITHUB_PERSONAL_ACCESS_TOKEN": "\${GITHUB_MCP_SERVER_TOKEN}",
"GITHUB_READ_ONLY": "1",
"GITHUB_TOOLSETS": "context,repos,issues,pull_requests"
}
},
"safeoutputs": {
"type": "http",
"url": "http://host.docker.internal:$GH_AW_SAFE_OUTPUTS_PORT",
"headers": {
"Authorization": "\${GH_AW_SAFE_OUTPUTS_API_KEY}"
}
}
},
"gateway": {
"port": $MCP_GATEWAY_PORT,
"domain": "${MCP_GATEWAY_DOMAIN}",
"apiKey": "${MCP_GATEWAY_API_KEY}",
"payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}"
}
}
GH_AW_MCP_CONFIG_EOF
- name: Download activation artifact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: activation
path: /tmp/gh-aw
- name: Clean git credentials
run: bash /opt/gh-aw/actions/clean_git_credentials.sh
- name: Execute GitHub Copilot CLI
id: agentic_execution
# Copilot CLI tool arguments (sorted):
timeout-minutes: 30
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-all-tools --allow-all-paths --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/agent-stdio.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}
GH_AW_MCP_CONFIG: /home/runner/.copilot/mcp-config.json
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
XDG_CONFIG_HOME: /home/runner
- name: Detect inference access error
id: detect-inference-error
if: always()
continue-on-error: true
run: bash /opt/gh-aw/actions/detect_inference_access_error.sh
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Copy Copilot session state files to logs
if: always()
continue-on-error: true
run: |
# Copy Copilot session state files to logs folder for artifact collection
# This ensures they are in /tmp/gh-aw/ where secret redaction can scan them
SESSION_STATE_DIR="$HOME/.copilot/session-state"
LOGS_DIR="/tmp/gh-aw/sandbox/agent/logs"
if [ -d "$SESSION_STATE_DIR" ]; then
echo "Copying Copilot session state files from $SESSION_STATE_DIR to $LOGS_DIR"
mkdir -p "$LOGS_DIR"
cp -v "$SESSION_STATE_DIR"/*.jsonl "$LOGS_DIR/" 2>/dev/null || true
echo "Session state files copied successfully"
else
echo "No session-state directory found at $SESSION_STATE_DIR"
fi
- name: Stop MCP Gateway
if: always()
continue-on-error: true
env:
MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }}
MCP_GATEWAY_API_KEY: ${{ steps.start-mcp-gateway.outputs.gateway-api-key }}
GATEWAY_PID: ${{ steps.start-mcp-gateway.outputs.gateway-pid }}
run: |
bash /opt/gh-aw/actions/stop_mcp_gateway.sh "$GATEWAY_PID"
- name: Redact secrets in logs
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs');
await main();
env:
GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN'
SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Append agent step summary
if: always()
run: bash /opt/gh-aw/actions/append_agent_step_summary.sh
- name: Upload Safe Outputs
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: safe-output
path: ${{ env.GH_AW_SAFE_OUTPUTS }}
if-no-files-found: warn
- name: Ingest agent output
id: collect_output
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/collect_ndjson_output.cjs');
await main();
- name: Upload sanitized agent output
if: always() && env.GH_AW_AGENT_OUTPUT
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent-output
path: ${{ env.GH_AW_AGENT_OUTPUT }}
if-no-files-found: warn
- name: Upload engine output files
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent_outputs
path: |
/tmp/gh-aw/sandbox/agent/logs/
/tmp/gh-aw/redacted-urls.log
if-no-files-found: ignore
- name: Parse agent logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: /tmp/gh-aw/sandbox/agent/logs/
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_copilot_log.cjs');
await main();
- name: Parse MCP Gateway logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_mcp_gateway_log.cjs');
await main();
- name: Print firewall logs
if: always()
continue-on-error: true
env:
AWF_LOGS_DIR: /tmp/gh-aw/sandbox/firewall/logs
run: |
# Fix permissions on firewall logs so they can be uploaded as artifacts
# AWF runs with sudo, creating files owned by root
sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true
# Only run awf logs summary if awf command exists (it may not be installed if workflow failed before install step)
if command -v awf &> /dev/null; then
awf logs summary | tee -a "$GITHUB_STEP_SUMMARY"
else
echo 'AWF binary not installed, skipping firewall log summary'
fi
- name: Upload agent artifacts
if: always()
continue-on-error: true
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent-artifacts
path: |
/tmp/gh-aw/aw-prompts/prompt.txt
/tmp/gh-aw/mcp-logs/
/tmp/gh-aw/sandbox/firewall/logs/
/tmp/gh-aw/agent-stdio.log
/tmp/gh-aw/agent/
/tmp/gh-aw/aw-*.patch
if-no-files-found: ignore
# --- Threat Detection (inline) ---
- name: Check if detection needed
id: detection_guard
if: always()
env:
OUTPUT_TYPES: ${{ steps.collect_output.outputs.output_types }}
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
run: |
if [[ -n "$OUTPUT_TYPES" || "$HAS_PATCH" == "true" ]]; then
echo "run_detection=true" >> "$GITHUB_OUTPUT"
echo "Detection will run: output_types=$OUTPUT_TYPES, has_patch=$HAS_PATCH"
else
echo "run_detection=false" >> "$GITHUB_OUTPUT"
echo "Detection skipped: no agent outputs or patches to analyze"
fi
- name: Clear MCP configuration for detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
rm -f /tmp/gh-aw/mcp-config/mcp-servers.json
rm -f /home/runner/.copilot/mcp-config.json
rm -f "$GITHUB_WORKSPACE/.gemini/settings.json"
- name: Prepare threat detection files
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection/aw-prompts
cp /tmp/gh-aw/aw-prompts/prompt.txt /tmp/gh-aw/threat-detection/aw-prompts/prompt.txt 2>/dev/null || true
cp /tmp/gh-aw/agent_output.json /tmp/gh-aw/threat-detection/agent_output.json 2>/dev/null || true
for f in /tmp/gh-aw/aw-*.patch; do
[ -f "$f" ] && cp "$f" /tmp/gh-aw/threat-detection/ 2>/dev/null || true
done
echo "Prepared threat detection files:"
ls -la /tmp/gh-aw/threat-detection/ 2>/dev/null || true
- name: Setup threat detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
WORKFLOW_NAME: "Code Simplifier"
WORKFLOW_DESCRIPTION: "Analyzes recently modified code and creates pull requests with simplifications that improve clarity, consistency, and maintainability while preserving functionality"
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/setup_threat_detection.cjs');
await main();
- name: Ensure threat-detection directory and log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection
touch /tmp/gh-aw/threat-detection/detection.log
- name: Execute GitHub Copilot CLI
if: always() && steps.detection_guard.outputs.run_detection == 'true'
id: detection_agentic_execution
# Copilot CLI tool arguments (sorted):
# --allow-tool shell(cat)
# --allow-tool shell(grep)
# --allow-tool shell(head)
# --allow-tool shell(jq)
# --allow-tool shell(ls)
# --allow-tool shell(tail)
# --allow-tool shell(wc)
timeout-minutes: 20
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,github.com,host.docker.internal,raw.githubusercontent.com,registry.npmjs.org,telemetry.enterprise.githubcopilot.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-tool '\''shell(cat)'\'' --allow-tool '\''shell(grep)'\'' --allow-tool '\''shell(head)'\'' --allow-tool '\''shell(jq)'\'' --allow-tool '\''shell(ls)'\'' --allow-tool '\''shell(tail)'\'' --allow-tool '\''shell(wc)'\'' --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/threat-detection/detection.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_DETECTION_COPILOT || '' }}
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
XDG_CONFIG_HOME: /home/runner
- name: Parse threat detection results
id: parse_detection_results
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_threat_detection_results.cjs');
await main();
- name: Upload threat detection log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: threat-detection.log
path: /tmp/gh-aw/threat-detection/detection.log
if-no-files-found: ignore
- name: Set detection conclusion
id: detection_conclusion
if: always()
env:
RUN_DETECTION: ${{ steps.detection_guard.outputs.run_detection }}
DETECTION_SUCCESS: ${{ steps.parse_detection_results.outputs.success }}
run: |
if [[ "$RUN_DETECTION" != "true" ]]; then
echo "conclusion=skipped" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection was not needed, marking as skipped"
elif [[ "$DETECTION_SUCCESS" == "true" ]]; then
echo "conclusion=success" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection passed successfully"
else
echo "conclusion=failure" >> "$GITHUB_OUTPUT"
echo "success=false" >> "$GITHUB_OUTPUT"
echo "Detection found issues"
fi
conclusion:
needs:
- activation
- agent
- safe_outputs
if: (always()) && (needs.agent.result != 'skipped')
runs-on: ubuntu-slim
permissions:
contents: write
issues: write
pull-requests: write
concurrency:
group: "gh-aw-conclusion-code-simplifier"
cancel-in-progress: false
outputs:
noop_message: ${{ steps.noop.outputs.noop_message }}
tools_reported: ${{ steps.missing_tool.outputs.tools_reported }}
total_count: ${{ steps.missing_tool.outputs.total_count }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: agent-output
path: /tmp/gh-aw/safeoutputs/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/safeoutputs/
find "/tmp/gh-aw/safeoutputs/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV"
- name: Process No-Op Messages
id: noop
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_NOOP_MAX: "1"
GH_AW_WORKFLOW_NAME: "Code Simplifier"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/code-simplifier.md"
GH_AW_TRACKER_ID: "code-simplifier"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/noop.cjs');
await main();
- name: Record Missing Tool
id: missing_tool
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Code Simplifier"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/code-simplifier.md"
GH_AW_TRACKER_ID: "code-simplifier"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/missing_tool.cjs');
await main();
- name: Handle Agent Failure
id: handle_agent_failure
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Code Simplifier"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/code-simplifier.md"
GH_AW_TRACKER_ID: "code-simplifier"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "code-simplifier"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_INFERENCE_ACCESS_ERROR: ${{ needs.agent.outputs.inference_access_error }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "30"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/handle_agent_failure.cjs');
await main();
- name: Handle No-Op Message
id: handle_noop_message
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Code Simplifier"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/code-simplifier.md"
GH_AW_TRACKER_ID: "code-simplifier"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_NOOP_MESSAGE: ${{ steps.noop.outputs.noop_message }}
GH_AW_NOOP_REPORT_AS_ISSUE: "true"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/handle_noop_message.cjs');
await main();
- name: Handle Create Pull Request Error
id: handle_create_pr_error
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Code Simplifier"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/code-simplifier.md"
GH_AW_TRACKER_ID: "code-simplifier"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/handle_create_pr_error.cjs');
await main();
pre_activation:
runs-on: ubuntu-slim
outputs:
activated: ${{ (steps.check_membership.outputs.is_team_member == 'true') && (steps.check_skip_if_match.outputs.skip_check_ok == 'true') }}
matched_command: ''
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Check team membership for workflow
id: check_membership
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_REQUIRED_ROLES: admin,maintainer,write
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_membership.cjs');
await main();
- name: Check skip-if-match query
id: check_skip_if_match
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_SKIP_QUERY: "is:pr is:open in:title \"[code-simplifier]\""
GH_AW_WORKFLOW_NAME: "Code Simplifier"
GH_AW_SKIP_MAX_MATCHES: "1"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_skip_if_match.cjs');
await main();
safe_outputs:
needs:
- activation
- agent
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (needs.agent.outputs.detection_success == 'true')
runs-on: ubuntu-slim
permissions:
contents: write
issues: write
pull-requests: write
timeout-minutes: 15
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/code-simplifier"
GH_AW_ENGINE_ID: "copilot"
GH_AW_TRACKER_ID: "code-simplifier"
GH_AW_WORKFLOW_ID: "code-simplifier"
GH_AW_WORKFLOW_NAME: "Code Simplifier"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/code-simplifier.md"
outputs:
code_push_failure_count: ${{ steps.process_safe_outputs.outputs.code_push_failure_count }}
code_push_failure_errors: ${{ steps.process_safe_outputs.outputs.code_push_failure_errors }}
create_discussion_error_count: ${{ steps.process_safe_outputs.outputs.create_discussion_error_count }}
create_discussion_errors: ${{ steps.process_safe_outputs.outputs.create_discussion_errors }}
created_pr_number: ${{ steps.process_safe_outputs.outputs.created_pr_number }}
created_pr_url: ${{ steps.process_safe_outputs.outputs.created_pr_url }}
process_safe_outputs_processed_count: ${{ steps.process_safe_outputs.outputs.processed_count }}
process_safe_outputs_temporary_id_map: ${{ steps.process_safe_outputs.outputs.temporary_id_map }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: agent-output
path: /tmp/gh-aw/safeoutputs/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/safeoutputs/
find "/tmp/gh-aw/safeoutputs/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV"
- name: Download patch artifact
continue-on-error: true
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: agent-artifacts
path: /tmp/gh-aw/
- name: Checkout repository
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (contains(needs.agent.outputs.output_types, 'create_pull_request'))
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.base_ref || github.event.pull_request.base.ref || github.ref_name || github.event.repository.default_branch }}
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
persist-credentials: false
fetch-depth: 1
- name: Configure Git credentials
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (contains(needs.agent.outputs.output_types, 'create_pull_request'))
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
GIT_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${GIT_TOKEN}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Process Safe Outputs
id: process_safe_outputs
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"create_pull_request\":{\"expires\":24,\"labels\":[\"refactoring\",\"code-quality\",\"automation\"],\"max\":1,\"max_patch_size\":1024,\"reviewers\":[\"copilot\"],\"title_prefix\":\"[code-simplifier] \"},\"missing_data\":{},\"missing_tool\":{}}"
GH_AW_CI_TRIGGER_TOKEN: ${{ secrets.GH_AW_CI_TRIGGER_TOKEN }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/safe_output_handler_manager.cjs');
await main();
- name: Upload safe output items manifest
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: safe-output-items
path: /tmp/safe-output-items.jsonl
if-no-files-found: warn
================================================
FILE: .github/workflows/code-simplifier.md
================================================
---
name: Code Simplifier
description: Analyzes recently modified code and creates pull requests with simplifications that improve clarity, consistency, and maintainability while preserving functionality
on:
schedule: daily
skip-if-match: 'is:pr is:open in:title "[code-simplifier]"'
permissions:
contents: read
issues: read
pull-requests: read
tracker-id: code-simplifier
imports:
- shared/mood.md
- shared/reporting.md
safe-outputs:
create-pull-request:
title-prefix: '[code-simplifier] '
labels: [refactoring, code-quality, automation]
reviewers: [copilot]
expires: 1d
tools:
github:
toolsets: [default]
timeout-minutes: 30
strict: true
source: github/gh-aw/.github/workflows/code-simplifier.md@852cb06ad52958b402ed982b69957ffc57ca0619
engine: copilot
---
<!-- This prompt will be imported in the agentic workflow .github/workflows/code-simplifier.md at runtime. -->
<!-- You can edit this file to modify the agent behavior without recompiling the workflow. -->
# Code Simplifier Agent
You are an expert code simplification specialist focused on enhancing code clarity, consistency, and maintainability while preserving exact functionality. Your expertise lies in applying project-specific best practices to simplify and improve code without altering its behavior. You prioritize readable, explicit code over overly compact solutions. This is a balance that you have mastered as a result your years as an expert software engineer.
## Your Mission
Analyze recently modified code from the last 24 hours and apply refinements that improve code quality while preserving all functionality. Create a pull request with the simplified code if improvements are found.
## Current Context
- **Repository**: ${{ github.repository }}
- **Analysis Date**: $(date +%Y-%m-%d)
- **Workspace**: ${{ github.workspace }}
## Phase 1: Identify Recently Modified Code
### 1.1 Find Recent Changes
Search for merged pull requests and commits from the last 24 hours:
```bash
# Get yesterday's date in ISO format
YESTERDAY=$(date -d '1 day ago' '+%Y-%m-%d' 2>/dev/null || date -v-1d '+%Y-%m-%d')
# List recent commits
git log --since="24 hours ago" --pretty=format:"%H %s" --no-merges
```
Use GitHub tools to:
- Search for pull requests merged in the last 24 hours: `repo:${{ github.repository }} is:pr is:merged merged:>=${YESTERDAY}`
- Get details of merged PRs to understand what files were changed
- List commits from the last 24 hours to identify modified files
### 1.2 Extract Changed Files
For each merged PR or recent commit:
- Use `pull_request_read` with `method: get_files` to list changed files
- Use `get_commit` to see file changes in recent commits
- Focus on source code files (`.go`, `.js`, `.ts`, `.tsx`, `.cjs`, `.py`, `.cs`, etc.)
- Exclude test files, lock files, and generated files
### 1.3 Determine Scope
If **no files were changed in the last 24 hours**, exit gracefully without creating a PR:
```
✅ No code changes detected in the last 24 hours.
Code simplifier has nothing to process today.
```
If **files were changed**, proceed to Phase 2.
## Phase 2: Analyze and Simplify Code
### 2.1 Review Project Standards
Before simplifying, review the project's coding standards from relevant documentation:
- For Go projects: Check `AGENTS.md`, `DEVGUIDE.md`, or similar files
- For JavaScript/TypeScript: Look for `CLAUDE.md`, style guides, or coding conventions
- For Python: Check for style guides, PEP 8 adherence, or project-specific conventions
- For .NET/C#: Check `.editorconfig`, `Directory.Build.props`, or coding conventions in docs
**Key Standards to Apply:**
For **JavaScript/TypeScript** projects:
- Use ES modules with proper import sorting and extensions
- Prefer `function` keyword over arrow functions for top-level functions
- Use explicit return type annotations for top-level functions
- Follow proper React component patterns with explicit Props types
- Use proper error handling patterns (avoid try/catch when possible)
- Maintain consistent naming conventions
### 2.2 Simplification Principles
Apply these refinements to the recently modified code:
#### 1. Preserve Functionality
- **NEVER** change what the code does - only how it does it
- All original features, outputs, and behaviors must remain intact
- Run tests before and after to ensure no behavioral changes
#### 2. Enhance Clarity
- Reduce unnecessary complexity and nesting
- Eliminate redundant code and abstractions
- Improve readability through clear variable and function names
- Consolidate related logic
- Remove unnecessary comments that describe obvious code
- **IMPORTANT**: Avoid nested ternary operators - prefer switch statements or if/else chains
- Choose clarity over brevity - explicit code is often better than compact code
#### 3. Apply Project Standards
- Use project-specific conventions and patterns
- Follow established naming conventions
- Apply consistent formatting
- Use appropriate language features (modern syntax where beneficial)
#### 4. Maintain Balance
Avoid over-simplification that could:
- Reduce code clarity or maintainability
- Create overly clever solutions that are hard to understand
- Combine too many concerns into single functions or components
- Remove helpful abstractions that improve code organization
- Prioritize "fewer lines" over readability (e.g., nested ternaries, dense one-liners)
- Make the code harder to debug or extend
### 2.3 Perform Code Analysis
For each changed file:
1. **Read the file contents** using the edit or view tool
2. **Identify refactoring opportunities**:
- Long functions that could be split
- Duplicate code patterns
- Complex conditionals that could be simplified
- Unclear variable names
- Missing or excessive comments
- Non-standard patterns
3. **Design the simplification**:
- What specific changes will improve clarity?
- How can complexity be reduced?
- What patterns should be applied?
- Will this maintain all functionality?
### 2.4 Apply Simplifications
Use the **edit** tool to modify files:
```bash
# For each file with improvements:
# 1. Read the current content
# 2. Apply targeted edits to simplify code
# 3. Ensure all functionality is preserved
```
**Guidelines for edits:**
- Make surgical, targeted changes
- One logical improvement per edit (but batch multiple edits in a single response)
- Preserve all original behavior
- Keep changes focused on recently modified code
- Don't refactor unrelated code unless it improves understanding of the changes
## Phase 3: Validate Changes
### 3.1 Run Tests
After making simplifications, run the project's test suite to ensure no functionality was broken:
# For JavaScript/TypeScript projects
yarn --cwd code vitest run --changed
````
If tests fail:
- Review the failures carefully
- Revert changes that broke functionality
- Adjust simplifications to preserve behavior
- Re-run tests until they pass
### 3.2 Run Linters
Ensure code style is consistent:
```
yarn lint
```
Fix any linting issues introduced by the simplifications.
### 3.3 Check Build
Verify the project still builds successfully:
```
yarn task --task "compile"
```
## Phase 4: Create Pull Request
### 4.1 Determine If PR Is Needed
Only create a PR if:
- ✅ You made actual code simplifications
- ✅ All tests pass
- ✅ Linting is clean
- ✅ Build succeeds
- ✅ Changes improve code quality without breaking functionality
If no improvements were made or changes broke tests, exit gracefully:
```
✅ Code analyzed from last 24 hours.
No simplifications needed - code already meets quality standards.
```
### 4.2 Generate PR Description
If creating a PR, use this structure:
```markdown
## Code Simplification - [Date]
This PR simplifies recently modified code to improve clarity, consistency, and maintainability while preserving all functionality.
### Files Simplified
- `path/to/file1.go` - [Brief description of improvements]
- `path/to/file2.js` - [Brief description of improvements]
### Improvements Made
1. **Reduced Complexity**
- Simplified nested conditionals in `file1.go`
- Extracted helper function for repeated logic
2. **Enhanced Clarity**
- Renamed variables for better readability
- Removed redundant comments
- Applied consistent naming conventions
3. **Applied Project Standards**
- Used `function` keyword instead of arrow functions
- Added explicit type annotations
- Followed established patterns
### Changes Based On
Recent changes from:
- #[PR_NUMBER] - [PR title]
- Commit [SHORT_SHA] - [Commit message]
### Testing
- ✅ All tests pass (`make test-unit`)
- ✅ Linting passes (`make lint`)
- ✅ Build succeeds (`make build`)
- ✅ No functional changes - behavior is identical
### Review Focus
Please verify:
- Functionality is preserved
- Simplifications improve code quality
- Changes align with project conventions
- No unintended side effects
---
_Automated by Code Simplifier Agent - analyzing code from the last 24 hours_
```
### 4.3 Use Safe Outputs
Create the pull request using the safe-outputs configuration:
- Title will be prefixed with `[code-simplifier]`
- Labeled with `refactoring`, `code-quality`, `automation`
- Assigned to `copilot` for review
- Set as ready for review (not draft)
## Important Guidelines
### Scope Control
- **Focus on recent changes**: Only refine code modified in the last 24 hours
- **Don't over-refactor**: Avoid touching unrelated code
- **Preserve interfaces**: Don't change public APIs or exported functions
- **Incremental improvements**: Make targeted, surgical changes
### Quality Standards
- **Test first**: Always run tests after simplifications
- **Preserve behavior**: Functionality must remain identical
- **Follow conventions**: Apply project-specific patterns consistently
- **Clear over clever**: Prioritize readability and maintainability
### Exit Conditions
Exit gracefully without creating a PR if:
- No code was changed in the last 24 hours
- No simplifications are beneficial
- Tests fail after changes
- Build fails after changes
- Changes are too risky or complex
### Success Metrics
A successful simplification:
- ✅ Improves code clarity without changing behavior
- ✅ Passes all tests and linting
- ✅ Applies project-specific conventions
- ✅ Makes code easier to understand and maintain
- ✅ Focuses on recently modified code
- ✅ Provides clear documentation of changes
## Output Requirements
Your output MUST either:
1. **If no changes in last 24 hours**:
```
✅ No code changes detected in the last 24 hours.
Code simplifier has nothing to process today.
```
2. **If no simplifications beneficial**:
```
✅ Code analyzed from last 24 hours.
No simplifications needed - code already meets quality standards.
```
3. **If simplifications made**: Create a PR with the changes using safe-outputs
Begin your code simplification analysis now. Find recently modified code, assess simplification opportunities, apply improvements while preserving functionality, validate changes, and create a PR if beneficial.
````
================================================
FILE: .github/workflows/copilot-setup-steps.yml
================================================
name: 'Copilot Setup Steps'
# Automatically run the setup steps when they are changed to allow for easy validation, and
# allow manual testing through the repository's "Actions" tab
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
# The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
copilot-setup-steps:
runs-on: ubuntu-latest
# Set the permissions to the lowest permissions possible needed for your steps.
# Copilot will be given its own token for its operations.
permissions:
contents: read
# You can define any steps you want, and they will run before the agent starts.
# If you do not check out your code, Copilot will do this for you.
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup Node.js and Install Dependencies
uses: ./.github/actions/setup-node-and-install
with:
install-code-deps: true
- name: Compile
run: yarn nx run-many --targets compile --no-cloud
================================================
FILE: .github/workflows/cron-weekly.yml
================================================
name: Markdown Links Check
# runs every monday at 9 am
on:
schedule:
- cron: "0 9 * * 1"
permissions:
contents: read # to fetch repository files for markdown link checks
jobs:
check-links:
if: github.repository_owner == 'storybookjs'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: gaurav-nelson/github-action-markdown-link-check@v1
# checks all markdown files from important folders including all subfolders
with:
# only show errors that occur instead of successful links + errors
use-quiet-mode: "yes"
# output full HTTP info for broken links
use-verbose-mode: "yes"
config-file: ".github/workflows/markdown-link-check-config.json"
# Notify to Discord channel on failure
- name: Send Discord Notification
if: failure() # Only run this step if previous steps failed
run: |
curl -H "Content-Type: application/json" -X POST -d '{"content":"The Markdown Links Check workflow has failed in the repository: [storybook]"}' ${{ secrets.DISCORD_MONITORING_URL }}
================================================
FILE: .github/workflows/danger-js.yml
================================================
on:
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
- unlabeled
- edited
branches:
- "**"
concurrency:
group: ${{ github.workflow }}-${{ github.event.number }}
cancel-in-progress: true
name: Danger JS
jobs:
dangerJS:
name: Danger JS
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Danger JS
uses: docker://ghcr.io/danger/danger-js:13.0.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: --dangerfile scripts/dangerfile.js
================================================
FILE: .github/workflows/duplicate-code-detector.lock.yml
================================================
#
# ___ _ _
# / _ \ | | (_)
# | |_| | __ _ ___ _ __ | |_ _ ___
# | _ |/ _` |/ _ \ '_ \| __| |/ __|
# | | | | (_| | __/ | | | |_| | (__
# \_| |_/\__, |\___|_| |_|\__|_|\___|
# __/ |
# _ _ |___/
# | | | | / _| |
# | | | | ___ _ __ _ __| |_| | _____ ____
# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___|
# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \
# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/
#
# This file was automatically generated by gh-aw (v0.55.0). DO NOT EDIT.
#
# To update this file, edit github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619 and run:
# gh aw compile
# Not all edits will cause changes to this file.
#
# For more information: https://github.github.com/gh-aw/introduction/overview/
#
# Identifies duplicate code patterns across the codebase and suggests refactoring opportunities
#
# Source: github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619
#
# Resolved workflow manifest:
# Imports:
# - shared/mood.md
#
# gh-aw-metadata: {"schema_version":"v2","frontmatter_hash":"8f718997fab9f4077b50cf09e67d1c93cb5d11105def34e97ec4d56929ca4323","compiler_version":"v0.55.0","strict":true}
name: "Duplicate Code Detector"
"on":
schedule:
- cron: "12 8 * * *"
# Friendly format: daily (scattered)
workflow_dispatch:
permissions: {}
concurrency:
group: "gh-aw-${{ github.workflow }}"
run-name: "Duplicate Code Detector"
jobs:
activation:
runs-on: ubuntu-slim
permissions:
contents: read
outputs:
comment_id: ""
comment_repo: ""
model: ${{ steps.generate_aw_info.outputs.model }}
secret_verification_result: ${{ steps.validate-secret.outputs.verification_result }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Generate agentic run info
id: generate_aw_info
env:
GH_AW_INFO_ENGINE_ID: "copilot"
GH_AW_INFO_ENGINE_NAME: "GitHub Copilot CLI"
GH_AW_INFO_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}
GH_AW_INFO_VERSION: ""
GH_AW_INFO_AGENT_VERSION: "latest"
GH_AW_INFO_CLI_VERSION: "v0.55.0"
GH_AW_INFO_WORKFLOW_NAME: "Duplicate Code Detector"
GH_AW_INFO_EXPERIMENTAL: "false"
GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "true"
GH_AW_INFO_STAGED: "false"
GH_AW_INFO_ALLOWED_DOMAINS: '["defaults"]'
GH_AW_INFO_FIREWALL_ENABLED: "true"
GH_AW_INFO_AWF_VERSION: "v0.23.0"
GH_AW_INFO_AWMG_VERSION: ""
GH_AW_INFO_FIREWALL_TYPE: "squid"
GH_AW_COMPILED_STRICT: "true"
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { main } = require('/opt/gh-aw/actions/generate_aw_info.cjs');
await main(core, context);
- name: Validate COPILOT_GITHUB_TOKEN secret
id: validate-secret
run: /opt/gh-aw/actions/validate_multi_secret.sh COPILOT_GITHUB_TOKEN 'GitHub Copilot CLI' https://github.github.com/gh-aw/reference/engines/#github-copilot-default
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
- name: Checkout .github and .agents folders
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
sparse-checkout: |
.github
.agents
sparse-checkout-cone-mode: true
fetch-depth: 1
persist-credentials: false
- name: Check workflow file timestamps
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_FILE: "duplicate-code-detector.lock.yml"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_workflow_timestamp_api.cjs');
await main();
- name: Create prompt with built-in context
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_HEAD_COMMIT_ID: ${{ github.event.head_commit.id }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
run: |
bash /opt/gh-aw/actions/create_prompt_first.sh
{
cat << 'GH_AW_PROMPT_EOF'
<system>
GH_AW_PROMPT_EOF
cat "/opt/gh-aw/prompts/xpia.md"
cat "/opt/gh-aw/prompts/temp_folder_prompt.md"
cat "/opt/gh-aw/prompts/markdown.md"
cat "/opt/gh-aw/prompts/safe_outputs_prompt.md"
cat << 'GH_AW_PROMPT_EOF'
<safe-output-tools>
Tools: create_issue, missing_tool, missing_data, noop
</safe-output-tools>
<github-context>
The following GitHub context information is available for this workflow:
{{#if __GH_AW_GITHUB_ACTOR__ }}
- **actor**: __GH_AW_GITHUB_ACTOR__
{{/if}}
{{#if __GH_AW_GITHUB_REPOSITORY__ }}
- **repository**: __GH_AW_GITHUB_REPOSITORY__
{{/if}}
{{#if __GH_AW_GITHUB_WORKSPACE__ }}
- **workspace**: __GH_AW_GITHUB_WORKSPACE__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ }}
- **issue-number**: #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ }}
- **discussion-number**: #__GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ }}
- **pull-request-number**: #__GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_COMMENT_ID__ }}
- **comment-id**: __GH_AW_GITHUB_EVENT_COMMENT_ID__
{{/if}}
{{#if __GH_AW_GITHUB_RUN_ID__ }}
- **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__
{{/if}}
</github-context>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
</system>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/shared/mood.md}}
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/duplicate-code-detector.md}}
GH_AW_PROMPT_EOF
} > "$GH_AW_PROMPT"
- name: Interpolate variables and render templates
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_HEAD_COMMIT_ID: ${{ github.event.head_commit.id }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/interpolate_prompt.cjs');
await main();
- name: Substitute placeholders
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_HEAD_COMMIT_ID: ${{ github.event.head_commit.id }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const substitutePlaceholders = require('/opt/gh-aw/actions/substitute_placeholders.cjs');
// Call the substitution function
return await substitutePlaceholders({
file: process.env.GH_AW_PROMPT,
substitutions: {
GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR,
GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID,
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER,
GH_AW_GITHUB_EVENT_HEAD_COMMIT_ID: process.env.GH_AW_GITHUB_EVENT_HEAD_COMMIT_ID,
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: process.env.GH_AW_GITHUB_EVENT_ISSUE_NUMBER,
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: process.env.GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER,
GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY,
GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID,
GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE
}
});
- name: Validate prompt placeholders
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash /opt/gh-aw/actions/validate_prompt_placeholders.sh
- name: Print prompt
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash /opt/gh-aw/actions/print_prompt_summary.sh
- name: Upload activation artifact
if: success()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: activation
path: |
/tmp/gh-aw/aw_info.json
/tmp/gh-aw/aw-prompts/prompt.txt
retention-days: 1
agent:
needs: activation
runs-on: ubuntu-latest
permissions:
contents: read
issues: read
pull-requests: read
concurrency:
group: "gh-aw-copilot-${{ github.workflow }}"
env:
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
GH_AW_ASSETS_ALLOWED_EXTS: ""
GH_AW_ASSETS_BRANCH: ""
GH_AW_ASSETS_MAX_SIZE_KB: 0
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
GH_AW_SAFE_OUTPUTS: /opt/gh-aw/safeoutputs/outputs.jsonl
GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json
GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json
GH_AW_WORKFLOW_ID_SANITIZED: duplicatecodedetector
outputs:
checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }}
detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }}
detection_success: ${{ steps.detection_conclusion.outputs.success }}
has_patch: ${{ steps.collect_output.outputs.has_patch }}
inference_access_error: ${{ steps.detect-inference-error.outputs.inference_access_error || 'false' }}
model: ${{ needs.activation.outputs.model }}
output: ${{ steps.collect_output.outputs.output }}
output_types: ${{ steps.collect_output.outputs.output_types }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Create gh-aw temp directory
run: bash /opt/gh-aw/actions/create_gh_aw_tmp_dir.sh
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Checkout PR branch
id: checkout-pr
if: |
(github.event.pull_request) || (github.event.issue.pull_request)
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/checkout_pr_branch.cjs');
await main();
- name: Install GitHub Copilot CLI
run: /opt/gh-aw/actions/install_copilot_cli.sh latest
- name: Install awf binary
run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.23.0
- name: Determine automatic lockdown mode for GitHub MCP Server
id: determine-automatic-lockdown
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
with:
script: |
const determineAutomaticLockdown = require('/opt/gh-aw/actions/determine_automatic_lockdown.cjs');
await determineAutomaticLockdown(github, context, core);
- name: Download container images
run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-firewall/agent:0.23.0 ghcr.io/github/gh-aw-firewall/api-proxy:0.23.0 ghcr.io/github/gh-aw-firewall/squid:0.23.0 ghcr.io/github/gh-aw-mcpg:v0.1.8 ghcr.io/github/github-mcp-server:v0.31.0 ghcr.io/github/serena-mcp-server:latest node:lts-alpine
- name: Write Safe Outputs Config
run: |
mkdir -p /opt/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs
cat > /opt/gh-aw/safeoutputs/config.json << 'GH_AW_SAFE_OUTPUTS_CONFIG_EOF'
{"create_issue":{"max":1},"missing_data":{},"missing_tool":{},"noop":{"max":1}}
GH_AW_SAFE_OUTPUTS_CONFIG_EOF
cat > /opt/gh-aw/safeoutputs/tools.json << 'GH_AW_SAFE_OUTPUTS_TOOLS_EOF'
[
{
"description": "Create a new GitHub issue for tracking bugs, feature requests, or tasks. Use this for actionable work items that need assignment, labeling, and status tracking. For reports, announcements, or status updates that don't require task tracking, use create_discussion instead. CONSTRAINTS: Maximum 1 issue(s) can be created. Assignees [\"copilot\"] will be automatically assigned.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Detailed issue description in Markdown. Do NOT repeat the title as a heading since it already appears as the issue's h1. Include context, reproduction steps, or acceptance criteria as appropriate.",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"labels": {
"description": "Labels to categorize the issue (e.g., 'bug', 'enhancement'). Labels must exist in the repository.",
"items": {
"type": "string"
},
"type": "array"
},
"parent": {
"description": "Parent issue number for creating sub-issues. This is the numeric ID from the GitHub URL (e.g., 42 in github.com/owner/repo/issues/42). Can also be a temporary_id (e.g., 'aw_abc123', 'aw_Test123') from a previously created issue in the same workflow run.",
"type": [
"number",
"string"
]
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"temporary_id": {
"description": "Unique temporary identifier for referencing this issue before it's created. Format: 'aw_' followed by 3 to 12 alphanumeric characters (e.g., 'aw_abc1', 'aw_Test123'). Use '#aw_ID' in body text to reference other issues by their temporary_id; these are replaced with actual issue numbers after creation.",
"pattern": "^aw_[A-Za-z0-9]{3,12}$",
"type": "string"
},
"title": {
"description": "Concise issue title summarizing the bug, feature, or task. The title appears as the main heading, so keep it brief and descriptive.",
"type": "string"
}
},
"required": [
"title",
"body"
],
"type": "object"
},
"name": "create_issue"
},
{
"description": "Report that a tool or capability needed to complete the task is not available, or share any information you deem important about missing functionality or limitations. Use this when you cannot accomplish what was requested because the required functionality is missing or access is restricted.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"alternatives": {
"description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"reason": {
"description": "Explanation of why this tool is needed or what information you want to share about the limitation (max 256 characters).",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"tool": {
"description": "Optional: Name or description of the missing tool or capability (max 128 characters). Be specific about what functionality is needed.",
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"name": "missing_tool"
},
{
"description": "Log a transparency message when no significant actions are needed. Use this to confirm workflow completion and provide visibility when analysis is complete but no changes or outputs are required (e.g., 'No issues found', 'All checks passed'). This ensures the workflow produces human-visible output even when no other actions are taken.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"message": {
"description": "Status or completion message to log. Should explain what was analyzed and the outcome (e.g., 'Code review complete - no issues found', 'Analysis complete - all tests passing').",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"name": "noop"
},
{
"description": "Report that data or information needed to complete the task is not available. Use this when you cannot accomplish what was requested because required data, context, or information is missing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"alternatives": {
"description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).",
"type": "string"
},
"context": {
"description": "Additional context about the missing data or where it should come from (max 256 characters).",
"type": "string"
},
"data_type": {
"description": "Type or description of the missing data or information (max 128 characters). Be specific about what data is needed.",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"reason": {
"description": "Explanation of why this data is needed to complete the task (max 256 characters).",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "missing_data"
}
]
GH_AW_SAFE_OUTPUTS_TOOLS_EOF
cat > /opt/gh-aw/safeoutputs/validation.json << 'GH_AW_SAFE_OUTPUTS_VALIDATION_EOF'
{
"create_issue": {
"defaultMax": 1,
"fields": {
"body": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
},
"labels": {
"type": "array",
"itemType": "string",
"itemSanitize": true,
"itemMaxLength": 128
},
"parent": {
"issueOrPRNumber": true
},
"repo": {
"type": "string",
"maxLength": 256
},
"temporary_id": {
"type": "string"
},
"title": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"missing_data": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"context": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"data_type": {
"type": "string",
"sanitize": true,
"maxLength": 128
},
"reason": {
"type": "string",
"sanitize": true,
"maxLength": 256
}
}
},
"missing_tool": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 512
},
"reason": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 256
},
"tool": {
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"noop": {
"defaultMax": 1,
"fields": {
"message": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
}
}
}
}
GH_AW_SAFE_OUTPUTS_VALIDATION_EOF
- name: Generate Safe Outputs MCP Server Config
id: safe-outputs-config
run: |
# Generate a secure random API key (360 bits of entropy, 40+ chars)
# Mask immediately to prevent timing vulnerabilities
API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${API_KEY}"
PORT=3001
# Set outputs for next steps
{
echo "safe_outputs_api_key=${API_KEY}"
echo "safe_outputs_port=${PORT}"
} >> "$GITHUB_OUTPUT"
echo "Safe Outputs MCP server will run on port ${PORT}"
- name: Start Safe Outputs MCP HTTP Server
id: safe-outputs-start
env:
DEBUG: '*'
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-config.outputs.safe_outputs_port }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-config.outputs.safe_outputs_api_key }}
GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json
GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
run: |
# Environment variables are set above to prevent template injection
export DEBUG
export GH_AW_SAFE_OUTPUTS_PORT
export GH_AW_SAFE_OUTPUTS_API_KEY
export GH_AW_SAFE_OUTPUTS_TOOLS_PATH
export GH_AW_SAFE_OUTPUTS_CONFIG_PATH
export GH_AW_MCP_LOG_DIR
bash /opt/gh-aw/actions/start_safe_outputs_server.sh
- name: Start MCP Gateway
id: start-mcp-gateway
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-start.outputs.api_key }}
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-start.outputs.port }}
GITHUB_MCP_LOCKDOWN: ${{ steps.determine-automatic-lockdown.outputs.lockdown == 'true' && '1' || '0' }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
run: |
set -eo pipefail
mkdir -p /tmp/gh-aw/mcp-config
# Export gateway environment variables for MCP config and gateway script
export MCP_GATEWAY_PORT="80"
export MCP_GATEWAY_DOMAIN="host.docker.internal"
MCP_GATEWAY_API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${MCP_GATEWAY_API_KEY}"
export MCP_GATEWAY_API_KEY
export MCP_GATEWAY_PAYLOAD_DIR="/tmp/gh-aw/mcp-payloads"
mkdir -p "${MCP_GATEWAY_PAYLOAD_DIR}"
export MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD="524288"
export DEBUG="*"
export GH_AW_ENGINE="copilot"
export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_LOCKDOWN -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.1.8'
mkdir -p /home/runner/.copilot
cat << GH_AW_MCP_CONFIG_EOF | bash /opt/gh-aw/actions/start_mcp_gateway.sh
{
"mcpServers": {
"github": {
"type": "stdio",
"container": "ghcr.io/github/github-mcp-server:v0.31.0",
"env": {
"GITHUB_LOCKDOWN_MODE": "$GITHUB_MCP_LOCKDOWN",
"GITHUB_PERSONAL_ACCESS_TOKEN": "\${GITHUB_MCP_SERVER_TOKEN}",
"GITHUB_READ_ONLY": "1",
"GITHUB_TOOLSETS": "context,repos,issues,pull_requests"
}
},
"safeoutputs": {
"type": "http",
"url": "http://host.docker.internal:$GH_AW_SAFE_OUTPUTS_PORT",
"headers": {
"Authorization": "\${GH_AW_SAFE_OUTPUTS_API_KEY}"
}
},
"serena": {
"type": "stdio",
"container": "ghcr.io/github/serena-mcp-server:latest",
"args": ["--network", "host"],
"entrypoint": "serena",
"entrypointArgs": ["start-mcp-server", "--context", "codex", "--project", "\${GITHUB_WORKSPACE}"],
"mounts": ["\${GITHUB_WORKSPACE}:\${GITHUB_WORKSPACE}:rw"]
}
},
"gateway": {
"port": $MCP_GATEWAY_PORT,
"domain": "${MCP_GATEWAY_DOMAIN}",
"apiKey": "${MCP_GATEWAY_API_KEY}",
"payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}"
}
}
GH_AW_MCP_CONFIG_EOF
- name: Download activation artifact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: activation
path: /tmp/gh-aw
- name: Clean git credentials
run: bash /opt/gh-aw/actions/clean_git_credentials.sh
- name: Execute GitHub Copilot CLI
id: agentic_execution
# Copilot CLI tool arguments (sorted):
timeout-minutes: 15
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-all-tools --allow-all-paths --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/agent-stdio.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}
GH_AW_MCP_CONFIG: /home/runner/.copilot/mcp-config.json
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
XDG_CONFIG_HOME: /home/runner
- name: Detect inference access error
id: detect-inference-error
if: always()
continue-on-error: true
run: bash /opt/gh-aw/actions/detect_inference_access_error.sh
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Copy Copilot session state files to logs
if: always()
continue-on-error: true
run: |
# Copy Copilot session state files to logs folder for artifact collection
# This ensures they are in /tmp/gh-aw/ where secret redaction can scan them
SESSION_STATE_DIR="$HOME/.copilot/session-state"
LOGS_DIR="/tmp/gh-aw/sandbox/agent/logs"
if [ -d "$SESSION_STATE_DIR" ]; then
echo "Copying Copilot session state files from $SESSION_STATE_DIR to $LOGS_DIR"
mkdir -p "$LOGS_DIR"
cp -v "$SESSION_STATE_DIR"/*.jsonl "$LOGS_DIR/" 2>/dev/null || true
echo "Session state files copied successfully"
else
echo "No session-state directory found at $SESSION_STATE_DIR"
fi
- name: Stop MCP Gateway
if: always()
continue-on-error: true
env:
MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }}
MCP_GATEWAY_API_KEY: ${{ steps.start-mcp-gateway.outputs.gateway-api-key }}
GATEWAY_PID: ${{ steps.start-mcp-gateway.outputs.gateway-pid }}
run: |
bash /opt/gh-aw/actions/stop_mcp_gateway.sh "$GATEWAY_PID"
- name: Redact secrets in logs
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs');
await main();
env:
GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN'
SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Append agent step summary
if: always()
run: bash /opt/gh-aw/actions/append_agent_step_summary.sh
- name: Upload Safe Outputs
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: safe-output
path: ${{ env.GH_AW_SAFE_OUTPUTS }}
if-no-files-found: warn
- name: Ingest agent output
id: collect_output
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/collect_ndjson_output.cjs');
await main();
- name: Upload sanitized agent output
if: always() && env.GH_AW_AGENT_OUTPUT
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent-output
path: ${{ env.GH_AW_AGENT_OUTPUT }}
if-no-files-found: warn
- name: Upload engine output files
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent_outputs
path: |
/tmp/gh-aw/sandbox/agent/logs/
/tmp/gh-aw/redacted-urls.log
if-no-files-found: ignore
- name: Parse agent logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: /tmp/gh-aw/sandbox/agent/logs/
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_copilot_log.cjs');
await main();
- name: Parse MCP Gateway logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_mcp_gateway_log.cjs');
await main();
- name: Print firewall logs
if: always()
continue-on-error: true
env:
AWF_LOGS_DIR: /tmp/gh-aw/sandbox/firewall/logs
run: |
# Fix permissions on firewall logs so they can be uploaded as artifacts
# AWF runs with sudo, creating files owned by root
sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true
# Only run awf logs summary if awf command exists (it may not be installed if workflow failed before install step)
if command -v awf &> /dev/null; then
awf logs summary | tee -a "$GITHUB_STEP_SUMMARY"
else
echo 'AWF binary not installed, skipping firewall log summary'
fi
- name: Upload agent artifacts
if: always()
continue-on-error: true
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent-artifacts
path: |
/tmp/gh-aw/aw-prompts/prompt.txt
/tmp/gh-aw/mcp-logs/
/tmp/gh-aw/sandbox/firewall/logs/
/tmp/gh-aw/agent-stdio.log
/tmp/gh-aw/agent/
if-no-files-found: ignore
# --- Threat Detection (inline) ---
- name: Check if detection needed
id: detection_guard
if: always()
env:
OUTPUT_TYPES: ${{ steps.collect_output.outputs.output_types }}
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
run: |
if [[ -n "$OUTPUT_TYPES" || "$HAS_PATCH" == "true" ]]; then
echo "run_detection=true" >> "$GITHUB_OUTPUT"
echo "Detection will run: output_types=$OUTPUT_TYPES, has_patch=$HAS_PATCH"
else
echo "run_detection=false" >> "$GITHUB_OUTPUT"
echo "Detection skipped: no agent outputs or patches to analyze"
fi
- name: Clear MCP configuration for detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
rm -f /tmp/gh-aw/mcp-config/mcp-servers.json
rm -f /home/runner/.copilot/mcp-config.json
rm -f "$GITHUB_WORKSPACE/.gemini/settings.json"
- name: Prepare threat detection files
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection/aw-prompts
cp /tmp/gh-aw/aw-prompts/prompt.txt /tmp/gh-aw/threat-detection/aw-prompts/prompt.txt 2>/dev/null || true
cp /tmp/gh-aw/agent_output.json /tmp/gh-aw/threat-detection/agent_output.json 2>/dev/null || true
for f in /tmp/gh-aw/aw-*.patch; do
[ -f "$f" ] && cp "$f" /tmp/gh-aw/threat-detection/ 2>/dev/null || true
done
echo "Prepared threat detection files:"
ls -la /tmp/gh-aw/threat-detection/ 2>/dev/null || true
- name: Setup threat detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
WORKFLOW_NAME: "Duplicate Code Detector"
WORKFLOW_DESCRIPTION: "Identifies duplicate code patterns across the codebase and suggests refactoring opportunities"
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/setup_threat_detection.cjs');
await main();
- name: Ensure threat-detection directory and log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection
touch /tmp/gh-aw/threat-detection/detection.log
- name: Execute GitHub Copilot CLI
if: always() && steps.detection_guard.outputs.run_detection == 'true'
id: detection_agentic_execution
# Copilot CLI tool arguments (sorted):
# --allow-tool shell(cat)
# --allow-tool shell(grep)
# --allow-tool shell(head)
# --allow-tool shell(jq)
# --allow-tool shell(ls)
# --allow-tool shell(tail)
# --allow-tool shell(wc)
timeout-minutes: 20
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,github.com,host.docker.internal,raw.githubusercontent.com,registry.npmjs.org,telemetry.enterprise.githubcopilot.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-tool '\''shell(cat)'\'' --allow-tool '\''shell(grep)'\'' --allow-tool '\''shell(head)'\'' --allow-tool '\''shell(jq)'\'' --allow-tool '\''shell(ls)'\'' --allow-tool '\''shell(tail)'\'' --allow-tool '\''shell(wc)'\'' --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/threat-detection/detection.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_DETECTION_COPILOT || '' }}
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
XDG_CONFIG_HOME: /home/runner
- name: Parse threat detection results
id: parse_detection_results
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_threat_detection_results.cjs');
await main();
- name: Upload threat detection log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: threat-detection.log
path: /tmp/gh-aw/threat-detection/detection.log
if-no-files-found: ignore
- name: Set detection conclusion
id: detection_conclusion
if: always()
env:
RUN_DETECTION: ${{ steps.detection_guard.outputs.run_detection }}
DETECTION_SUCCESS: ${{ steps.parse_detection_results.outputs.success }}
run: |
if [[ "$RUN_DETECTION" != "true" ]]; then
echo "conclusion=skipped" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection was not needed, marking as skipped"
elif [[ "$DETECTION_SUCCESS" == "true" ]]; then
echo "conclusion=success" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection passed successfully"
else
echo "conclusion=failure" >> "$GITHUB_OUTPUT"
echo "success=false" >> "$GITHUB_OUTPUT"
echo "Detection found issues"
fi
conclusion:
needs:
- activation
- agent
- safe_outputs
if: (always()) && (needs.agent.result != 'skipped')
runs-on: ubuntu-slim
permissions:
contents: read
issues: write
concurrency:
group: "gh-aw-conclusion-duplicate-code-detector"
cancel-in-progress: false
outputs:
noop_message: ${{ steps.noop.outputs.noop_message }}
tools_reported: ${{ steps.missing_tool.outputs.tools_reported }}
total_count: ${{ steps.missing_tool.outputs.total_count }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: agent-output
path: /tmp/gh-aw/safeoutputs/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/safeoutputs/
find "/tmp/gh-aw/safeoutputs/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV"
- name: Process No-Op Messages
id: noop
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_NOOP_MAX: "1"
GH_AW_WORKFLOW_NAME: "Duplicate Code Detector"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/duplicate-code-detector.md"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/noop.cjs');
await main();
- name: Record Missing Tool
id: missing_tool
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Duplicate Code Detector"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/duplicate-code-detector.md"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/missing_tool.cjs');
await main();
- name: Handle Agent Failure
id: handle_agent_failure
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Duplicate Code Detector"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/duplicate-code-detector.md"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "duplicate-code-detector"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_INFERENCE_ACCESS_ERROR: ${{ needs.agent.outputs.inference_access_error }}
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/handle_agent_failure.cjs');
await main();
- name: Handle No-Op Message
id: handle_noop_message
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Duplicate Code Detector"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/duplicate-code-detector.md"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_NOOP_MESSAGE: ${{ steps.noop.outputs.noop_message }}
GH_AW_NOOP_REPORT_AS_ISSUE: "true"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/handle_noop_message.cjs');
await main();
safe_outputs:
needs: agent
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (needs.agent.outputs.detection_success == 'true')
runs-on: ubuntu-slim
permissions:
contents: read
issues: write
timeout-minutes: 15
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/duplicate-code-detector"
GH_AW_ENGINE_ID: "copilot"
GH_AW_WORKFLOW_ID: "duplicate-code-detector"
GH_AW_WORKFLOW_NAME: "Duplicate Code Detector"
GH_AW_WORKFLOW_SOURCE: "github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/github/gh-aw/tree/852cb06ad52958b402ed982b69957ffc57ca0619/.github/workflows/duplicate-code-detector.md"
outputs:
code_push_failure_count: ${{ steps.process_safe_outputs.outputs.code_push_failure_count }}
code_push_failure_errors: ${{ steps.process_safe_outputs.outputs.code_push_failure_errors }}
create_discussion_error_count: ${{ steps.process_safe_outputs.outputs.create_discussion_error_count }}
create_discussion_errors: ${{ steps.process_safe_outputs.outputs.create_discussion_errors }}
created_issue_number: ${{ steps.process_safe_outputs.outputs.created_issue_number }}
created_issue_url: ${{ steps.process_safe_outputs.outputs.created_issue_url }}
process_safe_outputs_processed_count: ${{ steps.process_safe_outputs.outputs.processed_count }}
process_safe_outputs_temporary_id_map: ${{ steps.process_safe_outputs.outputs.temporary_id_map }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@e211c855a20aa6cf9297b411466e1c382a8686db # v0.55.0
with:
destination: /opt/gh-aw/actions
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: agent-output
path: /tmp/gh-aw/safeoutputs/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/safeoutputs/
find "/tmp/gh-aw/safeoutputs/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV"
- name: Process Safe Outputs
id: process_safe_outputs
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"create_issue\":{\"assignees\":[\"copilot\"],\"max\":1},\"missing_data\":{},\"missing_tool\":{}}"
GH_AW_ASSIGN_COPILOT: "true"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/safe_output_handler_manager.cjs');
await main();
- name: Assign Copilot to created issues
if: steps.process_safe_outputs.outputs.issues_to_assign_copilot != ''
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_ISSUES_TO_ASSIGN_COPILOT: ${{ steps.process_safe_outputs.outputs.issues_to_assign_copilot }}
with:
github-token: ${{ secrets.GH_AW_AGENT_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/assign_copilot_to_created_issues.cjs');
await main();
- name: Upload safe output items manifest
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: safe-output-items
path: /tmp/safe-output-items.jsonl
if-no-files-found: warn
================================================
FILE: .github/workflows/duplicate-code-detector.md
================================================
---
name: Duplicate Code Detector
description: Identifies duplicate code patterns across the codebase and suggests refactoring opportunities
on:
workflow_dispatch:
schedule: daily
permissions:
contents: read
issues: read
pull-requests: read
engine: copilot
tools:
serena: ['typescript']
safe-outputs:
create-issue:
expires: 2d
title-prefix: '[duplicate-code] '
labels: [code-quality, automated-analysis, cookie]
assignees: copilot
group: true
max: 3
timeout-minutes: 15
strict: true
imports:
- shared/mood.md
source: github/gh-aw/.github/workflows/duplicate-code-detector.md@852cb06ad52958b402ed982b69957ffc57ca0619
---
# Duplicate Code Detection
Analyze code to identify duplicated patterns using Serena's semantic code analysis capabilities. Report significant findings that require refactoring.
## Task
Detect and report code duplication by:
1. **Analyzing Recent Commits**: Review changes in the latest commits
2. **Detecting Duplicated Code**: Identify similar or duplicated code patterns using semantic analysis
3. **Reporting Findings**: Create a detailed issue if significant duplication is detected (threshold: >10 lines or 3+ similar patterns)
## Context
- **Repository**: ${{ github.repository }}
- **Commit ID**: ${{ github.event.head_commit.id }}
- **Triggered by**: @${{ github.actor }}
## Analysis Workflow
### 1. Project Activation
Activate the project in Serena:
- Use `activate_project` tool with workspace path `${{ github.workspace }}` (mounted repository directory)
- This sets up the semantic code analysis environment
### 2. Changed Files Analysis
Identify and analyze modified files:
- Determine files changed in the recent commits
- **ONLY analyze .ts and .tsx files** - exclude all other file types
- **Exclude JavaScript files except .cjs** from analysis (files matching patterns: `*.js`, `*.mjs`, `*.jsx`, `*.ts`, `*.tsx`)
- **Exclude test files** from analysis (files matching patterns: `*.test.<ts|tsx>`, `*.spec.<ts|tsx>`, or located in directories named `test`, `tests`, `__tests__`, or `spec`)
- **Exclude workflow files** from analysis (files under `.github/workflows/*`)
- Use `get_symbols_overview` to understand file structure
- Use `read_file` to examine modified file contents
### 3. Duplicate Detection
Apply semantic code analysis to find duplicates:
**Symbol-Level Analysis**:
- For significant functions/methods in changed files, use `find_symbol` to search for similarly named symbols
- Use `find_referencing_symbols` to understand usage patterns
- Identify functions with similar names in different files (e.g., `processData` across modules)
**Pattern Search**:
- Use `search_for_pattern` to find similar code patterns
- Search for duplication indicators:
- Similar function signatures
- Repeated logic blocks
- Similar variable naming patterns
- Near-identical code blocks
**Structural Analysis**:
- Use `list_dir` and `find_file` to identify files with similar names or purposes
- Compare symbol overviews across files for structural similarities
### 4. Duplication Evaluation
Assess findings to identify true code duplication:
**Duplication Types**:
- **Exact Duplication**: Identical code blocks in multiple locations
- **Structural Duplication**: Same logic with minor variations (different variable names, etc.)
- **Functional Duplication**: Different implementations of the same functionality
- **Copy-Paste Programming**: Similar code blocks that could be extracted into shared utilities
**Assessment Criteria**:
- **Severity**: Amount of duplicated code (lines of code, number of occurrences)
- **Impact**: Where duplication occurs (critical paths, frequently called code)
- **Maintainability**: How duplication affects code maintainability
- **Refactoring Opportunity**: Whether duplication can be easily refactored
### 5. Issue Reporting
Create separate issues for each distinct duplication pattern found (maximum 3 patterns per run). Each pattern should get its own issue to enable focused remediation.
**When to Create Issues**:
- Only create issues if significant duplication is found (threshold: >10 lines of duplicated code OR 3+ instances of similar patterns)
- **Create one issue per distinct pattern** - do NOT bundle multiple patterns in a single issue
- Limit to the top 3 most significant patterns if more are found
- Use the `create_issue` tool from safe-outputs MCP **once for each pattern**
**Issue Contents for Each Pattern**:
- **Executive Summary**: Brief description of this specific duplication pattern
- **Duplication Details**: Specific locations and code blocks for this pattern only
- **Severity Assessment**: Impact and maintainability concerns for this pattern
- **Refactoring Recommendations**: Suggested approaches to eliminate this pattern
- **Code Examples**: Concrete examples with file paths and line numbers for this pattern
## Detection Scope
### Report These Issues
- Identical or nearly identical functions in different files
- Repeated code blocks that could be extracted to utilities
- Similar classes or modules with overlapping functionality
- Copy-pasted code with minor modifications
- Duplicated business logic across components
### Skip These Patterns
- Standard boilerplate code (imports, exports, etc.)
- Test setup/teardown code (acceptable duplication in tests)
- **All test files** (files matching: `*.test.<ts|tsx>`, `*.spec.<ts|tsx>`, or in `test/`, `tests/`, `__tests__/`, `spec/` directories)
- **All workflow files** (files under `.github/workflows/*`)
- Configuration files with similar structure
- Language-specific patterns (constructors, getters/setters)
- Small code snippets (<5 lines) unless highly repetitive
### Analysis Depth
- **File Type Restriction**: ONLY analyze .ts and .tsx files - ignore all other file types
- **Primary Focus**: All .ts and .tsx files changed in the current push (excluding test files and workflow files)
- **Secondary Analysis**: Check for duplication with existing .ts and .tsx codebase (excluding test files and workflow files)
- **Cross-Reference**: Look for patterns across .ts and .tsx files in the repository
- **Historical Context**: Consider if duplication is new or existing
## Issue Template
For each distinct duplication pattern found, create a separate issue using this structure:
````markdown
# 🔍 Duplicate Code Detected: [Pattern Name]
_Analysis of commit ${{ github.event.head_commit.id }}_
**Assignee**: @copilot
## Summary
[Brief overview of this specific duplication pattern]
## Duplication Details
### Pattern: [Description]
- **Severity**: High/Medium/Low
- **Occurrences**: [Number of instances]
- **Locations**:
- `path/to/file1.ext` (lines X-Y)
- `path/to/file2.ext` (lines A-B)
- **Code Sample**:
```[language]
[Example of duplicated code]
```
````
## Impact Analysis
- **Maintainability**: [How this affects code maintenance]
- **Bug Risk**: [Potential for inconsistent fixes]
- **Code Bloat**: [Impact on codebase size]
## Refactoring Recommendations
1. **[Recommendation 1]**
- Extract common functionality to: `suggested/path/utility.ext`
- Estimated effort: [hours/complexity]
- Benefits: [specific improvements]
2. **[Recommendation 2]**
[... additional recommendations ...]
## Implementation Checklist
- [ ] Review duplication findings
- [ ] Prioritize refactoring tasks
- [ ] Create refactoring plan
- [ ] Implement changes
- [ ] Update tests
- [ ] Verify no functionality broken
## Analysis Metadata
- **Analyzed Files**: [count]
- **Detection Method**: Serena semantic code analysis
- **Commit**: ${{ github.event.head_commit.id }}
- **Analysis Date**: [timestamp]
```
## Operational Guidelines
### Security
- Never execute untrusted code or commands
- Only use Serena's read-only analysis tools
- Do not modify files during analysis
### Efficiency
- Focus on recently changed files first
- Use semantic analysis for meaningful duplication, not superficial matches
- Stay within timeout limits (balance thoroughness with execution time)
### Accuracy
- Verify findings before reporting
- Distinguish between acceptable patterns and true duplication
- Consider language-specific idioms and best practices
- Provide specific, actionable recommendations
### Issue Creation
- Create **one issue per distinct duplication pattern** - do NOT bundle multiple patterns in a single issue
- Limit to the top 3 most significant patterns if more are found
- Only create issues if significant duplication is found
- Include sufficient detail for SWE agents to understand and act on findings
- Provide concrete examples with file paths and line numbers
- Suggest practical refactoring approaches
- Assign issue to @copilot for automated remediation
- Use descriptive titles that clearly identify the specific pattern (e.g., "Duplicate Code: Error Handling Pattern in Parser Module")
## Tool Usage Sequence
1. **Project Setup**: `activate_project` with repository path
2. **File Discovery**: `list_dir`, `find_file` for changed files
3. **Symbol Analysis**: `get_symbols_overview` for structure understanding
4. **Content Review**: `read_file` for detailed code examination
5. **Pattern Matching**: `search_for_pattern` for similar code
6. **Symbol Search**: `find_symbol` for duplicate function names
7. **Reference Analysis**: `find_referencing_symbols` for usage patterns
**Objective**: Improve code quality by identifying and reporting meaningful code duplication that impacts maintainability. Focus on actionable findings that enable automated or manual refactoring.
```
================================================
FILE: .github/workflows/fork-checks.yml
================================================
name: Fork checks
# This workflow is only for forks, so they can get basic checks in without a CircleCI API key
on:
push:
env:
NODE_OPTIONS: '--max_old_space_size=4096'
jobs:
check:
name: Core Type Checking
if: github.repository_owner != 'storybookjs'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Setup Node.js and Install Dependencies
uses: ./.github/actions/setup-node-and-install
with:
install-code-deps: true
- name: check
run: yarn task --task check
formatting:
name: Core Formatting
if: github.repository_owner != 'storybookjs'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Setup Node.js and Install Dependencies
uses: ./.github/actions/setup-node-and-install
with:
install-code-deps: true
- name: oxfmt
run: cd code && yarn lint:fmt
test:
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
name: Core Unit Tests, ${{ matrix.os }}
if: github.repository_owner != 'storybookjs'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Setup Node.js and Install Dependencies
uses: ./.github/actions/setup-node-and-install
with:
install-code-deps: true
- name: compile
run: yarn task --task compile --start-from=compile
- name: Install Playwright Dependencies
run: cd code && yarn exec playwright install chromium --with-deps
- name: test
run: yarn test
================================================
FILE: .github/workflows/generate-sandboxes.yml
================================================
name: Generate and publish sandboxes
on:
schedule:
- cron: '2 2 */1 * *'
workflow_dispatch:
# To test fixes on push rather than wait for the scheduling, do the following:
# 1. Uncomment the lines below and add your branch.
# push:
# branches:
# - <your-branch-name>
# 2. Change the "ref" value to <your-branch-name> in the actions/checkout step below.
# 3. Comment out the whole "generate-main" job starting at line 77
# 4. 👉 DON'T FORGET TO UNDO THE STEPS BEFORE YOU MERGE YOUR CHANGES!
env:
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
CLEANUP_SANDBOX_NODE_MODULES: 'true'
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
defaults:
run:
working-directory: ./code
jobs:
generate-next:
name: Generate to next
if: github.repository_owner == 'storybookjs'
runs-on: ubuntu-latest
steps:
- name: Remove unnecessary files to release disk space
working-directory: ${{ github.workspace }}
run: |
sudo rm -rf \
/opt/ghc \
/opt/google/chrome \
/opt/microsoft/msedge \
/opt/microsoft/powershell \
/usr/lib/mono \
/usr/local/julia* \
/usr/local/lib/android \
/usr/local/share/chromium \
/usr/local/share/powershell \
/usr/local/share/powershell \
/usr/share/dotnet \
/usr/share/swift
- uses: actions/checkout@v4
with:
ref: next
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Setup git user
run: |
git config --global user.name "storybook-bot"
git config --global user.email "32066757+storybook-bot@users.noreply.github.com"
- name: Install dependencies
working-directory: ./scripts
run: node --experimental-modules ./check-dependencies.js
- name: Compile Storybook libraries
run: yarn task --task compile --start-from=auto --no-link
- name: Publish to local registry
run: yarn local-registry --publish
- name: Run local registry
run: yarn local-registry --open &
- name: Wait for registry
run: yarn wait-on tcp:127.0.0.1:6001
- name: Generate
id: generate
run: yarn generate-sandboxes --local-registry
- name: Publish
# publish sandboxes even if the generation fails, as some sandboxes might have been generated successfully
if: ${{ !cancelled() }}
run: yarn publish-sandboxes --remote=https://storybook-bot:${{ secrets.PAT_STORYBOOK_BOT }}@github.com/storybookjs/sandboxes.git --push --branch=next
- name: Report failure to Discord
if: failure()
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_MONITORING_URL }}
uses: Ilshidur/action-discord@d2594079a10f1d6739ee50a2471f0ca57418b554
with:
args: |
The generation of some or all sandboxes on the **next** branch has failed.
[See the job summary for details](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
generate-main:
name: Generate to main
if: github.repository_owner == 'storybookjs'
runs-on: ubuntu-latest
steps:
- name: Remove unnecessary files to release disk space
working-directory: ${{ github.workspace }}
run: |
sudo rm -rf \
/opt/ghc \
/opt/google/chrome \
/opt/microsoft/msedge \
/opt/microsoft/powershell \
/usr/lib/mono \
/usr/local/julia* \
/usr/local/lib/android \
/usr/local/share/chromium \
/usr/local/share/powershell \
/usr/local/share/powershell \
/usr/share/dotnet \
/usr/share/swift
- uses: actions/checkout@v4
with:
ref: main
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Setup git user
run: |
git config --global user.name "storybook-bot"
git config --global user.email "32066757+storybook-bot@users.noreply.github.com"
- name: Install dependencies
working-directory: ./scripts
run: node --experimental-modules ./check-dependencies.js
- name: Compile Storybook libraries
run: yarn task --task compile --start-from=auto --no-link
- name: Publish to local registry
run: yarn local-registry --publish
- name: Run local registry
run: yarn local-registry --open &
- name: Wait for registry
run: yarn wait-on tcp:127.0.0.1:6001
- name: Generate
id: generate
run: yarn generate-sandboxes --local-registry
- name: Publish
# publish sandboxes even if the generation fails, as some sandboxes might have been generated successfully
if: ${{ !cancelled() }}
run: yarn publish-sandboxes --remote=https://storybook-bot:${{ secrets.PAT_STORYBOOK_BOT }}@github.com/storybookjs/sandboxes.git --push --branch=main
- name: Report failure to Discord
if: failure()
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_MONITORING_URL }}
uses: Ilshidur/action-discord@d2594079a10f1d6739ee50a2471f0ca57418b554
with:
args: |
The generation of some or all sandboxes on the **main** branch has failed.
[See the job summary for details](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
================================================
FILE: .github/workflows/handle-release-branches.yml
================================================
name: Handle Release Branches
on:
push:
jobs:
branch-checks:
if: github.repository_owner == 'storybookjs'
runs-on: ubuntu-latest
steps:
- id: get-branch
run: |
BRANCH=($(echo ${{ github.ref }} | sed -E 's/refs\/heads\///'))
echo "branch=$BRANCH" >> $GITHUB_ENV
outputs:
branch: ${{ env.branch }}
is-latest-branch: ${{ env.branch == 'main' }}
is-next-branch: ${{ env.branch == 'next' }}
is-release-branch: ${{ startsWith(env.branch, 'release-') }}
is-actionable-branch: ${{ env.branch == 'main' || env.branch == 'next' || startsWith(env.branch, 'release-') }}
handle-latest:
needs: branch-checks
if: ${{ needs.branch-checks.outputs.is-latest-branch == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: curl -X POST "https://api.netlify.com/build_hooks/${{ secrets.FRONTPAGE_HOOK }}"
get-next-release-branch:
needs: branch-checks
if: ${{ needs.branch-checks.outputs.is-next-branch == 'true' || needs.branch-checks.outputs.is-release-branch == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: next
path: next
- id: next-version
uses: notiz-dev/github-action-json-property@release
with:
path: ${{ github.workspace }}/next/code/package.json
prop_path: version
- run: |
NEXT_RELEASE_BRANCH=($(echo ${{ steps.next-version.outputs.prop }} | sed -E 's/([0-9]+)\.([0-9]+).*/release-\1-\2/'))
echo "next-release-branch=$NEXT_RELEASE_BRANCH" >> $GITHUB_ENV
outputs:
branch: ${{ env.next-release-branch }}
create-next-release-branch:
needs: [branch-checks, get-next-release-branch]
if: ${{ needs.branch-checks.outputs.is-next-branch == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: |
set +e
REMOTE_BRANCH=$(git branch -r | grep origin/${{ needs.get-next-release-branch.outputs.branch }})
if [[ ! -z $REMOTE_BRANCH ]]; then git push origin --delete ${{ needs.get-next-release-branch.outputs.branch }}; fi
echo 'Pushing branch ${{ needs.get-next-release-branch.outputs.branch }}...'
git push -f origin ${{ needs.branch-checks.outputs.branch }}:${{ needs.get-next-release-branch.outputs.branch }}
outputs:
branch: ${{ needs.get-next-release-branch.outputs.branch }}
next-release-branch-check:
if: ${{ always() && github.repository_owner == 'storybookjs' }}
needs: [branch-checks, get-next-release-branch]
runs-on: ubuntu-latest
steps:
- run: |
IS_NEXT_RELEASE_BRANCH=${{ needs.branch-checks.outputs.branch == needs.get-next-release-branch.outputs.branch }}
echo "is-next-release-branch=$IS_NEXT_RELEASE_BRANCH" >> $GITHUB_ENV
- if: ${{ env.is-next-release-branch == 'true' }}
run: echo "relevant-base-branch=next" >> $GITHUB_ENV
- if: ${{ env.is-next-release-branch == 'true' }}
run: |
echo 'WARNING: Do not push directly to the `${{ needs.branch-checks.outputs.branch }}` branch. This branch is created and force-pushed over after pushing to the `${{ env.relevant-base-branch }}` branch and the changes you just pushed will be lost.'
exit 1
outputs:
check: ${{ env.is-next-release-branch }}
request-create-frontpage-branch:
if: ${{ always() && github.repository_owner == 'storybookjs' }}
needs:
[branch-checks, next-release-branch-check, creat
Showing preview only (330K chars total). Download the full file or copy to clipboard to get everything.
gitextract_tuwty4el/ ├── .agents/ │ └── skills/ │ ├── canary/ │ │ └── SKILL.md │ ├── fix-linting-types-on-pr/ │ │ └── SKILL.md │ ├── github-qa-labels/ │ │ └── SKILL.md │ ├── pr/ │ │ └── SKILL.md │ └── storybook-upgrade/ │ └── SKILL.md ├── .circleci/ │ └── config.yml ├── .cursor/ │ ├── environment.json │ └── rules/ │ └── spy-mocking.mdc ├── .cursorrules ├── .editorconfig ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── DISCUSSION_TEMPLATE/ │ │ ├── help.yml │ │ ├── ideas.yml │ │ └── rfc.yml │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── tracking_issue.yml │ │ └── update_docs.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ └── setup-node-and-install/ │ │ └── action.yml │ ├── comments/ │ │ ├── good-first-issue.md │ │ └── invalid-link.md │ ├── copilot-mcp.json │ └── workflows/ │ ├── code-simplifier.lock.yml │ ├── code-simplifier.md │ ├── copilot-setup-steps.yml │ ├── cron-weekly.yml │ ├── danger-js.yml │ ├── duplicate-code-detector.lock.yml │ ├── duplicate-code-detector.md │ ├── fork-checks.yml │ ├── generate-sandboxes.yml │ ├── handle-release-branches.yml │ ├── markdown-link-check-config.json │ ├── nx.yml │ ├── prepare-non-patch-release.yml │ ├── prepare-patch-release.yml │ ├── publish.yml │ ├── shared/ │ │ ├── mood.md │ │ └── reporting.md │ ├── stale.yml │ ├── triage.yml │ └── trigger-circle-ci-workflow.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .lintstagedrc.mjs ├── .mailmap ├── .nvmrc ├── .nx/ │ └── workflows/ │ ├── agents.yaml │ ├── distribution-config-daily.yaml │ └── distribution-config.yaml ├── .oxfmtrc.json ├── .serena/ │ ├── .gitignore │ ├── memories/ │ │ ├── project_overview.md │ │ ├── style_and_conventions.md │ │ ├── suggested_commands.md │ │ └── task_completion_checklist.md │ └── project.yml ├── .spelling ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── .yarn/ │ ├── patches/ │ │ ├── @testing-library-user-event-npm-14.6.1-5da7e1d4e2.patch │ │ ├── @types-babel__traverse-npm-7.20.6-fac4243243.patch │ │ ├── @vitest-expect-npm-3.2.4-97c526d5cc.patch │ │ └── react-aria-components-npm-1.12.2-6c5dcdafab.patch │ └── releases/ │ └── yarn-4.10.3.cjs ├── .yarnrc.yml ├── AGENTS.md ├── CHANGELOG.md ├── CHANGELOG.prerelease.md ├── CHANGELOG.v1-5.md ├── CHANGELOG.v6.md ├── CLAUDE.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING/ │ └── RELEASING.md ├── CONTRIBUTING.md ├── CONTRIBUTING.old.md ├── MAINTAINERS.md ├── MIGRATION.md ├── README.md ├── RESOLUTIONS.md ├── SECURITY.md ├── code/ │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .remarkignore │ ├── .storybook/ │ │ ├── bench/ │ │ │ ├── bench.stories.tsx │ │ │ └── bundle-analyzer/ │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ └── index.js │ │ ├── isChromatic.ts │ │ ├── main.ts │ │ ├── manager.tsx │ │ ├── preview.tsx │ │ ├── storybook.setup.ts │ │ └── utils/ │ │ └── todo.tsx │ ├── .swcrc │ ├── .vscode/ │ │ └── settings.json │ ├── __mocks__/ │ │ ├── fileMock.js │ │ ├── fs/ │ │ │ └── promises.ts │ │ ├── fs-extra.ts │ │ ├── fs.ts │ │ ├── htmlMock.js │ │ ├── inject-decorator.angular-stories.txt │ │ ├── inject-decorator.flow-stories.txt │ │ ├── inject-decorator.no-stories.txt │ │ ├── inject-decorator.stories.txt │ │ ├── inject-decorator.ts.csf-meta-var.txt │ │ ├── inject-decorator.ts.csf.txt │ │ ├── inject-decorator.ts.csf3.txt │ │ ├── inject-decorator.ts.txt │ │ ├── inject-decorator.ts.ugly-comments-stories.txt │ │ ├── inject-decorator.ugly-comments-stories.txt │ │ ├── inject-parameters.ts.csf.txt │ │ ├── lodash-es/ │ │ │ └── add.js │ │ ├── lodash-es.js │ │ ├── styleMock.js │ │ └── uuid.js │ ├── addons/ │ │ ├── a11y/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── manager.js │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── preview.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── AccessibilityRuleMaps.ts │ │ │ │ ├── a11yRunner.test.ts │ │ │ │ ├── a11yRunner.ts │ │ │ │ ├── a11yRunnerUtils.test.ts │ │ │ │ ├── a11yRunnerUtils.ts │ │ │ │ ├── axeRuleMappingHelper.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── A11YPanel.stories.tsx │ │ │ │ │ ├── A11YPanel.test.tsx │ │ │ │ │ ├── A11YPanel.tsx │ │ │ │ │ ├── A11yContext.test.tsx │ │ │ │ │ ├── A11yContext.tsx │ │ │ │ │ ├── Report/ │ │ │ │ │ │ ├── Details.tsx │ │ │ │ │ │ ├── Report.stories.tsx │ │ │ │ │ │ └── Report.tsx │ │ │ │ │ ├── Tabs.tsx │ │ │ │ │ ├── TestDiscrepancyMessage.stories.tsx │ │ │ │ │ ├── TestDiscrepancyMessage.tsx │ │ │ │ │ ├── VisionSimulator.stories.tsx │ │ │ │ │ └── VisionSimulator.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manager.test.tsx │ │ │ │ ├── manager.tsx │ │ │ │ ├── params.ts │ │ │ │ ├── postinstall.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── preview.test.tsx │ │ │ │ ├── preview.tsx │ │ │ │ ├── results.mock.ts │ │ │ │ ├── types.ts │ │ │ │ ├── typings.d.ts │ │ │ │ ├── utils.ts │ │ │ │ ├── visionSimulatorFilters.ts │ │ │ │ └── withVisionSimulator.ts │ │ │ ├── template/ │ │ │ │ └── stories/ │ │ │ │ ├── parameters.stories.ts │ │ │ │ └── tests.stories.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── docs/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── docs/ │ │ │ │ ├── docspage.md │ │ │ │ ├── faq.md │ │ │ │ ├── frameworks/ │ │ │ │ │ ├── ANGULAR.md │ │ │ │ │ ├── COMMON.md │ │ │ │ │ ├── EMBER.md │ │ │ │ │ ├── REACT.md │ │ │ │ │ ├── VUE.md │ │ │ │ │ ├── VUE3.md │ │ │ │ │ └── WEB_COMPONENTS.md │ │ │ │ ├── mdx.md │ │ │ │ ├── multiframework.md │ │ │ │ ├── props-tables.md │ │ │ │ ├── recipes.md │ │ │ │ └── theming.md │ │ │ ├── manager.js │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── preview.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── DocsRenderer.tsx │ │ │ │ ├── angular/ │ │ │ │ │ └── index.ts │ │ │ │ ├── blocks/ │ │ │ │ │ ├── blocks/ │ │ │ │ │ │ ├── Anchor.stories.tsx │ │ │ │ │ │ ├── Anchor.tsx │ │ │ │ │ │ ├── ArgTypes.stories.tsx │ │ │ │ │ │ ├── ArgTypes.tsx │ │ │ │ │ │ ├── Canvas.stories.tsx │ │ │ │ │ │ ├── Canvas.tsx │ │ │ │ │ │ ├── Controls.stories.tsx │ │ │ │ │ │ ├── Controls.tsx │ │ │ │ │ │ ├── Description.stories.tsx │ │ │ │ │ │ ├── Description.tsx │ │ │ │ │ │ ├── Docs.tsx │ │ │ │ │ │ ├── DocsContainer.tsx │ │ │ │ │ │ ├── DocsContext.ts │ │ │ │ │ │ ├── DocsPage.stories.tsx │ │ │ │ │ │ ├── DocsPage.test.ts │ │ │ │ │ │ ├── DocsPage.tsx │ │ │ │ │ │ ├── DocsStory.tsx │ │ │ │ │ │ ├── Heading.tsx │ │ │ │ │ │ ├── Markdown.stories.tsx │ │ │ │ │ │ ├── Markdown.tsx │ │ │ │ │ │ ├── Meta.tsx │ │ │ │ │ │ ├── Primary.stories.tsx │ │ │ │ │ │ ├── Primary.tsx │ │ │ │ │ │ ├── Source.stories.tsx │ │ │ │ │ │ ├── Source.tsx │ │ │ │ │ │ ├── SourceContainer.tsx │ │ │ │ │ │ ├── Stories.stories.tsx │ │ │ │ │ │ ├── Stories.tsx │ │ │ │ │ │ ├── Story.stories.tsx │ │ │ │ │ │ ├── Story.tsx │ │ │ │ │ │ ├── Subheading.tsx │ │ │ │ │ │ ├── Subtitle.stories.tsx │ │ │ │ │ │ ├── Subtitle.tsx │ │ │ │ │ │ ├── Title.stories.tsx │ │ │ │ │ │ ├── Title.tsx │ │ │ │ │ │ ├── Unstyled.mdx │ │ │ │ │ │ ├── Unstyled.tsx │ │ │ │ │ │ ├── Wrapper.tsx │ │ │ │ │ │ ├── external/ │ │ │ │ │ │ │ ├── ExternalDocs.tsx │ │ │ │ │ │ │ ├── ExternalDocsContainer.tsx │ │ │ │ │ │ │ ├── ExternalDocsContext.ts │ │ │ │ │ │ │ └── ExternalPreview.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── mdx.tsx │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ ├── useArgs.ts │ │ │ │ │ │ ├── useGlobals.ts │ │ │ │ │ │ ├── useOf.ts │ │ │ │ │ │ ├── usePrimaryStory.test.tsx │ │ │ │ │ │ ├── usePrimaryStory.ts │ │ │ │ │ │ ├── useStory.ts │ │ │ │ │ │ ├── useTransformCode.tsx │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ └── with-mdx-component-override.tsx │ │ │ │ │ ├── component-overrides.mdx │ │ │ │ │ ├── component-overrides.stories.tsx │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ArgsTable/ │ │ │ │ │ │ │ ├── ArgControl.tsx │ │ │ │ │ │ │ ├── ArgJsDoc.tsx │ │ │ │ │ │ │ ├── ArgRow.stories.tsx │ │ │ │ │ │ │ ├── ArgRow.tsx │ │ │ │ │ │ │ ├── ArgValue.tsx │ │ │ │ │ │ │ ├── ArgsTable.stories.tsx │ │ │ │ │ │ │ ├── ArgsTable.tsx │ │ │ │ │ │ │ ├── Empty.tsx │ │ │ │ │ │ │ ├── SectionRow.stories.tsx │ │ │ │ │ │ │ ├── SectionRow.tsx │ │ │ │ │ │ │ ├── Skeleton.tsx │ │ │ │ │ │ │ ├── TabbedArgsTable.stories.tsx │ │ │ │ │ │ │ ├── TabbedArgsTable.tsx │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── BlockBackgroundStyles.tsx │ │ │ │ │ │ ├── ColorPalette.stories.tsx │ │ │ │ │ │ ├── ColorPalette.tsx │ │ │ │ │ │ ├── DocsPage.stories.tsx │ │ │ │ │ │ ├── DocsPage.test.tsx │ │ │ │ │ │ ├── DocsPage.tsx │ │ │ │ │ │ ├── DocsPageExampleCaption.md │ │ │ │ │ │ ├── DocsPageExampleCaption.mdx │ │ │ │ │ │ ├── EmptyBlock.stories.tsx │ │ │ │ │ │ ├── EmptyBlock.tsx │ │ │ │ │ │ ├── IFrame.tsx │ │ │ │ │ │ ├── IconGallery.stories.tsx │ │ │ │ │ │ ├── IconGallery.tsx │ │ │ │ │ │ ├── Preview.stories.tsx │ │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ │ ├── Source.stories.tsx │ │ │ │ │ │ ├── Source.tsx │ │ │ │ │ │ ├── Story.stories.tsx │ │ │ │ │ │ ├── Story.tsx │ │ │ │ │ │ ├── TableOfContents.stories.tsx │ │ │ │ │ │ ├── TableOfContents.tsx │ │ │ │ │ │ ├── Title.stories.ts │ │ │ │ │ │ ├── Title.tsx │ │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ │ ├── Typeset.stories.tsx │ │ │ │ │ │ ├── Typeset.tsx │ │ │ │ │ │ ├── ZoomContext.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── controls/ │ │ │ │ │ │ ├── Boolean.stories.tsx │ │ │ │ │ │ ├── Boolean.tsx │ │ │ │ │ │ ├── Color.stories.tsx │ │ │ │ │ │ ├── Color.tsx │ │ │ │ │ │ ├── Date.stories.tsx │ │ │ │ │ │ ├── Date.test.ts │ │ │ │ │ │ ├── Date.tsx │ │ │ │ │ │ ├── Files.stories.tsx │ │ │ │ │ │ ├── Files.tsx │ │ │ │ │ │ ├── Number.stories.tsx │ │ │ │ │ │ ├── Number.tsx │ │ │ │ │ │ ├── Object.stories.tsx │ │ │ │ │ │ ├── Object.tsx │ │ │ │ │ │ ├── Range.stories.tsx │ │ │ │ │ │ ├── Range.tsx │ │ │ │ │ │ ├── Text.stories.tsx │ │ │ │ │ │ ├── Text.tsx │ │ │ │ │ │ ├── helpers.test.ts │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── options/ │ │ │ │ │ │ │ ├── CheckOptions.stories.tsx │ │ │ │ │ │ │ ├── Checkbox.tsx │ │ │ │ │ │ │ ├── Options.tsx │ │ │ │ │ │ │ ├── Radio.tsx │ │ │ │ │ │ │ ├── RadioOptions.stories.tsx │ │ │ │ │ │ │ ├── Select.tsx │ │ │ │ │ │ │ ├── SelectOptions.stories.tsx │ │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── react-editable-json-tree/ │ │ │ │ │ │ │ ├── JsonNodeAccordion.tsx │ │ │ │ │ │ │ ├── JsonNodes.stories.tsx │ │ │ │ │ │ │ ├── JsonNodes.tsx │ │ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── types/ │ │ │ │ │ │ │ │ ├── dataTypes.ts │ │ │ │ │ │ │ │ ├── deltaTypes.ts │ │ │ │ │ │ │ │ └── inputUsageTypes.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── objectTypes.ts │ │ │ │ │ │ │ ├── parse.ts │ │ │ │ │ │ │ └── styles.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── examples/ │ │ │ │ │ │ ├── ArgTypesParameters.stories.tsx │ │ │ │ │ │ ├── ArgTypesParameters.tsx │ │ │ │ │ │ ├── ArgTypesWithSubcomponentsParameters.stories.tsx │ │ │ │ │ │ ├── Button.stories.tsx │ │ │ │ │ │ ├── Button.tsx │ │ │ │ │ │ ├── ButtonNoAutodocs.stories.tsx │ │ │ │ │ │ ├── ButtonReadonly.stories.tsx │ │ │ │ │ │ ├── ButtonSomeAutodocs.stories.tsx │ │ │ │ │ │ ├── ButtonWithMetaDescriptionAsBoth.stories.tsx │ │ │ │ │ │ ├── ButtonWithMetaDescriptionAsComment.stories.tsx │ │ │ │ │ │ ├── ButtonWithMetaDescriptionAsParameter.stories.tsx │ │ │ │ │ │ ├── ButtonWithMetaSubtitleAsBoth.stories.tsx │ │ │ │ │ │ ├── ButtonWithMetaSubtitleAsComponentSubtitle.stories.tsx │ │ │ │ │ │ ├── ButtonWithMetaSubtitleAsDocsSubtitle.stories.tsx │ │ │ │ │ │ ├── CanvasParameters.stories.tsx │ │ │ │ │ │ ├── ControlsParameters.stories.tsx │ │ │ │ │ │ ├── ControlsParameters.tsx │ │ │ │ │ │ ├── ControlsWithSubcomponentsParameters.stories.tsx │ │ │ │ │ │ ├── DocsPageParameters.stories.tsx │ │ │ │ │ │ ├── EmptyArgTypes.stories.tsx │ │ │ │ │ │ ├── EmptyExample.tsx │ │ │ │ │ │ ├── Markdown-content.md │ │ │ │ │ │ ├── SimpleSizeTest.tsx │ │ │ │ │ │ ├── SourceParameters.stories.tsx │ │ │ │ │ │ ├── StoriesParameters.stories.tsx │ │ │ │ │ │ └── StoryParameters.stories.tsx │ │ │ │ │ └── getStoryHref.ts │ │ │ │ ├── blocks.ts │ │ │ │ ├── compiler/ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── ember/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── manifest.test.ts │ │ │ │ ├── manifest.ts │ │ │ │ ├── mdx-loader.ts │ │ │ │ ├── mdx-plugin.ts │ │ │ │ ├── mdx-react-shim.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ ├── typings.d.ts │ │ │ │ └── web-components/ │ │ │ │ └── index.ts │ │ │ ├── template/ │ │ │ │ └── stories/ │ │ │ │ ├── codePanel/ │ │ │ │ │ └── index.stories.tsx │ │ │ │ ├── docs2/ │ │ │ │ │ ├── Error.mdx │ │ │ │ │ ├── MetaOf.mdx │ │ │ │ │ ├── MetaOfNamed.mdx │ │ │ │ │ ├── NoTitle.mdx │ │ │ │ │ ├── ResolvedReact.jsx │ │ │ │ │ ├── ResolvedReact.mdx │ │ │ │ │ ├── Tags.mdx │ │ │ │ │ ├── Title.mdx │ │ │ │ │ ├── UtfSymbolScroll.mdx │ │ │ │ │ ├── button.stories.ts │ │ │ │ │ ├── multiple-csf-files-a.stories.ts │ │ │ │ │ ├── multiple-csf-files-b.stories.ts │ │ │ │ │ └── resolved-react.stories.ts │ │ │ │ ├── docspage/ │ │ │ │ │ ├── autoplay.stories.ts │ │ │ │ │ ├── basic.stories.ts │ │ │ │ │ ├── description.stories.ts │ │ │ │ │ ├── error.stories.ts │ │ │ │ │ ├── extract-description.stories.ts │ │ │ │ │ ├── iframe.stories.ts │ │ │ │ │ ├── overflow.stories.ts │ │ │ │ │ ├── override.stories.ts │ │ │ │ │ └── source.stories.ts │ │ │ │ └── toc/ │ │ │ │ ├── basic.stories.ts │ │ │ │ ├── custom-selector.stories.ts │ │ │ │ ├── custom-title.stories.ts │ │ │ │ └── ignore-selector.stories.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── links/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── manager.js │ │ │ ├── package.json │ │ │ ├── preview.js │ │ │ ├── project.json │ │ │ ├── react.d.ts │ │ │ ├── react.js │ │ │ ├── scripts/ │ │ │ │ └── fix-preview-api-reference.ts │ │ │ ├── src/ │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manager.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── react/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── link.test.tsx │ │ │ │ │ │ └── link.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── template/ │ │ │ │ └── stories/ │ │ │ │ ├── decorator.stories.ts │ │ │ │ ├── hrefto.stories.ts │ │ │ │ └── linkto.stories.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── onboarding/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── example-stories/ │ │ │ │ ├── Button.stories.tsx │ │ │ │ ├── Button.tsx │ │ │ │ └── button.css │ │ │ ├── manager.js │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── Onboarding.tsx │ │ │ │ ├── Survey.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── Confetti/ │ │ │ │ │ │ ├── Confetti.stories.tsx │ │ │ │ │ │ └── Confetti.tsx │ │ │ │ │ └── List/ │ │ │ │ │ ├── List.stories.tsx │ │ │ │ │ ├── List.styled.tsx │ │ │ │ │ ├── List.tsx │ │ │ │ │ └── ListItem/ │ │ │ │ │ ├── ListItem.styled.tsx │ │ │ │ │ └── ListItem.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── features/ │ │ │ │ │ ├── IntentSurvey/ │ │ │ │ │ │ ├── IntentSurvey.stories.tsx │ │ │ │ │ │ └── IntentSurvey.tsx │ │ │ │ │ └── SplashScreen/ │ │ │ │ │ ├── SplashScreen.stories.tsx │ │ │ │ │ └── SplashScreen.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── preset.ts │ │ │ │ └── types.d.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── pseudo-states/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── manager.js │ │ │ ├── package.json │ │ │ ├── preview.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manager/ │ │ │ │ │ └── PseudoStateTool.tsx │ │ │ │ ├── manager.ts │ │ │ │ ├── preview/ │ │ │ │ │ ├── rewriteStyleSheet.test.ts │ │ │ │ │ ├── rewriteStyleSheet.ts │ │ │ │ │ ├── splitSelectors.test.ts │ │ │ │ │ ├── splitSelectors.ts │ │ │ │ │ └── withPseudoState.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── stories/ │ │ │ │ │ ├── Button.stories.tsx │ │ │ │ │ ├── Button.tsx │ │ │ │ │ ├── CSSAtRules.stories.tsx │ │ │ │ │ ├── CSSAtRules.tsx │ │ │ │ │ ├── CustomElement.stories.tsx │ │ │ │ │ ├── CustomElement.tsx │ │ │ │ │ ├── CustomElementNested.stories.tsx │ │ │ │ │ ├── CustomElementNested.tsx │ │ │ │ │ ├── Input.stories.tsx │ │ │ │ │ ├── Input.tsx │ │ │ │ │ ├── NestedRules.stories.tsx │ │ │ │ │ ├── NestedRules.tsx │ │ │ │ │ ├── Portal.stories.tsx │ │ │ │ │ ├── PseudoStateGrid.tsx │ │ │ │ │ ├── ShadowRoot.stories.tsx │ │ │ │ │ ├── ShadowRoot.tsx │ │ │ │ │ ├── ShadowRootWithPart.css │ │ │ │ │ ├── ShadowRootWithPart.stories.tsx │ │ │ │ │ ├── ShadowRootWithPart.tsx │ │ │ │ │ ├── button.css │ │ │ │ │ ├── cssatrules.css │ │ │ │ │ ├── grid.css │ │ │ │ │ ├── input.css │ │ │ │ │ └── nested.css │ │ │ │ ├── types.test-d.ts │ │ │ │ └── types.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── themes/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── docs/ │ │ │ │ ├── api.md │ │ │ │ └── getting-started/ │ │ │ │ ├── bootstrap.md │ │ │ │ ├── emotion.md │ │ │ │ ├── material-ui.md │ │ │ │ ├── postcss.md │ │ │ │ ├── styled-components.md │ │ │ │ └── tailwind.md │ │ │ ├── manager.js │ │ │ ├── package.json │ │ │ ├── preview.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── constants.ts │ │ │ │ ├── decorators/ │ │ │ │ │ ├── class-name.decorator.tsx │ │ │ │ │ ├── data-attribute.decorator.tsx │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── provider.decorator.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── postinstall.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── theme-switcher.tsx │ │ │ │ └── types.ts │ │ │ ├── template/ │ │ │ │ └── stories/ │ │ │ │ ├── decorators.stories.ts │ │ │ │ ├── globals.stories.ts │ │ │ │ └── parameters.stories.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ └── vitest/ │ │ ├── README.md │ │ ├── build-config.ts │ │ ├── manager.js │ │ ├── package.json │ │ ├── preset.js │ │ ├── project.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── Description.tsx │ │ │ │ ├── GlobalErrorModal.stories.tsx │ │ │ │ ├── GlobalErrorModal.tsx │ │ │ │ ├── RelativeTime.stories.tsx │ │ │ │ ├── RelativeTime.tsx │ │ │ │ ├── SidebarContextMenu.tsx │ │ │ │ ├── TestProviderRender.stories.tsx │ │ │ │ ├── TestProviderRender.tsx │ │ │ │ ├── TestStatusIcon.stories.tsx │ │ │ │ └── TestStatusIcon.tsx │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── logger.ts │ │ │ ├── manager-store.mock.ts │ │ │ ├── manager-store.ts │ │ │ ├── manager.tsx │ │ │ ├── node/ │ │ │ │ ├── boot-test-runner.test.ts │ │ │ │ ├── boot-test-runner.ts │ │ │ │ ├── coverage-reporter.ts │ │ │ │ ├── reporter.ts │ │ │ │ ├── test-manager.test.ts │ │ │ │ ├── test-manager.ts │ │ │ │ ├── vitest-manager.ts │ │ │ │ └── vitest.ts │ │ │ ├── postinstall.test.ts │ │ │ ├── postinstall.ts │ │ │ ├── preset.ts │ │ │ ├── stories.tsx │ │ │ ├── types.ts │ │ │ ├── typings.d.ts │ │ │ ├── updateVitestFile.config.3.2.test.ts │ │ │ ├── updateVitestFile.config.4.test.ts │ │ │ ├── updateVitestFile.config.test.ts │ │ │ ├── updateVitestFile.config.workspace.test.ts │ │ │ ├── updateVitestFile.test.ts │ │ │ ├── updateVitestFile.ts │ │ │ ├── use-test-provider-state.ts │ │ │ ├── utils.ts │ │ │ └── vitest-plugin/ │ │ │ ├── global-setup.ts │ │ │ ├── index.ts │ │ │ ├── setup-file-with-project-annotations.ts │ │ │ ├── setup-file.test.ts │ │ │ ├── setup-file.ts │ │ │ ├── test-utils.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ ├── viewports.test.ts │ │ │ └── viewports.ts │ │ ├── template/ │ │ │ └── stories/ │ │ │ ├── basics.stories.ts │ │ │ └── unhandled-errors.stories.ts │ │ ├── templates/ │ │ │ ├── vitest.config.3.2.template.ts │ │ │ ├── vitest.config.4.template.ts │ │ │ ├── vitest.config.template.ts │ │ │ └── vitest.workspace.template.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── builders/ │ │ ├── builder-vite/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── input/ │ │ │ │ └── iframe.html │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── build.ts │ │ │ │ ├── codegen-importfn-script.test.ts │ │ │ │ ├── codegen-importfn-script.ts │ │ │ │ ├── codegen-modern-iframe-script.test.ts │ │ │ │ ├── codegen-modern-iframe-script.ts │ │ │ │ ├── codegen-project-annotations.ts │ │ │ │ ├── codegen-set-addon-channel.ts │ │ │ │ ├── envs.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── logger.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── code-generator-plugin.ts │ │ │ │ │ ├── csf-plugin.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inject-export-order-plugin.ts │ │ │ │ │ ├── storybook-config-plugin.ts │ │ │ │ │ ├── storybook-entry-plugin.ts │ │ │ │ │ ├── storybook-external-globals-plugin.test.ts │ │ │ │ │ ├── storybook-external-globals-plugin.ts │ │ │ │ │ ├── storybook-optimize-deps-plugin.test.ts │ │ │ │ │ ├── storybook-optimize-deps-plugin.ts │ │ │ │ │ ├── storybook-project-annotations-plugin.ts │ │ │ │ │ ├── storybook-runtime-plugin.ts │ │ │ │ │ ├── strip-story-hmr-boundaries.ts │ │ │ │ │ ├── vite-inject-mocker/ │ │ │ │ │ │ ├── plugin.test.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── vite-mock/ │ │ │ │ │ │ ├── plugin.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ └── webpack-stats-plugin.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── transform-iframe-html.ts │ │ │ │ ├── types.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── build-module-graph.test.ts │ │ │ │ │ ├── build-module-graph.ts │ │ │ │ │ ├── has-vite-plugins.test.ts │ │ │ │ │ ├── has-vite-plugins.ts │ │ │ │ │ ├── process-preview-annotation.test.ts │ │ │ │ │ ├── process-preview-annotation.ts │ │ │ │ │ ├── unique-import-paths.ts │ │ │ │ │ ├── vite-features.ts │ │ │ │ │ ├── without-vite-plugins.test.ts │ │ │ │ │ └── without-vite-plugins.ts │ │ │ │ ├── virtual-file-names.ts │ │ │ │ ├── vite-config.test.ts │ │ │ │ ├── vite-config.ts │ │ │ │ └── vite-server.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ └── builder-webpack5/ │ │ ├── README.md │ │ ├── build-config.ts │ │ ├── package.json │ │ ├── project.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── loaders/ │ │ │ │ ├── export-order-loader.ts │ │ │ │ ├── storybook-mock-transform-loader.ts │ │ │ │ └── webpack-automock-loader.ts │ │ │ ├── plugins/ │ │ │ │ ├── webpack-inject-mocker-runtime-plugin.ts │ │ │ │ └── webpack-mock-plugin.ts │ │ │ ├── presets/ │ │ │ │ ├── custom-webpack-preset.ts │ │ │ │ └── preview-preset.ts │ │ │ ├── preview/ │ │ │ │ ├── base-webpack.config.ts │ │ │ │ ├── iframe-webpack.config.ts │ │ │ │ └── virtual-module-mapping.ts │ │ │ └── types.ts │ │ ├── templates/ │ │ │ ├── preview.ejs │ │ │ └── virtualModuleModernEntry.js │ │ ├── tsconfig.json │ │ ├── typings.d.ts │ │ └── vitest.config.ts │ ├── chromatic.config.json │ ├── core/ │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── assets/ │ │ │ └── server/ │ │ │ ├── addon.tsconfig.json │ │ │ ├── base-preview-body.html │ │ │ ├── base-preview-head.html │ │ │ ├── openBrowser.applescript │ │ │ └── template.ejs │ │ ├── build-config.ts │ │ ├── package.json │ │ ├── project.json │ │ ├── scripts/ │ │ │ └── generate-source-files.ts │ │ ├── src/ │ │ │ ├── ERRORS.md │ │ │ ├── __mocks__/ │ │ │ │ ├── composeStories.txt │ │ │ │ ├── composeStory.txt │ │ │ │ ├── page.ts │ │ │ │ └── path/ │ │ │ │ └── to/ │ │ │ │ └── Screens/ │ │ │ │ └── index.jsx │ │ │ ├── __tests/ │ │ │ │ ├── preview-errors.test.ts │ │ │ │ ├── server-errors.test.ts │ │ │ │ └── storybook-error.test.ts │ │ │ ├── actions/ │ │ │ │ ├── README.md │ │ │ │ ├── addArgs.ts │ │ │ │ ├── addArgsHelpers.test.ts │ │ │ │ ├── addArgsHelpers.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── ActionLogger/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── style.tsx │ │ │ │ │ └── Title.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── containers/ │ │ │ │ │ └── ActionLogger/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── decorator.ts │ │ │ │ ├── index.ts │ │ │ │ ├── loaders.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── models/ │ │ │ │ │ ├── ActionDisplay.ts │ │ │ │ │ ├── ActionOptions.ts │ │ │ │ │ ├── ActionsFunction.ts │ │ │ │ │ ├── ActionsMap.ts │ │ │ │ │ ├── DecoratorFunction.ts │ │ │ │ │ ├── HandlerFunction.test-d.ts │ │ │ │ │ ├── HandlerFunction.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── runtime/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── action.test.js │ │ │ │ │ │ ├── actions.test.js │ │ │ │ │ │ └── configureActions.test.js │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── configureActions.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── babel/ │ │ │ │ ├── babelParse.ts │ │ │ │ ├── expression-resolver.test.ts │ │ │ │ ├── expression-resolver.ts │ │ │ │ ├── index.ts │ │ │ │ ├── vitest-config-helpers.test.ts │ │ │ │ └── vitest-config-helpers.ts │ │ │ ├── backgrounds/ │ │ │ │ ├── components/ │ │ │ │ │ └── Tool.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── decorator.ts │ │ │ │ ├── defaults.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ ├── typings.d.ts │ │ │ │ └── utils.ts │ │ │ ├── bin/ │ │ │ │ ├── core.ts │ │ │ │ ├── dispatcher.ts │ │ │ │ ├── loader.test.ts │ │ │ │ └── loader.ts │ │ │ ├── builder-manager/ │ │ │ │ ├── README.md │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── data.ts │ │ │ │ ├── files.test.ts │ │ │ │ ├── files.ts │ │ │ │ ├── framework.ts │ │ │ │ ├── managerEntries.ts │ │ │ │ └── template.ts │ │ │ ├── channels/ │ │ │ │ ├── README.md │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── main.ts │ │ │ │ ├── postmessage/ │ │ │ │ │ ├── getEventSourceUrl.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── websocket/ │ │ │ │ └── index.ts │ │ │ ├── cli/ │ │ │ │ ├── AddonVitestService.constants.ts │ │ │ │ ├── AddonVitestService.test.ts │ │ │ │ ├── AddonVitestService.ts │ │ │ │ ├── NpmOptions.ts │ │ │ │ ├── angular/ │ │ │ │ │ └── helpers.ts │ │ │ │ ├── build.ts │ │ │ │ ├── buildIndex.ts │ │ │ │ ├── detect.ts │ │ │ │ ├── dev.ts │ │ │ │ ├── dirs.ts │ │ │ │ ├── eslintPlugin.test.ts │ │ │ │ ├── eslintPlugin.ts │ │ │ │ ├── globalSettings.test.ts │ │ │ │ ├── globalSettings.ts │ │ │ │ ├── helpers.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── index.ts │ │ │ │ └── projectTypes.ts │ │ │ ├── client-logger/ │ │ │ │ ├── README.md │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── common/ │ │ │ │ ├── README.md │ │ │ │ ├── config.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── js-package-manager/ │ │ │ │ │ ├── BUNProxy.ts │ │ │ │ │ ├── JsPackageManager.test.ts │ │ │ │ │ ├── JsPackageManager.ts │ │ │ │ │ ├── JsPackageManagerFactory.test.ts │ │ │ │ │ ├── JsPackageManagerFactory.ts │ │ │ │ │ ├── NPMProxy.test.ts │ │ │ │ │ ├── NPMProxy.ts │ │ │ │ │ ├── PNPMProxy.test.ts │ │ │ │ │ ├── PNPMProxy.ts │ │ │ │ │ ├── PackageJson.ts │ │ │ │ │ ├── Yarn1Proxy.test.ts │ │ │ │ │ ├── Yarn1Proxy.ts │ │ │ │ │ ├── Yarn2Proxy.test.ts │ │ │ │ │ ├── Yarn2Proxy.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── fixtures/ │ │ │ │ │ │ ├── multiple-lockfiles/ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── yarn.lock │ │ │ │ │ │ ├── multiple-lockfiles-pnpm-closer/ │ │ │ │ │ │ │ ├── inner/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── yarn.lock │ │ │ │ │ │ └── pnpm-workspace/ │ │ │ │ │ │ ├── package/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── presets.test.ts │ │ │ │ ├── presets.ts │ │ │ │ ├── satellite-addons.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── HandledError.ts │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── formatter.test.ts.snap │ │ │ │ │ ├── __tests-formatter__/ │ │ │ │ │ │ ├── withPrettierConfig/ │ │ │ │ │ │ │ └── .prettierrc │ │ │ │ │ │ ├── withoutEditorConfig/ │ │ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ │ │ └── .prettierrc │ │ │ │ │ │ └── withoutPrettierConfig/ │ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ │ └── .prettierrc │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── interpret-files.test.ts │ │ │ │ │ │ ├── normalize-stories.test.ts │ │ │ │ │ │ ├── paths.test.ts │ │ │ │ │ │ └── template.test.ts │ │ │ │ │ ├── cache.ts │ │ │ │ │ ├── check-addon-order.ts │ │ │ │ │ ├── cli.test.ts │ │ │ │ │ ├── cli.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── common-glob-options.ts │ │ │ │ │ ├── envs.ts │ │ │ │ │ ├── file-cache.ts │ │ │ │ │ ├── formatter.test.ts │ │ │ │ │ ├── formatter.ts │ │ │ │ │ ├── framework.ts │ │ │ │ │ ├── get-addon-annotations.test.ts │ │ │ │ │ ├── get-addon-annotations.ts │ │ │ │ │ ├── get-addon-names.test.ts │ │ │ │ │ ├── get-addon-names.ts │ │ │ │ │ ├── get-builder-options.ts │ │ │ │ │ ├── get-framework-name.test.ts │ │ │ │ │ ├── get-framework-name.ts │ │ │ │ │ ├── get-renderer-name.test.ts │ │ │ │ │ ├── get-renderer-name.ts │ │ │ │ │ ├── get-story-id.test.ts │ │ │ │ │ ├── get-story-id.ts │ │ │ │ │ ├── get-storybook-configuration.test.ts │ │ │ │ │ ├── get-storybook-configuration.ts │ │ │ │ │ ├── get-storybook-info.ts │ │ │ │ │ ├── get-storybook-refs.test.ts │ │ │ │ │ ├── get-storybook-refs.ts │ │ │ │ │ ├── glob-to-regexp.ts │ │ │ │ │ ├── interpolate.ts │ │ │ │ │ ├── interpret-files.ts │ │ │ │ │ ├── interpret-require.ts │ │ │ │ │ ├── load-main-config.ts │ │ │ │ │ ├── load-manager-or-addons-file.ts │ │ │ │ │ ├── load-preview-or-config-file.ts │ │ │ │ │ ├── log-config.ts │ │ │ │ │ ├── normalize-path.test.ts │ │ │ │ │ ├── normalize-path.ts │ │ │ │ │ ├── normalize-stories.ts │ │ │ │ │ ├── paths.ts │ │ │ │ │ ├── posix.test.ts │ │ │ │ │ ├── posix.ts │ │ │ │ │ ├── readTemplate.ts │ │ │ │ │ ├── remove.ts │ │ │ │ │ ├── resolve-path-in-sb-cache.test.ts │ │ │ │ │ ├── resolve-path-in-sb-cache.ts │ │ │ │ │ ├── satisfies.ts │ │ │ │ │ ├── scan-and-transform-files.test.ts │ │ │ │ │ ├── scan-and-transform-files.ts │ │ │ │ │ ├── setup-addon-in-config.test.ts │ │ │ │ │ ├── setup-addon-in-config.ts │ │ │ │ │ ├── strip-abs-node-modules-path.ts │ │ │ │ │ ├── symlinks.ts │ │ │ │ │ ├── sync-main-preview-addons.test.ts │ │ │ │ │ ├── sync-main-preview-addons.ts │ │ │ │ │ ├── template.ts │ │ │ │ │ ├── transform-imports.test.ts │ │ │ │ │ ├── transform-imports.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ ├── validate-config.test.ts │ │ │ │ │ ├── validate-config.ts │ │ │ │ │ ├── validate-configuration-files.ts │ │ │ │ │ ├── wrap-getAbsolutePath-utils.ts │ │ │ │ │ ├── write-file-with-retry.test.ts │ │ │ │ │ └── write-file-with-retry.ts │ │ │ │ └── versions.ts │ │ │ ├── component-testing/ │ │ │ │ ├── components/ │ │ │ │ │ ├── DetachedDebuggerMessage.tsx │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ ├── Interaction.stories.tsx │ │ │ │ │ ├── Interaction.tsx │ │ │ │ │ ├── InteractionsPanel.stories.tsx │ │ │ │ │ ├── InteractionsPanel.tsx │ │ │ │ │ ├── MatcherResult.stories.tsx │ │ │ │ │ ├── MatcherResult.tsx │ │ │ │ │ ├── MethodCall.stories.tsx │ │ │ │ │ ├── MethodCall.tsx │ │ │ │ │ ├── Panel.test.ts │ │ │ │ │ ├── Panel.tsx │ │ │ │ │ ├── PanelTitle.tsx │ │ │ │ │ ├── StatusBadge.stories.tsx │ │ │ │ │ ├── StatusBadge.tsx │ │ │ │ │ ├── StatusIcon.stories.tsx │ │ │ │ │ ├── StatusIcon.tsx │ │ │ │ │ ├── TestDiscrepancyMessage.stories.tsx │ │ │ │ │ ├── TestDiscrepancyMessage.tsx │ │ │ │ │ ├── Toolbar.stories.tsx │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ └── test-fn.stories.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── manager.test.tsx │ │ │ │ ├── manager.tsx │ │ │ │ ├── mocks/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── components/ │ │ │ │ ├── README.md │ │ │ │ ├── brand/ │ │ │ │ │ ├── SideBySide.tsx │ │ │ │ │ ├── StorybookIcon.stories.tsx │ │ │ │ │ ├── StorybookIcon.tsx │ │ │ │ │ ├── StorybookLogo.stories.tsx │ │ │ │ │ ├── StorybookLogo.tsx │ │ │ │ │ ├── colorpalette.mdx │ │ │ │ │ └── typography.mdx │ │ │ │ ├── components/ │ │ │ │ │ ├── ActionBar/ │ │ │ │ │ │ ├── ActionBar.stories.tsx │ │ │ │ │ │ └── ActionBar.tsx │ │ │ │ │ ├── ActionList/ │ │ │ │ │ │ ├── ActionList.stories.tsx │ │ │ │ │ │ └── ActionList.tsx │ │ │ │ │ ├── Badge/ │ │ │ │ │ │ ├── Badge.stories.tsx │ │ │ │ │ │ └── Badge.tsx │ │ │ │ │ ├── Bar/ │ │ │ │ │ │ ├── Bar.stories.tsx │ │ │ │ │ │ ├── Bar.tsx │ │ │ │ │ │ ├── FlexBar.stories.tsx │ │ │ │ │ │ └── Separator.tsx │ │ │ │ │ ├── Button/ │ │ │ │ │ │ ├── Button.stories.tsx │ │ │ │ │ │ ├── Button.tsx │ │ │ │ │ │ ├── Docs.mdx │ │ │ │ │ │ └── helpers/ │ │ │ │ │ │ ├── InteractiveTooltipWrapper.stories.tsx │ │ │ │ │ │ ├── InteractiveTooltipWrapper.tsx │ │ │ │ │ │ └── useAriaDescription.tsx │ │ │ │ │ ├── Card/ │ │ │ │ │ │ ├── Card.stories.tsx │ │ │ │ │ │ └── Card.tsx │ │ │ │ │ ├── Collapsible/ │ │ │ │ │ │ ├── Collapsible.stories.tsx │ │ │ │ │ │ └── Collapsible.tsx │ │ │ │ │ ├── ErrorFormatter/ │ │ │ │ │ │ ├── ErrorFormatter.stories.tsx │ │ │ │ │ │ └── ErrorFormatter.tsx │ │ │ │ │ ├── Form/ │ │ │ │ │ │ ├── Checkbox.stories.tsx │ │ │ │ │ │ ├── Checkbox.tsx │ │ │ │ │ │ ├── Field.stories.tsx │ │ │ │ │ │ ├── Field.tsx │ │ │ │ │ │ ├── Form.tsx │ │ │ │ │ │ ├── Input.stories.tsx │ │ │ │ │ │ ├── Input.tsx │ │ │ │ │ │ ├── Radio.stories.tsx │ │ │ │ │ │ ├── Radio.tsx │ │ │ │ │ │ ├── Select.stories.tsx │ │ │ │ │ │ ├── Select.tsx │ │ │ │ │ │ ├── Textarea.stories.tsx │ │ │ │ │ │ ├── Textarea.tsx │ │ │ │ │ │ └── styles.ts │ │ │ │ │ ├── Loader/ │ │ │ │ │ │ ├── Loader.stories.tsx │ │ │ │ │ │ └── Loader.tsx │ │ │ │ │ ├── Modal/ │ │ │ │ │ │ ├── Modal.stories.tsx │ │ │ │ │ │ ├── Modal.styled.tsx │ │ │ │ │ │ └── Modal.tsx │ │ │ │ │ ├── Popover/ │ │ │ │ │ │ ├── Popover.stories.tsx │ │ │ │ │ │ ├── Popover.tsx │ │ │ │ │ │ ├── PopoverProvider.stories.tsx │ │ │ │ │ │ └── PopoverProvider.tsx │ │ │ │ │ ├── ProgressSpinner/ │ │ │ │ │ │ ├── ProgressSpinner.stories.tsx │ │ │ │ │ │ └── ProgressSpinner.tsx │ │ │ │ │ ├── ScrollArea/ │ │ │ │ │ │ ├── ScrollArea.stories.tsx │ │ │ │ │ │ └── ScrollArea.tsx │ │ │ │ │ ├── Select/ │ │ │ │ │ │ ├── Select.stories.tsx │ │ │ │ │ │ ├── Select.tsx │ │ │ │ │ │ ├── SelectOption.stories.tsx │ │ │ │ │ │ ├── SelectOption.tsx │ │ │ │ │ │ └── helpers.tsx │ │ │ │ │ ├── Tabs/ │ │ │ │ │ │ ├── Button.tsx │ │ │ │ │ │ ├── EmptyTabContent.stories.tsx │ │ │ │ │ │ ├── EmptyTabContent.tsx │ │ │ │ │ │ ├── StatelessTab.tsx │ │ │ │ │ │ ├── StatelessTabList.tsx │ │ │ │ │ │ ├── StatelessTabPanel.tsx │ │ │ │ │ │ ├── StatelessTabsView.stories.tsx │ │ │ │ │ │ ├── StatelessTabsView.tsx │ │ │ │ │ │ ├── TabList.stories.tsx │ │ │ │ │ │ ├── TabList.tsx │ │ │ │ │ │ ├── TabPanel.stories.tsx │ │ │ │ │ │ ├── TabPanel.tsx │ │ │ │ │ │ ├── Tabs.helpers.tsx │ │ │ │ │ │ ├── Tabs.hooks.tsx │ │ │ │ │ │ ├── Tabs.stories.tsx │ │ │ │ │ │ ├── Tabs.tsx │ │ │ │ │ │ ├── TabsView.stories.tsx │ │ │ │ │ │ └── TabsView.tsx │ │ │ │ │ ├── ToggleButton/ │ │ │ │ │ │ ├── ToggleButton.stories.tsx │ │ │ │ │ │ └── ToggleButton.tsx │ │ │ │ │ ├── Toolbar/ │ │ │ │ │ │ ├── AbstractToolbar.stories.tsx │ │ │ │ │ │ ├── Toolbar.stories.tsx │ │ │ │ │ │ └── Toolbar.tsx │ │ │ │ │ ├── Zoom/ │ │ │ │ │ │ ├── Zoom.stories.tsx │ │ │ │ │ │ ├── Zoom.tsx │ │ │ │ │ │ ├── ZoomElement.tsx │ │ │ │ │ │ └── ZoomIFrame.tsx │ │ │ │ │ ├── addon-panel/ │ │ │ │ │ │ └── addon-panel.tsx │ │ │ │ │ ├── clipboard/ │ │ │ │ │ │ └── ClipboardCode.tsx │ │ │ │ │ ├── icon/ │ │ │ │ │ │ ├── icon.stories.tsx │ │ │ │ │ │ └── icon.tsx │ │ │ │ │ ├── placeholder/ │ │ │ │ │ │ ├── placeholder.stories.tsx │ │ │ │ │ │ └── placeholder.tsx │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── animation.ts │ │ │ │ │ │ └── overlayHelpers.tsx │ │ │ │ │ ├── spaced/ │ │ │ │ │ │ ├── Spaced.stories.tsx │ │ │ │ │ │ └── Spaced.tsx │ │ │ │ │ ├── syntaxhighlighter/ │ │ │ │ │ │ ├── clipboard.ts │ │ │ │ │ │ ├── formatter.test.ts │ │ │ │ │ │ ├── formatter.ts │ │ │ │ │ │ ├── lazy-syntaxhighlighter.tsx │ │ │ │ │ │ ├── syntaxhighlighter-types.ts │ │ │ │ │ │ ├── syntaxhighlighter.stories.tsx │ │ │ │ │ │ └── syntaxhighlighter.tsx │ │ │ │ │ ├── tooltip/ │ │ │ │ │ │ ├── ListItem.stories.tsx │ │ │ │ │ │ ├── ListItem.tsx │ │ │ │ │ │ ├── Tooltip.stories.tsx │ │ │ │ │ │ ├── Tooltip.tsx │ │ │ │ │ │ ├── TooltipLinkList.stories.tsx │ │ │ │ │ │ ├── TooltipLinkList.tsx │ │ │ │ │ │ ├── TooltipMessage.stories.tsx │ │ │ │ │ │ ├── TooltipMessage.tsx │ │ │ │ │ │ ├── TooltipNote.stories.tsx │ │ │ │ │ │ ├── TooltipNote.tsx │ │ │ │ │ │ ├── TooltipProvider.stories.tsx │ │ │ │ │ │ ├── TooltipProvider.tsx │ │ │ │ │ │ ├── WithTooltip.stories.tsx │ │ │ │ │ │ ├── WithTooltip.tsx │ │ │ │ │ │ └── lazy-WithTooltip.tsx │ │ │ │ │ ├── typography/ │ │ │ │ │ │ ├── DocumentFormatting.tsx │ │ │ │ │ │ ├── DocumentWrapper.stories.tsx │ │ │ │ │ │ ├── DocumentWrapper.test.tsx │ │ │ │ │ │ ├── DocumentWrapper.tsx │ │ │ │ │ │ ├── ResetWrapper.tsx │ │ │ │ │ │ ├── components.tsx │ │ │ │ │ │ ├── elements/ │ │ │ │ │ │ │ ├── A.test.tsx │ │ │ │ │ │ │ ├── A.tsx │ │ │ │ │ │ │ ├── Blockquote.tsx │ │ │ │ │ │ │ ├── Code.tsx │ │ │ │ │ │ │ ├── DL.tsx │ │ │ │ │ │ │ ├── Div.tsx │ │ │ │ │ │ │ ├── H1.tsx │ │ │ │ │ │ │ ├── H2.tsx │ │ │ │ │ │ │ ├── H3.tsx │ │ │ │ │ │ │ ├── H4.tsx │ │ │ │ │ │ │ ├── H5.tsx │ │ │ │ │ │ │ ├── H6.tsx │ │ │ │ │ │ │ ├── HR.tsx │ │ │ │ │ │ │ ├── Img.tsx │ │ │ │ │ │ │ ├── LI.tsx │ │ │ │ │ │ │ ├── Link.tsx │ │ │ │ │ │ │ ├── OL.tsx │ │ │ │ │ │ │ ├── P.tsx │ │ │ │ │ │ │ ├── Pre.tsx │ │ │ │ │ │ │ ├── Span.tsx │ │ │ │ │ │ │ ├── TT.tsx │ │ │ │ │ │ │ ├── Table.tsx │ │ │ │ │ │ │ └── UL.tsx │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── common.tsx │ │ │ │ │ │ │ └── isReactChildString.tsx │ │ │ │ │ │ └── link/ │ │ │ │ │ │ ├── link.stories.tsx │ │ │ │ │ │ ├── link.test.tsx │ │ │ │ │ │ └── link.tsx │ │ │ │ │ └── utils/ │ │ │ │ │ └── getStoryHref.ts │ │ │ │ └── index.ts │ │ │ ├── controls/ │ │ │ │ ├── README.md │ │ │ │ ├── components/ │ │ │ │ │ ├── ControlsPanel.tsx │ │ │ │ │ ├── SaveStory.stories.tsx │ │ │ │ │ ├── SaveStory.tsx │ │ │ │ │ └── Title.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── decorator.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── preview.ts │ │ │ │ ├── stringifyArgs.tsx │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── core-events/ │ │ │ │ ├── data/ │ │ │ │ │ ├── argtypes-info.ts │ │ │ │ │ ├── create-new-story.ts │ │ │ │ │ ├── file-component-search.ts │ │ │ │ │ ├── open-in-editor.ts │ │ │ │ │ ├── phases.ts │ │ │ │ │ ├── request-response.ts │ │ │ │ │ ├── save-story.ts │ │ │ │ │ └── whats-new.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── core-server/ │ │ │ │ ├── README.md │ │ │ │ ├── __for-testing__/ │ │ │ │ │ └── main.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── web-components-kitchen-sink_manager-dev-posix │ │ │ │ │ ├── web-components-kitchen-sink_manager-dev-windows │ │ │ │ │ ├── web-components-kitchen-sink_manager-prod-posix │ │ │ │ │ ├── web-components-kitchen-sink_manager-prod-windows │ │ │ │ │ ├── web-components-kitchen-sink_preview-dev-posix │ │ │ │ │ ├── web-components-kitchen-sink_preview-dev-windows │ │ │ │ │ ├── web-components-kitchen-sink_preview-prod-posix │ │ │ │ │ └── web-components-kitchen-sink_preview-prod-windows │ │ │ │ ├── build-dev.ts │ │ │ │ ├── build-index.test.ts │ │ │ │ ├── build-index.ts │ │ │ │ ├── build-static.ts │ │ │ │ ├── change-detection/ │ │ │ │ │ ├── ChangeDetectionService.test.ts │ │ │ │ │ ├── ChangeDetectionService.ts │ │ │ │ │ ├── GitDiffProvider.test.ts │ │ │ │ │ ├── GitDiffProvider.ts │ │ │ │ │ ├── errors.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── readiness.ts │ │ │ │ │ ├── trace-changed.test.ts │ │ │ │ │ └── trace-changed.ts │ │ │ │ ├── dev-server.ts │ │ │ │ ├── index.ts │ │ │ │ ├── load.ts │ │ │ │ ├── presets/ │ │ │ │ │ ├── common-manager.ts │ │ │ │ │ ├── common-override-preset.ts │ │ │ │ │ ├── common-preset.ts │ │ │ │ │ ├── favicon.test.ts │ │ │ │ │ └── wsToken.ts │ │ │ │ ├── server-channel/ │ │ │ │ │ ├── create-new-story-channel.test.ts │ │ │ │ │ ├── create-new-story-channel.ts │ │ │ │ │ ├── file-search-channel.test.ts │ │ │ │ │ ├── file-search-channel.ts │ │ │ │ │ ├── ghost-stories-channel.test.ts │ │ │ │ │ ├── ghost-stories-channel.ts │ │ │ │ │ ├── open-in-editor-channel.ts │ │ │ │ │ ├── telemetry-channel.test.ts │ │ │ │ │ └── telemetry-channel.ts │ │ │ │ ├── standalone.ts │ │ │ │ ├── stores/ │ │ │ │ │ ├── status.ts │ │ │ │ │ └── test-provider.ts │ │ │ │ ├── typings.d.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── IndexingError.ts │ │ │ │ │ ├── StoryIndexGenerator.test.ts │ │ │ │ │ ├── StoryIndexGenerator.ts │ │ │ │ │ ├── __mockdata__/ │ │ │ │ │ │ ├── E.stories.ts │ │ │ │ │ │ ├── complex/ │ │ │ │ │ │ │ ├── MetaOfImportOrder.mdx │ │ │ │ │ │ │ └── TwoStoryReferences.mdx │ │ │ │ │ │ ├── deeply/ │ │ │ │ │ │ │ └── nested/ │ │ │ │ │ │ │ └── single/ │ │ │ │ │ │ │ └── File.stories.ts │ │ │ │ │ │ ├── docs-id-generation/ │ │ │ │ │ │ │ ├── A.stories.jsx │ │ │ │ │ │ │ ├── B.docs.mdx │ │ │ │ │ │ │ └── B.stories.jsx │ │ │ │ │ │ ├── duplicate/ │ │ │ │ │ │ │ ├── A.stories.js │ │ │ │ │ │ │ └── SecondA.stories.js │ │ │ │ │ │ ├── errors/ │ │ │ │ │ │ │ ├── A.mdx │ │ │ │ │ │ │ ├── B.mdx │ │ │ │ │ │ │ ├── MetaOfClashingDefaultName.mdx │ │ │ │ │ │ │ ├── MetaOfClashingName.mdx │ │ │ │ │ │ │ ├── MetaOfName.mdx │ │ │ │ │ │ │ ├── MetaOfNoName.mdx │ │ │ │ │ │ │ ├── NoMeta.stories.ts │ │ │ │ │ │ │ ├── NoStories.stories.ts │ │ │ │ │ │ │ └── duplicate/ │ │ │ │ │ │ │ └── A.mdx │ │ │ │ │ │ ├── main.js │ │ │ │ │ │ ├── preview.js │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── A.js │ │ │ │ │ │ ├── A.stories.js │ │ │ │ │ │ ├── B.stories.ts │ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ │ ├── C.js │ │ │ │ │ │ ├── D.stories.jsx │ │ │ │ │ │ ├── Empty.stories.ts │ │ │ │ │ │ ├── F.story.ts │ │ │ │ │ │ ├── H.stories.mjs │ │ │ │ │ │ ├── componentPath/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ ├── extension.stories.js │ │ │ │ │ │ │ ├── noExtension.stories.js │ │ │ │ │ │ │ └── package.stories.js │ │ │ │ │ │ ├── docs2/ │ │ │ │ │ │ │ ├── ComponentReference.js │ │ │ │ │ │ │ ├── ComponentReference.mdx │ │ │ │ │ │ │ ├── MetaOf.mdx │ │ │ │ │ │ │ ├── NoTitle.mdx │ │ │ │ │ │ │ ├── SecondMetaOf.mdx │ │ │ │ │ │ │ ├── Tags.mdx │ │ │ │ │ │ │ ├── Template.mdx │ │ │ │ │ │ │ └── Title.mdx │ │ │ │ │ │ ├── first-nested/ │ │ │ │ │ │ │ └── deeply/ │ │ │ │ │ │ │ ├── F.stories.js │ │ │ │ │ │ │ └── Features.stories.jsx │ │ │ │ │ │ ├── nested/ │ │ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ │ │ └── Button.ts │ │ │ │ │ │ ├── second-nested/ │ │ │ │ │ │ │ └── G.stories.ts │ │ │ │ │ │ └── stories.ts │ │ │ │ │ ├── __search-files-tests__/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ ├── asset.css │ │ │ │ │ │ │ └── asset.json │ │ │ │ │ │ ├── commonjs-module-default.js │ │ │ │ │ │ ├── commonjs-module.js │ │ │ │ │ │ ├── es-module.js │ │ │ │ │ │ ├── es-module.stories.js │ │ │ │ │ │ ├── file-extensions/ │ │ │ │ │ │ │ ├── extension.cjs │ │ │ │ │ │ │ ├── extension.cts │ │ │ │ │ │ │ ├── extension.js │ │ │ │ │ │ │ ├── extension.jsx │ │ │ │ │ │ │ ├── extension.mjs │ │ │ │ │ │ │ ├── extension.mts │ │ │ │ │ │ │ ├── extension.ts │ │ │ │ │ │ │ └── extension.tsx │ │ │ │ │ │ ├── no-export.js │ │ │ │ │ │ └── tests/ │ │ │ │ │ │ ├── some.spec.ts │ │ │ │ │ │ └── some.test.ts │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── IndexingError.test.ts │ │ │ │ │ │ ├── autoName.test.ts │ │ │ │ │ │ ├── getHostValidationMiddleware.test.ts │ │ │ │ │ │ ├── index-extraction.test.ts │ │ │ │ │ │ ├── remove-mdx-stories.test.ts │ │ │ │ │ │ ├── server-address.test.ts │ │ │ │ │ │ ├── server-channel.test.ts │ │ │ │ │ │ ├── server-statics.test.ts │ │ │ │ │ │ └── validate-token.test.ts │ │ │ │ │ ├── autoName.ts │ │ │ │ │ ├── build-or-throw.ts │ │ │ │ │ ├── checklist.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── copy-all-static-files.ts │ │ │ │ │ ├── doTelemetry.ts │ │ │ │ │ ├── generate-story.ts │ │ │ │ │ ├── get-builders.ts │ │ │ │ │ ├── get-caching-middleware.ts │ │ │ │ │ ├── get-component-variable-name.test.ts │ │ │ │ │ ├── get-component-variable-name.ts │ │ │ │ │ ├── get-dummy-args-from-argtypes.test.ts │ │ │ │ │ ├── get-dummy-args-from-argtypes.ts │ │ │ │ │ ├── get-new-story-file.test.ts │ │ │ │ │ ├── get-new-story-file.ts │ │ │ │ │ ├── get-server-channel.ts │ │ │ │ │ ├── getAccessControlMiddleware.ts │ │ │ │ │ ├── getHostValidationMiddleware.ts │ │ │ │ │ ├── ghost-stories/ │ │ │ │ │ │ ├── component-analyzer.test.ts │ │ │ │ │ │ ├── component-analyzer.ts │ │ │ │ │ │ ├── get-candidates.test.ts │ │ │ │ │ │ ├── get-candidates.ts │ │ │ │ │ │ ├── parse-vitest-report.test.ts │ │ │ │ │ │ ├── parse-vitest-report.ts │ │ │ │ │ │ ├── run-story-tests.ts │ │ │ │ │ │ ├── test-annotations.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── index-json.test.ts │ │ │ │ │ ├── index-json.ts │ │ │ │ │ ├── manifests/ │ │ │ │ │ │ ├── manifests.test.ts │ │ │ │ │ │ ├── manifests.ts │ │ │ │ │ │ └── render-components-manifest.ts │ │ │ │ │ ├── metadata.ts │ │ │ │ │ ├── middleware.ts │ │ │ │ │ ├── new-story-templates/ │ │ │ │ │ │ ├── csf-factory-template.test.ts │ │ │ │ │ │ ├── csf-factory-template.ts │ │ │ │ │ │ ├── javascript.test.ts │ │ │ │ │ │ ├── javascript.ts │ │ │ │ │ │ ├── typescript.test.ts │ │ │ │ │ │ └── typescript.ts │ │ │ │ │ ├── open-browser/ │ │ │ │ │ │ ├── open-in-browser.ts │ │ │ │ │ │ ├── opener.test.ts │ │ │ │ │ │ └── opener.ts │ │ │ │ │ ├── output-startup-information.ts │ │ │ │ │ ├── output-stats.ts │ │ │ │ │ ├── parser/ │ │ │ │ │ │ ├── generic-parser.test.ts │ │ │ │ │ │ ├── generic-parser.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── remove-mdx-entries.ts │ │ │ │ │ ├── safeString.test.ts │ │ │ │ │ ├── safeString.ts │ │ │ │ │ ├── save-story/ │ │ │ │ │ │ ├── duplicate-story-with-new-name.test.ts │ │ │ │ │ │ ├── duplicate-story-with-new-name.ts │ │ │ │ │ │ ├── getDiff.ts │ │ │ │ │ │ ├── mocks/ │ │ │ │ │ │ │ ├── csf-variances.stories.tsx │ │ │ │ │ │ │ ├── csf4-variances.stories.tsx │ │ │ │ │ │ │ ├── data-variances.stories.tsx │ │ │ │ │ │ │ ├── export-variances.stories.tsx │ │ │ │ │ │ │ ├── typescript-constructs.stories.tsx │ │ │ │ │ │ │ └── unsupported-csf-variances.stories.tsx │ │ │ │ │ │ ├── save-story.ts │ │ │ │ │ │ ├── update-args-in-csf-file.test.ts │ │ │ │ │ │ ├── update-args-in-csf-file.ts │ │ │ │ │ │ ├── utils.ts │ │ │ │ │ │ └── valueToAST.ts │ │ │ │ │ ├── search-files.test.ts │ │ │ │ │ ├── search-files.ts │ │ │ │ │ ├── server-address.test.ts │ │ │ │ │ ├── server-address.ts │ │ │ │ │ ├── server-init.ts │ │ │ │ │ ├── server-statics.ts │ │ │ │ │ ├── strip-comments-and-strings.test.ts │ │ │ │ │ ├── strip-comments-and-strings.ts │ │ │ │ │ ├── summarizeIndex.test.ts │ │ │ │ │ ├── summarizeIndex.ts │ │ │ │ │ ├── summarizeStats.test.ts │ │ │ │ │ ├── summarizeStats.ts │ │ │ │ │ ├── update-check.ts │ │ │ │ │ ├── validate-token.ts │ │ │ │ │ ├── versionStatus.ts │ │ │ │ │ ├── warnOnIncompatibleAddons.ts │ │ │ │ │ ├── warnWhenUsingArgTypesRegex.ts │ │ │ │ │ ├── watch-story-specifiers.test.ts │ │ │ │ │ ├── watch-story-specifiers.ts │ │ │ │ │ ├── watchConfig.ts │ │ │ │ │ └── whats-new.ts │ │ │ │ ├── withTelemetry.test.ts │ │ │ │ └── withTelemetry.ts │ │ │ ├── csf/ │ │ │ │ ├── SBType.ts │ │ │ │ ├── core-annotations.ts │ │ │ │ ├── csf-factories.test.ts │ │ │ │ ├── csf-factories.ts │ │ │ │ ├── includeConditionalArg.test.ts │ │ │ │ ├── includeConditionalArg.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── story.test.ts │ │ │ │ ├── story.ts │ │ │ │ ├── toStartCaseStr.test.ts │ │ │ │ └── toStartCaseStr.ts │ │ │ ├── csf-tools/ │ │ │ │ ├── ConfigFile.test.ts │ │ │ │ ├── ConfigFile.ts │ │ │ │ ├── CsfFile.test.ts │ │ │ │ ├── CsfFile.ts │ │ │ │ ├── PrintResultType.ts │ │ │ │ ├── README.md │ │ │ │ ├── enrichCsf.test.ts │ │ │ │ ├── enrichCsf.ts │ │ │ │ ├── findVarInitialization.ts │ │ │ │ ├── getStorySortParameter.test.ts │ │ │ │ ├── getStorySortParameter.ts │ │ │ │ ├── index.ts │ │ │ │ ├── storyIndexer.test.ts │ │ │ │ └── vitest-plugin/ │ │ │ │ ├── component-transformer.test.ts │ │ │ │ ├── component-transformer.ts │ │ │ │ ├── transformer.test.ts │ │ │ │ └── transformer.ts │ │ │ ├── docs-tools/ │ │ │ │ ├── README.md │ │ │ │ ├── argTypes/ │ │ │ │ │ ├── convert/ │ │ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ │ │ ├── proptypes/ │ │ │ │ │ │ │ │ ├── arrays.js │ │ │ │ │ │ │ │ ├── enums.js │ │ │ │ │ │ │ │ ├── misc.js │ │ │ │ │ │ │ │ ├── objects.js │ │ │ │ │ │ │ │ ├── react.js │ │ │ │ │ │ │ │ └── scalars.js │ │ │ │ │ │ │ └── typescript/ │ │ │ │ │ │ │ ├── aliases.tsx │ │ │ │ │ │ │ ├── arrays.tsx │ │ │ │ │ │ │ ├── enums.tsx │ │ │ │ │ │ │ ├── functions.tsx │ │ │ │ │ │ │ ├── interfaces.tsx │ │ │ │ │ │ │ ├── intersections.tsx │ │ │ │ │ │ │ ├── optionals.tsx │ │ │ │ │ │ │ ├── records.tsx │ │ │ │ │ │ │ ├── scalars.tsx │ │ │ │ │ │ │ ├── tuples.tsx │ │ │ │ │ │ │ └── unions.tsx │ │ │ │ │ │ ├── convert.test.ts │ │ │ │ │ │ ├── flow/ │ │ │ │ │ │ │ ├── convert.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── proptypes/ │ │ │ │ │ │ │ ├── convert.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── typescript/ │ │ │ │ │ │ │ ├── convert.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── docgen/ │ │ │ │ │ │ ├── PropDef.ts │ │ │ │ │ │ ├── createPropDef.ts │ │ │ │ │ │ ├── extractDocgenProps.test.ts │ │ │ │ │ │ ├── extractDocgenProps.ts │ │ │ │ │ │ ├── flow/ │ │ │ │ │ │ │ ├── createDefaultValue.ts │ │ │ │ │ │ │ ├── createPropDef.test.ts │ │ │ │ │ │ │ ├── createPropDef.ts │ │ │ │ │ │ │ └── createType.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── typeScript/ │ │ │ │ │ │ │ ├── createDefaultValue.ts │ │ │ │ │ │ │ ├── createPropDef.test.ts │ │ │ │ │ │ │ ├── createPropDef.ts │ │ │ │ │ │ │ └── createType.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── defaultValue.ts │ │ │ │ │ │ ├── docgenInfo.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── string.ts │ │ │ │ │ ├── enhanceArgTypes.test.ts │ │ │ │ │ ├── enhanceArgTypes.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── jsdocParser.test.ts │ │ │ │ │ ├── jsdocParser.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── typings.d.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── highlight/ │ │ │ │ ├── StoryContent.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── icons.ts │ │ │ │ ├── index.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ ├── typings.d.ts │ │ │ │ ├── useHighlights.stories.tsx │ │ │ │ ├── useHighlights.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── instrumenter/ │ │ │ │ ├── EVENTS.ts │ │ │ │ ├── README.md │ │ │ │ ├── index.ts │ │ │ │ ├── instrumenter.test.ts │ │ │ │ ├── instrumenter.ts │ │ │ │ ├── preview-api.ts │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── manager/ │ │ │ │ ├── App.tsx │ │ │ │ ├── README.md │ │ │ │ ├── __tests__/ │ │ │ │ │ └── index.test.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── Focus/ │ │ │ │ │ │ └── Focus.tsx │ │ │ │ │ ├── Optional/ │ │ │ │ │ │ ├── Optional.stories.tsx │ │ │ │ │ │ └── Optional.tsx │ │ │ │ │ ├── Particles/ │ │ │ │ │ │ ├── Particles.stories.tsx │ │ │ │ │ │ └── Particles.tsx │ │ │ │ │ ├── Shortcut.tsx │ │ │ │ │ ├── TextFlip.stories.tsx │ │ │ │ │ ├── TextFlip.tsx │ │ │ │ │ ├── TourGuide/ │ │ │ │ │ │ ├── HighlightElement.stories.tsx │ │ │ │ │ │ ├── HighlightElement.tsx │ │ │ │ │ │ ├── TourGuide.stories.tsx │ │ │ │ │ │ ├── TourGuide.tsx │ │ │ │ │ │ └── TourTooltip.tsx │ │ │ │ │ ├── error-boundary/ │ │ │ │ │ │ ├── ManagerErrorBoundary.stories.tsx │ │ │ │ │ │ ├── ManagerErrorBoundary.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── layout/ │ │ │ │ │ │ ├── Drag.stories.tsx │ │ │ │ │ │ ├── Drag.tsx │ │ │ │ │ │ ├── Layout.stories.tsx │ │ │ │ │ │ ├── Layout.tsx │ │ │ │ │ │ ├── LayoutProvider.tsx │ │ │ │ │ │ ├── MainAreaContainer.tsx │ │ │ │ │ │ ├── PanelContainer.tsx │ │ │ │ │ │ ├── SidebarContainer.tsx │ │ │ │ │ │ ├── useDragging.ts │ │ │ │ │ │ └── useLandmarkIndicator.ts │ │ │ │ │ ├── mobile/ │ │ │ │ │ │ ├── about/ │ │ │ │ │ │ │ ├── MobileAbout.stories.tsx │ │ │ │ │ │ │ └── MobileAbout.tsx │ │ │ │ │ │ └── navigation/ │ │ │ │ │ │ ├── MobileAddonsDrawer.tsx │ │ │ │ │ │ ├── MobileMenuDrawer.tsx │ │ │ │ │ │ ├── MobileNavigation.stories.tsx │ │ │ │ │ │ └── MobileNavigation.tsx │ │ │ │ │ ├── notifications/ │ │ │ │ │ │ ├── NotificationItem.stories.tsx │ │ │ │ │ │ ├── NotificationItem.tsx │ │ │ │ │ │ ├── NotificationList.stories.tsx │ │ │ │ │ │ └── NotificationList.tsx │ │ │ │ │ ├── panel/ │ │ │ │ │ │ ├── Panel.stories.tsx │ │ │ │ │ │ └── Panel.tsx │ │ │ │ │ ├── preview/ │ │ │ │ │ │ ├── FramesRenderer.tsx │ │ │ │ │ │ ├── Iframe.stories.tsx │ │ │ │ │ │ ├── Iframe.tsx │ │ │ │ │ │ ├── NumericInput.stories.tsx │ │ │ │ │ │ ├── NumericInput.tsx │ │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ │ ├── SizeInput.tsx │ │ │ │ │ │ ├── Toolbar.tsx │ │ │ │ │ │ ├── Viewport.stories.tsx │ │ │ │ │ │ ├── Viewport.tsx │ │ │ │ │ │ ├── Wrappers.tsx │ │ │ │ │ │ ├── tools/ │ │ │ │ │ │ │ ├── addons.tsx │ │ │ │ │ │ │ ├── menu.tsx │ │ │ │ │ │ │ ├── open-in-editor.tsx │ │ │ │ │ │ │ ├── remount.tsx │ │ │ │ │ │ │ ├── share.stories.tsx │ │ │ │ │ │ │ ├── share.tsx │ │ │ │ │ │ │ ├── zoom.stories.tsx │ │ │ │ │ │ │ └── zoom.tsx │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── components.ts │ │ │ │ │ │ └── types.tsx │ │ │ │ │ ├── sidebar/ │ │ │ │ │ │ ├── Brand.tsx │ │ │ │ │ │ ├── ChecklistWidget.stories.tsx │ │ │ │ │ │ ├── ChecklistWidget.tsx │ │ │ │ │ │ ├── ContextMenu.tsx │ │ │ │ │ │ ├── CreateNewStoryFileModal.tsx │ │ │ │ │ │ ├── Explorer.stories.tsx │ │ │ │ │ │ ├── Explorer.tsx │ │ │ │ │ │ ├── FIleSearchList.utils.tsx │ │ │ │ │ │ ├── FileList.tsx │ │ │ │ │ │ ├── FileSearchList.stories.tsx │ │ │ │ │ │ ├── FileSearchList.tsx │ │ │ │ │ │ ├── FileSearchListSkeleton.stories.tsx │ │ │ │ │ │ ├── FileSearchListSkeleton.tsx │ │ │ │ │ │ ├── FileSearchModal.stories.tsx │ │ │ │ │ │ ├── FileSearchModal.tsx │ │ │ │ │ │ ├── FileSearchModal.utils.test.tsx │ │ │ │ │ │ ├── FileSearchModal.utils.tsx │ │ │ │ │ │ ├── Filter.stories.tsx │ │ │ │ │ │ ├── Filter.story-helpers.tsx │ │ │ │ │ │ ├── Filter.tsx │ │ │ │ │ │ ├── FilterPanel.stories.tsx │ │ │ │ │ │ ├── FilterPanel.tsx │ │ │ │ │ │ ├── FilterPanel.utils.ts │ │ │ │ │ │ ├── FilterPanelLink.tsx │ │ │ │ │ │ ├── Heading.stories.tsx │ │ │ │ │ │ ├── Heading.tsx │ │ │ │ │ │ ├── HighlightStyles.tsx │ │ │ │ │ │ ├── IconSymbols.stories.tsx │ │ │ │ │ │ ├── IconSymbols.tsx │ │ │ │ │ │ ├── Loader.tsx │ │ │ │ │ │ ├── Menu.stories.tsx │ │ │ │ │ │ ├── Menu.tsx │ │ │ │ │ │ ├── NoResults.tsx │ │ │ │ │ │ ├── RefBlocks.tsx │ │ │ │ │ │ ├── RefIndicator.tsx │ │ │ │ │ │ ├── Refs.stories.tsx │ │ │ │ │ │ ├── Refs.tsx │ │ │ │ │ │ ├── Search.stories.tsx │ │ │ │ │ │ ├── Search.tsx │ │ │ │ │ │ ├── SearchResults.stories.tsx │ │ │ │ │ │ ├── SearchResults.tsx │ │ │ │ │ │ ├── Sidebar.stories.tsx │ │ │ │ │ │ ├── Sidebar.tsx │ │ │ │ │ │ ├── SidebarBottom.stories.tsx │ │ │ │ │ │ ├── SidebarBottom.tsx │ │ │ │ │ │ ├── StatusButton.tsx │ │ │ │ │ │ ├── StatusContext.tsx │ │ │ │ │ │ ├── TestingWidget.stories.tsx │ │ │ │ │ │ ├── TestingWidget.tsx │ │ │ │ │ │ ├── Tree.stories.tsx │ │ │ │ │ │ ├── Tree.tsx │ │ │ │ │ │ ├── TreeNode.stories.tsx │ │ │ │ │ │ ├── TreeNode.tsx │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ └── Sidebar.test.tsx │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── CollapseIcon.tsx │ │ │ │ │ │ ├── mockdata.large.ts │ │ │ │ │ │ ├── mockdata.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ ├── useChecklist.ts │ │ │ │ │ │ ├── useDynamicFavicon.stories.tsx │ │ │ │ │ │ ├── useDynamicFavicon.ts │ │ │ │ │ │ ├── useExpanded.ts │ │ │ │ │ │ ├── useFilterData.tsx │ │ │ │ │ │ ├── useHighlighted.ts │ │ │ │ │ │ └── useLastViewed.ts │ │ │ │ │ └── upgrade/ │ │ │ │ │ ├── UpgradeBlock.stories.tsx │ │ │ │ │ └── UpgradeBlock.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── container/ │ │ │ │ │ ├── Menu.stories.tsx │ │ │ │ │ ├── Menu.tsx │ │ │ │ │ ├── Notifications.tsx │ │ │ │ │ ├── Panel.stories.tsx │ │ │ │ │ ├── Panel.tsx │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ └── Sidebar.tsx │ │ │ │ ├── globals/ │ │ │ │ │ ├── exports.ts │ │ │ │ │ ├── globals-module-info.ts │ │ │ │ │ ├── globals.ts │ │ │ │ │ └── runtime.ts │ │ │ │ ├── globals-runtime.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useDebounce.ts │ │ │ │ │ ├── useLandmark.ts │ │ │ │ │ ├── useLocation.ts │ │ │ │ │ ├── useMeasure.tsx │ │ │ │ │ └── useMedia.tsx │ │ │ │ ├── index.stories.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── keybinding.ts │ │ │ │ ├── manager-stores.mock.ts │ │ │ │ ├── manager-stores.ts │ │ │ │ ├── provider.ts │ │ │ │ ├── runtime.tsx │ │ │ │ ├── settings/ │ │ │ │ │ ├── About.tsx │ │ │ │ │ ├── AboutPage.tsx │ │ │ │ │ ├── Checklist/ │ │ │ │ │ │ ├── Checklist.stories.tsx │ │ │ │ │ │ └── Checklist.tsx │ │ │ │ │ ├── GuidePage.stories.tsx │ │ │ │ │ ├── GuidePage.tsx │ │ │ │ │ ├── SettingsFooter.stories.tsx │ │ │ │ │ ├── SettingsFooter.tsx │ │ │ │ │ ├── ShortcutsPage.tsx │ │ │ │ │ ├── about.stories.tsx │ │ │ │ │ ├── defaultShortcuts.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── shortcuts.stories.tsx │ │ │ │ │ ├── shortcuts.tsx │ │ │ │ │ ├── whats_new.tsx │ │ │ │ │ ├── whats_new_footer.stories.tsx │ │ │ │ │ └── whats_new_page.tsx │ │ │ │ ├── typings.d.ts │ │ │ │ └── utils/ │ │ │ │ ├── prepareForTelemetry.ts │ │ │ │ ├── status.test.ts │ │ │ │ ├── status.tsx │ │ │ │ ├── tree.test.js │ │ │ │ ├── tree.ts │ │ │ │ └── trySelectStory.ts │ │ │ ├── manager-api/ │ │ │ │ ├── context.ts │ │ │ │ ├── index.mock.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initial-state.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── addons.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── intersect.ts │ │ │ │ │ ├── merge.ts │ │ │ │ │ ├── platform.ts │ │ │ │ │ ├── request-response.ts │ │ │ │ │ ├── shortcut.test.ts │ │ │ │ │ ├── shortcut.ts │ │ │ │ │ ├── store-setup.ts │ │ │ │ │ ├── stories.test.ts │ │ │ │ │ ├── stories.ts │ │ │ │ │ ├── storybook-channel-mock.ts │ │ │ │ │ ├── types.tsx │ │ │ │ │ └── url.ts │ │ │ │ ├── modules/ │ │ │ │ │ ├── addons.ts │ │ │ │ │ ├── channel.ts │ │ │ │ │ ├── globals.ts │ │ │ │ │ ├── layout.ts │ │ │ │ │ ├── notifications.ts │ │ │ │ │ ├── open-in-editor.tsx │ │ │ │ │ ├── provider.ts │ │ │ │ │ ├── refs.ts │ │ │ │ │ ├── settings.ts │ │ │ │ │ ├── shortcuts.ts │ │ │ │ │ ├── statuses.ts │ │ │ │ │ ├── stories.ts │ │ │ │ │ ├── tags.ts │ │ │ │ │ ├── url.ts │ │ │ │ │ ├── versions.ts │ │ │ │ │ └── whatsnew.tsx │ │ │ │ ├── root.tsx │ │ │ │ ├── store.ts │ │ │ │ ├── stores/ │ │ │ │ │ ├── __mocks__/ │ │ │ │ │ │ ├── checklist.ts │ │ │ │ │ │ ├── status.ts │ │ │ │ │ │ └── test-provider.ts │ │ │ │ │ ├── checklist.ts │ │ │ │ │ ├── status.ts │ │ │ │ │ └── test-provider.ts │ │ │ │ ├── test-utils/ │ │ │ │ │ └── store.ts │ │ │ │ ├── tests/ │ │ │ │ │ ├── addons.test.js │ │ │ │ │ ├── events.test.ts │ │ │ │ │ ├── globals.test.ts │ │ │ │ │ ├── intersect.test.ts │ │ │ │ │ ├── layout.test.ts │ │ │ │ │ ├── mockStoriesEntries.ts │ │ │ │ │ ├── notifications.test.js │ │ │ │ │ ├── ref-mockdata.login-required.json │ │ │ │ │ ├── ref-mockdata.success.json │ │ │ │ │ ├── refs.test.ts │ │ │ │ │ ├── shortcut.test.js │ │ │ │ │ ├── shortcuts.test.js │ │ │ │ │ ├── statuses.test.ts │ │ │ │ │ ├── store.test.js │ │ │ │ │ ├── stories.test.ts │ │ │ │ │ ├── tags.test.js │ │ │ │ │ ├── url.test.js │ │ │ │ │ └── versions.test.js │ │ │ │ ├── typings.d.ts │ │ │ │ └── version.ts │ │ │ ├── manager-errors.ts │ │ │ ├── measure/ │ │ │ │ ├── README.md │ │ │ │ ├── Tool.tsx │ │ │ │ ├── box-model/ │ │ │ │ │ ├── canvas.ts │ │ │ │ │ ├── labels.ts │ │ │ │ │ └── visualizer.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ ├── util-types.ts │ │ │ │ ├── util.ts │ │ │ │ └── withMeasure.ts │ │ │ ├── mocking-utils/ │ │ │ │ ├── automock.ts │ │ │ │ ├── esmWalker.ts │ │ │ │ ├── extract.test.ts │ │ │ │ ├── extract.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mocker-runtime.js │ │ │ │ ├── redirect.ts │ │ │ │ ├── resolve.ts │ │ │ │ └── runtime.ts │ │ │ ├── node-logger/ │ │ │ │ ├── README.md │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── logger/ │ │ │ │ │ ├── colors.ts │ │ │ │ │ ├── console.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── log-tracker.ts │ │ │ │ │ └── logger.ts │ │ │ │ ├── prompts/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── prompt-config.ts │ │ │ │ │ ├── prompt-functions.ts │ │ │ │ │ ├── prompt-provider-base.ts │ │ │ │ │ ├── prompt-provider-clack.ts │ │ │ │ │ └── storage.ts │ │ │ │ ├── tasks.test.ts │ │ │ │ ├── tasks.ts │ │ │ │ ├── wrap-utils.test.ts │ │ │ │ └── wrap-utils.ts │ │ │ ├── outline/ │ │ │ │ ├── OutlineSelector.tsx │ │ │ │ ├── README.md │ │ │ │ ├── constants.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── outlineCSS.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ └── withOutline.ts │ │ │ ├── preview/ │ │ │ │ ├── README.md │ │ │ │ ├── globals/ │ │ │ │ │ ├── globals.ts │ │ │ │ │ └── runtime.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── preview-navigator.stories.tsx │ │ │ │ ├── preview-navigator.ts │ │ │ │ ├── runtime.ts │ │ │ │ ├── typings.d.ts │ │ │ │ └── utils.ts │ │ │ ├── preview-api/ │ │ │ │ ├── Errors.stories.tsx │ │ │ │ ├── README-addons.md │ │ │ │ ├── README-core-client.md │ │ │ │ ├── README-preview-web.md │ │ │ │ ├── README-store.md │ │ │ │ ├── README.md │ │ │ │ ├── addons.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modules/ │ │ │ │ │ ├── addons/ │ │ │ │ │ │ ├── hooks.test.js │ │ │ │ │ │ ├── hooks.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ ├── make-decorator.test.ts │ │ │ │ │ │ ├── make-decorator.ts │ │ │ │ │ │ └── storybook-channel-mock.ts │ │ │ │ │ ├── preview-web/ │ │ │ │ │ │ ├── Preview.tsx │ │ │ │ │ │ ├── PreviewWeb.integration.test.ts │ │ │ │ │ │ ├── PreviewWeb.mockdata.ts │ │ │ │ │ │ ├── PreviewWeb.test.ts │ │ │ │ │ │ ├── PreviewWeb.tsx │ │ │ │ │ │ ├── PreviewWithSelection.tsx │ │ │ │ │ │ ├── SelectionStore.ts │ │ │ │ │ │ ├── UrlStore.test.ts │ │ │ │ │ │ ├── UrlStore.ts │ │ │ │ │ │ ├── View.ts │ │ │ │ │ │ ├── WebView.ts │ │ │ │ │ │ ├── docs-context/ │ │ │ │ │ │ │ ├── DocsContext.test.ts │ │ │ │ │ │ │ ├── DocsContext.ts │ │ │ │ │ │ │ ├── DocsContextProps.ts │ │ │ │ │ │ │ ├── DocsRenderFunction.ts │ │ │ │ │ │ │ └── test-utils.ts │ │ │ │ │ │ ├── emitTransformCode.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parseArgsParam.test.ts │ │ │ │ │ │ ├── parseArgsParam.ts │ │ │ │ │ │ ├── render/ │ │ │ │ │ │ │ ├── CsfDocsRender.test.ts │ │ │ │ │ │ │ ├── CsfDocsRender.ts │ │ │ │ │ │ │ ├── MdxDocsRender.test.ts │ │ │ │ │ │ │ ├── MdxDocsRender.ts │ │ │ │ │ │ │ ├── Render.ts │ │ │ │ │ │ │ ├── StoryRender.test.ts │ │ │ │ │ │ │ ├── StoryRender.ts │ │ │ │ │ │ │ ├── animation-utils.ts │ │ │ │ │ │ │ ├── mount-utils.test.ts │ │ │ │ │ │ │ └── mount-utils.ts │ │ │ │ │ │ ├── simulate-pageload.test.ts │ │ │ │ │ │ └── simulate-pageload.ts │ │ │ │ │ └── store/ │ │ │ │ │ ├── ArgsStore.test.ts │ │ │ │ │ ├── ArgsStore.ts │ │ │ │ │ ├── GlobalsStore.test.ts │ │ │ │ │ ├── GlobalsStore.ts │ │ │ │ │ ├── StoryIndexStore.test.ts │ │ │ │ │ ├── StoryIndexStore.ts │ │ │ │ │ ├── StoryStore.test.ts │ │ │ │ │ ├── StoryStore.ts │ │ │ │ │ ├── args.test.ts │ │ │ │ │ ├── args.ts │ │ │ │ │ ├── autoTitle.test.ts │ │ │ │ │ ├── autoTitle.ts │ │ │ │ │ ├── csf/ │ │ │ │ │ │ ├── __mocks__/ │ │ │ │ │ │ │ ├── defaultExportAnnotations.mockfile.ts │ │ │ │ │ │ │ └── namedExportAnnotations.mockfile.ts │ │ │ │ │ │ ├── beforeAll.test.ts │ │ │ │ │ │ ├── beforeAll.ts │ │ │ │ │ │ ├── composeConfigs.test.ts │ │ │ │ │ │ ├── composeConfigs.ts │ │ │ │ │ │ ├── csf-factory-utils.ts │ │ │ │ │ │ ├── getValuesFromGlobalTypes.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── normalizeArrays.ts │ │ │ │ │ │ ├── normalizeComponentAnnotations.ts │ │ │ │ │ │ ├── normalizeInputTypes.test.ts │ │ │ │ │ │ ├── normalizeInputTypes.ts │ │ │ │ │ │ ├── normalizeProjectAnnotations.test.ts │ │ │ │ │ │ ├── normalizeProjectAnnotations.ts │ │ │ │ │ │ ├── normalizeStory.test.ts │ │ │ │ │ │ ├── normalizeStory.ts │ │ │ │ │ │ ├── portable-stories.test.ts │ │ │ │ │ │ ├── portable-stories.ts │ │ │ │ │ │ ├── prepareStory.test.ts │ │ │ │ │ │ ├── prepareStory.ts │ │ │ │ │ │ ├── processCSFFile.test.ts │ │ │ │ │ │ ├── processCSFFile.ts │ │ │ │ │ │ ├── stepRunners.test.ts │ │ │ │ │ │ └── stepRunners.ts │ │ │ │ │ ├── decorators.test.ts │ │ │ │ │ ├── decorators.ts │ │ │ │ │ ├── filterArgTypes.ts │ │ │ │ │ ├── hooks.test.ts │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inferArgTypes.test.ts │ │ │ │ │ ├── inferArgTypes.ts │ │ │ │ │ ├── inferControls.test.ts │ │ │ │ │ ├── inferControls.ts │ │ │ │ │ ├── parameters.test.ts │ │ │ │ │ ├── parameters.ts │ │ │ │ │ ├── reporter-api.ts │ │ │ │ │ ├── sortStories.ts │ │ │ │ │ ├── storySort.test.ts │ │ │ │ │ └── storySort.ts │ │ │ │ ├── preview-web.ts │ │ │ │ └── store.ts │ │ │ ├── preview-errors.ts │ │ │ ├── router/ │ │ │ │ ├── README.md │ │ │ │ ├── index.ts │ │ │ │ ├── router.tsx │ │ │ │ ├── types.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ │ ├── server-errors.ts │ │ │ ├── shared/ │ │ │ │ ├── checklist-store/ │ │ │ │ │ ├── checklistData.state.ts │ │ │ │ │ ├── checklistData.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants/ │ │ │ │ │ ├── environments-support.ts │ │ │ │ │ └── tags.ts │ │ │ │ ├── status-store/ │ │ │ │ │ ├── index.test-d.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── test-provider-store/ │ │ │ │ │ ├── index.test-d.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── universal-store/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── __mocks__/ │ │ │ │ │ │ └── instances.ts │ │ │ │ │ ├── index.test-d.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── instances.ts │ │ │ │ │ ├── mock.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── use-universal-store-manager.test.ts │ │ │ │ │ ├── use-universal-store-manager.ts │ │ │ │ │ └── use-universal-store-preview.ts │ │ │ │ └── utils/ │ │ │ │ ├── categorize-render-errors.test.ts │ │ │ │ ├── categorize-render-errors.ts │ │ │ │ ├── ecosystem-identifier.test.ts │ │ │ │ ├── ecosystem-identifier.ts │ │ │ │ └── module.ts │ │ │ ├── storybook-error.ts │ │ │ ├── telemetry/ │ │ │ │ ├── README.md │ │ │ │ ├── anonymous-id.test.ts │ │ │ │ ├── anonymous-id.ts │ │ │ │ ├── detect-agent.test.ts │ │ │ │ ├── detect-agent.ts │ │ │ │ ├── error-collector.test.ts │ │ │ │ ├── error-collector.ts │ │ │ │ ├── event-cache.test.ts │ │ │ │ ├── event-cache.ts │ │ │ │ ├── exec-command-count-lines.test.ts │ │ │ │ ├── exec-command-count-lines.ts │ │ │ │ ├── fetch.ts │ │ │ │ ├── get-application-file-count.test.ts │ │ │ │ ├── get-application-file-count.ts │ │ │ │ ├── get-chromatic-version.test.ts │ │ │ │ ├── get-chromatic-version.ts │ │ │ │ ├── get-framework-info.test.ts │ │ │ │ ├── get-framework-info.ts │ │ │ │ ├── get-has-router-package.test.ts │ │ │ │ ├── get-has-router-package.ts │ │ │ │ ├── get-known-packages.test.ts │ │ │ │ ├── get-known-packages.ts │ │ │ │ ├── get-monorepo-type.test.ts │ │ │ │ ├── get-monorepo-type.ts │ │ │ │ ├── get-package-manager-info.test.ts │ │ │ │ ├── get-package-manager-info.ts │ │ │ │ ├── get-portable-stories-usage.test.ts │ │ │ │ ├── get-portable-stories-usage.ts │ │ │ │ ├── index.ts │ │ │ │ ├── notify.ts │ │ │ │ ├── one-way-hash.ts │ │ │ │ ├── package-json.ts │ │ │ │ ├── run-telemetry-operation.ts │ │ │ │ ├── sanitize.test.ts │ │ │ │ ├── sanitize.ts │ │ │ │ ├── session-id.test.ts │ │ │ │ ├── session-id.ts │ │ │ │ ├── storybook-metadata.test.ts │ │ │ │ ├── storybook-metadata.ts │ │ │ │ ├── telemetry.test.ts │ │ │ │ ├── telemetry.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── README.md │ │ │ │ ├── expect.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── spy.test.ts │ │ │ │ ├── spy.ts │ │ │ │ ├── testing-library.ts │ │ │ │ └── utils.ts │ │ │ ├── theming/ │ │ │ │ ├── README.md │ │ │ │ ├── animation.ts │ │ │ │ ├── base.ts │ │ │ │ ├── convert.ts │ │ │ │ ├── create.ts │ │ │ │ ├── ensure.ts │ │ │ │ ├── global.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modules/ │ │ │ │ │ └── syntax.ts │ │ │ │ ├── tests/ │ │ │ │ │ ├── convert.test.js │ │ │ │ │ ├── create.test.js │ │ │ │ │ └── util.test.js │ │ │ │ ├── themes/ │ │ │ │ │ ├── dark.ts │ │ │ │ │ └── light.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── toolbar/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ToolbarManager.tsx │ │ │ │ │ └── ToolbarMenuSelect.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── manager.tsx │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ ├── get-selected.ts │ │ │ │ ├── normalize-toolbar-arg-type.ts │ │ │ │ └── register-shortcuts.ts │ │ │ ├── types/ │ │ │ │ ├── README.md │ │ │ │ ├── index.ts │ │ │ │ └── modules/ │ │ │ │ ├── addons.ts │ │ │ │ ├── api-stories.ts │ │ │ │ ├── api.ts │ │ │ │ ├── builder.ts │ │ │ │ ├── builders.ts │ │ │ │ ├── channelApi.ts │ │ │ │ ├── composedStory.ts │ │ │ │ ├── core-common.ts │ │ │ │ ├── csf.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── features.ts │ │ │ │ ├── frameworks.ts │ │ │ │ ├── indexer.ts │ │ │ │ ├── languages.ts │ │ │ │ ├── renderers.ts │ │ │ │ ├── status.ts │ │ │ │ ├── story.ts │ │ │ │ ├── test-provider.ts │ │ │ │ ├── universal-store.ts │ │ │ │ └── webpack.ts │ │ │ ├── typings.d.ts │ │ │ └── viewport/ │ │ │ ├── README.md │ │ │ ├── components/ │ │ │ │ └── Tool.tsx │ │ │ ├── constants.ts │ │ │ ├── defaults.ts │ │ │ ├── index.ts │ │ │ ├── manager.tsx │ │ │ ├── preview.ts │ │ │ ├── responsiveViewport.tsx │ │ │ ├── types.ts │ │ │ ├── useViewport.ts │ │ │ └── viewportIcons.tsx │ │ ├── template/ │ │ │ ├── __mocks__/ │ │ │ │ ├── lodash-es/ │ │ │ │ │ └── add.js │ │ │ │ ├── lodash-es.js │ │ │ │ └── uuid.js │ │ │ └── stories/ │ │ │ ├── argMapping.stories.ts │ │ │ ├── argTypes.stories.ts │ │ │ ├── args.stories.ts │ │ │ ├── argtype.stories.ts │ │ │ ├── autotitle.stories.ts │ │ │ ├── backgrounds/ │ │ │ │ └── globals.stories.ts │ │ │ ├── basics.stories.ts │ │ │ ├── before-each.stories.ts │ │ │ ├── component-play.stories.ts │ │ │ ├── component-test.basics.stories.ts │ │ │ ├── component-test.unhandled-errors.stories.ts │ │ │ ├── configs.stories.ts │ │ │ ├── controls/ │ │ │ │ ├── basics.stories.ts │ │ │ │ ├── conditional.stories.ts │ │ │ │ ├── disable.stories.ts │ │ │ │ ├── filters.stories.ts │ │ │ │ ├── issues.stories.ts │ │ │ │ ├── matchers.stories.ts │ │ │ │ └── sorting.stories.ts │ │ │ ├── decorators.stories.ts │ │ │ ├── destructuring-not-transpiled.stories.ts │ │ │ ├── expect.stories.tsx │ │ │ ├── exportOrder.stories.ts │ │ │ ├── global.d.ts │ │ │ ├── globals.stories.ts │ │ │ ├── hooks.stories.ts │ │ │ ├── import.js │ │ │ ├── indexer.stories.ts │ │ │ ├── interleavedExports.stories.ts │ │ │ ├── layout.stories.ts │ │ │ ├── loader-enhancements.stories.ts │ │ │ ├── loaders.stories.ts │ │ │ ├── moduleMocking.stories.ts │ │ │ ├── mount-in-play.stories.ts │ │ │ ├── names.stories.ts │ │ │ ├── order-of-hooks.stories.ts │ │ │ ├── parameters-actions.stories.ts │ │ │ ├── parameters.stories.ts │ │ │ ├── preview.ts │ │ │ ├── rendering.stories.ts │ │ │ ├── shortcuts.stories.ts │ │ │ ├── spies.stories.ts │ │ │ ├── tags-add.stories.ts │ │ │ ├── tags-config.stories.ts │ │ │ ├── tags-remove.stories.ts │ │ │ ├── test/ │ │ │ │ ├── CjsNodeModuleMocking.stories.js │ │ │ │ ├── ClearModuleMocksMocking.api.ts │ │ │ │ ├── ClearModuleMocksMocking.stories.ts │ │ │ │ ├── ModuleAutoMocking.stories.ts │ │ │ │ ├── ModuleAutoMocking.utils.ts │ │ │ │ ├── ModuleMocking.stories.ts │ │ │ │ ├── ModuleMocking.utils.ts │ │ │ │ ├── ModuleSpyMocking.stories.ts │ │ │ │ ├── ModuleSpyMocking.utils.ts │ │ │ │ ├── NodeModuleMocking.stories.js │ │ │ │ └── __mocks__/ │ │ │ │ └── ModuleAutoMocking.utils.ts │ │ │ ├── title.stories.ts │ │ │ ├── toolbars/ │ │ │ │ └── globals.stories.ts │ │ │ ├── unicode.stories.ts │ │ │ ├── utils.mock.ts │ │ │ ├── utils.ts │ │ │ └── viewport/ │ │ │ └── globals.stories.ts │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── vitest.d.ts │ ├── e2e-tests/ │ │ ├── addon-a11y.spec.ts │ │ ├── addon-actions.spec.ts │ │ ├── addon-backgrounds.spec.ts │ │ ├── addon-controls.spec.ts │ │ ├── addon-docs.spec.ts │ │ ├── addon-mcp.spec.ts │ │ ├── addon-onboarding.spec.ts │ │ ├── addon-toolbars.spec.ts │ │ ├── addon-viewport.spec.ts │ │ ├── component-tests.spec.ts │ │ ├── framework-nextjs.spec.ts │ │ ├── framework-svelte.spec.ts │ │ ├── framework-vue3.spec.ts │ │ ├── json-files.spec.ts │ │ ├── manager.spec.ts │ │ ├── module-mocking.spec.ts │ │ ├── navigation.spec.ts │ │ ├── preview-api.spec.ts │ │ ├── sb-module-mocking.spec.ts │ │ ├── storybook-hooks.spec.ts │ │ ├── storybook.setup.ts │ │ ├── tags.spec.ts │ │ └── util.ts │ ├── frameworks/ │ │ ├── angular/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── build-schema.json │ │ │ ├── builders.json │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── button.css │ │ │ │ ├── builders/ │ │ │ │ │ ├── build-storybook/ │ │ │ │ │ │ ├── index.spec.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── start-storybook/ │ │ │ │ │ │ ├── index.spec.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── error-handler.ts │ │ │ │ │ ├── run-compodoc.spec.ts │ │ │ │ │ ├── run-compodoc.ts │ │ │ │ │ └── standalone-options.ts │ │ │ │ ├── client/ │ │ │ │ │ ├── angular-beta/ │ │ │ │ │ │ ├── AbstractRenderer.ts │ │ │ │ │ │ ├── CanvasRenderer.ts │ │ │ │ │ │ ├── ComputesTemplateFromComponent.test.ts │ │ │ │ │ │ ├── ComputesTemplateFromComponent.ts │ │ │ │ │ │ ├── DocsRenderer.ts │ │ │ │ │ │ ├── RendererFactory.test.ts │ │ │ │ │ │ ├── RendererFactory.ts │ │ │ │ │ │ ├── StorybookModule.test.ts │ │ │ │ │ │ ├── StorybookModule.ts │ │ │ │ │ │ ├── StorybookProvider.ts │ │ │ │ │ │ ├── StorybookWrapperComponent.ts │ │ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ │ │ ├── input.component.ts │ │ │ │ │ │ │ └── test.module.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── BootstrapQueue.test.ts │ │ │ │ │ │ ├── BootstrapQueue.ts │ │ │ │ │ │ ├── NgComponentAnalyzer.test.ts │ │ │ │ │ │ ├── NgComponentAnalyzer.ts │ │ │ │ │ │ ├── NgModulesAnalyzer.test.ts │ │ │ │ │ │ ├── NgModulesAnalyzer.ts │ │ │ │ │ │ ├── PropertyExtractor.test.ts │ │ │ │ │ │ ├── PropertyExtractor.ts │ │ │ │ │ │ ├── StoryUID.ts │ │ │ │ │ │ └── Zoneless.ts │ │ │ │ │ ├── argsToTemplate.test.ts │ │ │ │ │ ├── argsToTemplate.ts │ │ │ │ │ ├── compodoc-types.ts │ │ │ │ │ ├── compodoc.test.ts │ │ │ │ │ ├── compodoc.ts │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── csf-factories.test.ts │ │ │ │ │ ├── decorateStory.test.ts │ │ │ │ │ ├── decorateStory.ts │ │ │ │ │ ├── decorators.test.ts │ │ │ │ │ ├── decorators.ts │ │ │ │ │ ├── docs/ │ │ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ │ │ └── doc-button/ │ │ │ │ │ │ │ ├── argtypes.snapshot │ │ │ │ │ │ │ ├── compodoc-posix.snapshot │ │ │ │ │ │ │ ├── compodoc-undefined.snapshot │ │ │ │ │ │ │ ├── compodoc-windows.snapshot │ │ │ │ │ │ │ ├── input.ts │ │ │ │ │ │ │ ├── properties.snapshot │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── angular-properties.test.ts │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ └── sourceDecorator.ts │ │ │ │ │ ├── globals.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── portable-stories.ts │ │ │ │ │ ├── preview-prod.ts │ │ │ │ │ ├── preview.ts │ │ │ │ │ ├── public-types.ts │ │ │ │ │ ├── render.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── renderer.ts │ │ │ │ ├── server/ │ │ │ │ │ ├── __mocks-ng-workspace__/ │ │ │ │ │ │ ├── empty-projects-entry/ │ │ │ │ │ │ │ └── angular.json │ │ │ │ │ │ ├── minimal-config/ │ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ │ └── tsconfig.app.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── some-config/ │ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ │ └── tsconfig.app.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── with-angularBrowserTarget/ │ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ │ └── tsconfig.app.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── with-lib/ │ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ │ ├── projects/ │ │ │ │ │ │ │ │ └── pattern-lib/ │ │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ │ └── main.ts │ │ │ │ │ │ │ │ └── tsconfig.lib.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── with-nx/ │ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ │ ├── nx.json │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ │ ├── styles.scss │ │ │ │ │ │ │ │ └── tsconfig.app.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── with-nx-workspace/ │ │ │ │ │ │ │ ├── nx.json │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ │ ├── styles.scss │ │ │ │ │ │ │ │ └── tsconfig.app.json │ │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ │ └── workspace.json │ │ │ │ │ │ ├── with-options-styles/ │ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ │ ├── styles.scss │ │ │ │ │ │ │ │ └── tsconfig.app.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── without-architect-build/ │ │ │ │ │ │ │ └── angular.json │ │ │ │ │ │ ├── without-architect-build-options/ │ │ │ │ │ │ │ └── angular.json │ │ │ │ │ │ ├── without-compatible-projects/ │ │ │ │ │ │ │ └── angular.json │ │ │ │ │ │ ├── without-projects-entry/ │ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ │ ├── projects/ │ │ │ │ │ │ │ │ └── pattern-lib/ │ │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ │ └── main.ts │ │ │ │ │ │ │ │ └── tsconfig.lib.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ └── without-tsConfig/ │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ └── tsconfig.app.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── angular.json │ │ │ │ │ ├── angular-cli-webpack.d.ts │ │ │ │ │ ├── angular-cli-webpack.js │ │ │ │ │ ├── framework-preset-angular-cli.test.ts │ │ │ │ │ ├── framework-preset-angular-cli.ts │ │ │ │ │ ├── framework-preset-angular-ivy.ts │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ └── storybook-normalize-angular-entry-plugin.js │ │ │ │ │ ├── preset-options.ts │ │ │ │ │ └── utils/ │ │ │ │ │ └── filter-out-styling-rules.ts │ │ │ │ ├── test-setup.ts │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── start-schema.json │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── button.component.ts │ │ │ │ │ ├── button.stories.ts │ │ │ │ │ ├── header.component.ts │ │ │ │ │ ├── header.stories.ts │ │ │ │ │ ├── page.component.ts │ │ │ │ │ ├── page.stories.ts │ │ │ │ │ └── user.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── button.component.ts │ │ │ │ │ ├── button.css │ │ │ │ │ ├── form.component.ts │ │ │ │ │ ├── html.component.ts │ │ │ │ │ ├── index.js │ │ │ │ │ └── pre.component.ts │ │ │ │ ├── stories/ │ │ │ │ │ ├── argTypes/ │ │ │ │ │ │ ├── doc-button/ │ │ │ │ │ │ │ ├── doc-button.component.html │ │ │ │ │ │ │ ├── doc-button.component.scss │ │ │ │ │ │ │ ├── doc-button.component.ts │ │ │ │ │ │ │ └── doc-button.stories.ts │ │ │ │ │ │ ├── doc-directive/ │ │ │ │ │ │ │ ├── doc-directive.directive.ts │ │ │ │ │ │ │ └── doc-directive.stories.ts │ │ │ │ │ │ ├── doc-injectable/ │ │ │ │ │ │ │ ├── doc-injectable.service.ts │ │ │ │ │ │ │ └── doc-injectable.stories.ts │ │ │ │ │ │ └── doc-pipe/ │ │ │ │ │ │ ├── doc-pipe.pipe.ts │ │ │ │ │ │ └── doc-pipe.stories.ts │ │ │ │ │ ├── basics/ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ ├── angular-forms/ │ │ │ │ │ │ │ └── customControlValueAccessor/ │ │ │ │ │ │ │ ├── custom-cva-component.stories.ts │ │ │ │ │ │ │ └── custom-cva.component.ts │ │ │ │ │ │ ├── component-with-complex-selectors/ │ │ │ │ │ │ │ ├── attribute-selector.component.ts │ │ │ │ │ │ │ ├── attribute-selectors.component.stories.ts │ │ │ │ │ │ │ ├── class-selector.component.stories.ts │ │ │ │ │ │ │ ├── class-selector.component.ts │ │ │ │ │ │ │ ├── multiple-class-selector.component.stories.ts │ │ │ │ │ │ │ ├── multiple-selector.component.stories.ts │ │ │ │ │ │ │ └── multiple-selector.component.ts │ │ │ │ │ │ ├── component-with-enums/ │ │ │ │ │ │ │ ├── enums.component.html │ │ │ │ │ │ │ ├── enums.component.stories.ts │ │ │ │ │ │ │ └── enums.component.ts │ │ │ │ │ │ ├── component-with-inheritance/ │ │ │ │ │ │ │ ├── base-button.component.ts │ │ │ │ │ │ │ ├── base-button.stories.ts │ │ │ │ │ │ │ ├── icon-button.component.ts │ │ │ │ │ │ │ └── icon-button.stories.ts │ │ │ │ │ │ ├── component-with-ng-content/ │ │ │ │ │ │ │ ├── ng-content-about-parent.stories.ts │ │ │ │ │ │ │ └── ng-content-simple.stories.ts │ │ │ │ │ │ ├── component-with-ng-on-destroy/ │ │ │ │ │ │ │ └── component-with-on-destroy.stories.ts │ │ │ │ │ │ ├── component-with-on-push/ │ │ │ │ │ │ │ ├── on-push-box.component.ts │ │ │ │ │ │ │ └── on-push.stories.ts │ │ │ │ │ │ ├── component-with-pipe/ │ │ │ │ │ │ │ ├── custom-pipes.stories.ts │ │ │ │ │ │ │ ├── custom.pipe.ts │ │ │ │ │ │ │ └── with-pipe.component.ts │ │ │ │ │ │ ├── component-with-provider/ │ │ │ │ │ │ │ ├── di.component.html │ │ │ │ │ │ │ ├── di.component.stories.ts │ │ │ │ │ │ │ └── di.component.ts │ │ │ │ │ │ ├── component-with-style/ │ │ │ │ │ │ │ ├── styled.component.css │ │ │ │ │ │ │ ├── styled.component.html │ │ │ │ │ │ │ ├── styled.component.scss │ │ │ │ │ │ │ ├── styled.component.stories.ts │ │ │ │ │ │ │ └── styled.component.ts │ │ │ │ │ │ ├── component-with-template/ │ │ │ │ │ │ │ ├── template.component.ts │ │ │ │ │ │ │ └── template.stories.ts │ │ │ │ │ │ ├── component-without-selector/ │ │ │ │ │ │ │ ├── without-selector-ng-component-outlet.stories.ts │ │ │ │ │ │ │ ├── without-selector.component.ts │ │ │ │ │ │ │ └── without-selector.stories.ts │ │ │ │ │ │ └── ng-module/ │ │ │ │ │ │ ├── angular-src/ │ │ │ │ │ │ │ ├── chip-color.token.ts │ │ │ │ │ │ │ ├── chip-text.pipe.ts │ │ │ │ │ │ │ ├── chip.component.ts │ │ │ │ │ │ │ ├── chips-group.component.ts │ │ │ │ │ │ │ └── chips.module.ts │ │ │ │ │ │ ├── import-module-chip.stories.ts │ │ │ │ │ │ ├── import-module-for-root.stories.ts │ │ │ │ │ │ └── import-module.stories.ts │ │ │ │ │ ├── button.component.ts │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── README.mdx │ │ │ │ │ │ ├── decorators/ │ │ │ │ │ │ │ ├── componentWrapperDecorator/ │ │ │ │ │ │ │ │ ├── child.component.ts │ │ │ │ │ │ │ │ ├── decorators.stories.ts │ │ │ │ │ │ │ │ └── parent.component.ts │ │ │ │ │ │ │ └── theme-decorator/ │ │ │ │ │ │ │ └── decorators.stories.ts │ │ │ │ │ │ ├── moduleMetadata/ │ │ │ │ │ │ │ ├── angular-src/ │ │ │ │ │ │ │ │ ├── custom.pipe.ts │ │ │ │ │ │ │ │ ├── dummy.service.ts │ │ │ │ │ │ │ │ ├── service.component.ts │ │ │ │ │ │ │ │ └── token.component.ts │ │ │ │ │ │ │ ├── in-export-default.stories.ts │ │ │ │ │ │ │ ├── in-stories.stories.ts │ │ │ │ │ │ │ └── merge-default-and-story.stories.ts │ │ │ │ │ │ ├── parameters/ │ │ │ │ │ │ │ └── bootstrap-options.stories.ts │ │ │ │ │ │ └── styles/ │ │ │ │ │ │ └── story-styles.stories.ts │ │ │ │ │ └── others/ │ │ │ │ │ ├── app-initializer-use-factory/ │ │ │ │ │ │ └── app-initializer-use-factory.stories.ts │ │ │ │ │ ├── issues/ │ │ │ │ │ │ └── 12009-unknown-component.stories.ts │ │ │ │ │ └── ngx-translate/ │ │ │ │ │ └── README.mdx │ │ │ │ ├── stories_angular-cli-default-ts/ │ │ │ │ │ └── signal/ │ │ │ │ │ ├── button.component.ts │ │ │ │ │ ├── button.css │ │ │ │ │ └── button.stories.ts │ │ │ │ └── stories_angular-cli-prerelease/ │ │ │ │ └── signal/ │ │ │ │ ├── button.component.ts │ │ │ │ ├── button.css │ │ │ │ └── button.stories.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.spec.json │ │ │ └── vitest.config.ts │ │ ├── ember/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── client/ │ │ │ │ │ └── preview/ │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── globals.ts │ │ │ │ │ ├── jsondoc.ts │ │ │ │ │ ├── render.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── server/ │ │ │ │ │ └── framework-preset-babel-ember.ts │ │ │ │ ├── types.ts │ │ │ │ ├── typings.d.ts │ │ │ │ └── util.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ └── Button.stories.js │ │ │ │ ├── components/ │ │ │ │ │ └── index.js │ │ │ │ └── stories/ │ │ │ │ └── .gitkeep │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── html-vite/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preset.ts │ │ │ │ └── types.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── js/ │ │ │ │ │ ├── Button.js │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ ├── Header.js │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ ├── Page.js │ │ │ │ │ └── Page.stories.js │ │ │ │ └── ts/ │ │ │ │ ├── Button.stories.ts │ │ │ │ ├── Button.ts │ │ │ │ ├── Header.stories.ts │ │ │ │ ├── Header.ts │ │ │ │ ├── Page.stories.ts │ │ │ │ └── Page.ts │ │ │ └── tsconfig.json │ │ ├── nextjs/ │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── aliases/ │ │ │ │ │ └── webpack.ts │ │ │ │ ├── babel/ │ │ │ │ │ ├── loader.ts │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── amp-attributes.ts │ │ │ │ │ │ ├── jsx-pragma.ts │ │ │ │ │ │ ├── optimize-hook-destructuring.ts │ │ │ │ │ │ └── react-loadable-plugin.ts │ │ │ │ │ └── preset.ts │ │ │ │ ├── compatibility/ │ │ │ │ │ ├── compatibility-map.ts │ │ │ │ │ └── draft-mode.compat.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── preview.ts │ │ │ │ │ └── webpack.ts │ │ │ │ ├── css/ │ │ │ │ │ └── webpack.ts │ │ │ │ ├── export-mocks/ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── headers/ │ │ │ │ │ │ ├── cookies.ts │ │ │ │ │ │ ├── headers.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── link/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── navigation/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── router/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── webpack.ts │ │ │ │ ├── fastRefresh/ │ │ │ │ │ └── webpack.ts │ │ │ │ ├── font/ │ │ │ │ │ ├── babel/ │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ ├── index.test.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── webpack/ │ │ │ │ │ ├── configureNextFont.ts │ │ │ │ │ └── loader/ │ │ │ │ │ ├── google/ │ │ │ │ │ │ └── get-font-face-declarations.ts │ │ │ │ │ ├── local/ │ │ │ │ │ │ └── get-font-face-declarations.ts │ │ │ │ │ ├── storybook-nextjs-font-loader.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── get-css-meta.ts │ │ │ │ │ └── set-font-declarations-in-head.ts │ │ │ │ ├── globals.d.ts │ │ │ │ ├── head-manager/ │ │ │ │ │ ├── decorator.tsx │ │ │ │ │ └── head-manager-provider.tsx │ │ │ │ ├── image-context.ts │ │ │ │ ├── images/ │ │ │ │ │ ├── decorator.tsx │ │ │ │ │ ├── next-image-default-loader.tsx │ │ │ │ │ ├── next-image.tsx │ │ │ │ │ ├── next-legacy-image.tsx │ │ │ │ │ └── webpack.ts │ │ │ │ ├── imports/ │ │ │ │ │ └── webpack.ts │ │ │ │ ├── index.ts │ │ │ │ ├── next-image-loader-stub.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── nodePolyfills/ │ │ │ │ │ └── webpack.ts │ │ │ │ ├── portable-stories.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── preview.tsx │ │ │ │ ├── routing/ │ │ │ │ │ ├── app-router-provider.tsx │ │ │ │ │ ├── decorator.tsx │ │ │ │ │ ├── page-router-provider.tsx │ │ │ │ │ └── types.tsx │ │ │ │ ├── rsc/ │ │ │ │ │ ├── server-only.ts │ │ │ │ │ └── webpack.ts │ │ │ │ ├── styledJsx/ │ │ │ │ │ ├── decorator.tsx │ │ │ │ │ └── webpack.ts │ │ │ │ ├── swc/ │ │ │ │ │ ├── loader.ts │ │ │ │ │ └── next-swc-loader-patch.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── .eslintrc.json │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ │ ├── Configure.mdx │ │ │ │ │ │ ├── Header.jsx │ │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ │ ├── Page.jsx │ │ │ │ │ │ └── Page.stories.js │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ ├── Button.tsx │ │ │ │ │ ├── Configure.mdx │ │ │ │ │ ├── Header.stories.ts │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── Page.stories.ts │ │ │ │ │ └── Page.tsx │ │ │ │ ├── next-env.d.ts │ │ │ │ ├── stories/ │ │ │ │ │ ├── DynamicImport.stories.tsx │ │ │ │ │ ├── Font.stories.tsx │ │ │ │ │ ├── Font.tsx │ │ │ │ │ ├── Head.stories.tsx │ │ │ │ │ ├── Image.stories.tsx │ │ │ │ │ ├── ImageLegacy.stories.tsx │ │ │ │ │ ├── Link.stories.module.css │ │ │ │ │ ├── Link.stories.tsx │ │ │ │ │ ├── Navigation.stories.tsx │ │ │ │ │ ├── RSC.stories.tsx │ │ │ │ │ ├── RSC.tsx │ │ │ │ │ ├── Router.stories.tsx │ │ │ │ │ ├── StyledJsx.stories.tsx │ │ │ │ │ ├── dynamic-component.tsx │ │ │ │ │ └── fonts/ │ │ │ │ │ └── OFL.txt │ │ │ │ ├── stories_nextjs-default-ts/ │ │ │ │ │ ├── GetImageProps.stories.tsx │ │ │ │ │ ├── NextHeader.stories.tsx │ │ │ │ │ ├── NextHeader.tsx │ │ │ │ │ ├── Redirect.stories.tsx │ │ │ │ │ ├── ServerActions.stories.tsx │ │ │ │ │ └── server-actions.tsx │ │ │ │ ├── stories_nextjs-prerelease/ │ │ │ │ │ ├── GetImageProps.stories.tsx │ │ │ │ │ ├── NextHeader.stories.tsx │ │ │ │ │ ├── NextHeader.tsx │ │ │ │ │ ├── Redirect.stories.tsx │ │ │ │ │ ├── ServerActions.stories.tsx │ │ │ │ │ └── server-actions.tsx │ │ │ │ └── typings.d.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── nextjs-vite/ │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── config/ │ │ │ │ │ └── preview.ts │ │ │ │ ├── export-mocks/ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── headers/ │ │ │ │ │ │ ├── cookies.ts │ │ │ │ │ │ ├── headers.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── navigation/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── router/ │ │ │ │ │ └── index.ts │ │ │ │ ├── find-postcss-config.ts │ │ │ │ ├── head-manager/ │ │ │ │ │ ├── decorator.tsx │ │ │ │ │ └── head-manager-provider.tsx │ │ │ │ ├── images/ │ │ │ │ │ └── decorator.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── portable-stories.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── preview.tsx │ │ │ │ ├── routing/ │ │ │ │ │ ├── app-router-provider.tsx │ │ │ │ │ ├── decorator.tsx │ │ │ │ │ ├── page-router-provider.tsx │ │ │ │ │ └── types.tsx │ │ │ │ ├── styledJsx/ │ │ │ │ │ └── decorator.tsx │ │ │ │ ├── types.ts │ │ │ │ ├── typings.d.ts │ │ │ │ ├── utils.ts │ │ │ │ └── vite-plugin/ │ │ │ │ └── index.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── .eslintrc.json │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ │ ├── Configure.mdx │ │ │ │ │ │ ├── Header.jsx │ │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ │ ├── Page.jsx │ │ │ │ │ │ └── Page.stories.js │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ ├── Button.tsx │ │ │ │ │ ├── Configure.mdx │ │ │ │ │ ├── Header.stories.ts │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── Page.stories.ts │ │ │ │ │ └── Page.tsx │ │ │ │ ├── next-env.d.ts │ │ │ │ ├── stories/ │ │ │ │ │ ├── DynamicImport.stories.tsx │ │ │ │ │ ├── DynamicImport.tsx │ │ │ │ │ ├── Font.stories.tsx │ │ │ │ │ ├── Font.tsx │ │ │ │ │ ├── GetImageProps.stories.tsx │ │ │ │ │ ├── Head.stories.tsx │ │ │ │ │ ├── Image.stories.tsx │ │ │ │ │ ├── ImageLegacy.stories.tsx │ │ │ │ │ ├── Link.stories.module.css │ │ │ │ │ ├── Link.stories.tsx │ │ │ │ │ ├── Navigation.stories.tsx │ │ │ │ │ ├── NextHeader.stories.tsx │ │ │ │ │ ├── NextHeader.tsx │ │ │ │ │ ├── RSC.stories.tsx │ │ │ │ │ ├── RSC.tsx │ │ │ │ │ ├── Redirect.stories.tsx │ │ │ │ │ ├── Router.stories.tsx │ │ │ │ │ ├── ServerActions.stories.tsx │ │ │ │ │ ├── ServerActions.tsx │ │ │ │ │ ├── StyledJsx.stories.tsx │ │ │ │ │ └── fonts/ │ │ │ │ │ └── OFL.txt │ │ │ │ └── typings.d.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── preact-vite/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preset.ts │ │ │ │ └── types.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── Button.jsx │ │ │ │ ├── Button.stories.jsx │ │ │ │ ├── Header.jsx │ │ │ │ ├── Header.stories.jsx │ │ │ │ ├── Page.jsx │ │ │ │ └── Page.stories.jsx │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── react-native-web-vite/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── types.ts │ │ │ │ └── vite-plugin.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── js/ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ ├── Button.stories.jsx │ │ │ │ │ ├── Header.jsx │ │ │ │ │ ├── Header.stories.jsx │ │ │ │ │ ├── Page.jsx │ │ │ │ │ └── Page.stories.jsx │ │ │ │ └── ts/ │ │ │ │ ├── Button.stories.tsx │ │ │ │ ├── Button.tsx │ │ │ │ ├── Header.stories.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── Page.stories.tsx │ │ │ │ └── Page.tsx │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── react-vite/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── docgen-handlers/ │ │ │ │ │ │ └── actualNameHandler.ts │ │ │ │ │ ├── docgen-resolver.ts │ │ │ │ │ ├── react-docgen.test.ts │ │ │ │ │ └── react-docgen.ts │ │ │ │ ├── preset.ts │ │ │ │ └── types.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── js/ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ ├── Header.jsx │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ ├── Page.jsx │ │ │ │ │ └── Page.stories.js │ │ │ │ └── ts/ │ │ │ │ ├── Button.stories.ts │ │ │ │ ├── Button.tsx │ │ │ │ ├── Header.stories.ts │ │ │ │ ├── Header.tsx │ │ │ │ ├── Page.stories.ts │ │ │ │ └── Page.tsx │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── react-webpack5/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preset.ts │ │ │ │ └── types.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── js/ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ ├── Header.jsx │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ ├── Page.jsx │ │ │ │ │ └── Page.stories.js │ │ │ │ └── ts/ │ │ │ │ ├── Button.stories.ts │ │ │ │ ├── Button.tsx │ │ │ │ ├── Header.stories.ts │ │ │ │ ├── Header.tsx │ │ │ │ ├── Page.stories.ts │ │ │ │ └── Page.tsx │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── server-webpack5/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preset.ts │ │ │ │ └── types.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── button.stories.json │ │ │ │ ├── header.stories.json │ │ │ │ └── page.stories.yaml │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── svelte-vite/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── generateDocgen.ts │ │ │ │ │ └── svelte-docgen.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.stories.svelte │ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ │ ├── Header.stories.svelte │ │ │ │ │ │ ├── Header.svelte │ │ │ │ │ │ ├── Page.stories.svelte │ │ │ │ │ │ └── Page.svelte │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.svelte │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── Header.stories.svelte │ │ │ │ │ ├── Header.svelte │ │ │ │ │ ├── Page.stories.svelte │ │ │ │ │ └── Page.svelte │ │ │ │ ├── stories_svelte-vite-default-js/ │ │ │ │ │ └── docgen/ │ │ │ │ │ ├── jsdoc.stories.js │ │ │ │ │ └── jsdoc.svelte │ │ │ │ └── stories_svelte-vite-default-ts/ │ │ │ │ └── docgen/ │ │ │ │ ├── jsdoc.stories.js │ │ │ │ ├── jsdoc.svelte │ │ │ │ ├── ts-inline-prop-types.stories.ts │ │ │ │ ├── ts-inline-prop-types.svelte │ │ │ │ ├── ts-legacy.stories.ts │ │ │ │ ├── ts-legacy.svelte │ │ │ │ ├── ts-referenced-prop-types.stories.ts │ │ │ │ ├── ts-referenced-prop-types.svelte │ │ │ │ ├── ts.stories.ts │ │ │ │ ├── ts.svelte │ │ │ │ └── types.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── sveltekit/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── preview.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── mocks/ │ │ │ │ │ └── app/ │ │ │ │ │ ├── forms.ts │ │ │ │ │ ├── navigation.ts │ │ │ │ │ └── stores.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── config-overrides.ts │ │ │ │ │ └── mock-sveltekit-stores.ts │ │ │ │ ├── portable-stories.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── types.ts │ │ │ │ └── vite-plugin.ts │ │ │ ├── static/ │ │ │ │ ├── MockProvider.svelte │ │ │ │ └── app-state-mock.svelte.js │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.stories.svelte │ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ │ ├── Header.stories.svelte │ │ │ │ │ │ ├── Header.svelte │ │ │ │ │ │ ├── Page.stories.svelte │ │ │ │ │ │ └── Page.svelte │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.svelte │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── Header.stories.svelte │ │ │ │ │ ├── Header.svelte │ │ │ │ │ ├── Page.stories.svelte │ │ │ │ │ └── Page.svelte │ │ │ │ └── stories_svelte-kit-skeleton-ts/ │ │ │ │ └── modules/ │ │ │ │ ├── Environment.svelte │ │ │ │ ├── Forms.svelte │ │ │ │ ├── Hrefs.svelte │ │ │ │ ├── Navigation.svelte │ │ │ │ ├── Paths.svelte │ │ │ │ ├── State.svelte │ │ │ │ ├── Stores.svelte │ │ │ │ ├── environment.stories.js │ │ │ │ ├── forms.stories.js │ │ │ │ ├── hrefs.stories.js │ │ │ │ ├── navigation.stories.js │ │ │ │ ├── paths.stories.js │ │ │ │ ├── state.stories.js │ │ │ │ └── stores.stories.js │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── vue3-vite/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── node/ │ │ │ │ │ └── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── vue-component-meta.ts │ │ │ │ │ ├── vue-docgen.ts │ │ │ │ │ └── vue-template.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── types.ts │ │ │ │ └── vite-plugin.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── js/ │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ ├── Button.vue │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ ├── Header.vue │ │ │ │ │ ├── Page.stories.js │ │ │ │ │ └── Page.vue │ │ │ │ └── ts/ │ │ │ │ ├── Button.stories.ts │ │ │ │ ├── Button.vue │ │ │ │ ├── Header.stories.ts │ │ │ │ ├── Header.vue │ │ │ │ ├── Page.stories.ts │ │ │ │ └── Page.vue │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ └── web-components-vite/ │ │ ├── README.md │ │ ├── build-config.ts │ │ ├── package.json │ │ ├── preset.js │ │ ├── project.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── node/ │ │ │ │ └── index.ts │ │ │ ├── preset.ts │ │ │ └── types.ts │ │ ├── template/ │ │ │ └── cli/ │ │ │ ├── .eslintrc.json │ │ │ ├── js/ │ │ │ │ ├── Button.js │ │ │ │ ├── Button.stories.js │ │ │ │ ├── Header.js │ │ │ │ ├── Header.stories.js │ │ │ │ ├── Page.js │ │ │ │ └── Page.stories.js │ │ │ └── ts/ │ │ │ ├── Button.stories.ts │ │ │ ├── Button.ts │ │ │ ├── Header.stories.ts │ │ │ ├── Header.ts │ │ │ ├── Page.stories.ts │ │ │ └── Page.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── lib/ │ │ ├── cli-sb/ │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ ├── project.json │ │ │ └── vitest.config.ts │ │ ├── cli-storybook/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── add.test.ts │ │ │ │ ├── add.ts │ │ │ │ ├── autoblock/ │ │ │ │ │ ├── block-dependencies-versions.ts │ │ │ │ │ ├── block-experimental-addon-test.test.ts │ │ │ │ │ ├── block-experimental-addon-test.ts │ │ │ │ │ ├── block-major-version.test.ts │ │ │ │ │ ├── block-major-version.ts │ │ │ │ │ ├── block-node-version.ts │ │ │ │ │ ├── block-webpack5-frameworks.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── automigrate/ │ │ │ │ │ ├── codemod.ts │ │ │ │ │ ├── fixes/ │ │ │ │ │ │ ├── __test__/ │ │ │ │ │ │ │ ├── main-config-with-essential-options.js │ │ │ │ │ │ │ ├── main-config-with-wrappers.js │ │ │ │ │ │ │ └── main-config-without-wrappers.js │ │ │ │ │ │ ├── addon-a11y-addon-test.test.ts │ │ │ │ │ │ ├── addon-a11y-addon-test.ts │ │ │ │ │ │ ├── addon-a11y-parameters.test.ts │ │ │ │ │ │ ├── addon-a11y-parameters.ts │ │ │ │ │ │ ├── addon-experimental-test.test.ts │ │ │ │ │ │ ├── addon-experimental-test.ts │ │ │ │ │ │ ├── addon-globals-api.test.ts │ │ │ │ │ │ ├── addon-globals-api.ts │ │ │ │ │ │ ├── addon-mdx-gfm-remove.test.ts │ │ │ │ │ │ ├── addon-mdx-gfm-remove.ts │ │ │ │ │ │ ├── addon-storysource-code-panel.test.ts │ │ │ │ │ │ ├── addon-storysource-code-panel.ts │ │ │ │ │ │ ├── consolidated-imports.test.ts │ │ │ │ │ │ ├── consolidated-imports.ts │ │ │ │ │ │ ├── eslint-plugin.test.ts │ │ │ │ │ │ ├── eslint-plugin.ts │ │ │ │ │ │ ├── fix-faux-esm-require.test.ts │ │ │ │ │ │ ├── fix-faux-esm-require.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── initial-globals.test.ts │ │ │ │ │ │ ├── initial-globals.ts │ │ │ │ │ │ ├── migrate-addon-console.test.ts │ │ │ │ │ │ ├── migrate-addon-console.ts │ │ │ │ │ │ ├── nextjs-to-nextjs-vite.test.ts │ │ │ │ │ │ ├── nextjs-to-nextjs-vite.ts │ │ │ │ │ │ ├── remove-addon-interactions.test.ts │ │ │ │ │ │ ├── remove-addon-interactions.ts │ │ │ │ │ │ ├── remove-docs-autodocs.test.ts │ │ │ │ │ │ ├── remove-docs-autodocs.ts │ │ │ │ │ │ ├── remove-essentials.test.ts │ │ │ │ │ │ ├── remove-essentials.ts │ │ │ │ │ │ ├── remove-essentials.utils.ts │ │ │ │ │ │ ├── renderer-to-framework.test.ts │ │ │ │ │ │ ├── renderer-to-framework.ts │ │ │ │ │ │ ├── rnstorybook-config.test.ts │ │ │ │ │ │ ├── rnstorybook-config.ts │ │ │ │ │ │ ├── storybook-package-name-conflict.test.ts │ │ │ │ │ │ ├── storybook-package-name-conflict.ts │ │ │ │ │ │ ├── upgrade-storybook-related-dependencies.test.ts │ │ │ │ │ │ ├── upgrade-storybook-related-dependencies.ts │ │ │ │ │ │ ├── wrap-getAbsolutePath.test.ts │ │ │ │ │ │ └── wrap-getAbsolutePath.ts │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── addon-a11y-parameters.test.ts │ │ │ │ │ │ ├── addon-a11y-parameters.ts │ │ │ │ │ │ ├── ast-utils.ts │ │ │ │ │ │ ├── consolidated-packages.ts │ │ │ │ │ │ ├── logMigrationSummary.ts │ │ │ │ │ │ ├── mainConfigFile.test.ts │ │ │ │ │ │ ├── mainConfigFile.ts │ │ │ │ │ │ └── testing-helpers.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── multi-project.test.ts │ │ │ │ │ ├── multi-project.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── bin/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── run.ts │ │ │ │ ├── codemod/ │ │ │ │ │ ├── csf-factories.ts │ │ │ │ │ └── helpers/ │ │ │ │ │ ├── config-to-csf-factory.test.ts │ │ │ │ │ ├── config-to-csf-factory.ts │ │ │ │ │ ├── csf-factories-utils.test.ts │ │ │ │ │ ├── csf-factories-utils.ts │ │ │ │ │ ├── remove-unused-types.test.ts │ │ │ │ │ ├── remove-unused-types.ts │ │ │ │ │ ├── story-to-csf-factory.test.ts │ │ │ │ │ └── story-to-csf-factory.ts │ │ │ │ ├── doctor/ │ │ │ │ │ ├── getDuplicatedDepsWarnings.ts │ │ │ │ │ ├── getIncompatibleStorybookPackages.test.ts │ │ │ │ │ ├── getIncompatibleStorybookPackages.ts │ │ │ │ │ ├── getMismatchingVersionsWarning.ts │ │ │ │ │ ├── hasMultipleVersions.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── link.ts │ │ │ │ ├── migrate.ts │ │ │ │ ├── postinstallAddon.ts │ │ │ │ ├── sandbox-templates.ts │ │ │ │ ├── sandbox.ts │ │ │ │ ├── typings.d.ts │ │ │ │ ├── upgrade.test.ts │ │ │ │ ├── upgrade.ts │ │ │ │ ├── util.ts │ │ │ │ ├── warn.test.ts │ │ │ │ ├── warn.ts │ │ │ │ └── window.d.ts │ │ │ ├── test/ │ │ │ │ ├── default/ │ │ │ │ │ └── cli.test.cjs │ │ │ │ └── helpers.cjs │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── codemod/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── utils.test.js │ │ │ │ │ └── utils.ts │ │ │ │ └── transforms/ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ └── upgrade-hierarchy-separators/ │ │ │ │ │ ├── csf.input.js │ │ │ │ │ ├── csf.output.snapshot │ │ │ │ │ ├── dynamic-storiesof.input.js │ │ │ │ │ ├── dynamic-storiesof.output.snapshot │ │ │ │ │ ├── storiesof.input.js │ │ │ │ │ └── storiesof.output.snapshot │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── upgrade-deprecated-types.test.ts.snap │ │ │ │ │ ├── csf-2-to-3.test.ts │ │ │ │ │ ├── find-implicit-spies.test.ts │ │ │ │ │ └── upgrade-deprecated-types.test.ts │ │ │ │ ├── csf-2-to-3.ts │ │ │ │ ├── find-implicit-spies.ts │ │ │ │ ├── upgrade-deprecated-types.ts │ │ │ │ └── upgrade-hierarchy-separators.js │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── core-webpack/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── merge-webpack-config.test.ts.snap │ │ │ │ ├── check-webpack-version.ts │ │ │ │ ├── importPipeline.test.ts │ │ │ │ ├── importPipeline.ts │ │ │ │ ├── index.ts │ │ │ │ ├── load-custom-webpack-config.ts │ │ │ │ ├── merge-webpack-config.test.ts │ │ │ │ ├── merge-webpack-config.ts │ │ │ │ ├── to-importFn.test.ts │ │ │ │ ├── to-importFn.ts │ │ │ │ ├── to-require-context.test.ts │ │ │ │ ├── to-require-context.ts │ │ │ │ └── types.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── create-storybook/ │ │ │ ├── .eslintrc.cjs │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── project.json │ │ │ ├── rendererAssets/ │ │ │ │ ├── .eslintrc.json │ │ │ │ └── common/ │ │ │ │ ├── Configure.mdx │ │ │ │ ├── assets/ │ │ │ │ │ └── avif-test-image.avif │ │ │ │ ├── button.css │ │ │ │ ├── header.css │ │ │ │ └── page.css │ │ │ ├── src/ │ │ │ │ ├── bin/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modernInputs.ts │ │ │ │ │ └── run.ts │ │ │ │ ├── commands/ │ │ │ │ │ ├── AddonConfigurationCommand.test.ts │ │ │ │ │ ├── AddonConfigurationCommand.ts │ │ │ │ │ ├── DependencyInstallationCommand.test.ts │ │ │ │ │ ├── DependencyInstallationCommand.ts │ │ │ │ │ ├── FinalizationCommand.test.ts │ │ │ │ │ ├── FinalizationCommand.ts │ │ │ │ │ ├── FrameworkDetectionCommand.ts │ │ │ │ │ ├── GeneratorExecutionCommand.test.ts │ │ │ │ │ ├── GeneratorExecutionCommand.ts │ │ │ │ │ ├── PreflightCheckCommand.test.ts │ │ │ │ │ ├── PreflightCheckCommand.ts │ │ │ │ │ ├── ProjectDetectionCommand.test.ts │ │ │ │ │ ├── ProjectDetectionCommand.ts │ │ │ │ │ ├── UserPreferencesCommand.test.ts │ │ │ │ │ ├── UserPreferencesCommand.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dependency-collector.test.ts │ │ │ │ ├── dependency-collector.ts │ │ │ │ ├── generators/ │ │ │ │ │ ├── ANGULAR/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── EMBER/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── GeneratorRegistry.test.ts │ │ │ │ │ ├── GeneratorRegistry.ts │ │ │ │ │ ├── HTML/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── NEXTJS/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── NUXT/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── PREACT/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── QWIK/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── REACT/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── REACT_NATIVE/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── REACT_NATIVE_AND_RNW/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── REACT_NATIVE_WEB/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── REACT_SCRIPTS/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SERVER/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SOLID/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SVELTE/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SVELTEKIT/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── VUE3/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── WEB-COMPONENTS/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── baseGenerator.ts │ │ │ │ │ ├── configure.test.ts │ │ │ │ │ ├── configure.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ └── GeneratorModule.ts │ │ │ │ │ ├── registerGenerators.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── initiate.test.ts │ │ │ │ ├── initiate.ts │ │ │ │ ├── scaffold-new-project.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── AddonService.test.ts │ │ │ │ │ ├── AddonService.ts │ │ │ │ │ ├── FeatureCompatibilityService.test.ts │ │ │ │ │ ├── FeatureCompatibilityService.ts │ │ │ │ │ ├── FrameworkDetectionService.test.ts │ │ │ │ │ ├── FrameworkDetectionService.ts │ │ │ │ │ ├── ProjectTypeService.test.ts │ │ │ │ │ ├── ProjectTypeService.ts │ │ │ │ │ ├── TelemetryService.test.ts │ │ │ │ │ ├── TelemetryService.ts │ │ │ │ │ ├── VersionService.test.ts │ │ │ │ │ ├── VersionService.ts │ │ │ │ │ └── index.ts │ │ │ │ └── typings.d.ts │ │ │ ├── templates/ │ │ │ │ ├── angular/ │ │ │ │ │ ├── application/ │ │ │ │ │ │ └── template-csf/ │ │ │ │ │ │ └── .storybook/ │ │ │ │ │ │ ├── tsconfig.doc.json │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── typings.d.ts │ │ │ │ │ └── library/ │ │ │ │ │ └── template-csf/ │ │ │ │ │ └── .storybook/ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── typings.d.ts │ │ │ │ └── aurelia/ │ │ │ │ └── template-csf/ │ │ │ │ └── .storybook/ │ │ │ │ ├── tsconfig.json │ │ │ │ └── typings.d.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── csf-plugin/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ ├── rollup-based-plugin.ts │ │ │ │ └── webpack-loader.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── eslint-plugin/ │ │ │ ├── CONTRIBUTING.md │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── docs/ │ │ │ │ └── rules/ │ │ │ │ ├── await-interactions.md │ │ │ │ ├── context-in-play-function.md │ │ │ │ ├── csf-component.md │ │ │ │ ├── default-exports.md │ │ │ │ ├── hierarchy-separator.md │ │ │ │ ├── meta-inline-properties.md │ │ │ │ ├── meta-satisfies-type.md │ │ │ │ ├── no-redundant-story-name.md │ │ │ │ ├── no-renderer-packages.md │ │ │ │ ├── no-stories-of.md │ │ │ │ ├── no-title-property-in-meta.md │ │ │ │ ├── no-uninstalled-addons.md │ │ │ │ ├── prefer-pascal-case.md │ │ │ │ ├── story-exports.md │ │ │ │ ├── use-storybook-expect.md │ │ │ │ └── use-storybook-testing-library.md │ │ │ ├── package.json │ │ │ ├── project.json │ │ │ ├── scripts/ │ │ │ │ ├── generate-rule.ts │ │ │ │ ├── update-all.ts │ │ │ │ ├── update-configs.ts │ │ │ │ ├── update-lib-configs.ts │ │ │ │ ├── update-lib-flat-configs.ts │ │ │ │ ├── update-lib-index.ts │ │ │ │ ├── update-rules-list.ts │ │ │ │ └── utils/ │ │ │ │ ├── categories.ts │ │ │ │ ├── docs.ts │ │ │ │ ├── rules.ts │ │ │ │ └── updates.ts │ │ │ ├── src/ │ │ │ │ ├── configs/ │ │ │ │ │ ├── addon-interactions.ts │ │ │ │ │ ├── csf-strict.ts │ │ │ │ │ ├── csf.ts │ │ │ │ │ ├── flat/ │ │ │ │ │ │ ├── addon-interactions.ts │ │ │ │ │ │ ├── csf-strict.ts │ │ │ │ │ │ ├── csf.ts │ │ │ │ │ │ └── recommended.ts │ │ │ │ │ └── recommended.ts │ │ │ │ ├── index.ts │ │ │ │ ├── rules/ │ │ │ │ │ ├── await-interactions.test.ts │ │ │ │ │ ├── await-interactions.ts │ │ │ │ │ ├── context-in-play-function.test.ts │ │ │ │ │ ├── context-in-play-function.ts │ │ │ │ │ ├── csf-component.test.ts │ │ │ │ │ ├── csf-component.ts │ │ │ │ │ ├── default-exports.test.ts │ │ │ │ │ ├── default-exports.ts │ │ │ │ │ ├── hierarchy-separator.test.ts │ │ │ │ │ ├── hierarchy-separator.ts │ │ │ │ │ ├── meta-inline-properties.test.ts │ │ │ │ │ ├── meta-inline-properties.ts │ │ │ │ │ ├── meta-satisfies-type.test.ts │ │ │ │ │ ├── meta-satisfies-type.ts │ │ │ │ │ ├── no-redundant-story-name.test.ts │ │ │ │ │ ├── no-redundant-story-name.ts │ │ │ │ │ ├── no-renderer-packages.test.ts │ │ │ │ │ ├── no-renderer-packages.ts │ │ │ │ │ ├── no-stories-of.test.ts │ │ │ │ │ ├── no-stories-of.ts │ │ │ │ │ ├── no-title-property-in-meta.test.ts │ │ │ │ │ ├── no-title-property-in-meta.ts │ │ │ │ │ ├── no-uninstalled-addons.test.ts │ │ │ │ │ ├── no-uninstalled-addons.ts │ │ │ │ │ ├── prefer-pascal-case.test.ts │ │ │ │ │ ├── prefer-pascal-case.ts │ │ │ │ │ ├── story-exports.test.ts │ │ │ │ │ ├── story-exports.ts │ │ │ │ │ ├── use-storybook-expect.test.ts │ │ │ │ │ ├── use-storybook-expect.ts │ │ │ │ │ ├── use-storybook-testing-library.test.ts │ │ │ │ │ └── use-storybook-testing-library.ts │ │ │ │ ├── test-utils.ts │ │ │ │ ├── types/ │ │ │ │ │ └── index.ts │ │ │ │ └── utils/ │ │ │ │ ├── ast.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── create-storybook-rule.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── vitest-setup.ts │ │ │ ├── vitest.config.ts │ │ │ └── vitest.integration.config.ts │ │ └── react-dom-shim/ │ │ ├── README.md │ │ ├── build-config.ts │ │ ├── package.json │ │ ├── project.json │ │ ├── src/ │ │ │ ├── preset.ts │ │ │ ├── react-16.tsx │ │ │ └── react-18.tsx │ │ └── tsconfig.json │ ├── package.json │ ├── playwright.config.ts │ ├── presets/ │ │ ├── create-react-app/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── helpers/ │ │ │ │ │ ├── checkPresets.ts │ │ │ │ │ ├── getModulePath.ts │ │ │ │ │ ├── getReactScriptsPath.ts │ │ │ │ │ ├── mergePlugins.ts │ │ │ │ │ └── processCraConfig.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ └── tsconfig.json │ │ ├── react-webpack/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── cra-config.test.ts │ │ │ │ ├── cra-config.ts │ │ │ │ ├── framework-preset-cra.ts │ │ │ │ ├── framework-preset-react-docs.test.ts │ │ │ │ ├── framework-preset-react-docs.ts │ │ │ │ ├── index.ts │ │ │ │ ├── loaders/ │ │ │ │ │ ├── docgen-resolver.ts │ │ │ │ │ ├── react-docgen-loader.test.ts │ │ │ │ │ └── react-docgen-loader.ts │ │ │ │ └── types.ts │ │ │ └── tsconfig.json │ │ └── server-webpack/ │ │ ├── README.md │ │ ├── build-config.ts │ │ ├── package.json │ │ ├── preset.js │ │ ├── project.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ └── compiler/ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ ├── a11y.json │ │ │ │ │ ├── a11y.snapshot │ │ │ │ │ ├── actions.json │ │ │ │ │ ├── actions.snapshot │ │ │ │ │ ├── backgrounds.json │ │ │ │ │ ├── backgrounds.snapshot │ │ │ │ │ ├── controls.json │ │ │ │ │ ├── controls.snapshot │ │ │ │ │ ├── kitchen_sink.json │ │ │ │ │ ├── kitchen_sink.snapshot │ │ │ │ │ ├── links.json │ │ │ │ │ ├── links.snapshot │ │ │ │ │ ├── multiple_stories.json │ │ │ │ │ ├── multiple_stories.snapshot │ │ │ │ │ ├── params.json │ │ │ │ │ ├── params.snapshot │ │ │ │ │ ├── params_override.json │ │ │ │ │ ├── params_override.snapshot │ │ │ │ │ ├── yaml.snapshot │ │ │ │ │ ├── yaml.yaml │ │ │ │ │ ├── yml.snapshot │ │ │ │ │ └── yml.yml │ │ │ │ ├── index.ts │ │ │ │ ├── json-to-csf-compiler.test.ts │ │ │ │ ├── stringifier.ts │ │ │ │ └── types.ts │ │ │ ├── loader.ts │ │ │ ├── types.ts │ │ │ └── typings.d.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── project.json │ ├── renderers/ │ │ ├── html/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── docs/ │ │ │ │ │ ├── sourceDecorator.test.ts │ │ │ │ │ └── sourceDecorator.ts │ │ │ │ ├── entry-preview-docs.ts │ │ │ │ ├── entry-preview.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── index.ts │ │ │ │ ├── portable-stories.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── public-types.ts │ │ │ │ ├── render.ts │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── .eslintrc.json │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.js │ │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ │ ├── Header.js │ │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ │ ├── Page.js │ │ │ │ │ │ └── Page.stories.js │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ ├── Button.ts │ │ │ │ │ ├── Header.stories.ts │ │ │ │ │ ├── Header.ts │ │ │ │ │ ├── Page.stories.ts │ │ │ │ │ └── Page.ts │ │ │ │ ├── components/ │ │ │ │ │ ├── Button.js │ │ │ │ │ ├── Form.js │ │ │ │ │ ├── Html.js │ │ │ │ │ ├── Pre.js │ │ │ │ │ └── index.js │ │ │ │ └── stories/ │ │ │ │ └── README.md │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── preact/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── entry-preview-docs.ts │ │ │ │ ├── entry-preview.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── index.ts │ │ │ │ ├── portable-stories.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── public-types.test.tsx │ │ │ │ ├── public-types.ts │ │ │ │ ├── render.tsx │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── .eslintrc.json │ │ │ │ │ ├── Button.jsx │ │ │ │ │ ├── Button.stories.jsx │ │ │ │ │ ├── Header.jsx │ │ │ │ │ ├── Header.stories.jsx │ │ │ │ │ ├── Page.jsx │ │ │ │ │ └── Page.stories.jsx │ │ │ │ ├── components/ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ ├── Form.jsx │ │ │ │ │ ├── Html.jsx │ │ │ │ │ ├── Pre.jsx │ │ │ │ │ └── index.js │ │ │ │ └── stories/ │ │ │ │ ├── React.jsx │ │ │ │ └── react-compat.stories.jsx │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── react/ │ │ │ ├── README.md │ │ │ ├── __mocks__/ │ │ │ │ ├── fs/ │ │ │ │ │ └── promises.cjs │ │ │ │ └── fs.cjs │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── preview.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── __test__/ │ │ │ │ │ ├── Button.csf4.stories.tsx │ │ │ │ │ ├── Button.stories.tsx │ │ │ │ │ ├── Button.tsx │ │ │ │ │ ├── ComponentWithError.stories.tsx │ │ │ │ │ ├── ComponentWithError.tsx │ │ │ │ │ ├── README.md │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── portable-stories-factory.test.tsx.snap │ │ │ │ │ │ ├── portable-stories-legacy.test.tsx.snap │ │ │ │ │ │ └── portable-stories.test.tsx.snap │ │ │ │ │ ├── button.css │ │ │ │ │ ├── portable-stories-factory.test.tsx │ │ │ │ │ ├── portable-stories-legacy.test.tsx │ │ │ │ │ └── portable-stories.test.tsx │ │ │ │ ├── act-compat.ts │ │ │ │ ├── applyDecorators.ts │ │ │ │ ├── componentManifest/ │ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ │ ├── Arrow.ts │ │ │ │ │ │ ├── Button.ts │ │ │ │ │ │ ├── DefaultExport.ts │ │ │ │ │ │ ├── DefaultValues.ts │ │ │ │ │ │ ├── DisplayNameOverride.ts │ │ │ │ │ │ ├── Documented.ts │ │ │ │ │ │ ├── DtsComponent.tsx │ │ │ │ │ │ ├── ForwardRef.tsx │ │ │ │ │ │ ├── FunctionProps.ts │ │ │ │ │ │ ├── Generic.ts │ │ │ │ │ │ ├── ImportedProps.ts │ │ │ │ │ │ ├── Intersection.ts │ │ │ │ │ │ ├── MultipleExports.ts │ │ │ │ │ │ ├── NoComponents.ts │ │ │ │ │ │ ├── PickOmit.ts │ │ │ │ │ │ ├── ReExport.ts │ │ │ │ │ │ ├── RenamedExport.ts │ │ │ │ │ │ ├── UnionProps.ts │ │ │ │ │ │ ├── barrel/ │ │ │ │ │ │ │ ├── Button.ts │ │ │ │ │ │ │ ├── Input.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── componentMeta/ │ │ │ │ │ │ ├── ComponentMetaManager.test.ts │ │ │ │ │ │ ├── ComponentMetaManager.ts │ │ │ │ │ │ ├── ComponentMetaProject.storyExtraction.test.ts │ │ │ │ │ │ ├── ComponentMetaProject.test.ts │ │ │ │ │ │ ├── ComponentMetaProject.ts │ │ │ │ │ │ ├── componentMetaExtractor.defaultValue.test.ts │ │ │ │ │ │ ├── componentMetaExtractor.detection.test.ts │ │ │ │ │ │ ├── componentMetaExtractor.displayName.test.ts │ │ │ │ │ │ ├── componentMetaExtractor.parentTracking.test.ts │ │ │ │ │ │ ├── componentMetaExtractor.props.test.ts │ │ │ │ │ │ ├── componentMetaExtractor.qa.test.ts │ │ │ │ │ │ ├── componentMetaExtractor.test-helpers.ts │ │ │ │ │ │ ├── componentMetaExtractor.ts │ │ │ │ │ │ └── test-helpers.ts │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ ├── generateCodeSnippet.test.tsx │ │ │ │ │ ├── generateCodeSnippet.ts │ │ │ │ │ ├── generator.test.ts │ │ │ │ │ ├── generator.ts │ │ │ │ │ ├── getComponentImports.test.ts │ │ │ │ │ ├── getComponentImports.ts │ │ │ │ │ ├── jsdocTags.test.ts │ │ │ │ │ ├── jsdocTags.ts │ │ │ │ │ ├── memfs-test-setup.ts │ │ │ │ │ ├── reactDocgen/ │ │ │ │ │ │ ├── actualNameHandler.ts │ │ │ │ │ │ ├── docgenResolver.ts │ │ │ │ │ │ ├── exportNameHandler.ts │ │ │ │ │ │ ├── extractReactDocgenInfo.test.ts │ │ │ │ │ │ ├── extractReactDocgenInfo.ts │ │ │ │ │ │ ├── extractReactTypescriptDocgenInfo.test.ts │ │ │ │ │ │ ├── extractReactTypescriptDocgenInfo.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── reactDocgen.test.ts │ │ │ │ │ ├── reactDocgen.ts │ │ │ │ │ ├── reactDocgenTypescript.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── csf-factories.test.tsx │ │ │ │ ├── docs/ │ │ │ │ │ ├── applyDecorators.ts │ │ │ │ │ ├── jsxDecorator.test.tsx │ │ │ │ │ ├── jsxDecorator.tsx │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── captions.ts │ │ │ │ │ │ ├── componentTypes.ts │ │ │ │ │ │ ├── defaultValues/ │ │ │ │ │ │ │ ├── createDefaultValue.ts │ │ │ │ │ │ │ ├── createFromRawDefaultProp.ts │ │ │ │ │ │ │ ├── generateArray.ts │ │ │ │ │ │ │ ├── generateObject.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── prettyIdentifier.ts │ │ │ │ │ │ ├── generateCode.ts │ │ │ │ │ │ ├── inspection/ │ │ │ │ │ │ │ ├── acornParser.test.ts │ │ │ │ │ │ │ ├── acornParser.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── inspectValue.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ └── isHtmlTag.ts │ │ │ │ │ ├── propTypes/ │ │ │ │ │ │ ├── createType.ts │ │ │ │ │ │ ├── generateFuncSignature.test.ts │ │ │ │ │ │ ├── generateFuncSignature.ts │ │ │ │ │ │ ├── handleProp.test.tsx │ │ │ │ │ │ ├── handleProp.ts │ │ │ │ │ │ ├── rawDefaultPropResolvers.ts │ │ │ │ │ │ └── sortProps.ts │ │ │ │ │ └── typeScript/ │ │ │ │ │ ├── handleProp.test.tsx │ │ │ │ │ └── handleProp.ts │ │ │ │ ├── enrichCsf.test.ts │ │ │ │ ├── enrichCsf.ts │ │ │ │ ├── entry-preview-argtypes.ts │ │ │ │ ├── entry-preview-docs.ts │ │ │ │ ├── entry-preview-rsc.tsx │ │ │ │ ├── entry-preview.tsx │ │ │ │ ├── extractArgTypes.test.ts │ │ │ │ ├── extractArgTypes.ts │ │ │ │ ├── extractProps.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mount.ts │ │ │ │ ├── playwright.ts │ │ │ │ ├── portable-stories.tsx │ │ │ │ ├── preset.test.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── preview.tsx │ │ │ │ ├── public-types.test.tsx │ │ │ │ ├── public-types.ts │ │ │ │ ├── render.tsx │ │ │ │ ├── renderToCanvas.tsx │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── .eslintrc.json │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ │ ├── Header.jsx │ │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ │ ├── Page.jsx │ │ │ │ │ │ └── Page.stories.js │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ ├── Button.tsx │ │ │ │ │ ├── Header.stories.ts │ │ │ │ │ ├── Header.tsx │ │ │ │ │ ├── Page.stories.ts │ │ │ │ │ └── Page.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── Button.jsx │ │ │ │ │ ├── Form.jsx │ │ │ │ │ ├── Html.jsx │ │ │ │ │ ├── Pre.jsx │ │ │ │ │ └── index.js │ │ │ │ └── stories/ │ │ │ │ ├── csf1.stories.tsx │ │ │ │ ├── csf2.stories.tsx │ │ │ │ ├── csf4.mdx │ │ │ │ ├── csf4.stories.tsx │ │ │ │ ├── decorators.stories.tsx │ │ │ │ ├── docgen-components/ │ │ │ │ │ ├── 10017-ts-union/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 10278-ts-multiple-components/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 8140-js-prop-types-oneof/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 8143-ts-imported-types/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ ├── properties.snapshot │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── 8143-ts-react-fc-generics/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 8428-js-static-prop-types/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 8740-ts-multi-props/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 8894-9511-ts-forward-ref/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9023-js-hoc/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9399-js-proptypes-shape/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9465-ts-type-props/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9493-ts-display-name/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9556-ts-react-default-exports/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9575-ts-camel-case/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9586-js-react-memo/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9591-ts-import-types/ │ │ │ │ │ │ ├── Bar.tsx │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9626-js-default-values/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9668-js-proptypes-no-jsdoc/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9721-ts-deprecated-jsdoc/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9764-ts-extend-props/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9827-ts-default-values/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9832-ts-enum-export/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── 9922-ts-component-props/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── imported.js │ │ │ │ │ ├── imported.module.css │ │ │ │ │ ├── js-class-component/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── js-function-component/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── js-function-component-inline-defaults/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── js-function-component-inline-defaults-no-propTypes/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── js-proptypes/ │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── ext.js │ │ │ │ │ │ └── input.jsx │ │ │ │ │ ├── js-re-exported-component/ │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ └── input.jsx │ │ │ │ │ ├── jsdoc/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.jsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── ts-function-component/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── ts-function-component-inline-defaults/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── ts-html/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── ts-jsdoc/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ ├── ts-react-fc/ │ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ └── ts-types/ │ │ │ │ │ ├── argTypes.snapshot │ │ │ │ │ ├── docgen.snapshot │ │ │ │ │ ├── input.tsx │ │ │ │ │ └── properties.snapshot │ │ │ │ ├── errors.stories.tsx │ │ │ │ ├── hooks.stories.tsx │ │ │ │ ├── js-argtypes.stories.jsx │ │ │ │ ├── jsx-docgen.stories.tsx │ │ │ │ ├── mount-in-play.stories.tsx │ │ │ │ ├── preview.ts │ │ │ │ ├── teardown.stories.tsx │ │ │ │ ├── test-fn.stories.tsx │ │ │ │ └── ts-argtypes.stories.tsx │ │ │ ├── tsconfig.json │ │ │ ├── vitest.config.ts │ │ │ └── vitest.setup.ts │ │ ├── server/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── entry-preview.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── index.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── public-types.ts │ │ │ │ ├── render.ts │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── template/ │ │ │ │ └── cli/ │ │ │ │ ├── button.stories.json │ │ │ │ ├── header.stories.json │ │ │ │ └── page.stories.yaml │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── svelte/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── __test__/ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── Decorator.svelte │ │ │ │ │ ├── Decorator2.svelte │ │ │ │ │ └── composeStories/ │ │ │ │ │ ├── AddWrapperDecorator.svelte │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── CustomRenderComponent.svelte │ │ │ │ │ ├── InputFilledStoryComponent.svelte │ │ │ │ │ ├── LoaderStoryComponent.svelte │ │ │ │ │ ├── StoryWithLocaleComponent.svelte │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── portable-stories.test.ts.snap │ │ │ │ │ └── portable-stories.test.ts │ │ │ │ ├── decorators.ts │ │ │ │ ├── docs/ │ │ │ │ │ ├── sourceDecorator.test.ts │ │ │ │ │ └── sourceDecorator.ts │ │ │ │ ├── entry-preview-docs.ts │ │ │ │ ├── entry-preview.ts │ │ │ │ ├── extractArgTypes.test.ts │ │ │ │ ├── extractArgTypes.ts │ │ │ │ ├── extractComponentDescription.test.ts │ │ │ │ ├── extractComponentDescription.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mount.ts │ │ │ │ ├── playwright.ts │ │ │ │ ├── portable-stories.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── public-types.test.ts │ │ │ │ ├── public-types.ts │ │ │ │ ├── render.ts │ │ │ │ ├── sample/ │ │ │ │ │ └── MockButton.svelte │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── static/ │ │ │ │ ├── AddStorybookIdDecorator.svelte │ │ │ │ ├── DecoratorHandler.svelte │ │ │ │ ├── PreviewRender.svelte │ │ │ │ └── createReactiveProps.svelte.js │ │ │ ├── svelte.config.js │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.stories.svelte │ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ │ ├── Header.stories.svelte │ │ │ │ │ │ ├── Header.svelte │ │ │ │ │ │ ├── Page.stories.svelte │ │ │ │ │ │ └── Page.svelte │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.svelte │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── Header.stories.svelte │ │ │ │ │ ├── Header.svelte │ │ │ │ │ ├── Page.stories.svelte │ │ │ │ │ └── Page.svelte │ │ │ │ ├── components/ │ │ │ │ │ ├── Button.svelte │ │ │ │ │ ├── Form.svelte │ │ │ │ │ ├── Html.svelte │ │ │ │ │ ├── Pre.svelte │ │ │ │ │ └── index.js │ │ │ │ └── stories/ │ │ │ │ ├── AsyncComponent.svelte │ │ │ │ ├── BorderDecoratorBlue.svelte │ │ │ │ ├── BorderDecoratorProps.svelte │ │ │ │ ├── BorderDecoratorRed.svelte │ │ │ │ ├── Button.svelte │ │ │ │ ├── SyncComponent.svelte │ │ │ │ ├── args.stories.js │ │ │ │ ├── decorators.stories.js │ │ │ │ ├── mount-in-play.stories.ts │ │ │ │ └── settled.stories.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── vue3/ │ │ │ ├── README.md │ │ │ ├── build-config.ts │ │ │ ├── package.json │ │ │ ├── preset.js │ │ │ ├── project.json │ │ │ ├── src/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── extractArgTypes.test.ts.snap │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── BaseLayout.vue │ │ │ │ │ ├── Button.vue │ │ │ │ │ ├── Decorator.vue │ │ │ │ │ ├── Decorator2.vue │ │ │ │ │ ├── GenericComponent.vue │ │ │ │ │ ├── button.css │ │ │ │ │ └── composeStories/ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ ├── Button.vue │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── portable-stories.test.ts.snap │ │ │ │ │ └── portable-stories.test.ts │ │ │ │ ├── csf-factories.test.ts │ │ │ │ ├── decorateStory.ts │ │ │ │ ├── docs/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── extractArgTypes.test.ts.snap │ │ │ │ │ ├── sourceDecorator.test.ts │ │ │ │ │ ├── sourceDecorator.ts │ │ │ │ │ └── tests-meta-components/ │ │ │ │ │ └── meta-components.ts │ │ │ │ ├── entry-preview-docs.ts │ │ │ │ ├── entry-preview.ts │ │ │ │ ├── extractArgTypes.test.ts │ │ │ │ ├── extractArgTypes.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mount.ts │ │ │ │ ├── playwright.ts │ │ │ │ ├── portable-stories.ts │ │ │ │ ├── preset.ts │ │ │ │ ├── preview.ts │ │ │ │ ├── public-types.test.ts │ │ │ │ ├── public-types.ts │ │ │ │ ├── render.test.ts │ │ │ │ ├── render.ts │ │ │ │ ├── types.ts │ │ │ │ └── typings.d.ts │ │ │ ├── template/ │ │ │ │ ├── cli/ │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ │ ├── Button.vue │ │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ │ ├── Header.vue │ │ │ │ │ │ ├── Page.stories.js │ │ │ │ │ │ └── Page.vue │ │ │ │ │ └── ts/ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ ├── Button.vue │ │ │ │ │ ├── Header.stories.ts │ │ │ │ │ ├── Header.vue │ │ │ │ │ ├── Page.stories.ts │ │ │ │ │ └── Page.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── Button.vue │ │ │ │ │ ├── Form.vue │ │ │ │ │ ├── Html.vue │ │ │ │ │ ├── Pre.vue │ │ │ │ │ ├── button.css │ │ │ │ │ └── index.js │ │ │ │ ├── stories/ │ │ │ │ │ └── preview.js │ │ │ │ └── stories_vue3-vite-default-ts/ │ │ │ │ ├── BaseLayout.vue │ │ │ │ ├── CustomRenderFunctionalComponent.stories.ts │ │ │ │ ├── CustomRenderOptionsArgsFromData.stories.ts │ │ │ │ ├── GlobalSetup.stories.ts │ │ │ │ ├── GlobalSetup.vue │ │ │ │ ├── GlobalUsage.stories.ts │ │ │ │ ├── GlobalUsage.vue │ │ │ │ ├── MySlotComponent.vue │ │ │ │ ├── OverrideArgs.stories.js │ │ │ │ ├── OverrideArgs.vue │ │ │ │ ├── ReactiveArgs.stories.ts │ │ │ │ ├── ReactiveArgs.vue │ │ │ │ ├── ReactiveDecorators.stories.ts │ │ │ │ ├── ReactiveSlots.stories.ts │ │ │ │ ├── Reactivity.vue │ │ │ │ ├── ScopedSlots.stories.ts │ │ │ │ ├── SourceCode.stories.ts │ │ │ │ ├── SourceCode.vue │ │ │ │ ├── SourceDecorator.stories.ts │ │ │ │ ├── component-meta/ │ │ │ │ │ ├── DefineModel.stories.ts │ │ │ │ │ ├── DefineSlots.stories.ts │ │ │ │ │ ├── OptionApi.stories.ts │ │ │ │ │ ├── ReferenceTypeEvents.stories.ts │ │ │ │ │ ├── ReferenceTypeExposed.stories.ts │ │ │ │ │ ├── ReferenceTypeProps.stories.ts │ │ │ │ │ ├── TemplateSlots.stories.ts │ │ │ │ │ ├── TsComponent.stories.ts │ │ │ │ │ ├── TsNameExport.stories.ts │ │ │ │ │ ├── class-slots/ │ │ │ │ │ │ └── component.vue │ │ │ │ │ ├── define-model/ │ │ │ │ │ │ └── component.vue │ │ │ │ │ ├── define-slots/ │ │ │ │ │ │ └── component.vue │ │ │ │ │ ├── options-api/ │ │ │ │ │ │ └── component.ts │ │ │ │ │ ├── reference-type-events/ │ │ │ │ │ │ └── component.vue │ │ │ │ │ ├── reference-type-exposed/ │ │ │ │ │ │ └── component.vue │ │ │ │ │ ├── reference-type-props/ │ │ │ │ │ │ ├── component-js-setup.vue │ │ │ │ │ │ ├── component-js.vue │ │ │ │ │ │ ├── component.vue │ │ │ │ │ │ └── my-props.ts │ │ │ │ │ ├── template-slots/ │ │ │ │ │ │ ├── component-no-script.vue │ │ │ │ │ │ └── component.vue │ │ │ │ │ ├── ts-component/ │ │ │ │ │ │ └── component.ts │ │ │ │ │ └── ts-named-export/ │ │ │ │ │ └── component.ts │ │ │ │ ├── decorators.stories.ts │ │ │ │ ├── mount-in-play.stories.ts │ │ │ │ └── preview.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ └── web-components/ │ │ ├── README.md │ │ ├── build-config.ts │ │ ├── package.json │ │ ├── preset.js │ │ ├── project.json │ │ ├── src/ │ │ │ ├── csf-factories.test.ts │ │ │ ├── docs/ │ │ │ │ ├── __testfixtures__/ │ │ │ │ │ ├── custom-elements.json │ │ │ │ │ ├── lit-element-demo-card/ │ │ │ │ │ │ ├── custom-elements.snapshot │ │ │ │ │ │ ├── input.js │ │ │ │ │ │ └── properties.snapshot │ │ │ │ │ └── lit-html-welcome/ │ │ │ │ │ ├── custom-elements.snapshot │ │ │ │ │ ├── input.js │ │ │ │ │ └── properties.snapshot │ │ │ │ ├── custom-elements.test.ts │ │ │ │ ├── custom-elements.ts │ │ │ │ ├── sourceDecorator.test.ts │ │ │ │ ├── sourceDecorator.ts │ │ │ │ └── web-components-properties.test.ts │ │ │ ├── entry-preview-argtypes.ts │ │ │ ├── entry-preview-docs.ts │ │ │ ├── entry-preview.ts │ │ │ ├── framework-api.ts │ │ │ ├── globals.ts │ │ │ ├── index.ts │ │ │ ├── portable-stories.ts │ │ │ ├── preset.ts │ │ │ ├── preview.ts │ │ │ ├── public-types.ts │ │ │ ├── render.ts │ │ │ ├── types.ts │ │ │ └── typings.d.ts │ │ ├── template/ │ │ │ ├── cli/ │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── js/ │ │ │ │ │ ├── Button.js │ │ │ │ │ ├── Button.stories.js │ │ │ │ │ ├── Header.js │ │ │ │ │ ├── Header.stories.js │ │ │ │ │ ├── Page.js │ │ │ │ │ └── Page.stories.js │ │ │ │ └── ts/ │ │ │ │ ├── Button.stories.ts │ │ │ │ ├── Button.ts │ │ │ │ ├── Header.stories.ts │ │ │ │ ├── Header.ts │ │ │ │ ├── Page.stories.ts │ │ │ │ └── Page.ts │ │ │ ├── components/ │ │ │ │ ├── Button.js │ │ │ │ ├── Form.js │ │ │ │ ├── Html.js │ │ │ │ ├── Pre.js │ │ │ │ ├── button.css │ │ │ │ └── index.js │ │ │ └── stories/ │ │ │ ├── custom-elements-experimental.json │ │ │ ├── custom-elements.json │ │ │ ├── demo-wc-card/ │ │ │ │ ├── DemoWcCard.js │ │ │ │ ├── demoWcCardStyle.css.js │ │ │ │ └── index.js │ │ │ ├── demo-wc-card.stories.js │ │ │ ├── preview.js │ │ │ └── script.stories.js │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── sandbox/ │ │ ├── angular-cli-default-ts/ │ │ │ └── project.json │ │ ├── angular-cli-prerelease/ │ │ │ └── project.json │ │ ├── bench-react-vite-default-ts/ │ │ │ └── project.json │ │ ├── bench-react-vite-default-ts-nodocs/ │ │ │ └── project.json │ │ ├── bench-react-vite-default-ts-test-build/ │ │ │ └── project.json │ │ ├── bench-react-webpack-18-ts/ │ │ │ └── project.json │ │ ├── bench-react-webpack-18-ts-test-build/ │ │ │ └── project.json │ │ ├── cra-default-js/ │ │ │ └── project.json │ │ ├── cra-default-ts/ │ │ │ └── project.json │ │ ├── ember-3-js/ │ │ │ └── project.json │ │ ├── ember-default-js/ │ │ │ └── project.json │ │ ├── html-rsbuild-default-ts/ │ │ │ └── project.json │ │ ├── html-vite-default-js/ │ │ │ └── project.json │ │ ├── html-vite-default-ts/ │ │ │ └── project.json │ │ ├── internal-react16-webpack/ │ │ │ └── project.json │ │ ├── internal-react18-webpack-babel/ │ │ │ └── project.json │ │ ├── internal-server-webpack5/ │ │ │ └── project.json │ │ ├── lit-rsbuild-default-ts/ │ │ │ └── project.json │ │ ├── lit-vite-default-js/ │ │ │ └── project.json │ │ ├── lit-vite-default-ts/ │ │ │ └── project.json │ │ ├── nextjs-14-ts/ │ │ │ └── project.json │ │ ├── nextjs-15-ts/ │ │ │ └── project.json │ │ ├── nextjs-default-ts/ │ │ │ └── project.json │ │ ├── nextjs-prerelease/ │ │ │ └── project.json │ │ ├── nextjs-vite-14-ts/ │ │ │ └── project.json │ │ ├── nextjs-vite-15-ts/ │ │ │ └── project.json │ │ ├── nextjs-vite-default-ts/ │ │ │ └── project.json │ │ ├── preact-vite-default-js/ │ │ │ └── project.json │ │ ├── preact-vite-default-ts/ │ │ │ └── project.json │ │ ├── qwik-vite-default-ts/ │ │ │ └── project.json │ │ ├── react-native-web-vite-expo-ts/ │ │ │ └── project.json │ │ ├── react-native-web-vite-rn-cli-ts/ │ │ │ └── project.json │ │ ├── react-rsbuild-default-ts/ │ │ │ └── project.json │ │ ├── react-vite-default-js/ │ │ │ └── project.json │ │ ├── react-vite-default-ts/ │ │ │ └── project.json │ │ ├── react-vite-prerelease-ts/ │ │ │ └── project.json │ │ ├── react-webpack-17-ts/ │ │ │ └── project.json │ │ ├── react-webpack-18-ts/ │ │ │ └── project.json │ │ ├── react-webpack-prerelease-ts/ │ │ │ └── project.json │ │ ├── solid-vite-default-js/ │ │ │ └── project.json │ │ ├── solid-vite-default-ts/ │ │ │ └── project.json │ │ ├── svelte-kit-skeleton-ts/ │ │ │ └── project.json │ │ ├── svelte-vite-default-js/ │ │ │ └── project.json │ │ ├── svelte-vite-default-ts/ │ │ │ └── project.json │ │ ├── vue3-rsbuild-default-ts/ │ │ │ └── project.json │ │ ├── vue3-vite-default-js/ │ │ │ └── project.json │ │ └── vue3-vite-default-ts/ │ │ └── project.json │ ├── tsconfig.json │ ├── vitest-setup.ts │ ├── vitest.config.storybook.ts │ ├── vitest.helpers.ts │ └── vitest.shared.ts ├── codecov.yml ├── dependabot.yml ├── docs/ │ ├── _snippets/ │ │ ├── actions-filtering-example.md │ │ ├── actions-spyon-basic-example.md │ │ ├── addon-a11y-add.md │ │ ├── addon-a11y-config-context-in-story.md │ │ ├── addon-a11y-config-in-meta-and-story.md │ │ ├── addon-a11y-config-in-preview.md │ │ ├── addon-a11y-config-rules-in-story.md │ │ ├── addon-a11y-config-rulesets-in-preview.md │ │ ├── addon-a11y-disable.md │ │ ├── addon-a11y-install.md │ │ ├── addon-a11y-parameter-error-in-preview.md │ │ ├── addon-a11y-parameter-example.md │ │ ├── addon-a11y-parameter-remove.md │ │ ├── addon-a11y-parameter-todo-in-meta.md │ │ ├── addon-a11y-register.md │ │ ├── addon-actions-action-function.md │ │ ├── addon-backgrounds-define-globals.md │ │ ├── addon-backgrounds-disabled.md │ │ ├── addon-backgrounds-grid.md │ │ ├── addon-backgrounds-options-in-meta.md │ │ ├── addon-backgrounds-options-in-preview.md │ │ ├── addon-consume-and-update-globaltype.md │ │ ├── addon-consume-globaltype.md │ │ ├── addon-docs-options.md │ │ ├── addon-mcp-add.md │ │ ├── addon-mcp-options.md │ │ ├── addon-test-install.md │ │ ├── addon-viewport-add-viewport-in-preview.md │ │ ├── addon-viewport-configuration-in-meta.md │ │ ├── addon-viewport-define-globals.md │ │ ├── addon-viewport-options-in-preview.md │ │ ├── after-each-in-meta.md │ │ ├── angular-add-compodoc.md │ │ ├── angular-add-framework.md │ │ ├── angular-application-providers-in-meta-and-story.md │ │ ├── angular-builder-production.md │ │ ├── angular-framework-options-enable-ivy-false.md │ │ ├── angular-framework-options-enable-ngcc-false.md │ │ ├── angular-framework-options.md │ │ ├── angular-install.md │ │ ├── angular-project-compodoc-config.md │ │ ├── api-doc-block-argtypes-parameter.md │ │ ├── api-doc-block-canvas-parameter.md │ │ ├── api-doc-block-controls-parameter.md │ │ ├── api-doc-block-description-example.md │ │ ├── api-doc-block-source-parameter.md │ │ ├── api-doc-block-story-parameter.md │ │ ├── arg-types-control.md │ │ ├── arg-types-default-value.md │ │ ├── arg-types-description.md │ │ ├── arg-types-if.md │ │ ├── arg-types-in-meta.md │ │ ├── arg-types-in-preview.md │ │ ├── arg-types-in-story.md │ │ ├── arg-types-mapping.md │ │ ├── arg-types-name.md │ │ ├── arg-types-options.md │ │ ├── arg-types-table.md │ │ ├── arg-types-type.md │ │ ├── args-in-preview.md │ │ ├── args-usage-with-addons.md │ │ ├── automock-register-full.md │ │ ├── automock-register-mock-file.md │ │ ├── automock-register-spy.md │ │ ├── automocked-modules-in-story.md │ │ ├── before-all-in-preview.md │ │ ├── before-each-in-meta-mock-date.md │ │ ├── before-each-in-preview.md │ │ ├── best-practices-in-story.md │ │ ├── build-storybook-production-mode.md │ │ ├── button-component-with-proptypes.md │ │ ├── button-group-story.md │ │ ├── button-implementation.md │ │ ├── button-snapshot-test-portable-stories.md │ │ ├── button-story-argtypes-with-categories.md │ │ ├── button-story-argtypes-with-subcategories.md │ │ ├── button-story-baseline-with-satisfies-story-level.md │ │ ├── button-story-baseline-with-satisfies.md │ │ ├── button-story-baseline.md │ │ ├── button-story-click-handler-args.md │ │ ├── button-story-click-handler-simplificated.md │ │ ├── button-story-click-handler.md │ │ ├── button-story-component-args-primary.md │ │ ├── button-story-component-decorator.md │ │ ├── button-story-controls-primary-variant.md │ │ ├── button-story-controls-radio-group.md │ │ ├── button-story-decorator.md │ │ ├── button-story-default-export-with-component.md │ │ ├── button-story-default-export.md │ │ ├── button-story-disable-addon.md │ │ ├── button-story-grouped.md │ │ ├── button-story-hoisted.md │ │ ├── button-story-hypothetical-example.md │ │ ├── button-story-matching-argtypes.md │ │ ├── button-story-onclick-action-spy.md │ │ ├── button-story-primary-composition.md │ │ ├── button-story-primary-long-name.md │ │ ├── button-story-rename-story.md │ │ ├── button-story-using-args.md │ │ ├── button-story-with-addon-example.md │ │ ├── button-story-with-args.md │ │ ├── button-story-with-emojis.md │ │ ├── button-story-with-sample.md │ │ ├── button-story.md │ │ ├── checkbox-story-csf.md │ │ ├── checkbox-story-grouped.md │ │ ├── checkbox-story.md │ │ ├── chromatic-github-action.md │ │ ├── chromatic-install.md │ │ ├── chromatic-storybook-add.md │ │ ├── code-panel-enable-in-preview.md │ │ ├── code-panel-in-meta-and-story.md │ │ ├── compodoc-install.md │ │ ├── component-cypress-test.md │ │ ├── component-playwright-test.md │ │ ├── component-story-conditional-controls-mutual-exclusion.md │ │ ├── component-story-conditional-controls-toggle.md │ │ ├── component-story-custom-args-complex.md │ │ ├── component-story-custom-args-mapping.md │ │ ├── component-story-disable-controls-alt.md │ │ ├── component-story-disable-controls-regex.md │ │ ├── component-story-disable-controls.md │ │ ├── component-story-figma-integration.md │ │ ├── component-story-highlight.md │ │ ├── component-story-sort-controls.md │ │ ├── component-story-static-asset-cdn.md │ │ ├── component-story-static-asset-with-import.md │ │ ├── component-story-static-asset-without-import.md │ │ ├── component-story-with-custom-render-function.md │ │ ├── component-styled-variables-object-notation.md │ │ ├── component-styled-variables-template-literals.md │ │ ├── component-test-with-testing-library.md │ │ ├── configure-mock-provider-with-story-parameter.md │ │ ├── create-command-custom-package-manager.md │ │ ├── create-command-custom-version.md │ │ ├── create-command-manual-framework.md │ │ ├── create-command.md │ │ ├── csf-2-example-primary-dark-story.md │ │ ├── csf-2-example-starter.md │ │ ├── csf-2-example-story.md │ │ ├── csf-2-example-title.md │ │ ├── csf-3-example-auto-title.md │ │ ├── csf-3-example-default-render.md │ │ ├── csf-3-example-primary-dark-story.md │ │ ├── csf-3-example-render.md │ │ ├── csf-3-example-starter.md │ │ ├── csf-3-example-title.md │ │ ├── csf-factories-automigrate-with-config-directory.md │ │ ├── csf-factories-automigrate.md │ │ ├── custom-docs-page.md │ │ ├── decorator-parameterized-in-preview.md │ │ ├── decorator-with-reactive-globals.md │ │ ├── decorator-with-updateArgs.md │ │ ├── document-screen-fetch.md │ │ ├── document-screen-with-graphql.md │ │ ├── eslint-install.md │ │ ├── eslint-plugin-storybook-install.md │ │ ├── essential-feature-disable.md │ │ ├── foo-bar-baz-story.md │ │ ├── ghp-github-action.md │ │ ├── gizmo-story-controls-customization.md │ │ ├── highlight-custom-style.md │ │ ├── highlight-menu.md │ │ ├── highlight-remove.md │ │ ├── highlight-reset.md │ │ ├── highlight-scroll-into-view.md │ │ ├── histogram-story.md │ │ ├── individual-snapshot-tests-portable-stories.md │ │ ├── init-command-custom-version.md │ │ ├── init-command.md │ │ ├── initialize-library-in-preview.md │ │ ├── interaction-test-complex.md │ │ ├── interaction-test-fn-mock-spy.md │ │ ├── interaction-test-simple.md │ │ ├── list-story-expanded.md │ │ ├── list-story-reuse-data.md │ │ ├── list-story-starter.md │ │ ├── list-story-template.md │ │ ├── list-story-unchecked.md │ │ ├── list-story-with-subcomponents.md │ │ ├── list-story-with-unchecked-children.md │ │ ├── loader-story.md │ │ ├── login-form-with-play-function.md │ │ ├── main-config-addons.md │ │ ├── main-config-babel.md │ │ ├── main-config-builder-custom-config.md │ │ ├── main-config-core-allowed-hosts.md │ │ ├── main-config-core-builder.md │ │ ├── main-config-core-cross-origin-isolated.md │ │ ├── main-config-core-disable-project-json.md │ │ ├── main-config-core-disable-telemetry.md │ │ ├── main-config-core-disable-update-notifications.md │ │ ├── main-config-core-disable-webpack-defaults.md │ │ ├── main-config-core-enable-crash-reports.md │ │ ├── main-config-docs-default-name.md │ │ ├── main-config-docs-docs-mode.md │ │ ├── main-config-env.md │ │ ├── main-config-features-arg-type-targets-v7.md │ │ ├── main-config-features-components-manifest.md │ │ ├── main-config-features-development-mode-for-build.md │ │ ├── main-config-features-experimental-code-examples.md │ │ ├── main-config-features-experimental-test-syntax.md │ │ ├── main-config-features-legacy-decorator-file-order.md │ │ ├── main-config-framework.md │ │ ├── main-config-indexers-jsonstories.md │ │ ├── main-config-indexers-title.md │ │ ├── main-config-indexers.md │ │ ├── main-config-log-level.md │ │ ├── main-config-manager-head.md │ │ ├── main-config-preview-body.md │ │ ├── main-config-preview-head.md │ │ ├── main-config-preview.md │ │ ├── main-config-refs-disable.md │ │ ├── main-config-refs-with-function.md │ │ ├── main-config-refs.md │ │ ├── main-config-static-dirs-with-object.md │ │ ├── main-config-static-dirs.md │ │ ├── main-config-stories-only-mdx.md │ │ ├── main-config-stories-ordered.md │ │ ├── main-config-stories-with-logic.md │ │ ├── main-config-stories-with-object.md │ │ ├── main-config-stories.md │ │ ├── main-config-svelte-csf-register.md │ │ ├── main-config-swc-jsx-transform.md │ │ ├── main-config-swc.md │ │ ├── main-config-tags-test-fn-exclude.md │ │ ├── main-config-tags.md │ │ ├── main-config-test-disable-autodocs.md │ │ ├── main-config-test-disable-blocks.md │ │ ├── main-config-test-disable-disableaddons.md │ │ ├── main-config-test-disable-docgen.md │ │ ├── main-config-test-disable-mdx.md │ │ ├── main-config-test-disable-sourcemaps.md │ │ ├── main-config-test-disable-treeshaking.md │ │ ├── main-config-typescript-check-options.md │ │ ├── main-config-typescript-check.md │ │ ├── main-config-typescript-react-docgen-typescript-options.md │ │ ├── main-config-typescript-react-docgen.md │ │ ├── main-config-typescript-skip-compiler.md │ │ ├── main-config-typical.md │ │ ├── main-config-vite-final-env.md │ │ ├── main-config-vite-final.md │ │ ├── main-config-webpack-final.md │ │ ├── margindecorator.md │ │ ├── mcp-add.md │ │ ├── migrate-csf-2-to-3.md │ │ ├── mock-context-container-global.md │ │ ├── mock-context-container-provider.md │ │ ├── mock-context-container.md │ │ ├── mock-context-create.md │ │ ├── mock-context-in-use.md │ │ ├── mock-provider-in-preview.md │ │ ├── module-aliases-config.md │ │ ├── mount-advanced.md │ │ ├── mount-basic.md │ │ ├── msw-addon-configure-handlers-graphql.md │ │ ├── msw-addon-configure-handlers-http.md │ │ ├── msw-addon-initialize.md │ │ ├── msw-addon-install.md │ │ ├── msw-generate-service-worker.md │ │ ├── multiple-stories-test.md │ │ ├── my-component-disable-toc.md │ │ ├── my-component-env-var-config.md │ │ ├── my-component-exclude-tags.md │ │ ├── my-component-include-tags.md │ │ ├── my-component-skip-tags.md │ │ ├── my-component-story-basic-and-props.md │ │ ├─
Showing preview only (1,210K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (12677 symbols across 1737 files)
FILE: .yarn/releases/yarn-4.10.3.cjs
function Cc (line 4) | function Cc(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}
function RGe (line 4) | function RGe(t){return Cc("EBUSY",t)}
function TGe (line 4) | function TGe(t,e){return Cc("ENOSYS",`${t}, ${e}`)}
function FGe (line 4) | function FGe(t){return Cc("EINVAL",`invalid argument, ${t}`)}
function Mo (line 4) | function Mo(t){return Cc("EBADF",`bad file descriptor, ${t}`)}
function NGe (line 4) | function NGe(t){return Cc("ENOENT",`no such file or directory, ${t}`)}
function OGe (line 4) | function OGe(t){return Cc("ENOTDIR",`not a directory, ${t}`)}
function LGe (line 4) | function LGe(t){return Cc("EISDIR",`illegal operation on a directory, ${...
function MGe (line 4) | function MGe(t){return Cc("EEXIST",`file already exists, ${t}`)}
function UGe (line 4) | function UGe(t){return Cc("EROFS",`read-only filesystem, ${t}`)}
function _Ge (line 4) | function _Ge(t){return Cc("ENOTEMPTY",`directory not empty, ${t}`)}
function HGe (line 4) | function HGe(t){return Cc("EOPNOTSUPP",`operation not supported, ${t}`)}
function mU (line 4) | function mU(){return Cc("ERR_DIR_CLOSED","Directory handle was closed")}
function GX (line 4) | function GX(){return new nE}
function jGe (line 4) | function jGe(){return Zb(GX())}
function Zb (line 4) | function Zb(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r...
function GGe (line 4) | function GGe(t){let e=new iE;for(let r in t)if(Object.hasOwn(t,r)){let s...
function CU (line 4) | function CU(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs...
method constructor (line 4) | constructor(){this.name="";this.path="";this.mode=0}
method isBlockDevice (line 4) | isBlockDevice(){return!1}
method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
method isDirectory (line 4) | isDirectory(){return(this.mode&61440)===16384}
method isFIFO (line 4) | isFIFO(){return!1}
method isFile (line 4) | isFile(){return(this.mode&61440)===32768}
method isSocket (line 4) | isSocket(){return!1}
method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&61440)===40960}
method constructor (line 4) | constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atim...
method isBlockDevice (line 4) | isBlockDevice(){return!1}
method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
method isDirectory (line 4) | isDirectory(){return(this.mode&61440)===16384}
method isFIFO (line 4) | isFIFO(){return!1}
method isFile (line 4) | isFile(){return(this.mode&61440)===32768}
method isSocket (line 4) | isSocket(){return!1}
method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&61440)===40960}
method constructor (line 4) | constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);...
method isBlockDevice (line 4) | isBlockDevice(){return!1}
method isCharacterDevice (line 4) | isCharacterDevice(){return!1}
method isDirectory (line 4) | isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}
method isFIFO (line 4) | isFIFO(){return!1}
method isFile (line 4) | isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}
method isSocket (line 4) | isSocket(){return!1}
method isSymbolicLink (line 4) | isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}
function JGe (line 4) | function JGe(t){let e,r;if(e=t.match(YGe))t=e[1];else if(r=t.match(VGe))...
function KGe (line 4) | function KGe(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(qGe))?t=...
function Xb (line 4) | function Xb(t,e){return t===fe?WX(e):BU(e)}
function $b (line 4) | async function $b(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.i...
function YX (line 4) | async function YX(t,e,r,s,a){let n=t.pathUtils.normalize(e),c=r.pathUtil...
function vU (line 4) | async function vU(t,e,r,s,a,n,c){let f=c.didParentExist?await VX(r,s):nu...
function VX (line 4) | async function VX(t,e){try{return await t.lstatPromise(e)}catch{return n...
function ZGe (line 4) | async function ZGe(t,e,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p...
function XGe (line 4) | async function XGe(t,e,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromis...
function $Ge (line 4) | async function $Ge(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(...
function eqe (line 4) | async function eqe(t,e,r,s,a,n,c,f,p){return p.linkStrategy?.type==="Har...
function tqe (line 4) | async function tqe(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(...
function ex (line 4) | function ex(t,e,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return n...
method constructor (line 4) | constructor(e,r,s={}){this.path=e;this.nextDirent=r;this.opts=s;this.clo...
method throwIfClosed (line 4) | throwIfClosed(){if(this.closed)throw mU()}
method [Symbol.asyncIterator] (line 4) | async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==nu...
method read (line 4) | read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.reso...
method readSync (line 4) | readSync(){return this.throwIfClosed(),this.nextDirent()}
method close (line 4) | close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}
method closeSync (line 4) | closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}
function KX (line 4) | function KX(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: e...
method constructor (line 4) | constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.chang...
method create (line 4) | static create(r,s,a){let n=new t(r,s,a);return n.start(),n}
method start (line 4) | start(){KX(this.status,"ready"),this.status="running",this.startTimeout=...
method stop (line 4) | stop(){KX(this.status,"running"),this.status="stopped",this.startTimeout...
method stat (line 4) | stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}c...
method makeInterval (line 4) | makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStat...
method registerChangeListener (line 4) | registerChangeListener(r,s){this.addListener("change",r),this.changeList...
method unregisterChangeListener (line 4) | unregisterChangeListener(r){this.removeListener("change",r);let s=this.c...
method unregisterAllChangeListeners (line 4) | unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())...
method hasChangeListeners (line 4) | hasChangeListeners(){return this.changeListeners.size>0}
method ref (line 4) | ref(){for(let r of this.changeListeners.values())r.ref();return this}
method unref (line 4) | unref(){for(let r of this.changeListeners.values())r.unref();return this}
function sE (line 4) | function sE(t,e,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=...
function md (line 4) | function md(t,e,r){let s=rx.get(t);if(typeof s>"u")return;let a=s.get(e)...
function yd (line 4) | function yd(t){let e=rx.get(t);if(!(typeof e>"u"))for(let r of e.keys())...
function rqe (line 4) | function rqe(t){let e=t.match(/\r?\n/g);if(e===null)return $X.EOL;let r=...
function Ed (line 7) | function Ed(t,e){return e.replace(/\r?\n/g,rqe(t))}
method constructor (line 7) | constructor(e){this.pathUtils=e}
method genTraversePromise (line 7) | async*genTraversePromise(e,{stableSort:r=!1}={}){let s=[e];for(;s.length...
method checksumFilePromise (line 7) | async checksumFilePromise(e,{algorithm:r="sha512"}={}){let s=await this....
method removePromise (line 7) | async removePromise(e,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=aw...
method removeSync (line 7) | removeSync(e,{recursive:r=!0}={}){let s;try{s=this.lstatSync(e)}catch(a)...
method mkdirpPromise (line 7) | async mkdirpPromise(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===th...
method mkdirpSync (line 7) | mkdirpSync(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUt...
method copyPromise (line 7) | async copyPromise(e,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stab...
method copySync (line 7) | copySync(e,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=t...
method changeFilePromise (line 7) | async changeFilePromise(e,r,s={}){return Buffer.isBuffer(r)?this.changeF...
method changeFileBufferPromise (line 7) | async changeFileBufferPromise(e,r,{mode:s}={}){let a=Buffer.alloc(0);try...
method changeFileTextPromise (line 7) | async changeFileTextPromise(e,r,{automaticNewlines:s,mode:a}={}){let n="...
method changeFileSync (line 7) | changeFileSync(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBuffer...
method changeFileBufferSync (line 7) | changeFileBufferSync(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.r...
method changeFileTextSync (line 7) | changeFileTextSync(e,r,{automaticNewlines:s=!1,mode:a}={}){let n="";try{...
method movePromise (line 7) | async movePromise(e,r){try{await this.renamePromise(e,r)}catch(s){if(s.c...
method moveSync (line 7) | moveSync(e,r){try{this.renameSync(e,r)}catch(s){if(s.code==="EXDEV")this...
method lockPromise (line 7) | async lockPromise(e,r){let s=`${e}.flock`,a=1e3/60,n=Date.now(),c=null,f...
method readJsonPromise (line 7) | async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{...
method readJsonSync (line 7) | readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(...
method writeJsonPromise (line 7) | async writeJsonPromise(e,r,{compact:s=!1}={}){let a=s?0:2;return await t...
method writeJsonSync (line 8) | writeJsonSync(e,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSy...
method preserveTimePromise (line 9) | async preserveTimePromise(e,r){let s=await this.lstatPromise(e),a=await ...
method preserveTimeSync (line 9) | async preserveTimeSync(e,r){let s=this.lstatSync(e),a=r();typeof a<"u"&&...
method constructor (line 9) | constructor(){super(J)}
method getExtractHint (line 9) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method resolve (line 9) | resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}
method getRealPath (line 9) | getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}
method openPromise (line 9) | async openPromise(e,r,s){return this.baseFs.openPromise(this.mapToBase(e...
method openSync (line 9) | openSync(e,r,s){return this.baseFs.openSync(this.mapToBase(e),r,s)}
method opendirPromise (line 9) | async opendirPromise(e,r){return Object.assign(await this.baseFs.opendir...
method opendirSync (line 9) | opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapTo...
method readPromise (line 9) | async readPromise(e,r,s,a,n){return await this.baseFs.readPromise(e,r,s,...
method readSync (line 9) | readSync(e,r,s,a,n){return this.baseFs.readSync(e,r,s,a,n)}
method writePromise (line 9) | async writePromise(e,r,s,a,n){return typeof r=="string"?await this.baseF...
method writeSync (line 9) | writeSync(e,r,s,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r...
method closePromise (line 9) | async closePromise(e){return this.baseFs.closePromise(e)}
method closeSync (line 9) | closeSync(e){this.baseFs.closeSync(e)}
method createReadStream (line 9) | createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this....
method createWriteStream (line 9) | createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?thi...
method realpathPromise (line 9) | async realpathPromise(e){return this.mapFromBase(await this.baseFs.realp...
method realpathSync (line 9) | realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.ma...
method existsPromise (line 9) | async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}
method existsSync (line 9) | existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}
method accessSync (line 9) | accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}
method accessPromise (line 9) | async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase...
method statPromise (line 9) | async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}
method statSync (line 9) | statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}
method fstatPromise (line 9) | async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}
method fstatSync (line 9) | fstatSync(e,r){return this.baseFs.fstatSync(e,r)}
method lstatPromise (line 9) | lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}
method lstatSync (line 9) | lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}
method fchmodPromise (line 9) | async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}
method fchmodSync (line 9) | fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}
method chmodPromise (line 9) | async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e...
method chmodSync (line 9) | chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}
method fchownPromise (line 9) | async fchownPromise(e,r,s){return this.baseFs.fchownPromise(e,r,s)}
method fchownSync (line 9) | fchownSync(e,r,s){return this.baseFs.fchownSync(e,r,s)}
method chownPromise (line 9) | async chownPromise(e,r,s){return this.baseFs.chownPromise(this.mapToBase...
method chownSync (line 9) | chownSync(e,r,s){return this.baseFs.chownSync(this.mapToBase(e),r,s)}
method renamePromise (line 9) | async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase...
method renameSync (line 9) | renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.map...
method copyFilePromise (line 9) | async copyFilePromise(e,r,s=0){return this.baseFs.copyFilePromise(this.m...
method copyFileSync (line 9) | copyFileSync(e,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(e),...
method appendFilePromise (line 9) | async appendFilePromise(e,r,s){return this.baseFs.appendFilePromise(this...
method appendFileSync (line 9) | appendFileSync(e,r,s){return this.baseFs.appendFileSync(this.fsMapToBase...
method writeFilePromise (line 9) | async writeFilePromise(e,r,s){return this.baseFs.writeFilePromise(this.f...
method writeFileSync (line 9) | writeFileSync(e,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(e...
method unlinkPromise (line 9) | async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}
method unlinkSync (line 9) | unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}
method utimesPromise (line 9) | async utimesPromise(e,r,s){return this.baseFs.utimesPromise(this.mapToBa...
method utimesSync (line 9) | utimesSync(e,r,s){return this.baseFs.utimesSync(this.mapToBase(e),r,s)}
method lutimesPromise (line 9) | async lutimesPromise(e,r,s){return this.baseFs.lutimesPromise(this.mapTo...
method lutimesSync (line 9) | lutimesSync(e,r,s){return this.baseFs.lutimesSync(this.mapToBase(e),r,s)}
method mkdirPromise (line 9) | async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e...
method mkdirSync (line 9) | mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}
method rmdirPromise (line 9) | async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e...
method rmdirSync (line 9) | rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}
method rmPromise (line 9) | async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}
method rmSync (line 9) | rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}
method linkPromise (line 9) | async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),...
method linkSync (line 9) | linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBa...
method symlinkPromise (line 9) | async symlinkPromise(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.is...
method symlinkSync (line 9) | symlinkSync(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(...
method readFilePromise (line 9) | async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMap...
method readFileSync (line 9) | readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}
method readdirPromise (line 9) | readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}
method readdirSync (line 9) | readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}
method readlinkPromise (line 9) | async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readl...
method readlinkSync (line 9) | readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.ma...
method truncatePromise (line 9) | async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapTo...
method truncateSync (line 9) | truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}
method ftruncatePromise (line 9) | async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}
method ftruncateSync (line 9) | ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}
method watch (line 9) | watch(e,r,s){return this.baseFs.watch(this.mapToBase(e),r,s)}
method watchFile (line 9) | watchFile(e,r,s){return this.baseFs.watchFile(this.mapToBase(e),r,s)}
method unwatchFile (line 9) | unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}
method fsMapToBase (line 9) | fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}
method constructor (line 9) | constructor(e,{baseFs:r,pathUtils:s}){super(s),this.target=e,this.baseFs=r}
method getRealPath (line 9) | getRealPath(){return this.target}
method getBaseFs (line 9) | getBaseFs(){return this.baseFs}
method mapFromBase (line 9) | mapFromBase(e){return e}
method mapToBase (line 9) | mapToBase(e){return e}
function t$ (line 9) | function t$(t){let e=t;return typeof t.path=="string"&&(e.path=fe.toPort...
method constructor (line 9) | constructor(e=r$.default){super(),this.realFs=e}
method getExtractHint (line 9) | getExtractHint(){return!1}
method getRealPath (line 9) | getRealPath(){return vt.root}
method resolve (line 9) | resolve(e){return J.resolve(e)}
method openPromise (line 9) | async openPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.op...
method openSync (line 9) | openSync(e,r,s){return this.realFs.openSync(fe.fromPortablePath(e),r,s)}
method opendirPromise (line 9) | async opendirPromise(e,r){return await new Promise((s,a)=>{typeof r<"u"?...
method opendirSync (line 9) | opendirSync(e,r){let a=typeof r<"u"?this.realFs.opendirSync(fe.fromPorta...
method readPromise (line 9) | async readPromise(e,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{thi...
method readSync (line 9) | readSync(e,r,s,a,n){return this.realFs.readSync(e,r,s,a,n)}
method writePromise (line 9) | async writePromise(e,r,s,a,n){return await new Promise((c,f)=>typeof r==...
method writeSync (line 9) | writeSync(e,r,s,a,n){return typeof r=="string"?this.realFs.writeSync(e,r...
method closePromise (line 9) | async closePromise(e){await new Promise((r,s)=>{this.realFs.close(e,this...
method closeSync (line 9) | closeSync(e){this.realFs.closeSync(e)}
method createReadStream (line 9) | createReadStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return thi...
method createWriteStream (line 9) | createWriteStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return th...
method realpathPromise (line 9) | async realpathPromise(e){return await new Promise((r,s)=>{this.realFs.re...
method realpathSync (line 9) | realpathSync(e){return fe.toPortablePath(this.realFs.realpathSync(fe.fro...
method existsPromise (line 9) | async existsPromise(e){return await new Promise(r=>{this.realFs.exists(f...
method accessSync (line 9) | accessSync(e,r){return this.realFs.accessSync(fe.fromPortablePath(e),r)}
method accessPromise (line 9) | async accessPromise(e,r){return await new Promise((s,a)=>{this.realFs.ac...
method existsSync (line 9) | existsSync(e){return this.realFs.existsSync(fe.fromPortablePath(e))}
method statPromise (line 9) | async statPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.st...
method statSync (line 9) | statSync(e,r){return r?this.realFs.statSync(fe.fromPortablePath(e),r):th...
method fstatPromise (line 9) | async fstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.f...
method fstatSync (line 9) | fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync...
method lstatPromise (line 9) | async lstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.l...
method lstatSync (line 9) | lstatSync(e,r){return r?this.realFs.lstatSync(fe.fromPortablePath(e),r):...
method fchmodPromise (line 9) | async fchmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.fc...
method fchmodSync (line 9) | fchmodSync(e,r){return this.realFs.fchmodSync(e,r)}
method chmodPromise (line 9) | async chmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.chm...
method chmodSync (line 9) | chmodSync(e,r){return this.realFs.chmodSync(fe.fromPortablePath(e),r)}
method fchownPromise (line 9) | async fchownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs....
method fchownSync (line 9) | fchownSync(e,r,s){return this.realFs.fchownSync(e,r,s)}
method chownPromise (line 9) | async chownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.c...
method chownSync (line 9) | chownSync(e,r,s){return this.realFs.chownSync(fe.fromPortablePath(e),r,s)}
method renamePromise (line 9) | async renamePromise(e,r){return await new Promise((s,a)=>{this.realFs.re...
method renameSync (line 9) | renameSync(e,r){return this.realFs.renameSync(fe.fromPortablePath(e),fe....
method copyFilePromise (line 9) | async copyFilePromise(e,r,s=0){return await new Promise((a,n)=>{this.rea...
method copyFileSync (line 9) | copyFileSync(e,r,s=0){return this.realFs.copyFileSync(fe.fromPortablePat...
method appendFilePromise (line 9) | async appendFilePromise(e,r,s){return await new Promise((a,n)=>{let c=ty...
method appendFileSync (line 9) | appendFileSync(e,r,s){let a=typeof e=="string"?fe.fromPortablePath(e):e;...
method writeFilePromise (line 9) | async writeFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typ...
method writeFileSync (line 9) | writeFileSync(e,r,s){let a=typeof e=="string"?fe.fromPortablePath(e):e;s...
method unlinkPromise (line 9) | async unlinkPromise(e){return await new Promise((r,s)=>{this.realFs.unli...
method unlinkSync (line 9) | unlinkSync(e){return this.realFs.unlinkSync(fe.fromPortablePath(e))}
method utimesPromise (line 9) | async utimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs....
method utimesSync (line 9) | utimesSync(e,r,s){this.realFs.utimesSync(fe.fromPortablePath(e),r,s)}
method lutimesPromise (line 9) | async lutimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs...
method lutimesSync (line 9) | lutimesSync(e,r,s){this.realFs.lutimesSync(fe.fromPortablePath(e),r,s)}
method mkdirPromise (line 9) | async mkdirPromise(e,r){return await new Promise((s,a)=>{this.realFs.mkd...
method mkdirSync (line 9) | mkdirSync(e,r){return this.realFs.mkdirSync(fe.fromPortablePath(e),r)}
method rmdirPromise (line 9) | async rmdirPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.r...
method rmdirSync (line 9) | rmdirSync(e,r){return this.realFs.rmdirSync(fe.fromPortablePath(e),r)}
method rmPromise (line 9) | async rmPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rm(f...
method rmSync (line 9) | rmSync(e,r){return this.realFs.rmSync(fe.fromPortablePath(e),r)}
method linkPromise (line 9) | async linkPromise(e,r){return await new Promise((s,a)=>{this.realFs.link...
method linkSync (line 9) | linkSync(e,r){return this.realFs.linkSync(fe.fromPortablePath(e),fe.from...
method symlinkPromise (line 9) | async symlinkPromise(e,r,s){return await new Promise((a,n)=>{this.realFs...
method symlinkSync (line 9) | symlinkSync(e,r,s){return this.realFs.symlinkSync(fe.fromPortablePath(e....
method readFilePromise (line 9) | async readFilePromise(e,r){return await new Promise((s,a)=>{let n=typeof...
method readFileSync (line 9) | readFileSync(e,r){let s=typeof e=="string"?fe.fromPortablePath(e):e;retu...
method readdirPromise (line 9) | async readdirPromise(e,r){return await new Promise((s,a)=>{r?r.recursive...
method readdirSync (line 9) | readdirSync(e,r){return r?r.recursive&&process.platform==="win32"?r.with...
method readlinkPromise (line 9) | async readlinkPromise(e){return await new Promise((r,s)=>{this.realFs.re...
method readlinkSync (line 9) | readlinkSync(e){return fe.toPortablePath(this.realFs.readlinkSync(fe.fro...
method truncatePromise (line 9) | async truncatePromise(e,r){return await new Promise((s,a)=>{this.realFs....
method truncateSync (line 9) | truncateSync(e,r){return this.realFs.truncateSync(fe.fromPortablePath(e)...
method ftruncatePromise (line 9) | async ftruncatePromise(e,r){return await new Promise((s,a)=>{this.realFs...
method ftruncateSync (line 9) | ftruncateSync(e,r){return this.realFs.ftruncateSync(e,r)}
method watch (line 9) | watch(e,r,s){return this.realFs.watch(fe.fromPortablePath(e),r,s)}
method watchFile (line 9) | watchFile(e,r,s){return this.realFs.watchFile(fe.fromPortablePath(e),r,s)}
method unwatchFile (line 9) | unwatchFile(e,r){return this.realFs.unwatchFile(fe.fromPortablePath(e),r)}
method makeCallback (line 9) | makeCallback(e,r){return(s,a)=>{s?r(s):e(a)}}
method constructor (line 9) | constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils....
method getRealPath (line 9) | getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),th...
method resolve (line 9) | resolve(e){return this.pathUtils.isAbsolute(e)?J.normalize(e):this.baseF...
method mapFromBase (line 9) | mapFromBase(e){return e}
method mapToBase (line 9) | mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(t...
method constructor (line 9) | constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils....
method getRealPath (line 9) | getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),th...
method getTarget (line 9) | getTarget(){return this.target}
method getBaseFs (line 9) | getBaseFs(){return this.baseFs}
method mapToBase (line 9) | mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsol...
method mapFromBase (line 9) | mapFromBase(e){return this.pathUtils.resolve(i$,this.pathUtils.relative(...
method constructor (line 9) | constructor(r,s){super(s);this.instance=null;this.factory=r}
method baseFs (line 9) | get baseFs(){return this.instance||(this.instance=this.factory()),this.i...
method baseFs (line 9) | set baseFs(r){this.instance=r}
method mapFromBase (line 9) | mapFromBase(r){return r}
method mapToBase (line 9) | mapToBase(r){return r}
method constructor (line 9) | constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n...
method getExtractHint (line 9) | getExtractHint(r){return this.baseFs.getExtractHint(r)}
method getRealPath (line 9) | getRealPath(){return this.baseFs.getRealPath()}
method saveAndClose (line 9) | saveAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]of ...
method discardAndClose (line 9) | discardAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]...
method resolve (line 9) | resolve(r){return this.baseFs.resolve(r)}
method remapFd (line 9) | remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s...
method openPromise (line 9) | async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>aw...
method openSync (line 9) | openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,...
method opendirPromise (line 9) | async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>a...
method opendirSync (line 9) | opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(...
method readPromise (line 9) | async readPromise(r,s,a,n,c){if((r&tl)!==this.magic)return await this.ba...
method readSync (line 9) | readSync(r,s,a,n,c){if((r&tl)!==this.magic)return this.baseFs.readSync(r...
method writePromise (line 9) | async writePromise(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s=="s...
method writeSync (line 9) | writeSync(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s=="string"?th...
method closePromise (line 9) | async closePromise(r){if((r&tl)!==this.magic)return await this.baseFs.cl...
method closeSync (line 9) | closeSync(r){if((r&tl)!==this.magic)return this.baseFs.closeSync(r);let ...
method createReadStream (line 9) | createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):...
method createWriteStream (line 9) | createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s...
method realpathPromise (line 9) | async realpathPromise(r){return await this.makeCallPromise(r,async()=>aw...
method realpathSync (line 9) | realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(...
method existsPromise (line 9) | async existsPromise(r){return await this.makeCallPromise(r,async()=>awai...
method existsSync (line 9) | existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(...
method accessPromise (line 9) | async accessPromise(r,s){return await this.makeCallPromise(r,async()=>aw...
method accessSync (line 9) | accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,...
method statPromise (line 9) | async statPromise(r,s){return await this.makeCallPromise(r,async()=>awai...
method statSync (line 9) | statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(...
method fstatPromise (line 9) | async fstatPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatP...
method fstatSync (line 9) | fstatSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatSync(r,s);...
method lstatPromise (line 9) | async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>awa...
method lstatSync (line 9) | lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s)...
method fchmodPromise (line 9) | async fchmodPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmo...
method fchmodSync (line 9) | fchmodSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmodSync(r,s...
method chmodPromise (line 9) | async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>awa...
method chmodSync (line 9) | chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s)...
method fchownPromise (line 9) | async fchownPromise(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fch...
method fchownSync (line 9) | fchownSync(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fchownSync(r...
method chownPromise (line 9) | async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>a...
method chownSync (line 9) | chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,...
method renamePromise (line 9) | async renamePromise(r,s){return await this.makeCallPromise(r,async()=>aw...
method renameSync (line 9) | renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>t...
method copyFilePromise (line 9) | async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&wd.constants....
method copyFileSync (line 9) | copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&wd.constants.COPYFILE_FICLO...
method appendFilePromise (line 9) | async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async...
method appendFileSync (line 9) | appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendF...
method writeFilePromise (line 9) | async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async(...
method writeFileSync (line 9) | writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFil...
method unlinkPromise (line 9) | async unlinkPromise(r){return await this.makeCallPromise(r,async()=>awai...
method unlinkSync (line 9) | unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(...
method utimesPromise (line 9) | async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>...
method utimesSync (line 9) | utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(...
method lutimesPromise (line 9) | async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=...
method lutimesSync (line 9) | lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSyn...
method mkdirPromise (line 9) | async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>awa...
method mkdirSync (line 9) | mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s)...
method rmdirPromise (line 9) | async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>awa...
method rmdirSync (line 9) | rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s)...
method rmPromise (line 9) | async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await ...
method rmSync (line 9) | rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{s...
method linkPromise (line 9) | async linkPromise(r,s){return await this.makeCallPromise(s,async()=>awai...
method linkSync (line 9) | linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(...
method symlinkPromise (line 9) | async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=...
method symlinkSync (line 9) | symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSyn...
method readFilePromise (line 9) | async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await ...
method readFileSync (line 9) | readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSyn...
method readdirPromise (line 9) | async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>a...
method readdirSync (line 9) | readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(...
method readlinkPromise (line 9) | async readlinkPromise(r){return await this.makeCallPromise(r,async()=>aw...
method readlinkSync (line 9) | readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(...
method truncatePromise (line 9) | async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>...
method truncateSync (line 9) | truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSyn...
method ftruncatePromise (line 9) | async ftruncatePromise(r,s){if((r&tl)!==this.magic)return this.baseFs.ft...
method ftruncateSync (line 9) | ftruncateSync(r,s){if((r&tl)!==this.magic)return this.baseFs.ftruncateSy...
method watch (line 9) | watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,...
method watchFile (line 9) | watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,...
method unwatchFile (line 9) | unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(...
method makeCallPromise (line 9) | async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="stri...
method makeCallSync (line 9) | makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!="string")retur...
method findMount (line 9) | findMount(r){if(this.filter&&!this.filter.test(r))return null;let s="";f...
method limitOpenFiles (line 9) | limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),...
method getMountPromise (line 9) | async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInsta...
method getMountSync (line 9) | getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(...
method constructor (line 9) | constructor(){super(J)}
method getExtractHint (line 9) | getExtractHint(){throw er()}
method getRealPath (line 9) | getRealPath(){throw er()}
method resolve (line 9) | resolve(){throw er()}
method openPromise (line 9) | async openPromise(){throw er()}
method openSync (line 9) | openSync(){throw er()}
method opendirPromise (line 9) | async opendirPromise(){throw er()}
method opendirSync (line 9) | opendirSync(){throw er()}
method readPromise (line 9) | async readPromise(){throw er()}
method readSync (line 9) | readSync(){throw er()}
method writePromise (line 9) | async writePromise(){throw er()}
method writeSync (line 9) | writeSync(){throw er()}
method closePromise (line 9) | async closePromise(){throw er()}
method closeSync (line 9) | closeSync(){throw er()}
method createWriteStream (line 9) | createWriteStream(){throw er()}
method createReadStream (line 9) | createReadStream(){throw er()}
method realpathPromise (line 9) | async realpathPromise(){throw er()}
method realpathSync (line 9) | realpathSync(){throw er()}
method readdirPromise (line 9) | async readdirPromise(){throw er()}
method readdirSync (line 9) | readdirSync(){throw er()}
method existsPromise (line 9) | async existsPromise(e){throw er()}
method existsSync (line 9) | existsSync(e){throw er()}
method accessPromise (line 9) | async accessPromise(){throw er()}
method accessSync (line 9) | accessSync(){throw er()}
method statPromise (line 9) | async statPromise(){throw er()}
method statSync (line 9) | statSync(){throw er()}
method fstatPromise (line 9) | async fstatPromise(e){throw er()}
method fstatSync (line 9) | fstatSync(e){throw er()}
method lstatPromise (line 9) | async lstatPromise(e){throw er()}
method lstatSync (line 9) | lstatSync(e){throw er()}
method fchmodPromise (line 9) | async fchmodPromise(){throw er()}
method fchmodSync (line 9) | fchmodSync(){throw er()}
method chmodPromise (line 9) | async chmodPromise(){throw er()}
method chmodSync (line 9) | chmodSync(){throw er()}
method fchownPromise (line 9) | async fchownPromise(){throw er()}
method fchownSync (line 9) | fchownSync(){throw er()}
method chownPromise (line 9) | async chownPromise(){throw er()}
method chownSync (line 9) | chownSync(){throw er()}
method mkdirPromise (line 9) | async mkdirPromise(){throw er()}
method mkdirSync (line 9) | mkdirSync(){throw er()}
method rmdirPromise (line 9) | async rmdirPromise(){throw er()}
method rmdirSync (line 9) | rmdirSync(){throw er()}
method rmPromise (line 9) | async rmPromise(){throw er()}
method rmSync (line 9) | rmSync(){throw er()}
method linkPromise (line 9) | async linkPromise(){throw er()}
method linkSync (line 9) | linkSync(){throw er()}
method symlinkPromise (line 9) | async symlinkPromise(){throw er()}
method symlinkSync (line 9) | symlinkSync(){throw er()}
method renamePromise (line 9) | async renamePromise(){throw er()}
method renameSync (line 9) | renameSync(){throw er()}
method copyFilePromise (line 9) | async copyFilePromise(){throw er()}
method copyFileSync (line 9) | copyFileSync(){throw er()}
method appendFilePromise (line 9) | async appendFilePromise(){throw er()}
method appendFileSync (line 9) | appendFileSync(){throw er()}
method writeFilePromise (line 9) | async writeFilePromise(){throw er()}
method writeFileSync (line 9) | writeFileSync(){throw er()}
method unlinkPromise (line 9) | async unlinkPromise(){throw er()}
method unlinkSync (line 9) | unlinkSync(){throw er()}
method utimesPromise (line 9) | async utimesPromise(){throw er()}
method utimesSync (line 9) | utimesSync(){throw er()}
method lutimesPromise (line 9) | async lutimesPromise(){throw er()}
method lutimesSync (line 9) | lutimesSync(){throw er()}
method readFilePromise (line 9) | async readFilePromise(){throw er()}
method readFileSync (line 9) | readFileSync(){throw er()}
method readlinkPromise (line 9) | async readlinkPromise(){throw er()}
method readlinkSync (line 9) | readlinkSync(){throw er()}
method truncatePromise (line 9) | async truncatePromise(){throw er()}
method truncateSync (line 9) | truncateSync(){throw er()}
method ftruncatePromise (line 9) | async ftruncatePromise(e,r){throw er()}
method ftruncateSync (line 9) | ftruncateSync(e,r){throw er()}
method watch (line 9) | watch(){throw er()}
method watchFile (line 9) | watchFile(){throw er()}
method unwatchFile (line 9) | unwatchFile(){throw er()}
method constructor (line 9) | constructor(e){super(fe),this.baseFs=e}
method mapFromBase (line 9) | mapFromBase(e){return fe.fromPortablePath(e)}
method mapToBase (line 9) | mapToBase(e){return fe.toPortablePath(e)}
method makeVirtualPath (line 9) | static makeVirtualPath(e,r,s){if(J.basename(e)!=="__virtual__")throw new...
method resolveVirtual (line 9) | static resolveVirtual(e){let r=e.match(PU);if(!r||!r[3]&&r[5])return e;l...
method constructor (line 9) | constructor({baseFs:e=new Yn}={}){super(J),this.baseFs=e}
method getExtractHint (line 9) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method getRealPath (line 9) | getRealPath(){return this.baseFs.getRealPath()}
method realpathSync (line 9) | realpathSync(e){let r=e.match(PU);if(!r)return this.baseFs.realpathSync(...
method realpathPromise (line 9) | async realpathPromise(e){let r=e.match(PU);if(!r)return await this.baseF...
method mapToBase (line 9) | mapToBase(e){if(e==="")return e;if(this.pathUtils.isAbsolute(e))return t...
method mapFromBase (line 9) | mapFromBase(e){return e}
function sqe (line 9) | function sqe(t,e){return typeof bU.default.isUtf8<"u"?bU.default.isUtf8(...
method constructor (line 9) | constructor(e){super(fe),this.baseFs=e}
method mapFromBase (line 9) | mapFromBase(e){return e}
method mapToBase (line 9) | mapToBase(e){if(typeof e=="string")return e;if(e instanceof URL)return(0...
method constructor (line 9) | constructor(e,r){this[m$]=1;this[d$]=void 0;this[g$]=void 0;this[h$]=voi...
method fd (line 9) | get fd(){return this[Ep]}
method appendFile (line 9) | async appendFile(e,r){try{this[Tu](this.appendFile);let s=(typeof r=="st...
method chown (line 9) | async chown(e,r){try{return this[Tu](this.chown),await this[Uo].fchownPr...
method chmod (line 9) | async chmod(e){try{return this[Tu](this.chmod),await this[Uo].fchmodProm...
method createReadStream (line 9) | createReadStream(e){return this[Uo].createReadStream(null,{...e,fd:this....
method createWriteStream (line 9) | createWriteStream(e){return this[Uo].createWriteStream(null,{...e,fd:thi...
method datasync (line 9) | datasync(){throw new Error("Method not implemented.")}
method sync (line 9) | sync(){throw new Error("Method not implemented.")}
method read (line 9) | async read(e,r,s,a){try{this[Tu](this.read);let n;return Buffer.isBuffer...
method readFile (line 9) | async readFile(e){try{this[Tu](this.readFile);let r=(typeof e=="string"?...
method readLines (line 9) | readLines(e){return(0,y$.createInterface)({input:this.createReadStream(e...
method stat (line 9) | async stat(e){try{return this[Tu](this.stat),await this[Uo].fstatPromise...
method truncate (line 9) | async truncate(e){try{return this[Tu](this.truncate),await this[Uo].ftru...
method utimes (line 9) | utimes(e,r){throw new Error("Method not implemented.")}
method writeFile (line 9) | async writeFile(e,r){try{this[Tu](this.writeFile);let s=(typeof r=="stri...
method write (line 9) | async write(...e){try{if(this[Tu](this.write),ArrayBuffer.isView(e[0])){...
method writev (line 9) | async writev(e,r){try{this[Tu](this.writev);let s=0;if(typeof r<"u")for(...
method readv (line 9) | readv(e,r){throw new Error("Method not implemented.")}
method close (line 9) | close(){if(this[Ep]===-1)return Promise.resolve();if(this[r0])return thi...
method [(Uo,Ep,m$=aE,d$=r0,g$=sx,h$=ox,Tu)] (line 9) | [(Uo,Ep,m$=aE,d$=r0,g$=sx,h$=ox,Tu)](e){if(this[Ep]===-1){let r=new Erro...
method [Fu] (line 9) | [Fu](){if(this[aE]--,this[aE]===0){let e=this[Ep];this[Ep]=-1,this[Uo].c...
function U2 (line 9) | function U2(t,e){e=new ix(e);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?...
function ax (line 9) | function ax(t,e){let r=Object.create(t);return U2(r,e),r}
function w$ (line 9) | function w$(t){let e=Math.ceil(Math.random()*4294967296).toString(16).pa...
function B$ (line 9) | function B$(){if(xU)return xU;let t=fe.toPortablePath(v$.default.tmpdir(...
method detachTemp (line 9) | detachTemp(t){Nu.delete(t)}
method mktempSync (line 9) | mktempSync(t){let{tmpdir:e,realTmpdir:r}=B$();for(;;){let s=w$("xfs-");t...
method mktempPromise (line 9) | async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=B$();for(;;){let s=w$(...
method rmtempPromise (line 9) | async rmtempPromise(){await Promise.all(Array.from(Nu.values()).map(asyn...
method rmtempSync (line 9) | rmtempSync(){for(let t of Nu)try{ce.removeSync(t),Nu.delete(t)}catch{}}
function aqe (line 9) | function aqe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT...
function P$ (line 9) | function P$(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:aqe(e,r)}
function b$ (line 9) | function b$(t,e,r){D$.stat(t,function(s,a){r(s,s?!1:P$(a,t,e))})}
function lqe (line 9) | function lqe(t,e){return P$(D$.statSync(t),t,e)}
function R$ (line 9) | function R$(t,e,r){Q$.stat(t,function(s,a){r(s,s?!1:T$(a,e))})}
function cqe (line 9) | function cqe(t,e){return T$(Q$.statSync(t),e)}
function T$ (line 9) | function T$(t,e){return t.isFile()&&uqe(t,e)}
function uqe (line 9) | function uqe(t,e){var r=t.mode,s=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:pr...
function kU (line 9) | function kU(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Pro...
function fqe (line 9) | function fqe(t,e){try{return lx.sync(t,e||{})}catch(r){if(e&&e.ignoreErr...
function J$ (line 9) | function J$(t,e){let r=t.options.env||process.env,s=process.cwd(),a=t.op...
function dqe (line 9) | function dqe(t){return J$(t)||J$(t,!0)}
function mqe (line 9) | function mqe(t){return t=t.replace(RU,"^$1"),t}
function yqe (line 9) | function yqe(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"...
function Cqe (line 9) | function Cqe(t){let r=Buffer.alloc(150),s;try{s=FU.openSync(t,"r"),FU.re...
function Pqe (line 9) | function Pqe(t){t.file=iee(t);let e=t.file&&Bqe(t.file);return e?(t.args...
function bqe (line 9) | function bqe(t){if(!vqe)return t;let e=Pqe(t),r=!Sqe.test(e);if(t.option...
function xqe (line 9) | function xqe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[]...
function OU (line 9) | function OU(t,e){return Object.assign(new Error(`${e} ${t.command} ENOEN...
function kqe (line 9) | function kqe(t,e){if(!NU)return;let r=t.emit;t.emit=function(s,a){if(s==...
function lee (line 9) | function lee(t,e){return NU&&t===1&&!e.file?OU(e.original,"spawn"):null}
function Qqe (line 9) | function Qqe(t,e){return NU&&t===1&&!e.file?OU(e.original,"spawnSync"):n...
function Aee (line 9) | function Aee(t,e,r){let s=LU(t,e,r),a=fee.spawn(s.command,s.args,s.optio...
function Rqe (line 9) | function Rqe(t,e,r){let s=LU(t,e,r),a=fee.spawnSync(s.command,s.args,s.o...
function Tqe (line 9) | function Tqe(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function Bd (line 9) | function Bd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.lo...
function s (line 9) | function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 9) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 9) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function c (line 9) | function c(h){return r[h.type](h)}
function f (line 9) | function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=...
function p (line 9) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function Fqe (line 9) | function Fqe(t,e){e=e!==void 0?e:{};var r={},s={Start:Wa},a=Wa,n=functio...
function ux (line 12) | function ux(t,e={isGlobPattern:()=>!1}){try{return(0,gee.parse)(t,e)}cat...
function fE (line 12) | function fE(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:s},a...
function fx (line 12) | function fx(t){return`${AE(t.chain)}${t.then?` ${_U(t.then)}`:""}`}
function _U (line 12) | function _U(t){return`${t.type} ${fx(t.line)}`}
function AE (line 12) | function AE(t){return`${jU(t)}${t.then?` ${HU(t.then)}`:""}`}
function HU (line 12) | function HU(t){return`${t.type} ${AE(t.chain)}`}
function jU (line 12) | function jU(t){switch(t.type){case"command":return`${t.envs.length>0?`${...
function cx (line 12) | function cx(t){return`${t.name}=${t.args[0]?vd(t.args[0]):""}`}
function GU (line 12) | function GU(t){switch(t.type){case"redirection":return H2(t);case"argume...
function H2 (line 12) | function H2(t){return`${t.subtype} ${t.args.map(e=>vd(e)).join(" ")}`}
function vd (line 12) | function vd(t){return t.segments.map(e=>qU(e)).join("")}
function qU (line 12) | function qU(t){let e=(s,a)=>a?`"${s}"`:s,r=s=>s===""?"''":s.match(/[()}<...
function Ax (line 12) | function Ax(t){let e=a=>{switch(a){case"addition":return"+";case"subtrac...
function Lqe (line 13) | function Lqe(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function Sd (line 13) | function Sd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.lo...
function s (line 13) | function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 13) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 13) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function c (line 13) | function c(h){return r[h.type](h)}
function f (line 13) | function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=...
function p (line 13) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function Mqe (line 13) | function Mqe(t,e){e=e!==void 0?e:{};var r={},s={resolution:Ne},a=Ne,n="/...
function px (line 13) | function px(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The...
function hx (line 13) | function hx(t){let e="";return t.from&&(e+=t.from.fullName,t.from.descri...
function Bee (line 13) | function Bee(t){return typeof t>"u"||t===null}
function Uqe (line 13) | function Uqe(t){return typeof t=="object"&&t!==null}
function _qe (line 13) | function _qe(t){return Array.isArray(t)?t:Bee(t)?[]:[t]}
function Hqe (line 13) | function Hqe(t,e){var r,s,a,n;if(e)for(n=Object.keys(e),r=0,s=n.length;r...
function jqe (line 13) | function jqe(t,e){var r="",s;for(s=0;s<e;s+=1)r+=t;return r}
function Gqe (line 13) | function Gqe(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}
function j2 (line 13) | function j2(t,e){Error.call(this),this.name="YAMLException",this.reason=...
function WU (line 13) | function WU(t,e,r,s,a){this.name=t,this.buffer=e,this.position=r,this.li...
function Yqe (line 17) | function Yqe(t){var e={};return t!==null&&Object.keys(t).forEach(functio...
function Vqe (line 17) | function Vqe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(qqe.i...
function YU (line 17) | function YU(t,e,r){var s=[];return t.include.forEach(function(a){r=YU(a,...
function Kqe (line 17) | function Kqe(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;...
function hE (line 17) | function hE(t){this.include=t.include||[],this.implicit=t.implicit||[],t...
function t5e (line 17) | function t5e(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~...
function r5e (line 17) | function r5e(){return null}
function n5e (line 17) | function n5e(t){return t===null}
function s5e (line 17) | function s5e(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="...
function o5e (line 17) | function o5e(t){return t==="true"||t==="True"||t==="TRUE"}
function a5e (line 17) | function a5e(t){return Object.prototype.toString.call(t)==="[object Bool...
function u5e (line 17) | function u5e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}
function f5e (line 17) | function f5e(t){return 48<=t&&t<=55}
function A5e (line 17) | function A5e(t){return 48<=t&&t<=57}
function p5e (line 17) | function p5e(t){if(t===null)return!1;var e=t.length,r=0,s=!1,a;if(!e)ret...
function h5e (line 17) | function h5e(t){var e=t,r=1,s,a,n=[];return e.indexOf("_")!==-1&&(e=e.re...
function g5e (line 17) | function g5e(t){return Object.prototype.toString.call(t)==="[object Numb...
function y5e (line 17) | function y5e(t){return!(t===null||!m5e.test(t)||t[t.length-1]==="_")}
function E5e (line 17) | function E5e(t){var e,r,s,a;return e=t.replace(/_/g,"").toLowerCase(),r=...
function C5e (line 17) | function C5e(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".na...
function w5e (line 17) | function w5e(t){return Object.prototype.toString.call(t)==="[object Numb...
function D5e (line 17) | function D5e(t){return t===null?!1:zee.exec(t)!==null||Zee.exec(t)!==null}
function P5e (line 17) | function P5e(t){var e,r,s,a,n,c,f,p=0,h=null,E,C,S;if(e=zee.exec(t),e===...
function b5e (line 17) | function b5e(t){return t.toISOString()}
function k5e (line 17) | function k5e(t){return t==="<<"||t===null}
function R5e (line 18) | function R5e(t){if(t===null)return!1;var e,r,s=0,a=t.length,n=KU;for(r=0...
function T5e (line 18) | function T5e(t){var e,r,s=t.replace(/[\r\n=]/g,""),a=s.length,n=KU,c=0,f...
function F5e (line 18) | function F5e(t){var e="",r=0,s,a,n=t.length,c=KU;for(s=0;s<n;s++)s%3===0...
function N5e (line 18) | function N5e(t){return xd&&xd.isBuffer(t)}
function U5e (line 18) | function U5e(t){if(t===null)return!0;var e=[],r,s,a,n,c,f=t;for(r=0,s=f....
function _5e (line 18) | function _5e(t){return t!==null?t:[]}
function G5e (line 18) | function G5e(t){if(t===null)return!0;var e,r,s,a,n,c=t;for(n=new Array(c...
function q5e (line 18) | function q5e(t){if(t===null)return[];var e,r,s,a,n,c=t;for(n=new Array(c...
function V5e (line 18) | function V5e(t){if(t===null)return!0;var e,r=t;for(e in r)if(Y5e.call(r,...
function J5e (line 18) | function J5e(t){return t!==null?t:{}}
function Z5e (line 18) | function Z5e(){return!0}
function X5e (line 18) | function X5e(){}
function $5e (line 18) | function $5e(){return""}
function e9e (line 18) | function e9e(t){return typeof t>"u"}
function r9e (line 18) | function r9e(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)...
function n9e (line 18) | function n9e(t){var e=t,r=/\/([gim]*)$/.exec(t),s="";return e[0]==="/"&&...
function i9e (line 18) | function i9e(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multi...
function s9e (line 18) | function s9e(t){return Object.prototype.toString.call(t)==="[object RegE...
function a9e (line 18) | function a9e(t){if(t===null)return!1;try{var e="("+t+")",r=mx.parse(e,{r...
function l9e (line 18) | function l9e(t){var e="("+t+")",r=mx.parse(e,{range:!0}),s=[],a;if(r.typ...
function c9e (line 18) | function c9e(t){return t.toString()}
function u9e (line 18) | function u9e(t){return Object.prototype.toString.call(t)==="[object Func...
function wte (line 18) | function wte(t){return Object.prototype.toString.call(t)}
function jf (line 18) | function jf(t){return t===10||t===13}
function Qd (line 18) | function Qd(t){return t===9||t===32}
function rl (line 18) | function rl(t){return t===9||t===32||t===10||t===13}
function dE (line 18) | function dE(t){return t===44||t===91||t===93||t===123||t===125}
function m9e (line 18) | function m9e(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-9...
function y9e (line 18) | function y9e(t){return t===120?2:t===117?4:t===85?8:0}
function E9e (line 18) | function E9e(t){return 48<=t&&t<=57?t-48:-1}
function Bte (line 18) | function Bte(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t=...
function I9e (line 19) | function I9e(t){return t<=65535?String.fromCharCode(t):String.fromCharCo...
function C9e (line 19) | function C9e(t,e){this.input=t,this.filename=e.filename||null,this.schem...
function Nte (line 19) | function Nte(t,e){return new Pte(e,new f9e(t.filename,t.input,t.position...
function Tr (line 19) | function Tr(t,e){throw Nte(t,e)}
function Ix (line 19) | function Ix(t,e){t.onWarning&&t.onWarning.call(null,Nte(t,e))}
function n0 (line 19) | function n0(t,e,r,s){var a,n,c,f;if(e<r){if(f=t.input.slice(e,r),s)for(a...
function Ste (line 19) | function Ste(t,e,r,s){var a,n,c,f;for(Ip.isObject(r)||Tr(t,"cannot merge...
function mE (line 19) | function mE(t,e,r,s,a,n,c,f){var p,h;if(Array.isArray(a))for(a=Array.pro...
function ZU (line 19) | function ZU(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position+...
function os (line 19) | function os(t,e,r){for(var s=0,a=t.input.charCodeAt(t.position);a!==0;){...
function Cx (line 19) | function Cx(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r==...
function XU (line 19) | function XU(t,e){e===1?t.result+=" ":e>1&&(t.result+=Ip.repeat(`
function w9e (line 20) | function w9e(t,e,r){var s,a,n,c,f,p,h,E,C=t.kind,S=t.result,b;if(b=t.inp...
function B9e (line 20) | function B9e(t,e){var r,s,a;if(r=t.input.charCodeAt(t.position),r!==39)r...
function v9e (line 20) | function v9e(t,e){var r,s,a,n,c,f;if(f=t.input.charCodeAt(t.position),f!...
function S9e (line 20) | function S9e(t,e){var r=!0,s,a=t.tag,n,c=t.anchor,f,p,h,E,C,S={},b,I,T,N...
function D9e (line 20) | function D9e(t,e){var r,s,a=zU,n=!1,c=!1,f=e,p=0,h=!1,E,C;if(C=t.input.c...
function Dte (line 26) | function Dte(t,e){var r,s=t.tag,a=t.anchor,n=[],c,f=!1,p;for(t.anchor!==...
function P9e (line 26) | function P9e(t,e,r){var s,a,n,c,f=t.tag,p=t.anchor,h={},E={},C=null,S=nu...
function b9e (line 26) | function b9e(t){var e,r=!1,s=!1,a,n,c;if(c=t.input.charCodeAt(t.position...
function x9e (line 26) | function x9e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)retur...
function k9e (line 26) | function k9e(t){var e,r,s;if(s=t.input.charCodeAt(t.position),s!==42)ret...
function yE (line 26) | function yE(t,e,r,s,a){var n,c,f,p=1,h=!1,E=!1,C,S,b,I,T;if(t.listener!=...
function Q9e (line 26) | function Q9e(t){var e=t.position,r,s,a,n=!1,c;for(t.version=null,t.check...
function Ote (line 26) | function Ote(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.leng...
function Lte (line 27) | function Lte(t,e,r){e!==null&&typeof e=="object"&&typeof r>"u"&&(r=e,e=n...
function Mte (line 27) | function Mte(t,e){var r=Ote(t,e);if(r.length!==0){if(r.length===1)return...
function R9e (line 27) | function R9e(t,e,r){return typeof e=="object"&&e!==null&&typeof r>"u"&&(...
function T9e (line 27) | function T9e(t,e){return Mte(t,Ip.extend({schema:bte},e))}
function $9e (line 27) | function $9e(t,e){var r,s,a,n,c,f,p;if(e===null)return{};for(r={},s=Obje...
function _te (line 27) | function _te(t){var e,r,s;if(e=t.toString(16).toUpperCase(),t<=255)r="x"...
function eWe (line 27) | function eWe(t){this.schema=t.schema||F9e,this.indent=Math.max(1,t.inden...
function Hte (line 27) | function Hte(t,e){for(var r=Y2.repeat(" ",e),s=0,a=-1,n="",c,f=t.length;...
function $U (line 29) | function $U(t,e){return`
function tWe (line 30) | function tWe(t,e){var r,s,a;for(r=0,s=t.implicitTypes.length;r<s;r+=1)if...
function t_ (line 30) | function t_(t){return t===M9e||t===O9e}
function EE (line 30) | function EE(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==823...
function rWe (line 30) | function rWe(t){return EE(t)&&!t_(t)&&t!==65279&&t!==L9e&&t!==W2}
function jte (line 30) | function jte(t,e){return EE(t)&&t!==65279&&t!==zte&&t!==Xte&&t!==$te&&t!...
function nWe (line 30) | function nWe(t){return EE(t)&&t!==65279&&!t_(t)&&t!==W9e&&t!==J9e&&t!==Z...
function rre (line 30) | function rre(t){var e=/^\n* /;return e.test(t)}
function iWe (line 30) | function iWe(t,e,r,s,a){var n,c,f,p=!1,h=!1,E=s!==-1,C=-1,S=nWe(t.charCo...
function sWe (line 30) | function sWe(t,e,r,s){t.dump=function(){if(e.length===0)return"''";if(!t...
function Gte (line 30) | function Gte(t,e){var r=rre(t)?String(e):"",s=t[t.length-1]===`
function qte (line 34) | function qte(t){return t[t.length-1]===`
function oWe (line 35) | function oWe(t,e){for(var r=/(\n+)([^\n]*)/g,s=function(){var h=t.indexOf(`
function Wte (line 38) | function Wte(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,s,a=...
function aWe (line 41) | function aWe(t){for(var e="",r,s,a,n=0;n<t.length;n++){if(r=t.charCodeAt...
function lWe (line 41) | function lWe(t,e,r){var s="",a=t.tag,n,c;for(n=0,c=r.length;n<c;n+=1)Rd(...
function cWe (line 41) | function cWe(t,e,r,s){var a="",n=t.tag,c,f;for(c=0,f=r.length;c<f;c+=1)R...
function uWe (line 41) | function uWe(t,e,r){var s="",a=t.tag,n=Object.keys(r),c,f,p,h,E;for(c=0,...
function fWe (line 41) | function fWe(t,e,r,s){var a="",n=t.tag,c=Object.keys(r),f,p,h,E,C,S;if(t...
function Yte (line 41) | function Yte(t,e,r){var s,a,n,c,f,p;for(a=r?t.explicitTypes:t.implicitTy...
function Rd (line 41) | function Rd(t,e,r,s,a,n){t.tag=null,t.dump=r,Yte(t,r,!1)||Yte(t,r,!0);va...
function AWe (line 41) | function AWe(t,e){var r=[],s=[],a,n;for(e_(t,r,s),a=0,n=s.length;a<n;a+=...
function e_ (line 41) | function e_(t,e,r){var s,a,n;if(t!==null&&typeof t=="object")if(a=e.inde...
function are (line 41) | function are(t,e){e=e||{};var r=new eWe(e);return r.noRefs||AWe(t,r),Rd(...
function pWe (line 42) | function pWe(t,e){return are(t,Y2.extend({schema:N9e},e))}
function vx (line 42) | function vx(t){return function(){throw new Error("Function "+t+" is depr...
function gWe (line 42) | function gWe(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function Td (line 42) | function Td(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.lo...
function s (line 42) | function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 42) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 42) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function c (line 42) | function c(h){return r[h.type](h)}
function f (line 42) | function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=...
function p (line 42) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function dWe (line 42) | function dWe(t,e){e=e!==void 0?e:{};var r={},s={Start:lc},a=lc,n=functio...
function dre (line 51) | function dre(t){return t.match(mWe)?t:JSON.stringify(t)}
function yre (line 51) | function yre(t){return typeof t>"u"?!0:typeof t=="object"&&t!==null&&!Ar...
function n_ (line 51) | function n_(t,e,r){if(t===null)return`null
function nl (line 61) | function nl(t){try{let e=n_(t,0,!1);return e!==`
function yWe (line 62) | function yWe(t){return t.endsWith(`
function IWe (line 64) | function IWe(t){if(EWe.test(t))return yWe(t);let e=(0,Dx.safeLoad)(t,{sc...
function as (line 64) | function as(t){return IWe(t)}
method constructor (line 64) | constructor(e){this.data=e}
function Bre (line 64) | function Bre(t){return typeof t=="string"?!!Ds[t]:"env"in t?Ds[t.env]&&D...
method constructor (line 64) | constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageEr...
method constructor (line 64) | constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanio...
method constructor (line 75) | constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type...
function BWe (line 80) | function BWe(t){let e=t.split(`
function Ho (line 82) | function Ho(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,`
function ya (line 90) | function ya(t){return{...t,[K2]:!0}}
function Gf (line 90) | function Gf(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&...
function Qx (line 90) | function Qx(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(...
function z2 (line 90) | function z2(t,e){return e.length===1?new nt(`${t}${Qx(e[0],{mergeName:!0...
function Od (line 92) | function Od(t,e,r){if(typeof r>"u")return e;let s=[],a=[],n=f=>{let p=e;...
function ti (line 92) | function ti(t){return t===null?"null":t===void 0?"undefined":t===""?"an ...
function CE (line 92) | function CE(t,e){if(t.length===0)return"nothing";if(t.length===1)return ...
function s0 (line 92) | function s0(t,e){var r,s,a;return typeof e=="number"?`${(r=t?.p)!==null&...
function f_ (line 92) | function f_(t,e,r){return t===1?e:r}
function mr (line 92) | function mr({errors:t,p:e}={},r){return t?.push(`${e??"."}: ${r}`),!1}
function xWe (line 92) | function xWe(t,e){return r=>{t[e]=r}}
function Wf (line 92) | function Wf(t,e){return r=>{let s=t[e];return t[e]=r,Wf(t,e).bind(null,s)}}
function Z2 (line 92) | function Z2(t,e,r){let s=()=>(t(r()),a),a=()=>(t(e),s);return s}
function A_ (line 92) | function A_(){return Wr({test:(t,e)=>!0})}
function xre (line 92) | function xre(t){return Wr({test:(e,r)=>e!==t?mr(r,`Expected ${ti(t)} (go...
function wE (line 92) | function wE(){return Wr({test:(t,e)=>typeof t!="string"?mr(e,`Expected a...
function fo (line 92) | function fo(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>ty...
function QWe (line 92) | function QWe(){return Wr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(...
function p_ (line 92) | function p_(){return Wr({test:(t,e)=>{var r;if(typeof t!="number"){if(ty...
function RWe (line 92) | function RWe(t){return Wr({test:(e,r)=>{var s;if(typeof r?.coercions>"u"...
function TWe (line 92) | function TWe(){return Wr({test:(t,e)=>{var r;if(!(t instanceof Date)){if...
function Rx (line 92) | function Rx(t,{delimiter:e}={}){return Wr({test:(r,s)=>{var a;let n=r;if...
function FWe (line 92) | function FWe(t,{delimiter:e}={}){let r=Rx(t,{delimiter:e});return Wr({te...
function NWe (line 92) | function NWe(t,e){let r=Rx(Tx([t,e])),s=Fx(e,{keys:t});return Wr({test:(...
function Tx (line 92) | function Tx(t,{delimiter:e}={}){let r=Rre(t.length);return Wr({test:(s,a...
function Fx (line 92) | function Fx(t,{keys:e=null}={}){let r=Rx(Tx([e??wE(),t]));return Wr({tes...
function OWe (line 92) | function OWe(t,e={}){return Fx(t,e)}
function kre (line 92) | function kre(t,{extra:e=null}={}){let r=Object.keys(t),s=Wr({test:(a,n)=...
function LWe (line 92) | function LWe(t){return kre(t,{extra:Fx(A_())})}
function Qre (line 92) | function Qre(t){return()=>t}
function Wr (line 92) | function Wr({test:t}){return Qre(t)()}
function UWe (line 92) | function UWe(t,e){if(!e(t))throw new o0}
function _We (line 92) | function _We(t,e){let r=[];if(!e(t,{errors:r}))throw new o0({errors:r})}
function HWe (line 92) | function HWe(t,e){}
function jWe (line 92) | function jWe(t,e,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if...
function GWe (line 92) | function GWe(t,e){let r=Tx(t);return(...s)=>{if(!r(s))throw new o0;retur...
function qWe (line 92) | function qWe(t){return Wr({test:(e,r)=>e.length>=t?!0:mr(r,`Expected to ...
function WWe (line 92) | function WWe(t){return Wr({test:(e,r)=>e.length<=t?!0:mr(r,`Expected to ...
function Rre (line 92) | function Rre(t){return Wr({test:(e,r)=>e.length!==t?mr(r,`Expected to ha...
function YWe (line 92) | function YWe({map:t}={}){return Wr({test:(e,r)=>{let s=new Set,a=new Set...
function VWe (line 92) | function VWe(){return Wr({test:(t,e)=>t<=0?!0:mr(e,`Expected to be negat...
function JWe (line 92) | function JWe(){return Wr({test:(t,e)=>t>=0?!0:mr(e,`Expected to be posit...
function g_ (line 92) | function g_(t){return Wr({test:(e,r)=>e>=t?!0:mr(r,`Expected to be at le...
function KWe (line 92) | function KWe(t){return Wr({test:(e,r)=>e<=t?!0:mr(r,`Expected to be at m...
function zWe (line 92) | function zWe(t,e){return Wr({test:(r,s)=>r>=t&&r<=e?!0:mr(s,`Expected to...
function ZWe (line 92) | function ZWe(t,e){return Wr({test:(r,s)=>r>=t&&r<e?!0:mr(s,`Expected to ...
function d_ (line 92) | function d_({unsafe:t=!1}={}){return Wr({test:(e,r)=>e!==Math.round(e)?m...
function X2 (line 92) | function X2(t){return Wr({test:(e,r)=>t.test(e)?!0:mr(r,`Expected to mat...
function XWe (line 92) | function XWe(){return Wr({test:(t,e)=>t!==t.toLowerCase()?mr(e,`Expected...
function $We (line 92) | function $We(){return Wr({test:(t,e)=>t!==t.toUpperCase()?mr(e,`Expected...
function eYe (line 92) | function eYe(){return Wr({test:(t,e)=>bWe.test(t)?!0:mr(e,`Expected to b...
function tYe (line 92) | function tYe(){return Wr({test:(t,e)=>bre.test(t)?!0:mr(e,`Expected to b...
function rYe (line 92) | function rYe({alpha:t=!1}){return Wr({test:(e,r)=>(t?SWe.test(e):DWe.tes...
function nYe (line 92) | function nYe(){return Wr({test:(t,e)=>PWe.test(t)?!0:mr(e,`Expected to b...
function iYe (line 92) | function iYe(t=A_()){return Wr({test:(e,r)=>{let s;try{s=JSON.parse(e)}c...
function Nx (line 92) | function Nx(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Wr({test:(s,...
function $2 (line 92) | function $2(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Nx(t,r)}
function sYe (line 92) | function sYe(t){return Wr({test:(e,r)=>typeof e>"u"?!0:t(e,r)})}
function oYe (line 92) | function oYe(t){return Wr({test:(e,r)=>e===null?!0:t(e,r)})}
function aYe (line 92) | function aYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r...
function m_ (line 92) | function m_(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!...
function lYe (line 92) | function lYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r...
function cYe (line 92) | function cYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r...
function tB (line 92) | function tB(t,e,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==voi...
method constructor (line 92) | constructor({errors:e}={}){let r="Type mismatch";if(e&&e.length>0){r+=`
method constructor (line 94) | constructor(){this.help=!1}
method Usage (line 94) | static Usage(e){return e}
method catch (line 94) | async catch(e){throw e}
method validateAndExecute (line 94) | async validateAndExecute(){let r=this.constructor.schema;if(Array.isArra...
function il (line 94) | function il(t){a_&&console.log(t)}
function Fre (line 94) | function Fre(){let t={nodes:[]};for(let e=0;e<En.CustomNode;++e)t.nodes....
function fYe (line 94) | function fYe(t){let e=Fre(),r=[],s=e.nodes.length;for(let a of t){r.push...
function Ou (line 94) | function Ou(t,e){return t.nodes.push(e),t.nodes.length-1}
function AYe (line 94) | function AYe(t){let e=new Set,r=s=>{if(e.has(s))return;e.add(s);let a=t....
function pYe (line 94) | function pYe(t,{prefix:e=""}={}){if(a_){il(`${e}Nodes are:`);for(let r=0...
function hYe (line 94) | function hYe(t,e,r=!1){il(`Running a vm on ${JSON.stringify(e)}`);let s=...
function gYe (line 94) | function gYe(t,e,{endToken:r=ei.EndOfInput}={}){let s=hYe(t,[...e,r]);re...
function dYe (line 94) | function dYe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path....
function mYe (line 94) | function mYe(t,e){let r=e.filter(S=>S.selectedIndex!==null),s=r.filter(S...
function yYe (line 94) | function yYe(t){let e=[],r=[];for(let s of t)s.selectedIndex===Nd?r.push...
function Nre (line 94) | function Nre(t,e,...r){return e===void 0?Array.from(t):Nre(t.filter((s,a...
function _l (line 94) | function _l(){return{dynamics:[],shortcuts:[],statics:{}}}
function Ore (line 94) | function Ore(t){return t===En.SuccessNode||t===En.ErrorNode}
function y_ (line 94) | function y_(t,e=0){return{to:Ore(t.to)?t.to:t.to>=En.CustomNode?t.to+e-E...
function EYe (line 94) | function EYe(t,e=0){let r=_l();for(let[s,a]of t.dynamics)r.dynamics.push...
function Hs (line 94) | function Hs(t,e,r,s,a){t.nodes[e].dynamics.push([r,{to:s,reducer:a}])}
function BE (line 94) | function BE(t,e,r,s){t.nodes[e].shortcuts.push({to:r,reducer:s})}
function Ia (line 94) | function Ia(t,e,r,s,a){(Object.prototype.hasOwnProperty.call(t.nodes[e]....
function Ox (line 94) | function Ox(t,e,r,s,a){if(Array.isArray(e)){let[n,...c]=e;return t[n](r,...
method constructor (line 94) | constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trai...
method addPath (line 94) | addPath(e){this.paths.push(e)}
method setArity (line 94) | setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,ex...
method addPositional (line 94) | addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra==...
method addRest (line 94) | addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Hl)throw n...
method addProxy (line 94) | addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}
method addOption (line 94) | addOption({names:e,description:r,arity:s=0,hidden:a=!1,required:n=!1,all...
method setContext (line 94) | setContext(e){this.context=e}
method usage (line 94) | usage({detailed:e=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryN...
method compile (line 94) | compile(){if(typeof this.context>"u")throw new Error("Assertion failed: ...
method registerOptions (line 94) | registerOptions(e,r){Hs(e,r,["isOption","--"],r,"inhibateOptions"),Hs(e,...
method constructor (line 94) | constructor({binaryName:e="..."}={}){this.builders=[],this.opts={binaryN...
method build (line 94) | static build(e,r={}){return new t(r).commands(e).compile()}
method getBuilderByIndex (line 94) | getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(...
method commands (line 94) | commands(e){for(let r of e)r(this.command());return this}
method command (line 94) | command(){let e=new I_(this.builders.length,this.opts);return this.build...
method compile (line 94) | compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,contex...
function Mre (line 94) | function Mre(){return Ux.default&&"getColorDepth"in Ux.default.WriteStre...
function Ure (line 94) | function Ure(t){let e=Lre;if(typeof e>"u"){if(t.stdout===process.stdout&...
method constructor (line 94) | constructor(e){super(),this.contexts=e,this.commands=[]}
method from (line 94) | static from(e,r){let s=new t(r);s.path=e.path;for(let a of e.options)swi...
method execute (line 94) | async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index...
function qre (line 98) | async function qre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,...
function Wre (line 98) | async function Wre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,...
function Yre (line 98) | function Yre(t){let e,r,s,a;switch(typeof process<"u"&&typeof process.ar...
function Gre (line 98) | function Gre(t){return t()}
method constructor (line 98) | constructor({binaryLabel:e,binaryName:r="...",binaryVersion:s,enableCapt...
method from (line 98) | static from(e,r={}){let s=new t(r),a=Array.isArray(e)?e:[e];for(let n of...
method register (line 98) | register(e){var r;let s=new Map,a=new e;for(let p in a){let h=a[p];typeo...
method process (line 98) | process(e,r){let{input:s,context:a,partial:n}=typeof e=="object"&&Array....
method run (line 98) | async run(e,r){var s,a;let n,c={...t.defaultContext,...r},f=(s=this.enab...
method runExit (line 98) | async runExit(e,r){process.exitCode=await this.run(e,r)}
method definition (line 98) | definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:s}=thi...
method definitions (line 98) | definitions({colored:e=!1}={}){let r=[];for(let s of this.registrations....
method usage (line 98) | usage(e=null,{colored:r,detailed:s=!1,prefix:a="$ "}={}){var n;if(e===nu...
method error (line 124) | error(e,r){var s,{colored:a,command:n=(s=e[jre])!==null&&s!==void 0?s:nu...
method format (line 127) | format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:t.d...
method getUsageByRegistration (line 127) | getUsageByRegistration(e,r){let s=this.registrations.get(e);if(typeof s>...
method getUsageByIndex (line 127) | getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}
method execute (line 127) | async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.def...
method execute (line 128) | async execute(){this.context.stdout.write(this.cli.usage())}
function Hx (line 128) | function Hx(t={}){return ya({definition(e,r){var s;e.addProxy({name:(s=t...
method constructor (line 128) | constructor(){super(...arguments),this.args=Hx()}
method execute (line 128) | async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.pro...
method execute (line 129) | async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVer...
function $re (line 130) | function $re(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=...
function tne (line 130) | function tne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);ret...
function nne (line 130) | function nne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(","),c=new Set(n);ret...
function sne (line 130) | function sne(t={}){return ya({definition(e,r){var s;e.addRest({name:(s=t...
function CYe (line 130) | function CYe(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(","),f=...
function wYe (line 130) | function wYe(t={}){let{required:e=!0}=t;return ya({definition(r,s){var a...
function ane (line 130) | function ane(t,...e){return typeof t=="string"?CYe(t,...e):wYe(t)}
function bYe (line 130) | function bYe(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,`
function xYe (line 132) | function xYe(t){let e=pne(t),r=js.configDotenv({path:e});if(!r.parsed)th...
function kYe (line 132) | function kYe(t){console.log(`[dotenv@${S_}][INFO] ${t}`)}
function QYe (line 132) | function QYe(t){console.log(`[dotenv@${S_}][WARN] ${t}`)}
function B_ (line 132) | function B_(t){console.log(`[dotenv@${S_}][DEBUG] ${t}`)}
function Ane (line 132) | function Ane(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_K...
function RYe (line 132) | function RYe(t,e){let r;try{r=new URL(e)}catch(f){throw f.code==="ERR_IN...
function pne (line 132) | function pne(t){let e=v_.resolve(process.cwd(),".env");return t&&t.path&...
function TYe (line 132) | function TYe(t){return t[0]==="~"?v_.join(vYe.homedir(),t.slice(1)):t}
function FYe (line 132) | function FYe(t){kYe("Loading env from encrypted .env.vault");let e=js._p...
function NYe (line 132) | function NYe(t){let e=v_.resolve(process.cwd(),".env"),r="utf8",s=!!(t&&...
function OYe (line 132) | function OYe(t){let e=pne(t);return Ane(t).length===0?js.configDotenv(t)...
function LYe (line 132) | function LYe(t,e){let r=Buffer.from(e.slice(-64),"hex"),s=Buffer.from(t,...
function MYe (line 132) | function MYe(t,e,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeo...
function Yf (line 132) | function Yf(t){return`YN${t.toString(10).padStart(4,"0")}`}
function jx (line 132) | function jx(t){let e=Number(t.slice(2));if(typeof Br[e]>"u")throw new Er...
method constructor (line 132) | constructor(e,r){if(r=iVe(r),e instanceof t){if(e.loose===!!r.loose&&e.i...
method format (line 132) | format(){return this.version=`${this.major}.${this.minor}.${this.patch}`...
method toString (line 132) | toString(){return this.version}
method compare (line 132) | compare(e){if(Wx("SemVer.compare",this.version,this.options,e),!(e insta...
method compareMain (line 132) | compareMain(e){return e instanceof t||(e=new t(e,this.options)),SE(this....
method comparePre (line 132) | comparePre(e){if(e instanceof t||(e=new t(e,this.options)),this.prerelea...
method compareBuild (line 132) | compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let...
method inc (line 132) | inc(e,r,s){switch(e){case"premajor":this.prerelease.length=0,this.patch=...
function Fn (line 132) | function Fn(t){var e=this;if(e instanceof Fn||(e=new Fn),e.tail=null,e.h...
function XVe (line 132) | function XVe(t,e,r){var s=e===t.head?new Ud(r,null,e,t):new Ud(r,e,e.nex...
function $Ve (line 132) | function $Ve(t,e){t.tail=new Ud(e,t.tail,null,t),t.head||(t.head=t.tail)...
function e7e (line 132) | function e7e(t,e){t.head=new Ud(e,null,t.head,t),t.tail||(t.tail=t.head)...
function Ud (line 132) | function Ud(t,e,r,s){if(!(this instanceof Ud))return new Ud(t,e,r,s);thi...
method constructor (line 132) | constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(type...
method max (line 132) | set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a...
method max (line 132) | get max(){return this[_d]}
method allowStale (line 132) | set allowStale(e){this[fB]=!!e}
method allowStale (line 132) | get allowStale(){return this[fB]}
method maxAge (line 132) | set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be ...
method maxAge (line 132) | get maxAge(){return this[Hd]}
method lengthCalculator (line 132) | set lengthCalculator(e){typeof e!="function"&&(e=F_),e!==this[DE]&&(this...
method lengthCalculator (line 132) | get lengthCalculator(){return this[DE]}
method length (line 132) | get length(){return this[Sp]}
method itemCount (line 132) | get itemCount(){return this[Gs].length}
method rforEach (line 132) | rforEach(e,r){r=r||this;for(let s=this[Gs].tail;s!==null;){let a=s.prev;...
method forEach (line 132) | forEach(e,r){r=r||this;for(let s=this[Gs].head;s!==null;){let a=s.next;I...
method keys (line 132) | keys(){return this[Gs].toArray().map(e=>e.key)}
method values (line 132) | values(){return this[Gs].toArray().map(e=>e.value)}
method reset (line 132) | reset(){this[vp]&&this[Gs]&&this[Gs].length&&this[Gs].forEach(e=>this[vp...
method dump (line 132) | dump(){return this[Gs].map(e=>ek(this,e)?!1:{k:e.key,v:e.value,e:e.now+(...
method dumpLru (line 132) | dumpLru(){return this[Gs]}
method set (line 132) | set(e,r,s){if(s=s||this[Hd],s&&typeof s!="number")throw new TypeError("m...
method has (line 132) | has(e){if(!this[Lu].has(e))return!1;let r=this[Lu].get(e).value;return!e...
method get (line 132) | get(e){return N_(this,e,!0)}
method peek (line 132) | peek(e){return N_(this,e,!1)}
method pop (line 132) | pop(){let e=this[Gs].tail;return e?(PE(this,e),e.value):null}
method del (line 132) | del(e){PE(this,this[Lu].get(e))}
method load (line 132) | load(e){this.reset();let r=Date.now();for(let s=e.length-1;s>=0;s--){let...
method prune (line 132) | prune(){this[Lu].forEach((e,r)=>N_(this,r,!1))}
method constructor (line 132) | constructor(e,r,s,a,n){this.key=e,this.value=r,this.length=s,this.now=a,...
method constructor (line 132) | constructor(e,r){if(r=n7e(r),e instanceof t)return e.loose===!!r.loose&&...
method format (line 132) | format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||"...
method toString (line 132) | toString(){return this.range}
method parseRange (line 132) | parseRange(e){let s=((this.options.includePrerelease&&l7e)|(this.options...
method intersects (line 132) | intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is req...
method test (line 132) | test(e){if(!e)return!1;if(typeof e=="string")try{e=new i7e(e,this.option...
method ANY (line 132) | static get ANY(){return pB}
method constructor (line 132) | constructor(e,r){if(r=bie(r),e instanceof t){if(e.loose===!!r.loose)retu...
method parse (line 132) | parse(e){let r=this.options.loose?xie[kie.COMPARATORLOOSE]:xie[kie.COMPA...
method toString (line 132) | toString(){return this.value}
method test (line 132) | test(e){if(H_("Comparator.test",e,this.options.loose),this.semver===pB||...
method intersects (line 132) | intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator i...
function LJe (line 132) | function LJe(t,e){function r(){this.constructor=t}r.prototype=e.prototyp...
function jd (line 132) | function jd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.lo...
function s (line 132) | function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}
function a (line 132) | function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace...
function n (line 132) | function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replac...
function c (line 132) | function c(h){return r[h.type](h)}
function f (line 132) | function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=...
function p (line 132) | function p(h){return h?'"'+a(h)+'"':"end of input"}
function MJe (line 132) | function MJe(t,e){e=e!==void 0?e:{};var r={},s={Expression:y},a=y,n="|",...
function _Je (line 134) | function _Je(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}
function HJe (line 134) | function HJe(){let t={},e=Object.keys(nk);for(let r=e.length,s=0;s<r;s++...
function jJe (line 134) | function jJe(t){let e=HJe(),r=[t];for(e[t].distance=0;r.length;){let s=r...
function GJe (line 134) | function GJe(t,e){return function(r){return e(t(r))}}
function qJe (line 134) | function qJe(t,e){let r=[e[t].parent,t],s=nk[e[t].parent][t],a=e[t].pare...
function VJe (line 134) | function VJe(t){let e=function(...r){let s=r[0];return s==null?s:(s.leng...
function JJe (line 134) | function JJe(t){let e=function(...r){let s=r[0];if(s==null)return s;s.le...
function KJe (line 134) | function KJe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2...
function Z_ (line 134) | function Z_(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t...
function X_ (line 134) | function X_(t,e){if(l0===0)return 0;if(Sc("color=16m")||Sc("color=full")...
function ZJe (line 134) | function ZJe(t){let e=X_(t,t&&t.isTTY);return Z_(e)}
function Use (line 138) | function Use(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5...
function iKe (line 138) | function iKe(t,e){let r=[],s=e.trim().split(/\s*,\s*/g),a;for(let n of s...
function sKe (line 138) | function sKe(t){Lse.lastIndex=0;let e=[],r;for(;(r=Lse.exec(t))!==null;)...
function Mse (line 138) | function Mse(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=...
method constructor (line 138) | constructor(e){return qse(e)}
function ak (line 138) | function ak(t){return qse(t)}
method get (line 138) | get(){let r=lk(this,n4(e.open,e.close,this._styler),this._isEmpty);retur...
method get (line 138) | get(){let t=lk(this,this._styler,!0);return Object.defineProperty(this,"...
method get (line 138) | get(){let{level:e}=this;return function(...r){let s=n4(mB.color[Gse[e]][...
method get (line 138) | get(){let{level:r}=this;return function(...s){let a=n4(mB.bgColor[Gse[r]...
method get (line 138) | get(){return this._generator.level}
method set (line 138) | set(t){this._generator.level=t}
function uKe (line 139) | function uKe(t,e,r){let s=i4(t,e,"-",!1,r)||[],a=i4(e,t,"",!1,r)||[],n=i...
function fKe (line 139) | function fKe(t,e){let r=1,s=1,a=toe(t,r),n=new Set([e]);for(;t<=a&&a<=e;...
function AKe (line 139) | function AKe(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let s=p...
function $se (line 139) | function $se(t,e,r,s){let a=fKe(t,e),n=[],c=t,f;for(let p=0;p<a.length;p...
function i4 (line 139) | function i4(t,e,r,s,a){let n=[];for(let c of t){let{string:f}=c;!s&&!eoe...
function pKe (line 139) | function pKe(t,e){let r=[];for(let s=0;s<t.length;s++)r.push([t[s],e[s]]...
function hKe (line 139) | function hKe(t,e){return t>e?1:e>t?-1:0}
function eoe (line 139) | function eoe(t,e,r){return t.some(s=>s[e]===r)}
function toe (line 139) | function toe(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}
function roe (line 139) | function roe(t,e){return t-t%Math.pow(10,e)}
function noe (line 139) | function noe(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}
function gKe (line 139) | function gKe(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}
function ioe (line 139) | function ioe(t){return/^-?(0+)\d/.test(t)}
function dKe (line 139) | function dKe(t,e,r){if(!e.isPadded)return t;let s=Math.abs(e.maxLen-Stri...
method extglobChars (line 140) | extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t....
method globChars (line 140) | globChars(t){return t===!0?tze:Foe}
function iae (line 140) | function iae(t){return Number.isSafeInteger(t)&&t>=0}
function oae (line 140) | function oae(t){return t!=null&&typeof t!="function"&&iae(t.length)}
function Pc (line 140) | function Pc(t){return t==="__proto__"}
function NE (line 140) | function NE(t){switch(typeof t){case"number":case"symbol":return!1;case"...
function OE (line 140) | function OE(t){return typeof t=="string"||typeof t=="symbol"?t:Object.is...
function Mu (line 140) | function Mu(t){let e=[],r=t.length;if(r===0)return e;let s=0,a="",n="",c...
function va (line 140) | function va(t,e,r){if(t==null)return r;switch(typeof e){case"string":{if...
function Sze (line 140) | function Sze(t,e,r){if(e.length===0)return r;let s=t;for(let a=0;a<e.len...
function I4 (line 140) | function I4(t){return t!==null&&(typeof t=="object"||typeof t=="function")}
function ME (line 140) | function ME(t){return t==null||typeof t!="object"&&typeof t!="function"}
function Ck (line 140) | function Ck(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}
function Wd (line 140) | function Wd(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.p...
function Yd (line 140) | function Yd(t){return t==null?t===void 0?"[object Undefined]":"[object N...
function GE (line 140) | function GE(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}
function pae (line 140) | function pae(t,e){return u0(t,void 0,t,new Map,e)}
function u0 (line 140) | function u0(t,e,r,s=new Map,a=void 0){let n=a?.(t,e,r,s);if(n!=null)retu...
function c0 (line 140) | function c0(t,e,r=t,s,a){let n=[...Object.keys(e),...Wd(e)];for(let c=0;...
function Dze (line 140) | function Dze(t){switch(Yd(t)){case Vd:case xk:case kk:case Qk:case HE:ca...
function hae (line 140) | function hae(t){return u0(t,void 0,t,new Map,void 0)}
function dae (line 140) | function dae(t,e){return pae(t,(r,s,a,n)=>{let c=e?.(r,s,a,n);if(c!=null...
function f0 (line 140) | function f0(t){return dae(t)}
function Gk (line 140) | function Gk(t,e=Number.MAX_SAFE_INTEGER){switch(typeof t){case"number":r...
function BB (line 140) | function BB(t){return t!==null&&typeof t=="object"&&Yd(t)==="[object Arg...
function vB (line 140) | function vB(t,e){let r;if(Array.isArray(e)?r=e:typeof e=="string"&&NE(e)...
function P4 (line 140) | function P4(t){return typeof t=="object"&&t!==null}
function Eae (line 140) | function Eae(t){return typeof t=="symbol"||t instanceof Symbol}
function Cae (line 140) | function Cae(t,e){return Array.isArray(t)?!1:typeof t=="number"||typeof ...
function A0 (line 140) | function A0(t,e){if(t==null)return!0;switch(typeof e){case"symbol":case"...
function Bae (line 140) | function Bae(t,e){let r=va(t,e.slice(0,-1),t),s=e[e.length-1];if(r?.[s]=...
function vae (line 140) | function vae(t){return t==null}
function bae (line 140) | function bae(t,e,r,s){if(t==null&&!I4(t))return t;let a=Cae(e,t)?[e]:Arr...
function Jd (line 140) | function Jd(t,e,r){return bae(t,e,()=>r,()=>{})}
function kae (line 140) | function kae(t,e=0,r={}){typeof r!="object"&&(r={});let s=null,a=null,n=...
function k4 (line 140) | function k4(t,e=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return kae(t,e...
function Q4 (line 140) | function Q4(t){if(t==null)return"";if(typeof t=="string")return t;if(Arr...
function R4 (line 140) | function R4(t){if(!t||typeof t!="object")return!1;let e=Object.getProtot...
function Nae (line 140) | function Nae(t,e,r){return SB(t,e,void 0,void 0,void 0,void 0,r)}
function SB (line 140) | function SB(t,e,r,s,a,n,c){let f=c(t,e,r,s,a,n);if(f!==void 0)return f;i...
function DB (line 140) | function DB(t,e,r,s){if(Object.is(t,e))return!0;let a=Yd(t),n=Yd(e);if(a...
function Lae (line 140) | function Lae(){}
function T4 (line 140) | function T4(t,e){return Nae(t,e,Lae)}
function _ae (line 140) | function _ae(t){return GE(t)}
function jae (line 140) | function jae(t){if(typeof t!="object"||t==null)return!1;if(Object.getPro...
function qae (line 140) | function qae(t){if(ME(t))return t;if(Array.isArray(t)||GE(t)||t instance...
function F4 (line 140) | function F4(t,...e){let r=e.slice(0,-1),s=e[e.length-1],a=t;for(let n=0;...
function qk (line 140) | function qk(t,e,r,s){if(ME(t)&&(t=Object(t)),e==null||typeof e!="object"...
function N4 (line 140) | function N4(t,...e){if(t==null)return{};let r=hae(t);for(let s=0;s<e.len...
function Kd (line 140) | function Kd(t,...e){if(vae(t))return{};let r={};for(let s=0;s<e.length;s...
function Kae (line 140) | function Kae(t){return t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()}
function PB (line 140) | function PB(t){return Kae(Q4(t))}
function kze (line 140) | function kze(t){return!!(tle.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9...
function Wk (line 140) | function Wk(t,{one:e,more:r,zero:s=r}){return t===0?s:t===1?e:r}
function Qze (line 140) | function Qze(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}
function Rze (line 140) | function Rze(t){}
function H4 (line 140) | function H4(t){throw new Error(`Assertion failed: Unexpected object '${t...
function Tze (line 140) | function Tze(t,e){let r=Object.values(t);if(!r.includes(e))throw new nt(...
function Wl (line 140) | function Wl(t,e){let r=[];for(let s of t){let a=e(s);a!==rle&&r.push(a)}...
function p0 (line 140) | function p0(t,e){for(let r of t){let s=e(r);if(s!==nle)return s}}
function O4 (line 140) | function O4(t){return typeof t=="object"&&t!==null}
function Uu (line 140) | async function Uu(t){let e=await Promise.allSettled(t),r=[];for(let s of...
function Yk (line 140) | function Yk(t){if(t instanceof Map&&(t=Object.fromEntries(t)),O4(t))for(...
function Yl (line 140) | function Yl(t,e,r){let s=t.get(e);return typeof s>"u"&&t.set(e,s=r()),s}
function xB (line 140) | function xB(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}
function Pp (line 140) | function Pp(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}
function j4 (line 140) | function j4(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}
function Fze (line 140) | async function Fze(t,e){if(e==null)return await t();try{return await t()...
function qE (line 140) | async function qE(t,e){try{return await t()}catch(r){throw r.message=e(r...
function G4 (line 140) | function G4(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}
function WE (line 140) | async function WE(t){return await new Promise((e,r)=>{let s=[];t.on("err...
function ile (line 140) | function ile(){let t,e;return{promise:new Promise((s,a)=>{t=s,e=a}),reso...
function sle (line 140) | function sle(t){return bB(fe.fromPortablePath(t))}
function ole (line 140) | function ole(path){let physicalPath=fe.fromPortablePath(path),currentCac...
function Nze (line 140) | function Nze(t){let e=Xae.get(t),r=ce.statSync(t);if(e?.mtime===r.mtimeM...
function bp (line 140) | function bp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return ole(t);c...
function qs (line 140) | function qs(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];...
function Oze (line 140) | function Oze(t){return t.length===0?null:t.map(e=>`(${$ae.default.makeRe...
function Vk (line 140) | function Vk(t,{env:e}){let r=/\${(?<variableName>[\d\w_]+)(?<colon>:)?(?...
function kB (line 140) | function kB(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"...
function lle (line 140) | function lle(t){return typeof t>"u"?t:kB(t)}
function q4 (line 140) | function q4(t){try{return lle(t)}catch{return null}}
function Lze (line 140) | function Lze(t){return!!(fe.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}
function cle (line 140) | function cle(t,...e){let r=c=>({value:c}),s=r(t),a=e.map(c=>r(c)),{value...
function Mze (line 140) | function Mze(...t){return cle({},...t)}
function Uze (line 140) | function Uze(t,e){let r=Object.create(null);for(let s of t){let a=s[e];r...
function YE (line 140) | function YE(t){return typeof t=="string"?Number.parseInt(t,10):t}
method constructor (line 140) | constructor(){super(...arguments);this.chunks=[]}
method _transform (line 140) | _transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("...
method _flush (line 140) | _flush(r){r(null,Buffer.concat(this.chunks))}
method constructor (line 140) | constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0...
method set (line 140) | set(e,r){let s=this.deferred.get(e);typeof s>"u"&&this.deferred.set(e,s=...
method reduce (line 140) | reduce(e,r){let s=this.promises.get(e)??Promise.resolve();this.set(e,()=...
method wait (line 140) | async wait(){await Promise.all(this.promises.values())}
method constructor (line 140) | constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}
method _transform (line 140) | _transform(r,s,a){if(s!=="buffer"||!Buffer.isBuffer(r))throw new Error("...
method _flush (line 140) | _flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}
function fle (line 140) | function fle(t){let e=["KiB","MiB","GiB","TiB"],r=e.length;for(;r>1&&t<1...
function Jk (line 140) | function Jk(t,e){if(Array.isArray(e))return e.length===0?ri(t,"[]",ht.CO...
function _u (line 140) | function _u(t,e){return[e,t]}
function zd (line 140) | function zd(t,e,r){return t.get("enableColors")&&r&2&&(e=RB.default.bold...
function ri (line 140) | function ri(t,e,r){if(!t.get("enableColors"))return e;let s=_ze.get(r);i...
function KE (line 140) | function KE(t,e,r){return t.get("enableHyperlinks")?Hze?`\x1B]8;;${r}\x1...
function Ht (line 140) | function Ht(t,e,r){if(e===null)return ri(t,"null",ht.NULL);if(Object.has...
function z4 (line 140) | function z4(t,e,r,{separator:s=", "}={}){return[...e].map(a=>Ht(t,a,r))....
function Zd (line 140) | function Zd(t,e){if(t===null)return null;if(Object.hasOwn(Kk,e))return K...
function jze (line 140) | function jze(t,e,[r,s]){return t?Zd(r,s):Ht(e,r,s)}
function Z4 (line 140) | function Z4(t){return{Check:ri(t,"\u2713","green"),Cross:ri(t,"\u2718","...
function Kf (line 140) | function Kf(t,{label:e,value:[r,s]}){return`${Ht(t,e,ht.CODE)}: ${Ht(t,r...
function Xk (line 140) | function Xk(t,e,r){let s=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=...
function TB (line 140) | function TB(t,{configuration:e}){let r=e.get("logFilters"),s=new Map,a=n...
function Gze (line 140) | function Gze(t){return t.reduce((e,r)=>[].concat(e,r),[])}
function qze (line 140) | function qze(t,e){let r=[[]],s=0;for(let a of t)e(a)?(s++,r[s]=[]):r[s]....
function Wze (line 140) | function Wze(t){return t.code==="ENOENT"}
method constructor (line 140) | constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),...
function Yze (line 140) | function Yze(t,e){return new e3(t,e)}
function eZe (line 140) | function eZe(t){return t.replace(/\\/g,"/")}
function tZe (line 140) | function tZe(t,e){return Jze.resolve(t,e)}
function rZe (line 140) | function rZe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e===...
function t3 (line 140) | function t3(t){return t.replace(Zze,"\\$2")}
function r3 (line 140) | function r3(t){return t.replace(zze,"\\$2")}
function mle (line 140) | function mle(t){return t3(t).replace(Xze,"//$1").replace($ze,"/")}
function yle (line 140) | function yle(t){return r3(t)}
function ble (line 140) | function ble(t,e={}){return!xle(t,e)}
function xle (line 140) | function xle(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.in...
function wZe (line 140) | function wZe(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf(...
function BZe (line 140) | function BZe(t){return rQ(t)?t.slice(1):t}
function vZe (line 140) | function vZe(t){return"!"+t}
function rQ (line 140) | function rQ(t){return t.startsWith("!")&&t[1]!=="("}
function kle (line 140) | function kle(t){return!rQ(t)}
function SZe (line 140) | function SZe(t){return t.filter(rQ)}
function DZe (line 140) | function DZe(t){return t.filter(kle)}
function PZe (line 140) | function PZe(t){return t.filter(e=>!s3(e))}
function bZe (line 140) | function bZe(t){return t.filter(s3)}
function s3 (line 140) | function s3(t){return t.startsWith("..")||t.startsWith("./..")}
function xZe (line 140) | function xZe(t){return hZe(t,{flipBackslashes:!1})}
function kZe (line 140) | function kZe(t){return t.includes(Ple)}
function Qle (line 140) | function Qle(t){return t.endsWith("/"+Ple)}
function QZe (line 140) | function QZe(t){let e=pZe.basename(t);return Qle(t)||ble(e)}
function RZe (line 140) | function RZe(t){return t.reduce((e,r)=>e.concat(Rle(r)),[])}
function Rle (line 140) | function Rle(t){let e=i3.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0}...
function TZe (line 140) | function TZe(t,e){let{parts:r}=i3.scan(t,Object.assign(Object.assign({},...
function Tle (line 140) | function Tle(t,e){return i3.makeRe(t,e)}
function FZe (line 140) | function FZe(t,e){return t.map(r=>Tle(r,e))}
function NZe (line 140) | function NZe(t,e){return e.some(r=>r.test(t))}
function OZe (line 140) | function OZe(t){return t.replace(CZe,"/")}
function UZe (line 140) | function UZe(){let t=[],e=MZe.call(arguments),r=!1,s=e[e.length-1];s&&!A...
function Ole (line 140) | function Ole(t,e){if(Array.isArray(t))for(let r=0,s=t.length;r<s;r++)t[r...
function HZe (line 140) | function HZe(t){let e=_Ze(t);return t.forEach(r=>{r.once("error",s=>e.em...
function Ule (line 140) | function Ule(t){t.forEach(e=>e.emit("close"))}
function jZe (line 140) | function jZe(t){return typeof t=="string"}
function GZe (line 140) | function GZe(t){return t===""}
function ZZe (line 140) | function ZZe(t,e){let r=jle(t,e),s=jle(e.ignore,e),a=Gle(r),n=qle(r,s),c...
function jle (line 140) | function jle(t,e){let r=t;return e.braceExpansion&&(r=Hu.pattern.expandP...
function o3 (line 140) | function o3(t,e,r){let s=[],a=Hu.pattern.getPatternsOutsideCurrentDirect...
function Gle (line 140) | function Gle(t){return Hu.pattern.getPositivePatterns(t)}
function qle (line 140) | function qle(t,e){return Hu.pattern.getNegativePatterns(t).concat(e).map...
function a3 (line 140) | function a3(t){let e={};return t.reduce((r,s)=>{let a=Hu.pattern.getBase...
function l3 (line 140) | function l3(t,e,r){return Object.keys(t).map(s=>c3(s,t[s],e,r))}
function c3 (line 140) | function c3(t,e,r,s){return{dynamic:s,positive:e,negative:r,base:t,patte...
function XZe (line 140) | function XZe(t,e,r){e.fs.lstat(t,(s,a)=>{if(s!==null){Yle(r,s);return}if...
function Yle (line 140) | function Yle(t,e){t(e)}
function u3 (line 140) | function u3(t,e){t(null,e)}
function $Ze (line 140) | function $Ze(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.fol...
function eXe (line 140) | function eXe(t){return t===void 0?h0.FILE_SYSTEM_ADAPTER:Object.assign(O...
method constructor (line 140) | constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue...
method _getValue (line 140) | _getValue(e,r){return e??r}
function nXe (line 140) | function nXe(t,e,r){if(typeof e=="function"){Zle.read(t,h3(),e);return}Z...
function iXe (line 140) | function iXe(t,e){let r=h3(e);return rXe.read(t,r)}
function h3 (line 140) | function h3(t={}){return t instanceof p3.default?t:new p3.default(t)}
function oXe (line 140) | function oXe(t,e){let r,s,a,n=!0;Array.isArray(t)?(r=[],s=t.length):(a=O...
method constructor (line 140) | constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),...
function fXe (line 140) | function fXe(t,e){return new d3(t,e)}
function pXe (line 140) | function pXe(t,e,r){return t.endsWith(r)?t+e:t+r+e}
function dXe (line 140) | function dXe(t,e,r){if(!e.stats&&gXe.IS_SUPPORT_READDIR_WITH_FILE_TYPES)...
function cce (line 140) | function cce(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(s,a)=>{if(s!==nul...
function mXe (line 140) | function mXe(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);re...
function uce (line 140) | function uce(t,e,r){e.fs.readdir(t,(s,a)=>{if(s!==null){AQ(r,s);return}l...
function AQ (line 140) | function AQ(t,e){t(e)}
function E3 (line 140) | function E3(t,e){t(null,e)}
function IXe (line 140) | function IXe(t,e){return!e.stats&&EXe.IS_SUPPORT_READDIR_WITH_FILE_TYPES...
function hce (line 140) | function hce(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(s=>{...
function gce (line 140) | function gce(t,e){return e.fs.readdirSync(t).map(s=>{let a=pce.joinPathS...
function CXe (line 140) | function CXe(t){return t===void 0?y0.FILE_SYSTEM_ADAPTER:Object.assign(O...
method constructor (line 140) | constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValu...
method _getValue (line 140) | _getValue(e,r){return e??r}
function DXe (line 140) | function DXe(t,e,r){if(typeof e=="function"){Ece.read(t,B3(),e);return}E...
function PXe (line 140) | function PXe(t,e){let r=B3(e);return SXe.read(t,r)}
function B3 (line 140) | function B3(t={}){return t instanceof w3.default?t:new w3.default(t)}
function bXe (line 140) | function bXe(t){var e=new t,r=e;function s(){var n=e;return n.next?e=n.n...
function wce (line 140) | function wce(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),!(r>=1))th...
function kc (line 140) | function kc(){}
function kXe (line 140) | function kXe(){this.value=null,this.callback=kc,this.next=null,this.rele...
function QXe (line 140) | function QXe(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function s(E,...
function RXe (line 140) | function RXe(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}
function TXe (line 140) | function TXe(t,e){return t===null||t(e)}
function FXe (line 140) | function FXe(t,e){return t.split(/[/\\]/).join(e)}
function NXe (line 140) | function NXe(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._root=OXe.replacePat...
method constructor (line 140) | constructor(e,r){super(e,r),this._settings=r,this._scandir=MXe.scandir,t...
method read (line 140) | read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()...
method isDestroyed (line 140) | get isDestroyed(){return this._isDestroyed}
method destroy (line 140) | destroy(){if(this._isDestroyed)throw new Error("The reader is already de...
method onEntry (line 140) | onEntry(e){this._emitter.on("entry",e)}
method onError (line 140) | onError(e){this._emitter.once("error",e)}
method onEnd (line 140) | onEnd(e){this._emitter.once("end",e)}
method _pushToQueue (line 140) | _pushToQueue(e,r){let s={directory:e,base:r};this._queue.push(s,a=>{a!==...
method _worker (line 140) | _worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,...
method _handleError (line 140) | _handleError(e){this._isDestroyed||!gQ.isFatalError(this._settings,e)||(...
method _handleEntry (line 140) | _handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let s=...
method _emitEntry (line 140) | _emitEntry(e){this._emitter.emit("entry",e)}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new HXe.defa...
method read (line 140) | read(e){this._reader.onError(r=>{jXe(e,r)}),this._reader.onEntry(r=>{thi...
function jXe (line 140) | function jXe(t,e){t(e)}
function GXe (line 140) | function GXe(t,e){t(null,e)}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new WXe.defa...
method read (line 140) | read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),th...
method constructor (line 140) | constructor(){super(...arguments),this._scandir=YXe.scandirSync,this._st...
method read (line 140) | read(){return this._pushToQueue(this._root,this._settings.basePath),this...
method _pushToQueue (line 140) | _pushToQueue(e,r){this._queue.add({directory:e,base:r})}
method _handleQueue (line 140) | _handleQueue(){for(let e of this._queue.values())this._handleDirectory(e...
method _handleDirectory (line 140) | _handleDirectory(e,r){try{let s=this._scandir(e,this._settings.fsScandir...
method _handleError (line 140) | _handleError(e){if(dQ.isFatalError(this._settings,e))throw e}
method _handleEntry (line 140) | _handleEntry(e,r){let s=e.path;r!==void 0&&(e.path=dQ.joinPathSegments(r...
method _pushToStorage (line 140) | _pushToStorage(e){this._storage.push(e)}
method constructor (line 140) | constructor(e,r){this._root=e,this._settings=r,this._reader=new JXe.defa...
method read (line 140) | read(){return this._reader.read()}
method constructor (line 140) | constructor(e={}){this._options=e,this.basePath=this._getValue(this._opt...
method _getValue (line 140) | _getValue(e,r){return e??r}
function $Xe (line 140) | function $Xe(t,e,r){if(typeof e=="function"){new xce.default(t,mQ()).rea...
function e$e (line 140) | function e$e(t,e){let r=mQ(e);return new XXe.default(t,r).read()}
function t$e (line 140) | function t$e(t,e){let r=mQ(e);return new ZXe.default(t,r).read()}
function mQ (line 140) | function mQ(t={}){return t instanceof H3.default?t:new H3.default(t)}
method constructor (line 140) | constructor(e){this._settings=e,this._fsStatSettings=new n$e.Settings({f...
method _getFullEntryPath (line 140) | _getFullEntryPath(e){return r$e.resolve(this._settings.cwd,e)}
method _makeEntry (line 140) | _makeEntry(e,r){let s={name:r,path:r,dirent:kce.fs.createDirentFromStats...
method _isFatalError (line 140) | _isFatalError(e){return!kce.errno.isEnoentCodeError(e)&&!this._settings....
method constructor (line 140) | constructor(){super(...arguments),this._walkStream=o$e.walkStream,this._...
method dynamic (line 140) | dynamic(e,r){return this._walkStream(e,r)}
method static (line 140) | static(e,r){let s=e.map(this._getFullEntryPath,this),a=new i$e.PassThrou...
method _getEntry (line 140) | _getEntry(e,r,s){return this._getStat(e).then(a=>this._makeEntry(a,r)).c...
method _getStat (line 140) | _getStat(e){return new Promise((r,s)=>{this._stat(e,this._fsStatSettings...
method constructor (line 140) | constructor(){super(...arguments),this._walkAsync=l$e.walk,this._readerS...
method dynamic (line 140) | dynamic(e,r){return new Promise((s,a)=>{this._walkAsync(e,r,(n,c)=>{n===...
method static (line 140) | async static(e,r){let s=[],a=this._readerStream.static(e,r);return new P...
method constructor (line 140) | constructor(e,r,s){this._patterns=e,this._settings=r,this._micromatchOpt...
method _fillStorage (line 140) | _fillStorage(){for(let e of this._patterns){let r=this._getPatternSegmen...
method _getPatternSegments (line 140) | _getPatternSegments(e){return NB.pattern.getPatternParts(e,this._microma...
method _splitSegmentsIntoSections (line 140) | _splitSegmentsIntoSections(e){return NB.array.splitWhen(e,r=>r.dynamic&&...
method match (line 140) | match(e){let r=e.split("/"),s=r.length,a=this._storage.filter(n=>!n.comp...
method constructor (line 140) | constructor(e,r){this._settings=e,this._micromatchOptions=r}
method getFilter (line 140) | getFilter(e,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe...
method _getMatcher (line 140) | _getMatcher(e){return new A$e.default(e,this._settings,this._micromatchO...
method _getNegativePatternsRe (line 140) | _getNegativePatternsRe(e){let r=e.filter(IQ.pattern.isAffectDepthOfReadi...
method _filter (line 140) | _filter(e,r,s,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymb...
method _isSkippedByDeep (line 140) | _isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntry...
method _getEntryLevel (line 140) | _getEntryLevel(e,r){let s=r.split("/").length;if(e==="")return s;let a=e...
method _isSkippedSymbolicLink (line 140) | _isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.d...
method _isSkippedByPositivePatterns (line 140) | _isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!...
method _isSkippedByNegativePatterns (line 140) | _isSkippedByNegativePatterns(e,r){return!IQ.pattern.matchAny(e,r)}
method constructor (line 140) | constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=n...
method getFilter (line 140) | getFilter(e,r){let s=$d.pattern.convertPatternsToRe(e,this._micromatchOp...
method _filter (line 140) | _filter(e,r,s){let a=$d.path.removeLeadingDotSegment(e.path);if(this._se...
method _isDuplicateEntry (line 140) | _isDuplicateEntry(e){return this.index.has(e)}
method _createIndexRecord (line 140) | _createIndexRecord(e){this.index.set(e,void 0)}
method _onlyFileFilter (line 140) | _onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}
method _onlyDirectoryFilter (line 140) | _onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent...
method _isSkippedByAbsoluteNegativePatterns (line 140) | _isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)re...
method _isMatchToPatterns (line 140) | _isMatchToPatterns(e,r,s){let a=$d.pattern.matchAny(e,r);return!a&&s?$d....
method constructor (line 140) | constructor(e){this._settings=e}
method getFilter (line 140) | getFilter(){return e=>this._isNonFatalError(e)}
method _isNonFatalError (line 140) | _isNonFatalError(e){return p$e.errno.isEnoentCodeError(e)||this._setting...
method constructor (line 140) | constructor(e){this._settings=e}
method getTransformer (line 140) | getTransformer(){return e=>this._transform(e)}
method _transform (line 140) | _transform(e){let r=e.path;return this._settings.absolute&&(r=Lce.path.m...
method constructor (line 140) | constructor(e){this._settings=e,this.errorFilter=new m$e.default(this._s...
method _getRootDirectory (line 140) | _getRootDirectory(e){return h$e.resolve(this._settings.cwd,e.base)}
method _getReaderOptions (line 140) | _getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,path...
method _getMicromatchOptions (line 140) | _getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._se...
method constructor (line 140) | constructor(){super(...arguments),this._reader=new E$e.default(this._set...
method read (line 140) | async read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e...
method api (line 140) | api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.stati...
method constructor (line 140) | constructor(){super(...arguments),this._reader=new w$e.default(this._set...
method read (line 140) | read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e),a=th...
method api (line 140) | api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.stati...
method constructor (line 140) | constructor(){super(...arguments),this._walkSync=S$e.walkSync,this._stat...
method dynamic (line 140) | dynamic(e,r){return this._walkSync(e,r)}
method static (line 140) | static(e,r){let s=[];for(let a of e){let n=this._getFullEntryPath(a),c=t...
method _getEntry (line 140) | _getEntry(e,r,s){try{let a=this._getStat(e);return this._makeEntry(a,r)}...
method _getStat (line 140) | _getStat(e){return this._statSync(e,this._fsStatSettings)}
method constructor (line 140) | constructor(){super(...arguments),this._reader=new P$e.default(this._set...
method read (line 140) | read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);retu...
method api (line 140) | api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.stati...
method constructor (line 140) | constructor(e={}){this._options=e,this.absolute=this._getValue(this._opt...
method _getValue (line 140) | _getValue(e,r){return e===void 0?r:e}
method _getFileSystemMethods (line 140) | _getFileSystemMethods(e={}){return Object.assign(Object.assign({},eI.DEF...
function E8 (line 140) | async function E8(t,e){ju(t);let r=I8(t,Q$e.default,e),s=await Promise.a...
function e (line 140) | function e(h,E){ju(h);let C=I8(h,T$e.default,E);return Qc.array.flatten(C)}
method constructor (line 226) | constructor(s){super(s)}
method submit (line 226) | async submit(){this.value=await t.call(this,this.values,this.state),su...
method create (line 226) | static create(s){return cme(s)}
function r (line 140) | function r(h,E){ju(h);let C=I8(h,R$e.default,E);return Qc.stream.merge(C)}
method constructor (line 226) | constructor(a){super({...a,choices:e})}
method create (line 226) | static create(a){return fme(a)}
function s (line 140) | function s(h,E){ju(h);let C=[].concat(h),S=new y8.default(E);return qce....
function a (line 140) | function a(h,E){ju(h);let C=new y8.default(E);return Qc.pattern.isDynami...
function n (line 140) | function n(h){return ju(h),Qc.path.escape(h)}
function c (line 140) | function c(h){return ju(h),Qc.path.convertPathToPattern(h)}
function E (line 140) | function E(S){return ju(S),Qc.path.escapePosixPath(S)}
function C (line 140) | function C(S){return ju(S),Qc.path.convertPosixPathToPattern(S)}
function E (line 140) | function E(S){return ju(S),Qc.path.escapeWindowsPath(S)}
function C (line 140) | function C(S){return ju(S),Qc.path.convertWindowsPathToPattern(S)}
function I8 (line 140) | function I8(t,e,r){let s=[].concat(t),a=new y8.default(r),n=qce.generate...
function ju (line 140) | function ju(t){if(![].concat(t).every(s=>Qc.string.isString(s)&&!Qc.stri...
function cs (line 140) | function cs(...t){let e=(0,BQ.createHash)("sha512"),r="";for(let s of t)...
function vQ (line 140) | async function vQ(t,{baseFs:e,algorithm:r}={baseFs:ce,algorithm:"sha512"...
function SQ (line 140) | async function SQ(t,{cwd:e}){let s=(await(0,C8.default)(t,{cwd:fe.fromPo...
function Da (line 140) | function Da(t,e){if(t?.startsWith("@"))throw new Error("Invalid scope: d...
function On (line 140) | function On(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,...
function Ws (line 140) | function Ws(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,...
function O$e (line 140) | function O$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}
function DQ (line 140) | function DQ(t){return{identHash:t.identHash,scope:t.scope,name:t.name,lo...
function B8 (line 140) | function B8(t){return{identHash:t.identHash,scope:t.scope,name:t.name,de...
function L$e (line 140) | function L$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name,l...
function v8 (line 140) | function v8(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,...
function LB (line 140) | function LB(t){return v8(t,t)}
function S8 (line 140) | function S8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");r...
function D8 (line 140) | function D8(t,e){if(e.includes("#"))throw new Error("Invalid entropy");r...
function kp (line 140) | function kp(t){return t.range.startsWith(OB)}
function Gu (line 140) | function Gu(t){return t.reference.startsWith(OB)}
function MB (line 140) | function MB(t){if(!kp(t))throw new Error("Not a virtual descriptor");ret...
function rI (line 140) | function rI(t){if(!Gu(t))throw new Error("Not a virtual descriptor");ret...
function M$e (line 140) | function M$e(t){return kp(t)?On(t,t.range.replace(PQ,"")):t}
function U$e (line 140) | function U$e(t){return Gu(t)?Ws(t,t.reference.replace(PQ,"")):t}
function _$e (line 140) | function _$e(t,e){return t.range.includes("::")?t:On(t,`${t.range}::${tI...
function H$e (line 140) | function H$e(t,e){return t.reference.includes("::")?t:Ws(t,`${t.referenc...
function UB (line 140) | function UB(t,e){return t.identHash===e.identHash}
function zce (line 140) | function zce(t,e){return t.descriptorHash===e.descriptorHash}
function _B (line 140) | function _B(t,e){return t.locatorHash===e.locatorHash}
function j$e (line 140) | function j$e(t,e){if(!Gu(t))throw new Error("Invalid package type");if(!...
function Sa (line 140) | function Sa(t){let e=Zce(t);if(!e)throw new Error(`Invalid ident (${t})`...
function Zce (line 140) | function Zce(t){let e=t.match(G$e);if(!e)return null;let[,r,s]=e;return ...
function C0 (line 140) | function C0(t,e=!1){let r=HB(t,e);if(!r)throw new Error(`Invalid descrip...
function HB (line 140) | function HB(t,e=!1){let r=e?t.match(q$e):t.match(W$e);if(!r)return null;...
function Qp (line 140) | function Qp(t,e=!1){let r=bQ(t,e);if(!r)throw new Error(`Invalid locator...
function bQ (line 140) | function bQ(t,e=!1){let r=e?t.match(Y$e):t.match(V$e);if(!r)return null;...
function em (line 140) | function em(t,e){let r=t.match(J$e);if(r===null)throw new Error(`Invalid...
function K$e (line 140) | function K$e(t,e){try{return em(t,e)}catch{return null}}
function z$e (line 140) | function z$e(t,{protocol:e}){let{selector:r,params:s}=em(t,{requireProto...
function Yce (line 140) | function Yce(t){return t=t.replaceAll("%","%25"),t=t.replaceAll(":","%3A...
function Z$e (line 140) | function Z$e(t){return t===null?!1:Object.entries(t).length>0}
function xQ (line 140) | function xQ({protocol:t,source:e,selector:r,params:s}){let a="";return t...
function X$e (line 140) | function X$e(t){let{params:e,protocol:r,source:s,selector:a}=em(t);for(l...
function un (line 140) | function un(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}
function $$e (line 140) | function $$e(t,e){return t.scope?Da(e,`${t.scope}__${t.name}`):Da(e,t.na...
function eet (line 140) | function eet(t,e){if(t.scope!==e)return t;let r=t.name.indexOf("__");if(...
function al (line 140) | function al(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.na...
function ll (line 140) | function ll(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${...
function w8 (line 140) | function w8(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}
function nI (line 140) | function nI(t){let{protocol:e,selector:r}=em(t.reference),s=e!==null?e.r...
function Xi (line 140) | function Xi(t,e){return e.scope?`${Ht(t,`@${e.scope}/`,ht.SCOPE)}${Ht(t,...
function kQ (line 140) | function kQ(t){if(t.startsWith(OB)){let e=kQ(t.substring(t.indexOf("#")+...
function iI (line 140) | function iI(t,e){return`${Ht(t,kQ(e),ht.RANGE)}`}
function ni (line 140) | function ni(t,e){return`${Xi(t,e)}${Ht(t,"@",ht.RANGE)}${iI(t,e.range)}`}
function jB (line 140) | function jB(t,e){return`${Ht(t,kQ(e),ht.REFERENCE)}`}
function Yr (line 140) | function Yr(t,e){return`${Xi(t,e)}${Ht(t,"@",ht.REFERENCE)}${jB(t,e.refe...
function X4 (line 140) | function X4(t){return`${un(t)}@${kQ(t.reference)}`}
function sI (line 140) | function sI(t){return qs(t,[e=>un(e),e=>e.range])}
function GB (line 140) | function GB(t,e){return Xi(t,e.anchoredLocator)}
function FB (line 140) | function FB(t,e,r){let s=kp(e)?MB(e):e;return r===null?`${ni(t,s)} \u219...
function $4 (line 140) | function $4(t,e,r){return r===null?`${Yr(t,e)}`:`${Yr(t,e)} (via ${iI(t,...
function P8 (line 140) | function P8(t){return`node_modules/${un(t)}`}
function QQ (line 140) | function QQ(t,e){return t.conditions?N$e(t.conditions,r=>{let[,s,a]=r.ma...
function qB (line 140) | function qB(t){let e=new Set;if("children"in t)e.add(t);else for(let r o...
method supportsDescriptor (line 140) | supportsDescriptor(e,r){return!!(e.range.startsWith(t.protocol)||r.proje...
method supportsLocator (line 140) | supportsLocator(e,r){return!!e.reference.startsWith(t.protocol)}
method shouldPersistResolution (line 140) | shouldPersistResolution(e,r){return!1}
method bindDescriptor (line 140) | bindDescriptor(e,r,s){return e}
method getResolutionDependencies (line 140) | getResolutionDependencies(e,r){return{}}
method getCandidates (line 140) | async getCandidates(e,r,s){return[s.project.getWorkspaceByDescriptor(e)....
method getSatisfying (line 140) | async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);retu...
method resolve (line 140) | async resolve(e,r){let s=r.project.getWorkspaceByCwd(e.reference.slice(t...
function Xf (line 140) | function Xf(t,e,r=!1){if(!t)return!1;let s=`${e}${r}`,a=eue.get(s);if(ty...
function cl (line 140) | function cl(t){if(t.indexOf(":")!==-1)return null;let e=tue.get(t);if(ty...
function iet (line 140) | function iet(t){let e=net.exec(t);return e?e[1]:null}
function rue (line 140) | function rue(t){if(t.semver===Rp.default.Comparator.ANY)return{gt:null,l...
function b8 (line 140) | function b8(t){if(t.length===0)return null;let e=null,r=null;for(let s o...
function nue (line 140) | function nue(t){if(t.gt&&t.lt){if(t.gt[0]===">="&&t.lt[0]==="<="&&t.gt[1...
function x8 (line 140) | function x8(t){let e=t.map(set).map(s=>cl(s).set.map(a=>a.map(n=>rue(n))...
function set (line 140) | function set(t){let e=t.split("||");if(e.length>1){let r=new Set;for(let...
function sue (line 140) | function sue(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}
function oue (line 140) | function oue(t){return t.charCodeAt(0)===65279?t.slice(1):t}
function Pa (line 140) | function Pa(t){return t.replace(/\\/g,"/")}
function RQ (line 140) | function RQ(t,{yamlCompatibilityMode:e}){return e?q4(t):typeof t>"u"||ty...
function aue (line 140) | function aue(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let s...
function k8 (line 140) | function k8(t,e){return e.length===1?aue(t,e[0]):`(${e.map(r=>aue(t,r))....
method constructor (line 140) | constructor(){this.indent=" ";this.name=null;this.version=null;this.os=...
method tryFind (line 140) | static async tryFind(e,{baseFs:r=new Yn}={}){let s=J.join(e,"package.jso...
method find (line 140) | static async find(e,{baseFs:r}={}){let s=await t.tryFind(e,{baseFs:r});i...
method fromFile (line 140) | static async fromFile(e,{baseFs:r=new Yn}={}){let s=new t;return await s...
method fromText (line 140) | static fromText(e){let r=new t;return r.loadFromText(e),r}
method loadFromText (line 140) | loadFromText(e){let r;try{r=JSON.parse(oue(e)||"{}")}catch(s){throw s.me...
method loadFile (line 140) | async loadFile(e,{baseFs:r=new Yn}){let s=await r.readFilePromise(e,"utf...
method load (line 140) | load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)...
method getForScope (line 140) | getForScope(e){switch(e){case"dependencies":return this.dependencies;cas...
method hasConsumerDependency (line 140) | hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||th...
method hasHardDependency (line 140) | hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.d...
method hasSoftDependency (line 140) | hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}
method hasDependency (line 140) | hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDepende...
method getConditions (line 140) | getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(k8("os...
method ensureDependencyMeta (line 140) | ensureDependencyMeta(e){if(e.range!=="unknown"&&!lue.default.valid(e.ran...
method ensurePeerDependencyMeta (line 140) | ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Inva...
method setRawField (line 140) | setRawField(e,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn...
method exportTo (line 140) | exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),thi...
function aet (line 140) | function aet(t){return typeof t.reportCode<"u"}
method constructor (line 140) | constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}
method constructor (line 140) | constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.repor...
method getRecommendedLength (line 140) | getRecommendedLength(){return 180}
method reportCacheHit (line 140) | reportCacheHit(e){this.cacheHits.add(e.locatorHash)}
method reportCacheMiss (line 140) | reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}
method progressViaCounter (line 140) | static progressViaCounter(e){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let...
method progressViaTitle (line 140) | static progressViaTitle(){let e,r,s=new Promise(c=>{r=c}),a=k4(c=>{let f...
method startProgressPromise (line 140) | async startProgressPromise(e,r){let s=this.reportProgress(e);try{return ...
method startProgressSync (line 140) | startProgressSync(e,r){let s=this.reportProgress(e);try{return r(e)}fina...
method reportInfoOnce (line 140) | reportInfoOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||...
method reportWarningOnce (line 140) | reportWarningOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.ha...
method reportErrorOnce (line 140) | reportErrorOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)...
method reportExceptionOnce (line 140) | reportExceptionOnce(e){aet(e)?this.reportErrorOnce(e.reportCode,e.messag...
method createStreamReporter (line 140) | createStreamReporter(e=null){let r=new cue.PassThrough,s=new uue.StringD...
method constructor (line 141) | constructor(e){this.fetchers=e}
method supports (line 141) | supports(e,r){return!!this.tryFetcher(e,r)}
method getLocalPath (line 141) | getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}
method fetch (line 141) | async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}
method tryFetcher (line 141) | tryFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));return s||n...
method getFetcher (line 141) | getFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));if(!s)throw...
method constructor (line 141) | constructor(e){this.resolvers=e.filter(r=>r)}
method supportsDescriptor (line 141) | supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}
method supportsLocator (line 141) | supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}
method shouldPersistResolution (line 141) | shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shoul...
method bindDescriptor (line 141) | bindDescriptor(e,r,s){return this.getResolverByDescriptor(e,s).bindDescr...
method getResolutionDependencies (line 141) | getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r)....
method getCandidates (line 141) | async getCandidates(e,r,s){return await this.getResolverByDescriptor(e,s...
method getSatisfying (line 141) | async getSatisfying(e,r,s,a){return this.getResolverByDescriptor(e,a).ge...
method resolve (line 141) | async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e...
method tryResolverByDescriptor (line 141) | tryResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDesc...
method getResolverByDescriptor (line 141) | getResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDesc...
method tryResolverByLocator (line 141) | tryResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator...
method getResolverByLocator (line 141) | getResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator...
method supports (line 141) | supports(e){return!!e.reference.startsWith("virtual:")}
method getLocalPath (line 141) | getLocalPath(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Err...
method fetch (line 141) | async fetch(e,r){let s=e.reference.indexOf("#");if(s===-1)throw new Erro...
method getLocatorFilename (line 141) | getLocatorFilename(e){return nI(e)}
method ensureVirtualLink (line 141) | async ensureVirtualLink(e,r,s){let a=r.packageFs.getRealPath(),n=s.proje...
method isVirtualDescriptor (line 141) | static isVirtualDescriptor(e){return!!e.range.startsWith(t.protocol)}
method isVirtualLocator (line 141) | static isVirtualLocator(e){return!!e.reference.startsWith(t.protocol)}
method supportsDescriptor (line 141) | supportsDescriptor(e,r){return t.isVirtualDescriptor(e)}
method supportsLocator (line 141) | supportsLocator(e,r){return t.isVirtualLocator(e)}
method shouldPersistResolution (line 141) | shouldPersistResolution(e,r){return!1}
method bindDescriptor (line 141) | bindDescriptor(e,r,s){throw new Error('Assertion failed: calling "bindDe...
method getResolutionDependencies (line 141) | getResolutionDependencies(e,r){throw new Error('Assertion failed: callin...
method getCandidates (line 141) | async getCandidates(e,r,s){throw new Error('Assertion failed: calling "g...
method getSatisfying (line 141) | async getSatisfying(e,r,s,a){throw new Error('Assertion failed: calling ...
method resolve (line 141) | async resolve(e,r){throw new Error('Assertion failed: calling "resolve" ...
method supports (line 141) | supports(e){return!!e.reference.startsWith(Ei.protocol)}
method getLocalPath (line 141) | getLocalPath(e,r){return this.getWorkspace(e,r).cwd}
method fetch (line 141) | async fetch(e,r){let s=this.getWorkspace(e,r).cwd;return{packageFs:new S...
method getWorkspace (line 141) | getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(E...
function WB (line 141) | function WB(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}
function Aue (line 141) | function Aue(t){return typeof t>"u"?3:WB(t)?0:Array.isArray(t)?1:2}
function L8 (line 141) | function L8(t,e){return Object.hasOwn(t,e)}
function uet (line 141) | function uet(t){return WB(t)&&L8(t,"onConflict")&&typeof t.onConflict=="...
function fet (line 141) | function fet(t){if(typeof t>"u")return{onConflict:"default",value:t};if(...
function pue (line 141) | function pue(t,e){let r=WB(t)&&L8(t,e)?t[e]:void 0;return fet(r)}
function uI (line 141) | function uI(t,e){return[t,e,hue]}
function M8 (line 141) | function M8(t){return Array.isArray(t)?t[2]===hue:!1}
function N8 (line 141) | function N8(t,e){if(WB(t)){let r={};for(let s of Object.keys(t))r[s]=N8(...
function O8 (line 141) | function O8(t,e,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,...
function gue (line 141) | function gue(t){return O8(t.map(([e,r])=>[e,{".":r}]),[],".",0,t.length)}
function YB (line 141) | function YB(t){return M8(t)?t[1]:t}
function FQ (line 141) | function FQ(t){let e=M8(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>FQ...
function U8 (line 141) | function U8(t){return M8(t)?t[0]:null}
function H8 (line 141) | function H8(){if(process.platform==="win32"){let t=fe.toPortablePath(pro...
function fI (line 141) | function fI(){return fe.toPortablePath((0,_8.homedir)()||"/usr/local/sha...
function j8 (line 141) | function j8(t,e){let r=J.relative(e,t);return r&&!r.startsWith("..")&&!J...
method constructor (line 141) | constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.p...
method createConnection (line 141) | createConnection(e,r){let s={...this.proxyRequestOptions,method:"CONNECT...
method constructor (line 141) | constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.p...
method createConnection (line 141) | createConnection(e,r){let s={...this.proxyRequestOptions,method:"CONNECT...
function pet (line 141) | function pet(t){return Bue.includes(t)}
function get (line 141) | function get(t){return het.includes(t)}
function met (line 141) | function met(t){return det.includes(t)}
function AI (line 141) | function AI(t){return e=>typeof e===t}
function Pe (line 141) | function Pe(t){if(t===null)return"null";switch(typeof t){case"undefined"...
method constructor (line 141) | constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}
method isCanceled (line 141) | get isCanceled(){return!0}
method fn (line 141) | static fn(e){return(...r)=>new t((s,a,n)=>{r.push(n),e(...r).then(s,a)})}
method constructor (line 141) | constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCancel...
method then (line 141) | then(e,r){return this._promise.then(e,r)}
method catch (line 141) | catch(e){return this._promise.catch(e)}
method finally (line 141) | finally(e){return this._promise.finally(e)}
method cancel (line 141) | cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandl...
method isCanceled (line 141) | get isCanceled(){return this._isCanceled}
function vet (line 141) | function vet(t){return t.encrypted}
method constructor (line 141) | constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorT...
method servers (line 141) | set servers(e){this.clear(),this._resolver.setServers(e)}
method servers (line 141) | get servers(){return this._resolver.getServers()}
method lookup (line 141) | lookup(e,r,s){if(typeof r=="function"?(s=r,r={}):typeof r=="number"&&(r=...
method lookupAsync (line 141) | async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let s=await...
method query (line 141) | async query(e){let r=await this._cache.get(e);if(!r){let s=this._pending...
method _resolve (line 141) | async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code=...
method _lookup (line 141) | async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),ca...
method _set (line 141) | async _set(e,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r...
method queryAndCache (line 141) | async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._...
method _tick (line 141) | _tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._remo...
method install (line 141) | install(e){if(Rue(e),pI in e)throw new Error("CacheableLookup has been a...
method uninstall (line 141) | uninstall(e){if(Rue(e),e[pI]){if(e[rH]!==this)throw new Error("The agent...
method updateInterfaceInfo (line 141) | updateInterfaceInfo(){let{_iface:e}=this;this._iface=Tue(),(e.has4&&!thi...
method clear (line 141) | clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}
function _ue (line 141) | function _ue(t,e){if(t&&e)return _ue(t)(e);if(typeof t!="function")throw...
function HQ (line 141) | function HQ(t){var e=function(){return e.called?e.value:(e.called=!0,e.v...
function que (line 141) | function que(t){var e=function(){if(e.called)throw new Error(e.onceError...
method constructor (line 141) | constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}
function qQ (line 141) | async function qQ(t,e){if(!t)return Promise.reject(new Error("Expected a...
function nm (line 141) | function nm(t){let e=parseInt(t,10);return isFinite(e)?e:0}
function ott (line 141) | function ott(t){return t?ntt.has(t.status):!0}
function cH (line 141) | function cH(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let...
function att (line 141) | function att(t){let e=[];for(let r in t){let s=t[r];e.push(s===!0?r:r+"=...
method constructor (line 141) | constructor(e,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,igno...
method now (line 141) | now(){return Date.now()}
method storable (line 141) | storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||thi...
method _hasExplicitExpiration (line 141) | _hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]|...
method _assertRequestHasHeaders (line 141) | _assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request heade...
method satisfiesWithoutRevalidation (line 141) | satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=c...
method _requestMatches (line 141) | _requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host==...
method _allowsStoringAuthenticated (line 141) | _allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||thi...
method _varyMatches (line 141) | _varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.v...
method _copyWithoutHopByHopHeaders (line 141) | _copyWithoutHopByHopHeaders(e){let r={};for(let s in e)itt[s]||(r[s]=e[s...
method responseHeaders (line 141) | responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeader...
method date (line 141) | date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this...
method age (line 141) | age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;retur...
method _ageValue (line 141) | _ageValue(){return nm(this._resHeaders.age)}
method maxAge (line 141) | maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&t...
method timeToLive (line 141) | timeToLive(){let e=this.maxAge()-this.age(),r=e+nm(this._rescc["stale-if...
method stale (line 141) | stale(){return this.maxAge()<=this.age()}
method _useStaleIfError (line 141) | _useStaleIfError(){return this.maxAge()+nm(this._rescc["stale-if-error"]...
method useStaleWhileRevalidate (line 141) | useStaleWhileRevalidate(){return this.maxAge()+nm(this._rescc["stale-whi...
method fromObject (line 141) | static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}
method _fromObject (line 141) | _fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e|...
method toObject (line 141) | toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._ca...
method revalidationHeaders (line 141) | revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copy...
method revalidatedPolicy (line 141) | revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStal...
method constructor (line 141) | constructor(e,r,s,a){if(typeof e!="number")throw new TypeError("Argument...
method _read (line 141) | _read(){this.push(this.body),this.push(null)}
method constructor (line 141) | constructor(e,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace...
method _checkIterableAdaptar (line 141) | _checkIterableAdaptar(){return ufe.includes(this.opts.store.opts.dialect...
method _getKeyPrefix (line 141) | _getKeyPrefix(e){return`${this.opts.namespace}:${e}`}
method _getKeyPrefixArray (line 141) | _getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}
method _getKeyUnprefix (line 141) | _getKeyUnprefix(e){return e.split(":").splice(1).join(":")}
method get (line 141) | get(e,r){let{store:s}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefi...
method set (line 141) | set(e,r,s){let a=this._getKeyPrefix(e);typeof s>"u"&&(s=this.opts.ttl),s...
method delete (line 141) | delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKey...
method clear (line 141) | clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear...
method has (line 141) | has(e){let r=this._getKeyPrefix(e),{store:s}=this.opts;return Promise.re...
method disconnect (line 141) | disconnect(){let{store:e}=this.opts;if(typeof e.disconnect=="function")r...
method constructor (line 141) | constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter ...
method createCacheableRequest (line 141) | createCacheableRequest(e){return(r,s)=>{let a;if(typeof r=="string")a=hH...
function wtt (line 141) | function wtt(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search...
function hH (line 141) | function hH(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostnam...
method constructor (line 141) | constructor(t){super(t.message),this.name="RequestError",Object.assign(t...
method constructor (line 141) | constructor(t){super(t.message),this.name="CacheError",Object.assign(thi...
method get (line 141) | get(){let n=t[a];return typeof n=="function"?n.bind(t):n}
method set (line 141) | set(n){t[a]=n}
method transform (line 141) | transform(f,p,h){s=!1,h(null,f)}
method flush (line 141) | flush(f){f()}
method destroy (line 141) | destroy(f,p){t.destroy(),p(f)}
method constructor (line 141) | constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`max...
method _set (line 141) | _set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){...
method get (line 141) | get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.ha...
method set (line 141) | set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}
method has (line 141) | has(e){return this.cache.has(e)||this.oldCache.has(e)}
method peek (line 141) | peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.h...
method delete (line 141) | delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCach...
method clear (line 141) | clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}
method keys (line 141) | *keys(){for(let[e]of this)yield e}
method values (line 141) | *values(){for(let[,e]of this)yield e}
method [Symbol.iterator] (line 141) | *[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.o...
method size (line 141) | get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||...
method constructor (line 141) | constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCac...
method normalizeOrigin (line 141) | static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&...
method normalizeOptions (line 141) | normalizeOptions(e){let r="";if(e)for(let s of Qtt)e[s]&&(r+=`:${e[s]}`)...
method _tryToCreateNewSession (line 141) | _tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e])...
method getSession (line 141) | getSession(e,r,s){return new Promise((a,n)=>{Array.isArray(s)?(s=[...s],...
method request (line 142) | request(e,r,s,a){return new Promise((n,c)=>{this.getSession(e,r,[{reject...
method createConnection (line 142) | createConnection(e,r){return t.connect(e,r)}
method connect (line 142) | static connect(e,r){r.ALPNProtocols=["h2"];let s=e.port||443,a=e.hostnam...
method closeFreeSessions (line 142) | closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r ...
method destroy (line 142) | destroy(e){for(let r of Object.values(this.sessions))for(let s of r)s.de...
method freeSessions (line 142) | get freeSessions(){return wfe({agent:this,isFree:!0})}
method busySessions (line 142) | get busySessions(){return wfe({agent:this,isFree:!1})}
method constructor (line 142) | constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode...
method _destroy (line 142) | _destroy(e){this.req._request.destroy(e)}
method setTimeout (line 142) | setTimeout(e,r){return this.req.setTimeout(e,r),this}
method _dump (line 142) | _dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),t...
method _read (line 142) | _read(){this.req&&this.req._request.resume()}
method constructor (line 142) | constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.na...
method constructor (line 142) | constructor(e,r,s){super({autoDestroy:!1});let a=typeof e=="string"||e i...
method method (line 142) | get method(){return this[Jo][Ofe]}
method method (line 142) | set method(e){e&&(this[Jo][Ofe]=e.toUpperCase())}
method path (line 142) | get path(){return this[Jo][Lfe]}
method path (line 142) | set path(e){e&&(this[Jo][Lfe]=e)}
method _mustNotHaveABody (line 142) | get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"...
method _write (line 142) | _write(e,r,s){if(this._mustNotHaveABody){s(new Error("The GET, HEAD and ...
method _final (line 142) | _final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(thi...
method abort (line 142) | abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=...
method _destroy (line 142) | _destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.de...
method flushHeaders (line 142) | async flushHeaders(){if(this[VQ]||this.destroyed)return;this[VQ]=!0;let ...
method getHeader (line 142) | getHeader(e){if(typeof e!="string")throw new BH("name","string",e);retur...
method headersSent (line 142) | get headersSent(){return this[VQ]}
method removeHeader (line 142) | removeHeader(e){if(typeof e!="string")throw new BH("name","string",e);if...
method setHeader (line 142) | setHeader(e,r){if(this.headersSent)throw new Ffe("set");if(typeof e!="st...
method setNoDelay (line 142) | setNoDelay(){}
method setSocketKeepAlive (line 142) | setSocketKeepAlive(){}
method setTimeout (line 142) | setTimeout(e,r){let s=()=>this._request.setTimeout(e,r);return this._req...
method maxHeadersCount (line 142) | get maxHeadersCount(){if(!this.destroyed&&this._request)return this._req...
method maxHeadersCount (line 142) | set maxHeadersCount(e){}
function Art (line 142) | function Art(t,e,r){let s={};for(let a of r)s[a]=(...n)=>{e.emit(a,...n)...
method once (line 142) | once(e,r,s){e.once(r,s),t.push({origin:e,event:r,fn:s})}
method unhandleAll (line 142) | unhandleAll(){for(let e of t){let{origin:r,event:s,fn:a}=e;r.removeListe...
method constructor (line 142) | constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=...
method constructor (line 142) | constructor(){this.weakMap=new WeakMap,this.map=new Map}
method set (line 142) | set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}
method get (line 142) | get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}
method has (line 142) | has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}
function Lrt (line 142) | function Lrt(t){for(let e in t){let r=t[e];if(!at.default.string(r)&&!at...
function Mrt (line 142) | function Mrt(t){return at.default.object(t)&&!("statusCode"in t)}
method constructor (line 142) | constructor(e,r,s){var a;if(super(e),Error.captureStackTrace(this,this.c...
method constructor (line 146) | constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborti...
method constructor (line 146) | constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})...
method constructor (line 146) | constructor(e,r){super(e.message,e,r),this.name="CacheError"}
method constructor (line 146) | constructor(e,r){super(e.message,e,r),this.name="UploadError"}
method constructor (line 146) | constructor(e,r,s){super(e.message,e,s),this.name="TimeoutError",this.ev...
method constructor (line 146) | constructor(e,r){super(e.message,e,r),this.name="ReadError"}
method constructor (line 146) | constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),th...
method constructor (line 146) | constructor(e,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[yI]=0...
method normalizeArguments (line 146) | static normalizeArguments(e,r,s){var a,n,c,f,p;let h=r;if(at.default.obj...
method _lockWrite (line 146) | _lockWrite(){let e=()=>{throw new TypeError("The payload has been alread...
method _unlockWrite (line 146) | _unlockWrite(){this.write=super.write,this.end=super.end}
method _finalizeBody (line 146) | async _finalizeBody(){let{options:e}=this,{headers:r}=e,s=!at.default.un...
method _onResponseBase (line 146) | async _onResponseBase(e){let{options:r}=this,{url:s}=r;this[vAe]=e,r.dec...
method _onResponse (line 146) | async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._be...
method _onRequest (line 146) | _onRequest(e){let{options:r}=this,{timeout:s,url:a}=r;Brt.default(e),thi...
method _createCacheableRequest (line 146) | async _createCacheableRequest(e,r){return new Promise((s,a)=>{Object.ass...
method _makeRequest (line 146) | async _makeRequest(){var e,r,s,a,n;let{options:c}=this,{headers:f}=c;for...
method _error (line 146) | async _error(e){try{for(let r of this.options.hooks.beforeError)e=await ...
method _beforeError (line 146) | _beforeError(e){if(this[CI])return;let{options:r}=this,s=this.retryCount...
method _read (line 146) | _read(){this[XQ]=!0;let e=this[$Q];if(e&&!this[CI]){e.readableLength&&(t...
method _write (line 146) | _write(e,r,s){let a=()=>{this._writeRequest(e,r,s)};this.requestInitiali...
method _writeRequest (line 146) | _writeRequest(e,r,s){this[po].destroyed||(this._progressCallbacks.push((...
method _final (line 146) | _final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._prog...
method _destroy (line 146) | _destroy(e,r){var s;this[CI]=!0,clearTimeout(this[SAe]),po in this&&(thi...
method _isAboutToError (line 146) | get _isAboutToError(){return this[CI]}
method ip (line 146) | get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteA...
method aborted (line 146) | get aborted(){var e,r,s;return((r=(e=this[po])===null||e===void 0?void 0...
method socket (line 146) | get socket(){var e,r;return(r=(e=this[po])===null||e===void 0?void 0:e.s...
method downloadProgress (line 146) | get downloadProgress(){let e;return this[mI]?e=this[yI]/this[mI]:this[mI...
method uploadProgress (line 146) | get uploadProgress(){let e;return this[EI]?e=this[II]/this[EI]:this[EI]=...
method timings (line 146) | get timings(){var e;return(e=this[po])===null||e===void 0?void 0:e.timings}
method isFromCache (line 146) | get isFromCache(){return this[wAe]}
method pipe (line 146) | pipe(e,r){if(this[BAe])throw new Error("Failed to pipe. The response has...
method unpipe (line 146) | unpipe(e){return e instanceof YH.ServerResponse&&this[ZQ].delete(e),supe...
method constructor (line 146) | constructor(e,r){let{options:s}=r.request;super(`${e.message} in "${s.ur...
method constructor (line 146) | constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}
method isCanceled (line 146) | get isCanceled(){return!0}
function RAe (line 146) | function RAe(t){let e,r,s=new Jrt.EventEmitter,a=new zrt((c,f,p)=>{let h...
function tnt (line 146) | function tnt(t,...e){let r=(async()=>{if(t instanceof ent.RequestError)t...
function NAe (line 146) | function NAe(t){for(let e of Object.values(t))(FAe.default.plainObject(e...
function ij (line 146) | async function ij(t){return Yl(VAe,t,()=>ce.readFilePromise(t).then(e=>(...
function dnt (line 146) | function dnt({statusCode:t,statusMessage:e},r){let s=Ht(r,t,ht.NUMBER),a...
function fR (line 146) | async function fR(t,{configuration:e,customErrorMessage:r}){try{return a...
function zAe (line 146) | function zAe(t,e){let r=[...e.configuration.get("networkSettings")].sort...
function iv (line 146) | async function iv(t,e,{configuration:r,headers:s,jsonRequest:a,jsonRespo...
function oj (line 146) | async function oj(t,{configuration:e,jsonResponse:r,customErrorMessage:s...
function mnt (line 146) | async function mnt(t,e,{customErrorMessage:r,...s}){return(await fR(iv(t...
function aj (line 146) | async function aj(t,e,{customErrorMessage:r,...s}){return(await fR(iv(t,...
function ynt (line 146) | async function ynt(t,{customErrorMessage:e,...r}){return(await fR(iv(t,n...
function Ent (line 146) | async function Ent(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResp...
function Bnt (line 146) | function Bnt(){if(process.platform!=="linux")return null;let t;try{t=ce....
function sv (line 146) | function sv(){return $Ae=$Ae??{os:(process.env.YARN_IS_TEST_ENV?process....
function vnt (line 146) | function vnt(t=sv()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}...
function lj (line 146) | function lj(){let t=sv();return epe=epe??{os:[t.os],cpu:[t.cpu],libc:t.l...
function Pnt (line 146) | function Pnt(t){let e=Snt.exec(t);if(!e)return null;let r=e[2]&&e[2].ind...
function bnt (line 146) | function bnt(){let e=new Error().stack.split(`
function cj (line 147) | function cj(){return typeof pR.default.availableParallelism<"u"?pR.defau...
function gj (line 147) | function gj(t,e,r,s,a){let n=YB(r);if(s.isArray||s.type==="ANY"&&Array.i...
function fj (line 147) | function fj(t,e,r,s,a){let n=YB(r);switch(s.type){case"ANY":return FQ(n)...
function Rnt (line 147) | function Rnt(t,e,r,s,a){let n=YB(r);if(typeof n!="object"||Array.isArray...
function Tnt (line 147) | function Tnt(t,e,r,s,a){let n=YB(r),c=new Map;if(typeof n!="object"||Arr...
function dj (line 147) | function dj(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e...
function mR (line 147) | function mR(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecre...
function Fnt (line 147) | function Fnt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.t...
function pj (line 147) | function pj(){let t=`${yR}rc_filename`;for(let[e,r]of Object.entries(pro...
function tpe (line 147) | async function tpe(t){try{return await ce.readFilePromise(t)}catch{retur...
function Nnt (line 147) | async function Nnt(t,e){return Buffer.compare(...await Promise.all([tpe(...
function Ont (line 147) | async function Ont(t,e){let[r,s]=await Promise.all([ce.statPromise(t),ce...
function Mnt (line 147) | async function Mnt({configuration:t,selfPath:e}){let r=t.get("yarnPath")...
method constructor (line 147) | constructor(e){this.isCI=Lp.isCI;this.projectCwd=null;this.plugins=new M...
method create (line 147) | static create(e,r,s){let a=new t(e);typeof r<"u"&&!(r instanceof Map)&&(...
method find (line 147) | static async find(e,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){l...
method findRcFiles (line 147) | static async findRcFiles(e){let r=pj(),s=[],a=e,n=null;for(;a!==n;){n=a;...
method findFolderRcFile (line 147) | static async findFolderRcFile(e){let r=J.join(e,Er.rc),s;try{s=await ce....
method findProjectCwd (line 147) | static async findProjectCwd(e){let r=null,s=e,a=null;for(;s!==a;){if(a=s...
method updateConfiguration (line 147) | static async updateConfiguration(e,r,s={}){let a=pj(),n=J.join(e,a),c=ce...
method addPlugin (line 147) | static async addPlugin(e,r){r.length!==0&&await t.updateConfiguration(e,...
method updateHomeConfiguration (line 147) | static async updateHomeConfiguration(e){let r=fI();return await t.update...
method activatePlugin (line 147) | activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&th...
method importSettings (line 147) | importSettings(e){for(let[r,s]of Object.entries(e))if(s!=null){if(this.s...
method useWithSource (line 147) | useWithSource(e,r,s,a){try{this.use(e,r,s,a)}catch(n){throw n.message+=`...
method use (line 147) | use(e,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSe...
method get (line 147) | get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key...
method getSpecial (line 147) | getSpecial(e,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(e),n...
method getSubprocessStreams (line 147) | getSubprocessStreams(e,{header:r,prefix:s,report:a}){let n,c,f=ce.create...
method makeResolver (line 148) | makeResolver(){let e=[];for(let r of this.plugins.values())for(let s of ...
method makeFetcher (line 148) | makeFetcher(){let e=[];for(let r of this.plugins.values())for(let s of r...
method getLinkers (line 148) | getLinkers(){let e=[];for(let r of this.plugins.values())for(let s of r....
method getSupportedArchitectures (line 148) | getSupportedArchitectures(){let e=sv(),r=this.get("supportedArchitecture...
method isInteractive (line 148) | isInteractive({interactive:e,stdout:r}){return r.isTTY?e??this.get("pref...
method getPackageExtensions (line 148) | async getPackageExtensions(){if(this.packageExtensions!==null)return thi...
method normalizeLocator (line 148) | normalizeLocator(e){return cl(e.reference)?Ws(e,`${this.get("defaultProt...
method normalizeDependency (line 148) | normalizeDependency(e){return cl(e.range)?On(e,`${this.get("defaultProto...
method normalizeDependencyMap (line 148) | normalizeDependencyMap(e){return new Map([...e].map(([r,s])=>[r,this.nor...
method normalizePackage (line 148) | normalizePackage(e,{packageExtensions:r}){let s=LB(e),a=r.get(e.identHas...
method getLimit (line 148) | getLimit(e){return Yl(this.limits,e,()=>(0,spe.default)(this.get(e)))}
method triggerHook (line 148) | async triggerHook(e,...r){for(let s of this.plugins.values()){let a=s.ho...
method triggerMultipleHooks (line 148) | async triggerMultipleHooks(e,r){for(let s of r)await this.triggerHook(e,...
method reduceHook (line 148) | async reduceHook(e,r,...s){let a=r;for(let n of this.plugins.values()){l...
method firstHook (line 148) | async firstHook(e,...r){for(let s of this.plugins.values()){let a=s.hook...
function om (line 148) | function om(t){return t!==null&&typeof t.fd=="number"}
function mj (line 148) | function mj(){}
function yj (line 148) | function yj(){for(let t of am)t.kill()}
function Wu (line 148) | async function Wu(t,e,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,...
function uj (line 148) | async function uj(t,e,{cwd:r,env:s=process.env,encoding:a="utf8",strict:...
function Cj (line 148) | function Cj(t,e){let r=Unt.get(e);return typeof r<"u"?128+r:t??1}
function _nt (line 148) | function _nt(t,e,{configuration:r,report:s}){s.reportError(1,` ${Kf(r,t...
method constructor (line 148) | constructor({fileName:e,code:r,signal:s}){let a=ze.create(J.cwd()),n=Ht(...
method constructor (line 148) | constructor({fileName:e,code:r,signal:s,stdout:a,stderr:n}){super({fileN...
function lpe (line 148) | function lpe(t){ape=t}
function cv (line 148) | function cv(){return typeof wj>"u"&&(wj=ape()),wj}
function b (line 148) | function b(Ke){return r.locateFile?r.locateFile(Ke,S):S+Ke}
function pe (line 148) | function pe(Ke,st,St){switch(st=st||"i8",st.charAt(st.length-1)==="*"&&(...
function we (line 148) | function we(Ke,st){Ke||ts("Assertion failed: "+st)}
function ye (line 148) | function ye(Ke){var st=r["_"+Ke];return we(st,"Cannot call unknown funct...
function Ae (line 148) | function Ae(Ke,st,St,lr,te){var Ee={string:function(Gi){var Rn=0;if(Gi!=...
function se (line 148) | function se(Ke,st,St,lr){St=St||[];var te=St.every(function(Oe){return O...
function De (line 148) | function De(Ke,st){if(!Ke)return"";for(var St=Ke+st,lr=Ke;!(lr>=St)&&ke[...
function Te (line 148) | function Te(Ke,st,St,lr){if(!(lr>0))return 0;for(var te=St,Ee=St+lr-1,Oe...
function mt (line 148) | function mt(Ke,st,St){return Te(Ke,ke,st,St)}
function j (line 148) | function j(Ke){for(var st=0,St=0;St<Ke.length;++St){var lr=Ke.charCodeAt...
function rt (line 148) | function rt(Ke){var st=j(Ke)+1,St=La(st);return St&&Te(Ke,Ve,St,st),St}
function Fe (line 148) | function Fe(Ke,st){Ve.set(Ke,st)}
function Ne (line 148) | function Ne(Ke,st){return Ke%st>0&&(Ke+=st-Ke%st),Ke}
function z (line 148) | function z(Ke){be=Ke,r.HEAP_DATA_VIEW=F=new DataView(Ke),r.HEAP8=Ve=new ...
function Ct (line 148) | function Ct(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r....
function qt (line 148) | function qt(){lt=!0,Rs(xe)}
function ir (line 148) | function ir(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=...
function bt (line 148) | function bt(Ke){oe.unshift(Ke)}
function gn (line 148) | function gn(Ke){xe.unshift(Ke)}
function br (line 148) | function br(Ke){Re.unshift(Ke)}
function ai (line 148) | function ai(Ke){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(...
function Io (line 148) | function Io(Ke){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependenci...
function ts (line 148) | function ts(Ke){r.onAbort&&r.onAbort(Ke),Ke+="",ee(Ke),Ce=!0,g=1,Ke="abo...
function Co (line 148) | function Co(Ke){return Ke.startsWith($s)}
function eo (line 148) | function eo(Ke){try{if(Ke==Hi&&le)return new Uint8Array(le);var st=Me(Ke...
function wo (line 148) | function wo(Ke,st){var St,lr,te;try{te=eo(Ke),lr=new WebAssembly.Module(...
function QA (line 148) | function QA(){var Ke={a:cu};function st(te,Ee){var Oe=te.exports;r.asm=O...
function Af (line 148) | function Af(Ke){return F.getFloat32(Ke,!0)}
function dh (line 148) | function dh(Ke){return F.getFloat64(Ke,!0)}
function mh (line 148) | function mh(Ke){return F.getInt16(Ke,!0)}
function to (line 148) | function to(Ke){return F.getInt32(Ke,!0)}
function jn (line 148) | function jn(Ke,st){F.setInt32(Ke,st,!0)}
function Rs (line 148) | function Rs(Ke){for(;Ke.length>0;){var st=Ke.shift();if(typeof st=="func...
function ro (line 148) | function ro(Ke,st){var St=new Date(to((Ke>>2)*4)*1e3);jn((st>>2)*4,St.ge...
function ou (line 148) | function ou(Ke,st){return ro(Ke,st)}
function au (line 148) | function au(Ke,st,St){ke.copyWithin(Ke,st,st+St)}
function lu (line 148) | function lu(Ke){try{return Be.grow(Ke-be.byteLength+65535>>>16),z(Be.buf...
function RA (line 148) | function RA(Ke){var st=ke.length;Ke=Ke>>>0;var St=2147483648;if(Ke>St)re...
function TA (line 148) | function TA(Ke){ue(Ke)}
function oa (line 148) | function oa(Ke){var st=Date.now()/1e3|0;return Ke&&jn((Ke>>2)*4,st),st}
function aa (line 148) | function aa(){if(aa.called)return;aa.called=!0;var Ke=new Date().getFull...
function FA (line 148) | function FA(Ke){aa();var st=Date.UTC(to((Ke+20>>2)*4)+1900,to((Ke+16>>2)...
function Bo (line 148) | function Bo(Ke){if(typeof C=="boolean"&&C){var st;try{st=Buffer.from(Ke,...
function Me (line 148) | function Me(Ke){if(Co(Ke))return Bo(Ke.slice($s.length))}
function Ac (line 148) | function Ac(Ke){if(Ke=Ke||f,Ir>0||(Ct(),Ir>0))return;function st(){Qn||(...
method HEAPU8 (line 148) | get HEAPU8(){return t.HEAPU8}
function Dj (line 148) | function Dj(t,e){let r=t.indexOf(e);if(r<=0)return null;let s=r;for(;r>=...
method openPromise (line 148) | static async openPromise(e,r){let s=new t(r);try{return await e(s)}final...
method constructor (line 148) | constructor(e={}){let r=e.fileExtensions,s=e.readOnlyArchives,a=typeof r...
method constructor (line 148) | constructor(e,r){super(e),this.name="Libzip Error",this.code=r}
method constructor (line 148) | constructor(e){this.filesShouldBeCached=!0;let r="buffer"in e?e.buffer:e...
method getSymlinkCount (line 148) | getSymlinkCount(){return this.symlinkCount}
method getListings (line 148) | getListings(){return this.listings}
method stat (line 148) | stat(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.z...
method makeLibzipError (line 148) | makeLibzipError(e){let r=this.libzip.struct.errorCodeZip(e),s=this.libzi...
method setFileSource (line 148) | setFileSource(e,r,s){let a=this.allocateSource(s);try{let n=this.libzip....
method setMtime (line 148) | setMtime(e,r){if(this.libzip.file.setMtime(this.zip,e,0,r,0)===-1)throw ...
method getExternalAttributes (line 148) | getExternalAttributes(e){if(this.libzip.file.getExternalAttributes(this....
method setExternalAttributes (line 148) | setExternalAttributes(e,r,s){if(this.libzip.file.setExternalAttributes(t...
method locate (line 148) | locate(e){return this.libzip.name.locate(this.zip,e,0)}
method getFileSource (line 148) | getFileSource(e){let r=this.libzip.struct.statS();if(this.libzip.statInd...
method deleteEntry (line 148) | deleteEntry(e){if(this.libzip.delete(this.zip,e)===-1)throw this.makeLib...
method addDirectory (line 148) | addDirectory(e){let r=this.libzip.dir.add(this.zip,e);if(r===-1)throw th...
method getBufferAndClose (line 148) | getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.l...
method allocateBuffer (line 148) | allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libz...
method allocateUnattachedSource (line 148) | allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:s,...
method allocateSource (line 148) | allocateSource(e){let{buffer:r,byteLength:s}=this.allocateBuffer(e),a=th...
method discard (line 148) | discard(){this.libzip.discard(this.zip)}
function jnt (line 148) | function jnt(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof...
function wR (line 148) | function wR(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
method constructor (line 148) | constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;t...
method getExtractHint (line 148) | getExtractHint(r){for(let s of this.entries.keys()){let a=this.pathUtils...
method getAllFiles (line 148) | getAllFiles(){return Array.from(this.entries.keys())}
method getRealPath (line 148) | getRealPath(){if(!this.path)throw new Error("ZipFS don't have real paths...
method prepareClose (line 148) | prepareClose(){if(!this.ready)throw or.EBUSY("archive closed, close");yd...
method getBufferAndClose (line 148) | getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return ...
method discardAndClose (line 148) | discardAndClose(){this.prepareClose(),this.zipImpl.discard(),this.ready=!1}
method saveAndClose (line 148) | saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot...
method resolve (line 148) | resolve(r){return J.resolve(vt.root,r)}
method openPromise (line 148) | async openPromise(r,s,a){return this.openSync(r,s,a)}
method openSync (line 148) | openSync(r,s,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}...
method hasOpenFileHandles (line 148) | hasOpenFileHandles(){return!!this.fds.size}
method opendirPromise (line 148) | async opendirPromise(r,s){return this.opendirSync(r,s)}
method opendirSync (line 148) | opendirSync(r,s={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!t...
method readPromise (line 148) | async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}
method readSync (line 148) | readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>...
method writePromise (line 148) | async writePromise(r,s,a,n,c){return typeof s=="string"?this.writeSync(r...
method writeSync (line 148) | writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>"u"?or.EBADF("read"):n...
method closePromise (line 148) | async closePromise(r){return this.closeSync(r)}
method closeSync (line 148) | closeSync(r){if(typeof this.fds.get(r)>"u")throw or.EBADF("read");this.f...
method createReadStream (line 148) | createReadStream(r,{encoding:s}={}){if(r===null)throw new Error("Unimple...
method createWriteStream (line 148) | createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`op...
method realpathPromise (line 148) | async realpathPromise(r){return this.realpathSync(r)}
method realpathSync (line 148) | realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.en...
method existsPromise (line 148) | async existsPromise(r){return this.existsSync(r)}
method existsSync (line 148) | existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync ...
method accessPromise (line 148) | async accessPromise(r,s){return this.accessSync(r,s)}
method accessSync (line 148) | accessSync(r,s=xa.constants.F_OK){let a=this.resolveFilename(`access '${...
method statPromise (line 148) | async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigi...
method statSync (line 148) | statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`...
method fstatPromise (line 148) | async fstatPromise(r,s){return this.fstatSync(r,s)}
method fstatSync (line 148) | fstatSync(r,s){let a=this.fds.get(r);if(typeof a>"u")throw or.EBADF("fst...
method lstatPromise (line 148) | async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bi...
method lstatSync (line 148) | lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(...
method statImpl (line 148) | statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<"u"){let c=this...
method getUnixMode (line 148) | getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a...
method registerListing (line 148) | registerListing(r){let s=this.listings.get(r);if(s)return s;this.registe...
method registerEntry (line 148) | registerEntry(r,s){this.registerListing(J.dirname(r)).add(J.basename(r))...
method unregisterListing (line 148) | unregisterListing(r){this.listings.delete(r),this.listings.get(J.dirname...
method unregisterEntry (line 148) | unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);t...
method deleteEntry (line 148) | deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}
method resolveFilename (line 148) | resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive cl...
method setFileSource (line 148) | setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=J.relativ...
method isSymbolicLink (line 148) | isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImp...
method getFileSource (line 148) | getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if...
method fchmodPromise (line 148) | async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,"fchmo...
method fchmodSync (line 148) | fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,"fchmodSync"),s)}
method chmodPromise (line 148) | async chmodPromise(r,s){return this.chmodSync(r,s)}
method chmodSync (line 148) | chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;le...
method fchownPromise (line 148) | async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,"fch...
method fchownSync (line 148) | fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,"fchownSync"),s,a)}
method chownPromise (line 148) | async chownPromise(r,s,a){return this.chownSync(r,s,a)}
method chownSync (line 148) | chownSync(r,s,a){throw new Error("Unimplemented")}
method renamePromise (line 148) | async renamePromise(r,s){return this.renameSync(r,s)}
method renameSync (line 148) | renameSync(r,s){throw new Error("Unimplemented")}
method copyFilePromise (line 148) | async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP...
method copyFileSync (line 148) | copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=thi...
method prepareCopyFile (line 148) | prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r}...
method appendFilePromise (line 148) | async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${...
method appendFileSync (line 148) | appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);...
method fdToPath (line 148) | fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>"u")throw or.EBADF(s)...
method writeFilePromise (line 148) | async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}...
method writeFileSync (line 148) | writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.pre...
method prepareWriteFile (line 148) | prepareWriteFile(r,s){if(typeof r=="number"&&(r=this.fdToPath(r,"read"))...
method unlinkPromise (line 148) | async unlinkPromise(r){return this.unlinkSync(r)}
method unlinkSync (line 148) | unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=thi...
method utimesPromise (line 148) | async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}
method utimesSync (line 148) | utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n...
method lutimesPromise (line 148) | async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}
method lutimesSync (line 148) | lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let...
method utimesImpl (line 148) | utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrate...
method mkdirPromise (line 148) | async mkdirPromise(r,s){return this.mkdirSync(r,s)}
method mkdirSync (line 148) | mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(...
method rmdirPromise (line 148) | async rmdirPromise(r,s){return this.rmdirSync(r,s)}
method rmdirSync (line 148) | rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir ...
method rmPromise (line 148) | async rmPromise(r,s){return this.rmSync(r,s)}
method rmSync (line 148) | rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'...
method hydrateDirectory (line 148) | hydrateDirectory(r){let s=this.zipImpl.addDirectory(J.relative(vt.root,r...
method linkPromise (line 148) | async linkPromise(r,s){return this.linkSync(r,s)}
method linkSync (line 148) | linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}
method symlinkPromise (line 148) | async symlinkPromise(r,s){return this.symlinkSync(r,s)}
method symlinkSync (line 148) | symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s...
method readFilePromise (line 148) | async readFilePromise(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);l...
method readFileSync (line 148) | readFileSync(r,s){typeof s=="object"&&(s=s?s.encoding:void 0);let a=this...
method readFileBuffer (line 148) | readFileBuffer(r,s={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdT...
method readdirPromise (line 148) | async readdirPromise(r,s){return this.readdirSync(r,s)}
method readdirSync (line 148) | readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this...
method readlinkPromise (line 148) | async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this...
method readlinkSync (line 148) | readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(...
method prepareReadlink (line 148) | prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if...
method truncatePromise (line 148) | async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r)...
method truncateSync (line 148) | truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.e...
method ftruncatePromise (line 148) | async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,...
method ftruncateSync (line 148) | ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,"ftruncateSy...
method watch (line 148) | watch(r,s,a){let n;switch(typeof s){case"function":case"string":case"und...
method watchFile (line 148) | watchFile(r,s,a){let n=J.resolve(vt.root,r);return sE(this,n,s,a)}
method unwatchFile (line 148) | unwatchFile(r,s){let a=J.resolve(vt.root,r);return md(this,a,s)}
function mpe (line 148) | function mpe(t,e,r=Buffer.alloc(0),s){let a=new As(r),n=C=>C===e||C.star...
method constructor (line 148) | constructor(e){this.filesShouldBeCached=!1;if("buffer"in e)throw new Err...
method readZipSync (line 148) | static readZipSync(e,r,s){if(s<uv)throw new Error("Invalid ZIP file: EOC...
method getExternalAttributes (line 148) | getExternalAttributes(e){let r=this.entries[e];return[r.os,r.externalAtt...
method getListings (line 148) | getListings(){return this.entries.map(e=>e.name)}
method getSymlinkCount (line 148) | getSymlinkCount(){let e=0;for(let r of this.entries)r.isSymbolicLink&&(e...
method stat (line 148) | stat(e){let r=this.entries[e];return{crc:r.crc,mtime:r.mtime,size:r.size}}
method locate (line 148) | locate(e){for(let r=0;r<this.entries.length;r++)if(this.entries[r].name=...
method getFileSource (line 148) | getFileSource(e){if(this.fd==="closed")throw new Error("ZIP file is clos...
method discard (line 148) | discard(){this.fd!=="closed"&&(this.baseFs.closeSync(this.fd),this.fd="c...
method addDirectory (line 148) | addDirectory(e){throw new Error("Not implemented")}
method deleteEntry (line 148) | deleteEntry(e){throw new Error("Not implemented")}
method setMtime (line 148) | setMtime(e,r){throw new Error("Not implemented")}
method getBufferAndClose (line 148) | getBufferAndClose(){throw new Error("Not implemented")}
method setFileSource (line 148) | setFileSource(e,r,s){throw new Error("Not implemented")}
method setExternalAttributes (line 148) | setExternalAttributes(e,r,s){throw new Error("Not implemented")}
function Gnt (line 148) | function Gnt(){return cv()}
function qnt (line 148) | async function qnt(){return cv()}
method constructor (line 148) | constructor(){super(...arguments);this.cwd=ge.String("--cwd",process.cwd...
method execute (line 158) | async execute(){let r=this.args.length>0?`${this.commandName} ${this.arg...
method constructor (line 158) | constructor(e){super(e),this.name="ShellError"}
function Wnt (line 158) | function Wnt(t){if(!SR.default.scan(t,DR).isGlob)return!1;try{SR.default...
function Ynt (line 158) | function Ynt(t,{cwd:e,baseFs:r}){return(0,vpe.default)(t,{...Dpe,cwd:fe....
function Fj (line 158) | function Fj(t){return SR.default.scan(t,DR).isBrace}
function Nj (line 158) | function Nj(){}
function Oj (line 158) | function Oj(){for(let t of cm)t.kill()}
function Qpe (line 158) | function Qpe(t,e,r,s){return a=>{let n=a[0]instanceof tA.Transform?"pipe...
function Rpe (line 161) | function Rpe(t){return e=>{let r=e[0]==="pipe"?new tA.PassThrough:e[0];r...
function bR (line 161) | function bR(t,e){return Mj.start(t,e)}
function bpe (line 161) | function bpe(t,e=null){let r=new tA.PassThrough,s=new kpe.StringDecoder,...
function Tpe (line 162) | function Tpe(t,{prefix:e}){return{stdout:bpe(r=>t.stdout.write(`${r}
method constructor (line 164) | constructor(e){this.stream=e}
method close (line 164) | close(){}
method get (line 164) | get(){return this.stream}
method constructor (line 164) | constructor(){this.stream=null}
method close (line 164) | close(){if(this.stream===null)throw new Error("Assertion failed: No stre...
method attach (line 164) | attach(e){this.stream=e}
method get (line 164) | get(){if(this.stream===null)throw new Error("Assertion failed: No stream...
method constructor (line 164) | constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this....
method start (line 164) | static start(e,{stdin:r,stdout:s,stderr:a}){let n=new t(null,e);return n...
method pipeTo (line 164) | pipeTo(e,r=1){let s=new t(this,e),a=new Lj;return s.pipe=a,s.stdout=this...
method exec (line 164) | async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe"...
method run (line 164) | async run(){let e=[];for(let s=this;s;s=s.ancestor)e.push(s.exec());retu...
function Fpe (line 164) | function Fpe(t,e,r){let s=new Jl.PassThrough({autoDestroy:!0});switch(t)...
function kR (line 164) | function kR(t,e={}){let r={...t,...e};return r.environment={...t.environ...
function Jnt (line 164) | async function Jnt(t,e,r){let s=[],a=new Jl.PassThrough;return a.on("dat...
function Npe (line 164) | async function Npe(t,e,r){let s=t.map(async n=>{let c=await um(n.args,e,...
function xR (line 164) | function xR(t){return t.match(/[^ \r\n\t]+/g)||[]}
function Hpe (line 164) | async function Hpe(t,e,r,s,a=s){switch(t.name){case"$":s(String(process....
function hv (line 164) | async function hv(t,e,r){if(t.type==="number"){if(Number.isInteger(t.val...
function um (line 164) | async function um(t,e,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>...
function gv (line 164) | function gv(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let s=fe.f...
function znt (line 164) | function znt(t,e,r){return s=>{let a=new Jl.PassThrough,n=QR(t,e,kR(r,{s...
function Znt (line 164) | function Znt(t,e,r){return s=>{let a=new Jl.PassThrough,n=QR(t,e,r);retu...
function Ope (line 164) | function Ope(t,e,r,s){if(e.length===0)return t;{let a;do a=String(Math.r...
function Lpe (line 164) | async function Lpe(t,e,r){let s=t,a=null,n=null;for(;s;){let c=s.then?{....
function Xnt (line 164) | async function Xnt(t,e,r,{background:s=!1}={}){function a(n){let c=["#2E...
function $nt (line 166) | async function $nt(t,e,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variabl...
function QR (line 167) | async function QR(t,e,r){let s=r.backgroundJobs;r.backgroundJobs=[];let ...
function jpe (line 167) | function jpe(t){switch(t.type){case"variable":return t.name==="@"||t.nam...
function dv (line 167) | function dv(t){switch(t.type){case"redirection":return t.args.some(e=>dv...
function _j (line 167) | function _j(t){switch(t.type){case"variable":return jpe(t);case"number":...
function Hj (line 167) | function Hj(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(...
function vI (line 167) | async function vI(t,e=[],{baseFs:r=new Yn,builtins:s={},cwd:a=fe.toPorta...
method write (line 170) | write(ie,ue,le){setImmediate(le)}
function eit (line 170) | function eit(){var t=0,e=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=1...
function rit (line 170) | function rit(){if(TR)return TR;if(typeof Intl.Segmenter<"u"){let t=new I...
function Zpe (line 170) | function Zpe(t,{configuration:e,json:r}){if(!e.get("enableMessageNames")...
function jj (line 170) | function jj(t,{configuration:e,json:r}){let s=Zpe(t,{configuration:e,jso...
function SI (line 170) | async function SI({configuration:t,stdout:e,forceError:r},s){let a=await...
method constructor (line 175) | constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=...
method start (line 175) | static async start(r,s){let a=new this(r),n=process.emitWarning;process....
method hasErrors (line 175) | hasErrors(){return this.errorCount>0}
method exitCode (line 175) | exitCode(){return this.hasErrors()?1:0}
method getRecommendedLength (line 175) | getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.colum...
method startSectionSync (line 175) | startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c=...
method startSectionPromise (line 175) | async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},...
method startTimerImpl (line 175) | startTimerImpl(r,s,a){return{cb:typeof s=="function"?s:a,reportHeader:()...
method startTimerSync (line 175) | startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return t...
method startTimerPromise (line 175) | async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a)...
method reportSeparator (line 175) | reportSeparator(){this.indent===0?this.writeLine(""):this.reportInfo(nul...
method reportInfo (line 175) | reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.fo...
method reportWarning (line 175) | reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;...
method reportError (line 175) | reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.repor...
method reportErrorImpl (line 175) | reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r)...
method reportFold (line 175) | reportFold(r,s){if(!D0)return;let a=`${D0.start(r)}${s}${D0.end(r)}`;thi...
method reportProgress (line 175) | reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve...
method reportJson (line 175) | reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}
method finalize (line 175) | async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>...
method writeLine (line 175) | writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout....
method writeLines (line 176) | writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(l...
method commit (line 177) | commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)...
method clearProgress (line 177) | clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.pr...
method writeProgress (line 177) | writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==nu...
method refreshProgress (line 178) | refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.prog...
method truncate (line 178) | truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typ...
method formatName (line 178) | formatName(r){return this.includeNames?Zpe(r,{configuration:this.configu...
method formatPrefix (line 178) | formatPrefix(r,s){return this.includePrefix?`${Ht(this.configuration,"\u...
method formatNameWithHyperlink (line 178) | formatNameWithHyperlink(r){return this.includeNames?jj(r,{configuration:...
method formatIndent (line 178) | formatIndent(){return this.level>0||!this.forceSectionAlignment?"\u2502 ...
function P0 (line 178) | async function P0(t,e,r,s=[]){if(process.platform==="win32"){let a=`@got...
function ehe (line 180) | async function ehe(t){let e=await Ut.tryFind(t);if(e?.packageManager){le...
function Iv (line 180) | async function Iv({project:t,locator:e,binFolder:r,ignoreCorepack:s,life...
function cit (line 180) | async function cit(t,e,{configuration:r,report:s,workspace:a=null,locato...
function uit (line 188) | async function uit(t,e,{project:r}){let s=r.tryWorkspaceByLocator(t);if(...
function OR (line 188) | async function OR(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){ret...
function Gj (line 188) | async function Gj(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){ret...
function fit (line 188) | async function fit(t,{binFolder:e,cwd:r,lifecycleScript:s}){let a=await ...
function the (line 188) | async function the(t,{project:e,binFolder:r,cwd:s,lifecycleScript:a}){le...
function rhe (line 188) | async function rhe(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await...
function qj (line 188) | function qj(t,e){return t.manifest.scripts.has(e)}
function nhe (line 188) | async function nhe(t,e,{cwd:r,report:s}){let{configuration:a}=t.project,...
function Ait (line 189) | async function Ait(t,e,r){qj(t,e)&&await nhe(t,e,r)}
function Wj (line 189) | function Wj(t){let e=J.extname(t);if(e.match(/\.[cm]?[jt]sx?$/))return!0...
function LR (line 189) | async function LR(t,{project:e}){let r=e.configuration,s=new Map,a=e.sto...
function ihe (line 189) | async function ihe(t){return await LR(t.anchoredLocator,{project:t.proje...
function Yj (line 189) | async function Yj(t,e){await Promise.all(Array.from(e,([r,[,s,a]])=>a?P0...
function she (line 189) | async function she(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,node...
function pit (line 189) | async function pit(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessi...
method constructor (line 189) | constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e...
method unpipe (line 189) | unpipe(){this.dest.removeListener("drain",this.ondrain)}
method proxyErrors (line 189) | proxyErrors(){}
method end (line 189) | end(){this.unpipe(),this.opts.end&&this.dest.end()}
method unpipe (line 189) | unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}
method constructor (line 189) | constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit("error",a),e....
method constructor (line 189) | constructor(e){super(),this[HR]=!1,this[wv]=!1,this.pipes=[],this.buffer...
method bufferLength (line 189) | get bufferLength(){return this[Ys]}
method encoding (line 189) | get encoding(){return this[ul]}
method encoding (line 189) | set encoding(e){if(this[Ko])throw new Error("cannot set encoding in obje...
method setEncoding (line 189) | setEncoding(e){this.encoding=e}
method objectMode (line 189) | get objectMode(){return this[Ko]}
method objectMode (line 189) | set objectMode(e){this[Ko]=this[Ko]||!!e}
method async (line 189) | get async(){return this[Gp]}
method async (line 189) | set async(e){this[Gp]=this[Gp]||!!e}
method write (line 189) | write(e,r,s){if(this[_p])throw new Error("write after end");if(this[zo])...
method read (line 189) | read(e){if(this[zo])return null;if(this[Ys]===0||e===0||e>this[Ys])retur...
method [fhe] (line 189) | [fhe](e,r){return e===r.length||e===null?this[Kj]():(this.buffer[0]=r.sl...
method end (line 189) | end(e,r,s){return typeof e=="function"&&(s=e,e=null),typeof r=="function...
method [PI] (line 189) | [PI](){this[zo]||(this[wv]=!1,this[HR]=!0,this.emit("resume"),this.buffe...
method resume (line 189) | resume(){return this[PI]()}
method pause (line 189) | pause(){this[HR]=!1,this[wv]=!0}
method destroyed (line 189) | get destroyed(){return this[zo]}
method flowing (line 189) | get flowing(){return this[HR]}
method paused (line 189) | get paused(){return this[wv]}
method [Jj] (line 189) | [Jj](e){this[Ko]?this[Ys]+=1:this[Ys]+=e.length,this.buffer.push(e)}
method [Kj] (line 189) | [Kj](){return this.buffer.length&&(this[Ko]?this[Ys]-=1:this[Ys]-=this.b...
method [_R] (line 189) | [_R](e){do;while(this[Ahe](this[Kj]()));!e&&!this.buffer.length&&!this[_...
method [Ahe] (line 189) | [Ahe](e){return e?(this.emit("data",e),this.flowing):!1}
method pipe (line 189) | pipe(e,r){if(this[zo])return;let s=this[x0];return r=r||{},e===lhe.stdou...
method unpipe (line 189) | unpipe(e){let r=this.pipes.find(s=>s.dest===e);r&&(this.pipes.splice(thi...
method addListener (line 189) | addListener(e,r){return this.on(e,r)}
method on (line 189) | on(e,r){let s=super.on(e,r);return e==="data"&&!this.pipes.length&&!this...
method emittedEnd (line 189) | get emittedEnd(){return this[x0]}
method [Hp] (line 189) | [Hp](){!this[MR]&&!this[x0]&&!this[zo]&&this.buffer.length===0&&this[_p]...
method emit (line 189) | emit(e,r,...s){if(e!=="error"&&e!=="close"&&e!==zo&&this[zo])return;if(e...
method [zj] (line 189) | [zj](e){for(let s of this.pipes)s.dest.write(e)===!1&&this.pause();let r...
method [phe] (line 189) | [phe](){this[x0]||(this[x0]=!0,this.readable=!1,this[Gp]?Bv(()=>this[Zj]...
method [Zj] (line 189) | [Zj](){if(this[jp]){let r=this[jp].end();if(r){for(let s of this.pipes)s...
method collect (line 189) | collect(){let e=[];this[Ko]||(e.dataLength=0);let r=this.promise();retur...
method concat (line 189) | concat(){return this[Ko]?Promise.reject(new Error("cannot concat in obje...
method promise (line 189) | promise(){return new Promise((e,r)=>{this.on(zo,()=>r(new Error("stream ...
method [git] (line 189) | [git](){return{next:()=>{let r=this.read();if(r!==null)return Promise.re...
method [dit] (line 189) | [dit](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}
method destroy (line 189) | destroy(e){return this[zo]?(e?this.emit("error",e):this.emit(zo),this):(...
method isStream (line 189) | static isStream(e){return!!e&&(e instanceof ghe||e instanceof che||e ins...
method constructor (line 189) | constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.e...
method name (line 189) | get name(){return"ZlibError"}
method constructor (line 189) | constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid ...
method close (line 189) | close(){this[Ii]&&(this[Ii].close(),this[Ii]=null,this.emit("close"))}
method reset (line 189) | reset(){if(!this[xI])return n6(this[Ii],"zlib binding closed"),this[Ii]....
method flush (line 189) | flush(e){this.ended||(typeof e!="number"&&(e=this[p6]),this.write(Object...
method end (line 189) | end(e,r,s){return e&&this.write(e,r),this.flush(this[Ihe]),this[t6]=!0,s...
method ended (line 189) | get ended(){return this[t6]}
method write (line 189) | write(e,r,s){if(typeof r=="function"&&(s=r,r="utf8"),typeof e=="string"&...
method [Am] (line 189) | [Am](e){return super.write(e)}
method constructor (line 189) | constructor(e,r){e=e||{},e.flush=e.flush||fm.Z_NO_FLUSH,e.finishFlush=e....
method params (line 189) | params(e,r){if(!this[xI]){if(!this[Ii])throw new Error("cannot switch pa...
method constructor (line 189) | constructor(e){super(e,"Deflate")}
method constructor (line 189) | constructor(e){super(e,"Inflate")}
method constructor (line 189) | constructor(e){super(e,"Gzip"),this[r6]=e&&!!e.portable}
method [Am] (line 189) | [Am](e){return this[r6]?(this[r6]=!1,e[9]=255,super[Am](e)):super[Am](e)}
method constructor (line 189) | constructor(e){super(e,"Gunzip")}
method constructor (line 189) | constructor(e){super(e,"DeflateRaw")}
method constructor (line 189) | constructor(e){super(e,"InflateRaw")}
method constructor (line 189) | constructor(e){super(e,"Unzip")}
method constructor (line 189) | constructor(e,r){e=e||{},e.flush=e.flush||fm.BROTLI_OPERATION_PROCESS,e....
method constructor (line 189) | constructor(e){super(e,"BrotliCompress")}
method constructor (line 189) | constructor(e){super(e,"BrotliDecompress")}
method constructor (line 189) | constructor(){throw new Error("Brotli is not supported in this version o...
method constructor (line 189) | constructor(e,r,s){switch(super(),this.pause(),this.extended=r,this.glob...
method write (line 189) | write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing m...
method [d6] (line 189) | [d6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s==="path")&&(...
method constructor (line 189) | constructor(e,r,s,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!...
method decode (line 189) | decode(e,r,s,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need...
method [E6] (line 189) | [E6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s==="path")&&(...
method encode (line 189) | encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.leng...
method set (line 189) | set(e){for(let r in e)e[r]!==null&&e[r]!==void 0&&(this[r]=e[r])}
method type (line 189) | get type(){return y6.name.get(this[zl])||this[zl]}
method typeKey (line 189) | get typeKey(){return this[zl]}
method type (line 189) | set type(e){y6.code.has(e)?this[zl]=y6.code.get(e):this[zl]=e}
method constructor (line 189) | constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,t...
method encode (line 189) | encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byte...
method encodeBody (line 189) | encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+t...
method encodeField (line 189) | encodeField(e){if(this[e]===null||this[e]===void 0)return"";let r=this[e...
method warn (line 191) | warn(e,r,s={}){this.file&&(s.file=this.file),this.cwd&&(s.cwd=this.cwd),...
method constructor (line 191) | constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeEr...
method emit (line 191) | emit(e,...r){return e==="error"&&(this[Ghe]=!0),super.emit(e,...r)}
method [b6] (line 191) | [b6](){nA.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);t...
method [XR] (line 191) | [XR](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.s...
method [Uhe] (line 191) | [Uhe](){switch(this.type){case"File":return this[_he]();case"Directory":...
method [$R] (line 191) | [$R](e){return zhe(e,this.type==="Directory",this.portable)}
method [iA] (line 191) | [iA](e){return Vhe(e,this.prefix)}
method [Dv] (line 191) | [Dv](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.he...
method [Hhe] (line 191) | [Hhe](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,th...
method [P6] (line 191) | [P6](){nA.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e...
method [k6] (line 191) | [k6](e){this.linkpath=rA(e),this[Dv](),this.end()}
method [jhe] (line 191) | [jhe](e){this.type="Link",this.linkpath=rA(Mhe.relative(this.cwd,e)),thi...
method [_he] (line 191) | [_he](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(t...
method [Q6] (line 191) | [Q6](){nA.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e...
method [R6] (line 191) | [R6](e){if(this.fd=e,this[Ghe])return this[T0]();this.blockLen=512*Math....
method [ZR] (line 191) | [ZR](){let{fd:e,buf:r,offset:s,length:a,pos:n}=this;nA.read(e,r,s,a,n,(c...
method [T0] (line 191) | [T0](e){nA.close(this.fd,e)}
method [x6] (line 191) | [x6](e){if(e<=0&&this.remain>0){let a=new Error("encountered unexpected ...
method [T6] (line 191) | [T6](e){this.once("drain",e)}
method write (line 191) | write(e){if(this.blockRemain<e.length){let r=new Error("writing more dat...
method [D6] (line 191) | [D6](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc...
method [b6] (line 191) | [b6](){this[XR](nA.lstatSync(this.absolute))}
method [P6] (line 191) | [P6](){this[k6](nA.readlinkSync(this.absolute))}
method [Q6] (line 191) | [Q6](){this[R6](nA.openSync(this.absolute,"r"))}
method [ZR] (line 191) | [ZR](){let e=!0;try{let{fd:r,buf:s,offset:a,length:n,pos:c}=this,f=nA.re...
method [T6] (line 191) | [T6](e){e()}
method [T0] (line 191) | [T0](e){nA.closeSync(this.fd),e()}
method constructor (line 191) | constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,t...
method [iA] (line 191) | [iA](e){return Vhe(e,this.prefix)}
method [$R] (line 191) | [$R
Copy disabled (too large)
Download .json
Condensed preview — 5188 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (23,612K chars).
[
{
"path": ".agents/skills/canary/SKILL.md",
"chars": 1719,
"preview": "---\nname: canary\ndescription: Triggers a canary release for a Storybook PR. Use when the user wants to publish a canary "
},
{
"path": ".agents/skills/fix-linting-types-on-pr/SKILL.md",
"chars": 2256,
"preview": "---\nname: fix-linting-types-on-pr\ndescription: Checks out a PR (including fork PRs), fixes all linting and TypeScript er"
},
{
"path": ".agents/skills/github-qa-labels/SKILL.md",
"chars": 1828,
"preview": "---\nname: github-qa-labels\ndescription: Label GitHub issues and PRs found during QA testing. Use when organizing QA find"
},
{
"path": ".agents/skills/pr/SKILL.md",
"chars": 1687,
"preview": "---\nname: pr\ndescription: Creates a pull request following Storybook conventions. Use when creating PRs, opening pull re"
},
{
"path": ".agents/skills/storybook-upgrade/SKILL.md",
"chars": 1482,
"preview": "---\nname: storybook-upgrade\ndescription: Upgrade Storybook to a specific version (canary or release). Use this when upgr"
},
{
"path": ".circleci/config.yml",
"chars": 1325,
"preview": "version: 2.1\n\n# https://circleci.com/docs/guides/orchestrate/dynamic-config/\nsetup: true\n\norbs:\n git-shallow-clone: gui"
},
{
"path": ".cursor/environment.json",
"chars": 210,
"preview": "{\n \"snapshot\": \"snapshot-20250521-0222c8bd-0a11-48ab-a2a8-380203843e05\",\n \"install\": \"yarn && yarn task --task=compile"
},
{
"path": ".cursor/rules/spy-mocking.mdc",
"chars": 1521,
"preview": "---\ndescription: Rules for consistent and type-safe mocking in Vitest tests\nglobs: \"**/*.test.{ts,tsx,js,jsx}\"\nalwaysApp"
},
{
"path": ".cursorrules",
"chars": 1763,
"preview": "## Test Configuration\n\nThis Storybook repository uses Vitest as the test runner. Here are the key commands and configura"
},
{
"path": ".editorconfig",
"chars": 141,
"preview": "root = true\n\n[*]\nend_of_line = lf\n\n[*.{js,json,ts,vue,svelte,html}]\nindent_style = space\nindent_size = 2\n\n[*.{yml,yaml}]"
},
{
"path": ".git-blame-ignore-revs",
"chars": 286,
"preview": "34e364a0ca1d93555d36a7367d78e8e229493de8\nc0896915fb7fb9a8dd416b9aebca17abd909d1c1\na41c227037e7e7249b8b376f838f4f8bcc3e3e"
},
{
"path": ".gitattributes",
"chars": 104,
"preview": "/**/.yarn/** linguist-generated\n* -text\n\n.github/workflows/*.lock.yml linguist-generated=true merge=ours"
},
{
"path": ".github/DISCUSSION_TEMPLATE/help.yml",
"chars": 1490,
"preview": "body:\n- type: markdown\n id: intro\n attributes:\n value: |\n Thanks for taking the time to start a new discussion"
},
{
"path": ".github/DISCUSSION_TEMPLATE/ideas.yml",
"chars": 1083,
"preview": "labels:\n - needs triage\n - feature request\nbody:\n - type: textarea\n id: problem\n attributes:\n label: Is yo"
},
{
"path": ".github/DISCUSSION_TEMPLATE/rfc.yml",
"chars": 4049,
"preview": "title: '[RFC] '\nlabels: ['RFC']\nbody:\n - type: markdown\n attributes:\n value: |\n # Request For Comments\n "
},
{
"path": ".github/FUNDING.yml",
"chars": 27,
"preview": "open_collective: storybook\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 1852,
"preview": "name: Bug report 🐞\ndescription: >-\n Something is broken and you have a reliable reproduction? Let us know here.\n For q"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 1035,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: View documentation 📚\n url: https://storybook.js.org/docs/\n ab"
},
{
"path": ".github/ISSUE_TEMPLATE/tracking_issue.yml",
"chars": 1514,
"preview": "name: Tracking Issue\ndescription: For tracking a large body of work. For internal use only.\ntitle: '[Tracking]: '\ntype: "
},
{
"path": ".github/ISSUE_TEMPLATE/update_docs.yml",
"chars": 661,
"preview": "name: Update docs ✍️\ndescription: >-\n Find a mistake in our documentation, or have a suggestion to improve them? Let us"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 3287,
"preview": "Closes #\n\n<!-- If your PR is related to an issue, provide the number(s) above; if it resolves multiple issues, be sure t"
},
{
"path": ".github/actions/setup-node-and-install/action.yml",
"chars": 1064,
"preview": "name: 'Setup Node.js and Install Dependencies'\ndescription: 'Sets up Node.js, caches dependencies, and installs packages"
},
{
"path": ".github/comments/good-first-issue.md",
"chars": 1070,
"preview": "The issue was marked with the `good first issue` label by a maintainer.\n\nThis means that it is a good candidate for some"
},
{
"path": ".github/comments/invalid-link.md",
"chars": 3521,
"preview": "We could not detect a valid reproduction link. **Make sure to follow the bug report template carefully.**\n\n### Why was t"
},
{
"path": ".github/copilot-mcp.json",
"chars": 106,
"preview": "{\n \"mcpServers\": {\n \"nx\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"nx-mcp@latest\"]\n }\n }\n}\n"
},
{
"path": ".github/workflows/code-simplifier.lock.yml",
"chars": 65023,
"preview": "#\n# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n#"
},
{
"path": ".github/workflows/code-simplifier.md",
"chars": 11097,
"preview": "---\nname: Code Simplifier\ndescription: Analyzes recently modified code and creates pull requests with simplifications th"
},
{
"path": ".github/workflows/copilot-setup-steps.yml",
"chars": 1200,
"preview": "name: 'Copilot Setup Steps'\n\n# Automatically run the setup steps when they are changed to allow for easy validation, and"
},
{
"path": ".github/workflows/cron-weekly.yml",
"chars": 1114,
"preview": "name: Markdown Links Check\n# runs every monday at 9 am\non:\n schedule:\n - cron: \"0 9 * * 1\"\n\npermissions:\n contents:"
},
{
"path": ".github/workflows/danger-js.yml",
"chars": 595,
"preview": "on:\n pull_request:\n types:\n - opened\n - synchronize\n - reopened\n - labeled\n - unlabeled\n "
},
{
"path": ".github/workflows/duplicate-code-detector.lock.yml",
"chars": 60522,
"preview": "#\n# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n#"
},
{
"path": ".github/workflows/duplicate-code-detector.md",
"chars": 9578,
"preview": "---\nname: Duplicate Code Detector\ndescription: Identifies duplicate code patterns across the codebase and suggests refac"
},
{
"path": ".github/workflows/fork-checks.yml",
"chars": 1702,
"preview": "name: Fork checks\n\n# This workflow is only for forks, so they can get basic checks in without a CircleCI API key\non:\n p"
},
{
"path": ".github/workflows/generate-sandboxes.yml",
"chars": 5567,
"preview": "name: Generate and publish sandboxes\n\non:\n schedule:\n - cron: '2 2 */1 * *'\n workflow_dispatch:\n # To test fixes o"
},
{
"path": ".github/workflows/handle-release-branches.yml",
"chars": 4282,
"preview": "name: Handle Release Branches\n\non:\n push:\n\njobs:\n branch-checks:\n if: github.repository_owner == 'storybookjs'\n "
},
{
"path": ".github/workflows/markdown-link-check-config.json",
"chars": 688,
"preview": "{\n \"replacementPatterns\": [\n {\n \"pattern\": \"^/\",\n \"replacement\": \"./\"\n }\n ],\n \"ignorePatterns\": [\n "
},
{
"path": ".github/workflows/nx.yml",
"chars": 5996,
"preview": "name: nx\n\non:\n push:\n branches:\n - next\n # TODO use pull_request_target in the future to also run on forks\n p"
},
{
"path": ".github/workflows/prepare-non-patch-release.yml",
"chars": 6027,
"preview": "name: Prepare non-patch PR\nrun-name: Prepare non-patch PR, triggered by ${{ github.triggering_actor }}\n\non:\n push:\n "
},
{
"path": ".github/workflows/prepare-patch-release.yml",
"chars": 7246,
"preview": "name: Prepare patch PR\nrun-name: Prepare patch PR, triggered by ${{ github.triggering_actor }}\n\non:\n push:\n branches"
},
{
"path": ".github/workflows/publish.yml",
"chars": 14888,
"preview": "name: Publish\nrun-name: \"${{ github.event_name == 'workflow_dispatch' && format('Publish Canary on PR #{0}, triggered by"
},
{
"path": ".github/workflows/shared/mood.md",
"chars": 1,
"preview": "."
},
{
"path": ".github/workflows/shared/reporting.md",
"chars": 2250,
"preview": "---\n# Report formatting guidelines\n---\n\n## Report Structure Guidelines\n\n### 1. Header Levels\n**Use h3 (###) or lower for"
},
{
"path": ".github/workflows/stale.yml",
"chars": 1428,
"preview": "name: \"Close stale issues that need reproduction or more info from OP\"\non:\n schedule:\n - cron: \"30 1 * * *\"\n\npermiss"
},
{
"path": ".github/workflows/triage.yml",
"chars": 832,
"preview": "name: Triage issues\n\non:\n issues:\n types: [opened, labeled]\n issue_comment:\n types: [created]\n\nenv:\n GITHUB_TOK"
},
{
"path": ".github/workflows/trigger-circle-ci-workflow.yml",
"chars": 2819,
"preview": "name: Trigger CircleCI workflow\n\non:\n # Use pull_request_target, as we don't need to check out the actual code of the f"
},
{
"path": ".gitignore",
"chars": 1168,
"preview": "node_modules\n*.log\n.idea\n*.iml\n*.sw*\n!.swcrc\ndist\n*.DS_Store\n.cache\njunit.xml\ntest-results\n/repros\n/sandbox\n/bench\n/code"
},
{
"path": ".husky/pre-commit",
"chars": 66,
"preview": "if [ -z \"$SKIP_STORYBOOK_GIT_HOOKS\" ]; then\n yarn lint-staged\nfi\n"
},
{
"path": ".lintstagedrc.mjs",
"chars": 468,
"preview": "import { detectAgent } from 'std-env';\n\nconst fmtCmd = detectAgent().name ? 'oxfmt' : 'oxfmt --check';\n\nexport default {"
},
{
"path": ".mailmap",
"chars": 3398,
"preview": "# --- instructions --- #\n\n# Add your account in this format:\nYour name here <yourname@example.com> # github:my-github-ac"
},
{
"path": ".nvmrc",
"chars": 9,
"preview": "22.22.1\n\n"
},
{
"path": ".nx/workflows/agents.yaml",
"chars": 3490,
"preview": "# copied from https://github.com/nrwl/nx-cloud-workflows/blob/main/launch-templates/linux.yaml\n# see https://github.com/"
},
{
"path": ".nx/workflows/distribution-config-daily.yaml",
"chars": 815,
"preview": "# Distribution config for daily/scheduled runs — more agents for faster throughput\ndistribute-on:\n small-changeset: 15 "
},
{
"path": ".nx/workflows/distribution-config.yaml",
"chars": 1053,
"preview": "# see https://github.com/nrwl/nx/blob/master/.nx/workflows/dynamic-changesets.yaml for inspiration\ndistribute-on:\n smal"
},
{
"path": ".oxfmtrc.json",
"chars": 1584,
"preview": "{\n \"$schema\": \"./node_modules/oxfmt/configuration_schema.json\",\n \"printWidth\": 100,\n \"tabWidth\": 2,\n \"bracketSpacing"
},
{
"path": ".serena/.gitignore",
"chars": 26,
"preview": "/cache\n/project.local.yml\n"
},
{
"path": ".serena/memories/project_overview.md",
"chars": 2352,
"preview": "# Storybook - Project Overview\n\n## Purpose\nStorybook is an open-source UI development tool for building, testing, and do"
},
{
"path": ".serena/memories/style_and_conventions.md",
"chars": 2064,
"preview": "# Code Style & Conventions\n\n## TypeScript\n- **Strict mode** enabled (`strict: true` in tsconfig)\n- Target: ES2020, Modul"
},
{
"path": ".serena/memories/suggested_commands.md",
"chars": 2010,
"preview": "# Suggested Commands\n\n## Installation\n```bash\nyarn install # Install all dependencies (from repo root)\n```\n\n## "
},
{
"path": ".serena/memories/task_completion_checklist.md",
"chars": 929,
"preview": "# Task Completion Checklist\n\nAfter completing a coding task, run through these steps:\n\n## 1. TypeScript Compilation\nEnsu"
},
{
"path": ".serena/project.yml",
"chars": 240,
"preview": "project_name: \"storybook\"\n\nlanguages:\n - typescript\n\nencoding: \"utf-8\"\n\nignore_all_files_in_gitignore: true\nignored_pat"
},
{
"path": ".spelling",
"chars": 727,
"preview": "# markdown-spellcheck spelling configuration file\n# Format - lines beginning # are comments\n# global dictionary is at th"
},
{
"path": ".vscode/extensions.json",
"chars": 176,
"preview": "{\n \"recommendations\": [\n \"dbaeumer.vscode-eslint\",\n \"EditorConfig.EditorConfig\",\n \"unifiedjs.vscode-mdx\",\n "
},
{
"path": ".vscode/launch.json",
"chars": 243,
"preview": "{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n //"
},
{
"path": ".vscode/settings.json",
"chars": 1615,
"preview": "{\n \"[javascript][javascriptreact][typescript][typescriptreact][json][jsonc]\": {\n \"editor.defaultFormatter\": \"oxc.oxc"
},
{
"path": ".yarn/patches/@testing-library-user-event-npm-14.6.1-5da7e1d4e2.patch",
"chars": 4225,
"preview": "diff --git a/dist/cjs/event/createEvent.js b/dist/cjs/event/createEvent.js\nindex b63c0093f492f5072ce2eabb74ca29014435354"
},
{
"path": ".yarn/patches/@types-babel__traverse-npm-7.20.6-fac4243243.patch",
"chars": 566,
"preview": "diff --git a/index.d.ts b/index.d.ts\nindex d6cccce88c306f0bd3c2ff529b0cdbda86a0d3e1..1d3f1b3f1c6a19cf8dffe490aaa097939d6"
},
{
"path": ".yarn/patches/@vitest-expect-npm-3.2.4-97c526d5cc.patch",
"chars": 1905,
"preview": "diff --git a/dist/index.js b/dist/index.js\nindex db037119d94c99375829ae8b8c91e9a67a3ca845..4ebf87ff561d9d94af71e61cc52af"
},
{
"path": ".yarn/patches/react-aria-components-npm-1.12.2-6c5dcdafab.patch",
"chars": 15612,
"preview": "diff --git a/dist/Button.mjs b/dist/Button.mjs\nindex cbc78bd98aa1b40634ff878b3039fd4aac636ce6..e5c8a179cf967d4a2e918535a"
},
{
"path": ".yarn/releases/yarn-4.10.3.cjs",
"chars": 2990125,
"preview": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var DGe=Object.create;var dU=Object.defineProperty;var "
},
{
"path": ".yarnrc.yml",
"chars": 652,
"preview": "compressionLevel: 0\n\nenableGlobalCache: true\n\ninstallStatePath: ./.yarn/root-install-state.gz\n\nlogFilters:\n - code: YN0"
},
{
"path": "AGENTS.md",
"chars": 11141,
"preview": "# Storybook Agent Instructions\n\nKeep this file, `AGENTS.md`, up to date when Storybook's architecture, tooling, workflow"
},
{
"path": "CHANGELOG.md",
"chars": 440502,
"preview": "## 10.3.3\n\n- Addon-Vitest: Streamline vite(st) config detection across init and postinstall - [#34193](https://github.co"
},
{
"path": "CHANGELOG.prerelease.md",
"chars": 335491,
"preview": "## 10.4.0-alpha.6\n\n- Builder-Vite: Add onModuleGraphChange method - [#34323](https://github.com/storybookjs/storybook/pu"
},
{
"path": "CHANGELOG.v1-5.md",
"chars": 611629,
"preview": "## 5.3.7 (January 20, 2020)\n\n### Bug Fixes\n\n- Node-logger: Move `@types/npmlog` to dependencies ([#9538](https://github."
},
{
"path": "CHANGELOG.v6.md",
"chars": 280813,
"preview": "- MDX: Upgrade csf-mdx libraries ([#18300](https://github.com/storybookjs/storybook/pull/18300))\n- security: update x-de"
},
{
"path": "CLAUDE.md",
"chars": 11,
"preview": "@AGENTS.md\n"
},
{
"path": "CODEOWNERS",
"chars": 2741,
"preview": "# Code Owners\n\n# Root\n# .github/ @JReinhold @yannbf @vanessayuenn\n# .circleci/ @yannbf @kasperpeulen\n# .yarnrc.yml @"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 5927,
"preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
},
{
"path": "CONTRIBUTING/RELEASING.md",
"chars": 43883,
"preview": "# Releasing <!-- omit in toc -->\n\n> **Note**\n> This document is relevant only for maintainers that have permissions to r"
},
{
"path": "CONTRIBUTING.md",
"chars": 10702,
"preview": "# Contributors Guide\n> Tip: If you want to make a fast contribution, check the “good first issue” label in the Issues ta"
},
{
"path": "CONTRIBUTING.old.md",
"chars": 19899,
"preview": "<h1>Contributing to Storybook</h1>\n\n- [Issues](#issues)\n - [Testing against `main`](#testing-against-main)\n - [1. Do"
},
{
"path": "MAINTAINERS.md",
"chars": 12896,
"preview": "This document outlines some of the processes that the maintainers should adhere to.\n\n# PR Process\n\n1. Triage with the co"
},
{
"path": "MIGRATION.md",
"chars": 320586,
"preview": "<h1>Migration</h1>\n\n- [From version 10.0.0 to 10.1.0](#from-version-1000-to-1010)\n - [API and Component Changes](#api-a"
},
{
"path": "README.md",
"chars": 21882,
"preview": "<p align=\"center\">\n <a href=\"https://storybook.js.org/?ref=readme\">\n <picture>\n <source media=\"(prefers-color-s"
},
{
"path": "RESOLUTIONS.md",
"chars": 422,
"preview": "# Resolutions and Exact versions\n\nThis file keeps track of any resolutions or exact versions specified in any `package.j"
},
{
"path": "SECURITY.md",
"chars": 2467,
"preview": "# Security Policy\n\n## Supported Versions\n\nWe release patches for security vulnerabilities, primarily focusing on the lat"
},
{
"path": "code/.eslintignore",
"chars": 415,
"preview": "dist\nbuild\ncoverage\nnode_modules\ndocs/public\nstorybook-static\nbuilt-storybooks\nlib/codemod/src/transforms/__testfixtures"
},
{
"path": "code/.eslintrc.js",
"chars": 8095,
"preview": "const path = require('path');\n\nconst scriptPath = path.join(__dirname, '..', 'scripts');\n\nmodule.exports = {\n root: tru"
},
{
"path": "code/.gitignore",
"chars": 24,
"preview": "vite.config.*.timestamp*"
},
{
"path": "code/.remarkignore",
"chars": 12,
"preview": "CHANGELOG.md"
},
{
"path": "code/.storybook/bench/bench.stories.tsx",
"chars": 2537,
"preview": "import React from 'react';\n\nimport type { Meta } from '@storybook/react-vite';\n\nimport { safeMetafileArg } from '../../."
},
{
"path": "code/.storybook/bench/bundle-analyzer/index.css",
"chars": 8705,
"preview": "html:not([data-theme='dark']) {\n --bg: #fff;\n --fg-on: #000;\n --fg: #222;\n --pre-dim: #777;\n --pre-val: #870;\n --p"
},
{
"path": "code/.storybook/bench/bundle-analyzer/index.html",
"chars": 2096,
"preview": "<!doctype html>\n<html lang=\"en\" data-theme=\"null\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; char"
},
{
"path": "code/.storybook/bench/bundle-analyzer/index.js",
"chars": 60201,
"preview": "/* eslint-disable eslint-comments/no-unlimited-disable */\n/* eslint-disable */\n'use strict';\n(() => {\n var m = document"
},
{
"path": "code/.storybook/isChromatic.ts",
"chars": 288,
"preview": "export function isChromatic(windowArg?: any) {\n const windowToCheck = windowArg || (typeof window !== 'undefined' && wi"
},
{
"path": "code/.storybook/main.ts",
"chars": 5133,
"preview": "import { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport { defineMain } from '@story"
},
{
"path": "code/.storybook/manager.tsx",
"chars": 219,
"preview": "import { startCase } from 'es-toolkit/string';\nimport { addons } from 'storybook/manager-api';\n\naddons.setConfig({\n sid"
},
{
"path": "code/.storybook/preview.tsx",
"chars": 12547,
"preview": "import React, { type FC, Fragment, useEffect } from 'react';\n\nimport type { Channel } from 'storybook/internal/channels'"
},
{
"path": "code/.storybook/storybook.setup.ts",
"chars": 1063,
"preview": "import { vi, expect as vitestExpect } from 'vitest';\n\nimport { setProjectAnnotations } from '@storybook/react';\n\nimport "
},
{
"path": "code/.storybook/utils/todo.tsx",
"chars": 55,
"preview": "export function getTodos() {\n return ['some todo'];\n}\n"
},
{
"path": "code/.swcrc",
"chars": 488,
"preview": "{\n \"$schema\": \"https://json.schemastore.org/swcrc\",\n \"jsc\": {\n \"parser\": {\n \"syntax\": \"typescript\",\n \"tsx"
},
{
"path": "code/.vscode/settings.json",
"chars": 573,
"preview": "{\n \"eslint.workingDirectories\": [\".\", \"../scripts\"],\n \"typescript.tsdk\": \"node_modules/typescript/lib\",\n \"[javascript"
},
{
"path": "code/__mocks__/fileMock.js",
"chars": 30,
"preview": "module.exports = 'file-stub';\n"
},
{
"path": "code/__mocks__/fs/promises.ts",
"chars": 855,
"preview": "import { vi } from 'vitest';\n\n// This is a custom function that our tests can use during setup to specify\n// what the fi"
},
{
"path": "code/__mocks__/fs-extra.ts",
"chars": 1364,
"preview": "import { vi } from 'vitest';\n\n// This is a custom function that our tests can use during setup to specify\n// what the fi"
},
{
"path": "code/__mocks__/fs.ts",
"chars": 913,
"preview": "import { vi } from 'vitest';\n\n// This is a custom function that our tests can use during setup to specify\n// what the fi"
},
{
"path": "code/__mocks__/htmlMock.js",
"chars": 39,
"preview": "module.exports = '<h1>HTML Mock</h1>';\n"
},
{
"path": "code/__mocks__/inject-decorator.angular-stories.txt",
"chars": 505,
"preview": "import { Component } from '@angular/core';\nimport { storiesOf } from '@storybook/angular';\n\n@Component({\n selector: 'st"
},
{
"path": "code/__mocks__/inject-decorator.flow-stories.txt",
"chars": 662,
"preview": "// @flow\nimport React from 'react';\nimport { storiesOf } from '@storybook/react';\nimport { withInfo } from '@storybook/a"
},
{
"path": "code/__mocks__/inject-decorator.no-stories.txt",
"chars": 54,
"preview": "while(true) {\n console.log(\"it's a kind of magic\");\n}"
},
{
"path": "code/__mocks__/inject-decorator.stories.txt",
"chars": 4672,
"preview": "import React from 'react';\nimport { storiesOf } from '@storybook/react';\nimport { withInfo } from '@storybook/addon-info"
},
{
"path": "code/__mocks__/inject-decorator.ts.csf-meta-var.txt",
"chars": 327,
"preview": "import React from \"react\";\nimport { action } from \"storybook/actions\";\nimport { Button } from \"@storybook/react/demo\";\n\n"
},
{
"path": "code/__mocks__/inject-decorator.ts.csf.txt",
"chars": 637,
"preview": "import React from \"react\";\nimport { action } from \"storybook/actions\";\nimport { Button } from \"@storybook/react/demo\";\n\n"
},
{
"path": "code/__mocks__/inject-decorator.ts.csf3.txt",
"chars": 250,
"preview": "import React from \"react\";\nimport { action } from \"storybook/actions\";\nimport { Button } from \"@storybook/react/demo\";\n\n"
},
{
"path": "code/__mocks__/inject-decorator.ts.txt",
"chars": 767,
"preview": "import { Component } from '@angular/core';\nimport { Store, StoreModule } from '@ngrx/store';\nimport { storiesOf, moduleM"
},
{
"path": "code/__mocks__/inject-decorator.ts.ugly-comments-stories.txt",
"chars": 804,
"preview": "/* eslint-disable global-require, import-x/no-dynamic-require */\n\nimport React from 'react';\n\n@Component({\n selector: '"
},
{
"path": "code/__mocks__/inject-decorator.ugly-comments-stories.txt",
"chars": 455,
"preview": "/* eslint-disable global-require, import-x/no-dynamic-require */\n\nimport React from 'react';\n\n/*\n eslint-disable some ki"
},
{
"path": "code/__mocks__/inject-parameters.ts.csf.txt",
"chars": 1122,
"preview": "import React from \"react\";\nimport { action } from \"storybook/actions\";\nimport { Button } from \"@storybook/react/demo\";\n\n"
},
{
"path": "code/__mocks__/lodash-es/add.js",
"chars": 65,
"preview": "function add(a, b) {\n return 'mocked 3';\n}\n\nexport default add;\n"
},
{
"path": "code/__mocks__/lodash-es.js",
"chars": 48,
"preview": "export default {\n VERSION: '1.0.0-mocked!',\n};\n"
},
{
"path": "code/__mocks__/styleMock.js",
"chars": 21,
"preview": "module.exports = {};\n"
},
{
"path": "code/__mocks__/uuid.js",
"chars": 45,
"preview": "export function v4() {\n return 'MOCK-V4';\n}\n"
},
{
"path": "code/addons/a11y/README.md",
"chars": 533,
"preview": "# Storybook Accessibility Addon\n\nThe @storybook/addon-a11y package provides accessibility testing for Storybook stories."
},
{
"path": "code/addons/a11y/build-config.ts",
"chars": 732,
"preview": "import type { BuildEntries } from '../../../scripts/build/utils/entry-utils.ts';\n\nconst config: BuildEntries = {\n entri"
},
{
"path": "code/addons/a11y/manager.js",
"chars": 35,
"preview": "export * from './dist/manager.js';\n"
},
{
"path": "code/addons/a11y/package.json",
"chars": 2189,
"preview": "{\n \"name\": \"@storybook/addon-a11y\",\n \"version\": \"10.4.0-alpha.6\",\n \"description\": \"Storybook Addon A11y: Test UI comp"
},
{
"path": "code/addons/a11y/preset.js",
"chars": 34,
"preview": "export * from './dist/preset.js';\n"
},
{
"path": "code/addons/a11y/preview.js",
"chars": 35,
"preview": "export * from './dist/preview.js';\n"
},
{
"path": "code/addons/a11y/project.json",
"chars": 202,
"preview": "{\n \"name\": \"addon-a11y\",\n \"$schema\": \"../../../node_modules/nx/schemas/project-schema.json\",\n \"projectType\": \"library"
},
{
"path": "code/addons/a11y/src/AccessibilityRuleMaps.ts",
"chars": 25623,
"preview": "export type AxeRuleMap = {\n // The rule id from axe-core\n [axeId: string]: {\n // The simple name of the rule\n ti"
},
{
"path": "code/addons/a11y/src/a11yRunner.test.ts",
"chars": 765,
"preview": "import type { Mock } from 'vitest';\nimport { beforeEach, describe, expect, it, vi } from 'vitest';\n\nimport { addons } fr"
},
{
"path": "code/addons/a11y/src/a11yRunner.ts",
"chars": 4184,
"preview": "import { ElementA11yParameterError } from 'storybook/internal/preview-errors';\n\nimport { global } from '@storybook/globa"
},
{
"path": "code/addons/a11y/src/a11yRunnerUtils.test.ts",
"chars": 2062,
"preview": "// @vitest-environment happy-dom\nimport { describe, expect, it } from 'vitest';\n\nimport type { AxeResults } from 'axe-co"
},
{
"path": "code/addons/a11y/src/a11yRunnerUtils.ts",
"chars": 1121,
"preview": "import { global } from '@storybook/global';\n\nimport type { AxeResults, Result } from 'axe-core';\n\nimport { PANEL_ID } fr"
},
{
"path": "code/addons/a11y/src/axeRuleMappingHelper.ts",
"chars": 420,
"preview": "import { combinedRulesMap } from './AccessibilityRuleMaps.ts';\nimport type { EnhancedResult } from './types.ts';\n\nexport"
},
{
"path": "code/addons/a11y/src/components/A11YPanel.stories.tsx",
"chars": 5698,
"preview": "import React from 'react';\n\nimport { ManagerContext } from 'storybook/manager-api';\nimport { expect, fn, userEvent, wait"
},
{
"path": "code/addons/a11y/src/components/A11YPanel.test.tsx",
"chars": 3967,
"preview": "// @vitest-environment happy-dom\n/// <reference types=\"@testing-library/jest-dom\" />\nimport { fireEvent, render } from '"
},
{
"path": "code/addons/a11y/src/components/A11YPanel.tsx",
"chars": 6629,
"preview": "import React, { useMemo } from 'react';\n\nimport { Badge, Button } from 'storybook/internal/components';\n\nimport { SyncIc"
},
{
"path": "code/addons/a11y/src/components/A11yContext.test.tsx",
"chars": 10302,
"preview": "// @vitest-environment happy-dom\nimport { act, cleanup, render } from '@testing-library/react';\nimport { afterEach, befo"
},
{
"path": "code/addons/a11y/src/components/A11yContext.tsx",
"chars": 16296,
"preview": "import type { FC, PropsWithChildren } from 'react';\nimport React, {\n createContext,\n useCallback,\n useContext,\n useE"
},
{
"path": "code/addons/a11y/src/components/Report/Details.tsx",
"chars": 6339,
"preview": "import React, { Fragment, useCallback, useState } from 'react';\n\nimport { Button, Link, SyntaxHighlighter } from 'storyb"
},
{
"path": "code/addons/a11y/src/components/Report/Report.stories.tsx",
"chars": 2227,
"preview": "import React from 'react';\n\nimport { ManagerContext } from 'storybook/manager-api';\nimport { fn } from 'storybook/test';"
},
{
"path": "code/addons/a11y/src/components/Report/Report.tsx",
"chars": 4211,
"preview": "import type { ComponentProps, FC } from 'react';\nimport React from 'react';\n\nimport { Badge, Button, EmptyTabContent } f"
},
{
"path": "code/addons/a11y/src/components/Tabs.tsx",
"chars": 2641,
"preview": "import * as React from 'react';\n\nimport { Button, TabsView } from 'storybook/internal/components';\n\nimport { CollapseIco"
},
{
"path": "code/addons/a11y/src/components/TestDiscrepancyMessage.stories.tsx",
"chars": 1063,
"preview": "import React from 'react';\n\nimport { ManagerContext } from 'storybook/manager-api';\nimport { fn } from 'storybook/test';"
},
{
"path": "code/addons/a11y/src/components/TestDiscrepancyMessage.tsx",
"chars": 2077,
"preview": "import React, { useMemo } from 'react';\n\nimport { Link } from 'storybook/internal/components';\n\nimport { useStorybookApi"
},
{
"path": "code/addons/a11y/src/components/VisionSimulator.stories.tsx",
"chars": 1547,
"preview": "import type { PlayFunction, PlayFunctionContext } from 'storybook/internal/types';\n\nimport { ManagerContext } from 'stor"
},
{
"path": "code/addons/a11y/src/components/VisionSimulator.tsx",
"chars": 2078,
"preview": "import React from 'react';\n\nimport { Select } from 'storybook/internal/components';\n\nimport { AccessibilityIcon } from '"
},
{
"path": "code/addons/a11y/src/constants.ts",
"chars": 902,
"preview": "export const ADDON_ID = 'storybook/a11y';\nexport const PANEL_ID = `${ADDON_ID}/panel`;\nexport const PARAM_KEY = `a11y`;\n"
},
{
"path": "code/addons/a11y/src/index.ts",
"chars": 373,
"preview": "import { definePreviewAddon } from 'storybook/internal/csf';\n\nimport * as addonAnnotations from './preview.tsx';\nimport "
},
{
"path": "code/addons/a11y/src/manager.test.tsx",
"chars": 2695,
"preview": "// @vitest-environment happy-dom\nimport { describe, expect, it, vi } from 'vitest';\n\nimport type { Addon_BaseType } from"
},
{
"path": "code/addons/a11y/src/manager.tsx",
"chars": 1877,
"preview": "import React from 'react';\n\nimport { Badge } from 'storybook/internal/components';\n\nimport { addons, types, useAddonStat"
},
{
"path": "code/addons/a11y/src/params.ts",
"chars": 1384,
"preview": "import type { RunOptions, Selector, SelectorList, Spec } from 'axe-core';\n\nexport type SelectorWithoutNode = Omit<Select"
},
{
"path": "code/addons/a11y/src/postinstall.ts",
"chars": 918,
"preview": "import { JsPackageManagerFactory, versions } from 'storybook/internal/common';\n\nimport type { PostinstallOptions } from "
},
{
"path": "code/addons/a11y/src/preset.ts",
"chars": 198,
"preview": "// enables other addons/presets to detect if a11y is enabled and adjust their behavior accordingly\n// using await preset"
},
{
"path": "code/addons/a11y/src/preview.test.tsx",
"chars": 7117,
"preview": "// @vitest-environment happy-dom\nimport { beforeEach, describe, expect, it, vi } from 'vitest';\n\nimport type { StoryCont"
},
{
"path": "code/addons/a11y/src/preview.tsx",
"chars": 3084,
"preview": "import type { AfterEach } from 'storybook/internal/types';\n\nimport { expect } from 'storybook/test';\n\nimport { run } fro"
},
{
"path": "code/addons/a11y/src/results.mock.ts",
"chars": 32891,
"preview": "export const results = {\n testEngine: {\n name: 'axe-core',\n version: '4.10.2',\n },\n testRunner: {\n name: 'ax"
},
{
"path": "code/addons/a11y/src/types.ts",
"chars": 1596,
"preview": "import type { AxeResults, NodeResult, Result } from 'axe-core';\n\nimport type { A11yParameters as A11yParams } from './pa"
},
{
"path": "code/addons/a11y/src/typings.d.ts",
"chars": 44,
"preview": "declare var __STORYBOOK_STORY_STORE__: any;\n"
},
{
"path": "code/addons/a11y/src/utils.ts",
"chars": 538,
"preview": "export function getIsVitestStandaloneRun() {\n try {\n // @ts-expect-error Suppress TypeScript warning about wrong set"
},
{
"path": "code/addons/a11y/src/visionSimulatorFilters.ts",
"chars": 3008,
"preview": "export const filters: Record<string, { label: string; filter: string; percentage?: number }> = {\n blurred: {\n label:"
},
{
"path": "code/addons/a11y/src/withVisionSimulator.ts",
"chars": 1750,
"preview": "import type { DecoratorFunction } from 'storybook/internal/types';\n\nimport { useCallback, useEffect } from 'storybook/pr"
},
{
"path": "code/addons/a11y/template/stories/parameters.stories.ts",
"chars": 4698,
"preview": "import { global as globalThis } from '@storybook/global';\n\nexport default {\n component: globalThis.__TEMPLATE_COMPONENT"
},
{
"path": "code/addons/a11y/template/stories/tests.stories.ts",
"chars": 1784,
"preview": "import { global as globalThis } from '@storybook/global';\n\nexport default {\n component: globalThis.__TEMPLATE_COMPONENT"
},
{
"path": "code/addons/a11y/tsconfig.json",
"chars": 91,
"preview": "{\n \"extends\": \"../../tsconfig.json\",\n \"compilerOptions\": {},\n \"include\": [\"src/**/*\"]\n}\n"
},
{
"path": "code/addons/a11y/vitest.config.ts",
"chars": 227,
"preview": "import { defineConfig, mergeConfig } from 'vitest/config';\n\nimport { vitestCommonConfig } from '../../vitest.shared.ts';"
},
{
"path": "code/addons/docs/README.md",
"chars": 7646,
"preview": "<center>\n <img src=\"https://raw.githubusercontent.com/storybookjs/storybook/next/code/addons/docs/docs/media/hero.png\" "
},
{
"path": "code/addons/docs/build-config.ts",
"chars": 1241,
"preview": "import type { BuildEntries } from '../../../scripts/build/utils/entry-utils';\n\nconst config: BuildEntries = {\n entries:"
},
{
"path": "code/addons/docs/docs/docspage.md",
"chars": 8448,
"preview": "<center>\n <img src=\"https://raw.githubusercontent.com/storybookjs/storybook/master/addons/docs/docs/media/docspage-hero"
},
{
"path": "code/addons/docs/docs/faq.md",
"chars": 3371,
"preview": "<h1>Storybook Docs FAQs</h1>\n\nYou've read the [Storybook Docs README](../README.md). You're already familiar with both ["
},
{
"path": "code/addons/docs/docs/frameworks/ANGULAR.md",
"chars": 7694,
"preview": "<center>\n <img src=\"../docs/media/angular-hero.png\" width=\"100%\" />\n</center>\n\n<h1>Storybook Docs for Angular</h1>\n\n> m"
},
{
"path": "code/addons/docs/docs/frameworks/COMMON.md",
"chars": 3541,
"preview": "<h1>Storybook Docs Common Setup</h1>\n\nStorybook Docs transforms your Storybook stories into world-class component docume"
},
{
"path": "code/addons/docs/docs/frameworks/EMBER.md",
"chars": 5456,
"preview": "<h1>Storybook Docs for Ember</h1>\n\n> migration guide: This page documents the method to configure storybook introduced r"
},
{
"path": "code/addons/docs/docs/frameworks/REACT.md",
"chars": 6123,
"preview": "<center>\n <img src=\"../docs/media/docspage-hero.png\" width=\"100%\" />\n</center>\n\n<h1>Storybook Docs for React</h1>\n\n> mi"
},
{
"path": "code/addons/docs/docs/frameworks/VUE.md",
"chars": 4925,
"preview": "<center>\n <img src=\"../docs/media/vue-hero.png\" width=\"100%\" />\n</center>\n\n<h1>Storybook Docs for Vue</h1>\n\n> migration"
},
{
"path": "code/addons/docs/docs/frameworks/VUE3.md",
"chars": 4931,
"preview": "<center>\n <img src=\"../docs/media/vue-hero.png\" width=\"100%\" />\n</center>\n\n<h1>Storybook Docs for Vue 3</h1>\n\n> migrati"
},
{
"path": "code/addons/docs/docs/frameworks/WEB_COMPONENTS.md",
"chars": 4203,
"preview": "<h1>Storybook Docs for Web Components</h1>\n\n- [Installation](#installation)\n- [Props tables](#props-tables)\n- [Stories n"
},
{
"path": "code/addons/docs/docs/mdx.md",
"chars": 7783,
"preview": "<center>\n <img src=\"https://raw.githubusercontent.com/storybookjs/storybook/master/addons/docs/docs/media/mdx-hero.png\""
},
{
"path": "code/addons/docs/docs/multiframework.md",
"chars": 8200,
"preview": "<h1>Storybook Docs framework dev guide</h1>\n\nStorybook Docs [provides basic support for all non-RN Storybook view layers"
},
{
"path": "code/addons/docs/docs/props-tables.md",
"chars": 12702,
"preview": "<center>\n <img src=\"./media/props-tables-hero.png\" width=\"100%\" />\n</center>\n\n<h1>Storybook Docs Props Tables</h1>\n\nSto"
},
{
"path": "code/addons/docs/docs/recipes.md",
"chars": 14551,
"preview": "<h1>Storybook Docs Recipes</h1>\n\n[Storybook Docs](../README.md) consists of two basic mechanisms, [DocsPage](docspage.md"
},
{
"path": "code/addons/docs/docs/theming.md",
"chars": 3701,
"preview": "<h1>Storybook Docs Theming</h1>\n\n[Storybook Docs](../README.md) is themable! There are three different levels of theming"
},
{
"path": "code/addons/docs/manager.js",
"chars": 35,
"preview": "export * from './dist/manager.js';\n"
},
{
"path": "code/addons/docs/package.json",
"chars": 3563,
"preview": "{\n \"name\": \"@storybook/addon-docs\",\n \"version\": \"10.4.0-alpha.6\",\n \"description\": \"Storybook Docs: Document UI compon"
},
{
"path": "code/addons/docs/preset.js",
"chars": 34,
"preview": "export * from './dist/preset.js';\n"
},
{
"path": "code/addons/docs/preview.js",
"chars": 35,
"preview": "export * from './dist/preview.js';\n"
},
{
"path": "code/addons/docs/project.json",
"chars": 202,
"preview": "{\n \"name\": \"addon-docs\",\n \"$schema\": \"../../../node_modules/nx/schemas/project-schema.json\",\n \"projectType\": \"library"
},
{
"path": "code/addons/docs/src/DocsRenderer.tsx",
"chars": 2373,
"preview": "import type { PropsWithChildren } from 'react';\nimport React, { Component } from 'react';\n\nimport type {\n DocsContextPr"
},
{
"path": "code/addons/docs/src/angular/index.ts",
"chars": 165,
"preview": "export const setCompodocJson = (compodocJson: any) => {\n // @ts-expect-error (Converted from ts-ignore)\n globalThis.__"
},
{
"path": "code/addons/docs/src/blocks/blocks/Anchor.stories.tsx",
"chars": 402,
"preview": "import type { Meta, StoryObj } from '@storybook/react-vite';\n\nimport { Anchor } from './Anchor';\n\nconst meta = {\n compo"
},
{
"path": "code/addons/docs/src/blocks/blocks/Anchor.tsx",
"chars": 390,
"preview": "import type { FC, PropsWithChildren } from 'react';\nimport React from 'react';\n\nexport const anchorBlockIdFromId = (stor"
},
{
"path": "code/addons/docs/src/blocks/blocks/ArgTypes.stories.tsx",
"chars": 3773,
"preview": "import React from 'react';\n\nimport type { PlayFunctionContext } from 'storybook/internal/csf';\n\nimport type { Meta, Stor"
},
{
"path": "code/addons/docs/src/blocks/blocks/ArgTypes.tsx",
"chars": 3661,
"preview": "/* eslint-disable react/destructuring-assignment */\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport "
},
{
"path": "code/addons/docs/src/blocks/blocks/Canvas.stories.tsx",
"chars": 7173,
"preview": "import React from 'react';\n\nimport type { Meta, StoryObj } from '@storybook/react-vite';\n\nimport { dedent } from 'ts-ded"
},
{
"path": "code/addons/docs/src/blocks/blocks/Canvas.tsx",
"chars": 4185,
"preview": "/* eslint-disable react/destructuring-assignment */\nimport React, { useCallback, useContext } from 'react';\nimport type "
},
{
"path": "code/addons/docs/src/blocks/blocks/Controls.stories.tsx",
"chars": 4564,
"preview": "import React from 'react';\n\nimport type { PlayFunctionContext } from 'storybook/internal/csf';\n\nimport type { Meta, Stor"
},
{
"path": "code/addons/docs/src/blocks/blocks/Controls.tsx",
"chars": 3465,
"preview": "/* eslint-disable react/destructuring-assignment */\nimport type { FC } from 'react';\nimport React, { useContext } from '"
},
{
"path": "code/addons/docs/src/blocks/blocks/Description.stories.tsx",
"chars": 4399,
"preview": "import React from 'react';\n\nimport type { Meta, StoryObj } from '@storybook/react-vite';\n\nimport { Button as ButtonCompo"
},
{
"path": "code/addons/docs/src/blocks/blocks/Description.tsx",
"chars": 2114,
"preview": "import type { FC } from 'react';\nimport React from 'react';\n\nimport { Markdown } from './Markdown';\nimport type { Of } f"
}
]
// ... and 4988 more files (download for full content)
About this extraction
This page contains the full source code of the storybooks/storybook GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5188 files (21.3 MB), approximately 5.9M tokens, and a symbol index with 12677 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.