Simple framework-agnostic wrapper around loadable data to help encapsulate and use state changes in a UI.
We have a TSDoc that will include all documentation as well as the examples below.
<body>
...
<div id="app" v-cloak>
<span v-if="repositories.state.loading">Loading data</span>
<span v-if="repositories.state.ready">
Lab5e has {{ repositories.data.length }} public repositories!
</span>
<span v-if="repositories.state.error">{{ repositories.errorMessage }}</span>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script src="https://cdn.jsdelivr.net/npm/@lab5e/loadabledata"></script>
<script>
var app = new Vue({
el: "#app",
data() {
return {
repositories: loadabledata.fromUrl(
"https://api.github.com/users/lab5e/repos",
(error) => `Error trying to fetch data. Error: ${error}`,
),
};
},
});
</script>
</body>You must first install the dependency
npm i -S @lab5e/loadabledataThen you can have a Lab5eRepos.vue-file which details the number of repositories Lab5e has publically available.
<template>
<div>
<span v-if="repositories.state.loading">Loading data</span>
<span v-if="repositories.state.ready">
Lab5e has {{ repositories.data.length }} public repositories!
</span>
<span v-if="repositories.state.error">{{ repositories.errorMessage }}</span>
</div>
</template>
<script lang="ts">
import { fromPromise, LoadableData } from "@lab5e/loadabledata";
import Vue from "vue";
export default Vue.extend({
data(): { repositories: LoadableData<Repositories[]> } {
return {
repositories: fromUrl(
"https://api.github.com/users/lab5e/repos",
(error) => `Failed to list available todos. ${error}`,
[],
),
};
},
});
</script>We use TSDX for pretty much everything, and most npm scripts just proxy to tsdx.
Use npm run build.
To run tests, use npm test.
Code quality is set up with prettier, husky, and lint-staged.
Jest tests are set up to run with npm test.
To run in watch mode run npm run test:watch
To see coverage run npm run test:coverage
size-limit is set up to calculate the real cost of your library with npm run size and visualize the bundle with npm run analyze.
We us TSDX which uses Rollup as a bundler and generates multiple rollup configs for various module formats and build settings. See Optimizations for details.
We create UMD, CommonJS, and JavaScript Modules in our build. The appropriate paths are configured in package.json and dist/index.js
We use TypeScript for everything, giving us types for all the published packages.
mainwhich installs deps w/ cache, lints, tests, and builds on all pushes against a Node and OS matrixsizewhich comments cost comparison of your library on every pull request usingsize-limit
We use np. To publish a new version, write npx np and follow the interactive tutorial.