
Security News
Scaling Socket from Zero to 10,000+ Organizations
Socket CEO Feross Aboukhadijeh shares lessons from scaling a developer security startup to 10,000+ organizations in this founder interview.
@hmn/wp-dataprovider
Advanced tools
Core logic for fetching data from WP API.
npm install @hmn/wp-dataprovider --save
import { DataProviderConfig, ListingController, SingleItemController } from '@hmn/wp-dataprovider'
Make sure to wrap root of your app with DataProviderConfig.
const App = () => {
return (
<DataProviderConfig baseUrl="http://example.com/wp-json">
<div />
</DataProviderConfig>
)
}
const SinglePost = () => {
return (
<SingleItemController resource="posts" id="5238">
{({ data, ...rest }) =>
<div item={data} {...rest}>
<h3> {item.title.rendered} </h3>
</div>
}
</SingleItemController>
)
}
const PostsListing = () => {
const [perPage, setPerPage] = useState('10')
return (
<ListingController args={{ perPage }} resource="posts">
{({ data, ...rest }) => (
<div>
{data.map(item => (
<div key={item.id}>
<h3> {item.title.rendered} </h3>
</div>
))}
</div>
)}
</ListingController>
)
}
const Components = ({ singlePost, ssrPosts }) => {
return (
<div>
<h3> {singlePost.title.rendered} </h3>
<ListingController resource="posts" args={{ order: 'asc' }}>
{({ data, ...rest }) => {
const posts = data.length ? data : ssrPosts
return posts.map(item => (
<div key={item.id}>
<h3> {item.title.rendered} </h3>
</div>
))
}}
</ListingController>
</div>
)
}
Components.getInitialProps = async () => {
const singlePost = await BackendService.fetch('posts', { id: 5215 })
const { items } = await BackendService.fetch('posts', {})
return {
singlePost,
ssrPosts: items || [],
namespacesRequired: ['common']
}
}
const About = ({ data }) => <h1>{item.title.rendered}</h1>
const ControlledComponent = ({ ssrData, ...props }) => {
<SingleItemController resource="posts" id="46">
{({ data = ssrData, ...controllerProps }) => (
<About data={data} {...props} {...controllerProps} />
)}
</SingleItemController>
}
ControlledComponent.getInitialProps = async () => {
const post = await BackendService.fetch('posts', {id: 5215} )
return {
ssrData: post,
namespacesRequired: [common, navigation]
}
}
Two ways of pagination are built in: numbered pagination and infinite scroll / load more type.
<ListingController args={{ perPage }} resource="media">
{({ onLoadMore, ...rest }) => (
<>
<div>
{data.map(item => (
<div key={item.id}>
<h3> {item.title.rendered} </h3>
</div>
))}
</div>
<br />
<button type="button" onClick={onLoadMore}>
Load more
</button>
</>
)}
</ListingController>
<ListingController.Pagination
args={{
perPage,
search
}}
resource="posts">
{({ onPrev, onNext, onPage, ...rest }) => (
<>
<div>
{data.map(item => (
<div key={item.id}>
<h3> {item.title.rendered} </h3>
</div>
))}
</div>
<br />
<button type="button" onClick={onPrev}>
Prev
</button>
<button type="button" onClick={() => onPage(2)}>
2
</button>
<button type="button" onClick={() => onPage(3)}>
3
</button>
<button type="button" onClick={onNext}>
Next
</button>
</>
)}
</ListingController.Pagination>
const PostsListing = () => {
const [perPage, setPerPage] = useState('10')
return (
<ListingController args={{ perPage }} resource="posts">
{({ data, refetch, ...rest }) => (
<div>
<button onClick={refetch}>Refresh</button>
{data.map(item => (
<div key={item.id}>
<h3> {item.title.rendered} </h3>
</div>
))}
</div>
)}
</ListingController>
)
}
Currently supported resources (endpoints):
For Custom Post Types set customs like this:
const customs = {
speakers: 'posts',
awards: 'posts',
news: 'posts'
}
BackendService.customTypes = customs
Each package is available from main export. Check index.js for structure.
For further development of package follow setup:
Clone package.
npm install
npm run watch
Auto builds on each change to /lib folder.
Increment version.
npm version <version>
npm run build
npm pack
npm publish
FAQs
Core logic for fetching data from WP api
The npm package @hmn/wp-dataprovider receives a total of 1 weekly downloads. As such, @hmn/wp-dataprovider popularity was classified as not popular.
We found that @hmn/wp-dataprovider demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 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.

Security News
Socket CEO Feross Aboukhadijeh shares lessons from scaling a developer security startup to 10,000+ organizations in this founder interview.

Research
Socket Threat Research maps a rare inside look at OtterCookie’s npm-Vercel-GitHub chain, adding 197 malicious packages and evidence of North Korean operators.

Research
Socket researchers identified a malicious Chrome extension that manipulates Raydium swaps to inject an undisclosed SOL transfer, quietly routing fees to an attacker wallet.