Package Exports
- cezanne
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cezanne) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Cezanne Core
Usage
In order to get started with Cezanne, you need a configuration file in the root of your project (where the package.json file is located).
We suggest to use Dhall for a better development experience (not required, but recommended).
let makeUrl = \(item : Text) ->
let remote = "https://example.com"
let opengraph = "${remote}/opengraph"
let instagram = "${remote}/instagram"
let twitter = "${remote}/twitter"
let linkedin = "${remote}/linkedin"
in {
instagram = "${instagram}/${item}/:id"
, opengraph = "${opengraph}/${item}/:id"
, twitter = "${twitter}/${item}/:id"
, linkedin = "${linkedin}/${item}/:id"
}
in {
version = 0.1
, endpoints = {
articles = makeUrl "articles"
, topics = makeUrl "topics"
, authors = makeUrl "authors"
, languages = makeUrl "languages"
}
,
viewports = {
instagram = [1080, 1080]
, opengraph = [1200, 630]
, twitter = [1012, 506]
, linkedin = [1920, 1080]
}
,
aws = {
access_key = ""
, access_secret = ""
, bucket_name = ""
, path = "/path/example/:item/:id"
}
}
the generated JSON file is:
{
"version": 0.1,
"endpoints": {
"articles": {
"instagram": "https://example.com/instagram/articles/:id",
"linkedin": "https://example.com/linkedin/articles/:id",
"opengraph": "https://example.com/opengraph/articles/:id",
"twitter": "https://example.com/twitter/articles/:id"
},
"authors": {
"instagram": "https://example.com/instagram/authors/:id",
"linkedin": "https://example.com/linkedin/authors/:id",
"opengraph": "https://example.com/opengraph/authors/:id",
"twitter": "https://example.com/twitter/authors/:id"
},
"languages": {
"instagram": "https://example.com/instagram/languages/:id",
"linkedin": "https://example.com/linkedin/languages/:id",
"opengraph": "https://example.com/opengraph/languages/:id",
"twitter": "https://example.com/twitter/languages/:id"
},
"topics": {
"instagram": "https://example.com/instagram/topics/:id",
"linkedin": "https://example.com/linkedin/topics/:id",
"opengraph": "https://example.com/opengraph/topics/:id",
"twitter": "https://example.com/twitter/topics/:id"
}
},
"viewports": {
"instagram": [
1080,
1080
],
"linkedin": [
1920,
1080
],
"opengraph": [
1200,
630
],
"twitter": [
1012,
506
]
},
"aws": {
"access_key": "",
"access_secret": "",
"bucket_name": "",
"path": "/path/example/:item/:id"
}
}Name the file cezanne.config.json and you can start to use Cezanne.
It will generate a dynamic method for every route listed in your cezanne.config.json file, following the format:
generate[Endpoint][Social]
so that with the given configuration file, you'll have the following methods:
generateArticlesInstagram(...);
generateArticlesLinkedin(...);
generateArticlesOpengraph(...);and so on. If the specified uri has a dynamic parameter (using the Express.js colon notation), you'll need to pass an object with the parameter values as follows:
import cezanne from "cezanne";
const { generateArticlesInstagram } = cezanne;
// URI: https://example.com/instagram/articles/:id
// dynamic id ^
generateArticlesInstagram({ id: "15" });