Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
@storybook/preview
Advanced tools
This is the main API for the (web) version of the Storybook Preview.
The preview's job is:
Read and update the URL (via the URL Store)
Listen to instructions on the channel and emit events as things occur.
Render the current selection to the web view in either story or docs mode.
importFn
- is an async import()
function
getProjectAnnotations
- is a simple function that evaluations preview.js
and addon config files and combines them. If it errors, the Preview will show the error.
No getStoryIndex
function is passed, instead the preview creates a StoryIndexClient
that pulls stories.json
from node and watches the event stream for invalidation events.
The Preview is split into three parts responsible for state management:
PreviewWeb
- which story is rendered, receives events and (maybe) changes/re-renders storiesStoryRender
- (imports +) prepares the story, renders it through the various phasesDocsRender
- if a story renders in docs mode, it is "transformed" into a DocsRender
once we know.A rendering story goes through these phases:
preparing
- (maybe async) import the story file and prepare the story function.loading
- async loaders are runningrendering
- the renderToDOM
function for the framework is runningplaying
- the play
function is runningcompleted
- the story is done.It also has two error states:
aborted
- the story was stopped midway (see below)errored
- there was an error thrown somewhere along the way.A story may re-render due to various events, which can have implications if the story is not in the completed
phase:
UPDATE_STORY_ARGS
/ UPDATE_GLOBALS
-- change of inputsFORCE_RE_RENDER
- re-render unchangedIf these events happen during a render:
if the story is preparing
or loading
, leave thing unchanged and let the new args
/globals
be picked up by the render phase
otherwise, use the result of the previous loaders
run, and simply re-render over the top
FORCE_REMOUNT
- remount (or equivalent) the component and re-render.
If this happens during a render, treat loading
similarly, but:
rendering
, start a new render and abort the previous render immediately afterwardsplaying
, attempt to abort the previous play function, and start a new render.Also the SET_CURRENT_STORY
event may change the current story. We need to check:
storyId
changedviewMode
changedIf the previous story is still preparing
, we cannot know if the implementation changed, so we
abort the preparing immediately, and let the new story take over.
Otherwise, if all of the above are the same, we do nothing.
If they are different, and the old story is not completed
, we try to abort it immediately. If that fails (e.g. the play
function doesn't respond to the abort
event), then we reload the window.
FAQs
Unknown package
The npm package @storybook/preview receives a total of 2,139,116 weekly downloads. As such, @storybook/preview popularity was classified as popular.
We found that @storybook/preview demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 11 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.