npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@downpourdigital/prismic-ts-downloader

v0.0.6

Published

Fetch content from Prismic via GraphQL as TypeScript files.

Downloads

40

Readme

prismic-ts-downloader

Fetch content from Prismic via GraphQL as TypeScript files.

Installation

yarn add @downpourdigital/prismic-ts-downloader
npm i --save @downpourdigital/prismic-ts-downloader

Motivations

Typed results

Since the results are stored as static TS files, exports are automatically typed.

Painless integration of files

Files are downloaded and imported, as you would do normally, which means webpack loaders work out of the box!

Tool agnostic

prismic-ts-downloader isn't tied to a specific site generator or framework. It just puts static files in a folder. Thats it.

Usage

To get started, you have to provide a site id (YOUR-SITE-ID.prismic.io) and an output directory into which the content is downloaded.

tasks specifies a list of tasks to run, once the API is ready where a "task" is a function which returns a Promise. (this type is exported as TaskFactory for convenience)

Inside this function you have access to several helpers:

query runs a query against the API and returns a Promise resolving with the results.

asExternal flags a given url for download.

asComponent flags a given source string as TSX. This will import React into the resulting file and export the string as a React fragment.

toFile writes the given output to a file and adds all the necessary imports.

import path from 'path';
import gql from 'graphql-tag';
import { run } from '@downpourdigital/prismic-ts-download';

run({
	siteId: 'YOUR-SITE-ID',
	outDir: path.resolve( __dirname, '../content' ),
	tasks: [
		({ query, asExternal, asComponent, toFile }) => (
			query({
				query: gql`
				{
					allArticles(lang: "en-us") {
						edges {
							node {
								title
								header_image
								description
							}
						}
					}
				}
				`,
			}).then( response => {
				const output = response.data.allArticles.edges.map(
					({ node }: any ) => ({
						title: node.title[0].text,
						header_image: asExternal( node.header_image.url ),
						description: node.description.map(
							( p: any ) => p.text,
						).join( '\n' ),
					}),
				);

				toFile( 'articles', output );
			})
		),
	],
});

To integrate this into your existing build workflow, simply create a separate npm task which runs before the build task. You can run TS files directly with ts-node.

Inside your project you can now access the content like so:

import articles from '../your-specified-dir/articles';

console.log(articles);
// the type of articles is:
{
	title: string,
	header_image: string, // or whatever your image loader outputs
	description: string,
}[]

To do

  • error handling
  • private repositories
  • better docs
  • testing

License

© 2020 DOWNPOUR DIGITAL, licensed under BSD-4-Clause