Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
@divmain/uplift-toolkit
Advanced tools
To make the toolkit available on your developer machine, run the following in a directory of your choosing.
git clone git@git.soma.salesforce.com:dbustad/lwc-uplift-toolkit.git
cd lwc-uplift-toolkit
npm install && npm link
Once this project reaches maturity, this package will likely be published to public NPM. At that point, this Getting Started section will be made obsolete, and you'll be able to skip ahead to the npx
invocation described the section below.
In the future, you'll be able to add @lwc/uplift-toolkit
to your devDependencies
and invoke the command in package.json
NPM scripts
.
In your terminal, navigate to the root directory of your project where your lwc.config.json
is located. If you're using the lwc
field in package.json
, you should run the playground from the same directory as your package.json
.
Run the playground like so:
npx -p @lwc/uplift-toolkit playground COMPONENT_SPECIFIER
You can optionally pass an --open
flag to open your default browser automatically.
COMPONENT_SPECIFIER
should be of form namespace/name
or namespace-name
. For example, in the example
directory of this project, you might run npx -p @lwc/uplift-toolkit playground x/parent
.
If the "re-render when code is updated" checkbox is enabled in the playground Config, the component will be re-rendered automatically.
Similarly to the playground, the test runner should be run from the same directory as lwc.config.json
or package.json
. It is invoked like so:
npx -p @lwc/uplift-toolkit test-lwcs SPEC_FILE_PATTERN
You may want to surround your SPEC_FILE_PATTERN
in single quotes, depending on whether your shell automatically expands glob patterns (ZSH, for example).
To distinguish SSR-related tests from existing Jest tests, you will likely want each type of test to have its own distinct file extension. For example, if your Jest tests are named COMPONENT_NAME.spec.js
, you may want to name your SSR-related test file COMPONENT_NAME.spec.ssr.js
. If you did so, the command to run your tests might be:
npm -p @lwc/uplift-toolkit test-lwcs './src/**/*.spec.ssr.js';
The available utilities within tests are very much in flux at this time, so there is no extensive documentation. However, there are four imports that are likely to get heavy use in your SSR-related tests:
import {
expect,
renderToMarkup,
insertMarkupIntoDom,
hydrateElement,
} from '@lwc/uplift-toolkit/test.js';
expect
comes from the Chai assertion library, and has some DOM- and Web Component- related plugins preinstalled.renderToMarkup
is an async function that takes the path to your component and the props that should be used for rendering. It returns Promise<String>
where the String
is HTML markup.insertMarkupIntoDom
is an async function that takes SSR markup (like that returned from renderToMarkup
) as its singe argument. It returns Promise<HtmlElement>
, which is a handle to the root element of your SSR-rendered DOM subtree.hydrateElement
is an async function that takes a root el
(like that returned from insertMarkupIntoDom
) and component props (which should probably be the same as what was passed to renderToMarkup
). It a Promise<Boolean>
, where the Boolean
indicates whether hydration completed without validation errors. In most cases, you'll want this Boolean
value to be true
.By default, the uplift playground will take your component through the three stages of its SSR lifecycle:
As you work through the various scenarios you'd like your component to support in SSR, a handful of tools are available to you:
In many cases, you'll want to explore the functionality of your component by changing its props. Any fields that are decorated with @api
will be displayed in the playground Config section. To set the prop during rendering, toggle the "enabled" button and click on <unset>
to enter a JavaScript expression.
The props don't have to be strings, and they don't even have to be serializable JavaScript objects. Any JavaScript expression that could be evaluated in an SSR enviroment should be supported. Take for example the following component:
import { LightningElement } from 'lwc';
export default class HelloWorld extends LightningElement {
@api foo;
@api bar = 'default value';
baz = 'internal';
}
In the playground, you'd see configuration options for two props: foo
and bar
. If you didn't override the values using the playground configuration, the rendered instance of HelloWorld
would have a value of undefined
for foo
and "default value"
for bar
. However, you could provide the following as the config for foo
in the playground config:
{
// my foo object
"fooChild": new Date(),
}
When renderd, this.foo
(or foo
in the corresponding template) would be an object with property fooChild
set to a Date
object.
These prop values will persist when "re-render when code is updated" is enabled and you make change to your component code.
FAQs
Playground project to experiment with LWC.
The npm package @divmain/uplift-toolkit receives a total of 0 weekly downloads. As such, @divmain/uplift-toolkit popularity was classified as not popular.
We found that @divmain/uplift-toolkit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.