Add building of .d.ts

pull/37/head
Nikita Karamov 2021-07-29 15:13:33 +02:00
parent e501c0b5bb
commit 0fd35925b5
No known key found for this signature in database
GPG Key ID: 7FCADEDBB1AEBE44
3 changed files with 34 additions and 22 deletions

View File

@ -4,24 +4,20 @@
*/ */
/** /**
* @typedef {{ * Social networks with their URL building functions.
*
* The format of this object is a map of strings (social networks' names) to the
* respective URL building functions. Such functions takes an object with the
* metadata of the page and returns the built URL.
*
* @type {{ [network: string]: (d: {
* url: string, * url: string,
* title?: string, * title?: string,
* media?: string, * media?: string,
* text?: string, * text?: string,
* via?: string, * via?: string,
* fbAppId?: string, * fbAppId?: string
* }} PublicationData * }) => string}}
*/
/**
* @typedef {function(PublicationData): string} UrlBuilder
*/
/**
* List of social networks available to shareon
*
* @type {Record<string, UrlBuilder>}
*/ */
const URL_BUILDERS = { const URL_BUILDERS = {
facebook: (d) => `https://www.facebook.com/sharer/sharer.php?u=${d.url}`, facebook: (d) => `https://www.facebook.com/sharer/sharer.php?u=${d.url}`,
@ -39,7 +35,14 @@ const URL_BUILDERS = {
whatsapp: (d) => `https://wa.me/?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`, whatsapp: (d) => `https://wa.me/?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`,
}; };
const populate = () => { /**
* Populates shareon buttons with correct URLs.
*
* This function generates the sharing URL for every share button and embeds
* them into the elements. For <a> elements, it updates the "href" attribute.
* For others, it sets a "click" listener.
*/
const shareon = () => {
const shareonContainers = document.getElementsByClassName('shareon'); const shareonContainers = document.getElementsByClassName('shareon');
// iterate over <div class="shareon"> // iterate over <div class="shareon">
@ -115,6 +118,6 @@ const populate = () => {
} }
}; };
window.addEventListener('load', populate); window.addEventListener('load', shareon);
export default populate; export default shareon;

View File

@ -22,23 +22,26 @@
"url": "https://karamoff.dev" "url": "https://karamoff.dev"
}, },
"type": "module", "type": "module",
"main": "./shareon.legacy.js", "main": "shareon.legacy.js",
"module": "./shareon.js", "module": "shareon.js",
"exports": { "exports": {
"import": "./shareon.js" "import": "./shareon.js"
}, },
"types": "shareon.d.ts",
"files": [ "files": [
"shareon.css", "shareon.css",
"shareon.css.map", "shareon.css.map",
"shareon.js", "shareon.js",
"shareon.js.map", "shareon.js.map",
"shareon.legacy.js", "shareon.legacy.js",
"shareon.legacy.js.map" "shareon.legacy.js.map",
"shareon.d.ts"
], ],
"scripts": { "scripts": {
"build-js": "esbuild lib/shareon.js --format=esm --minify --outfile=shareon.js --sourcemap --target=es6", "build-js": "esbuild lib/shareon.js --format=esm --minify --outfile=shareon.js --sourcemap --target=es6",
"build-legacy-js": "esbuild lib/shareon.js --format=iife --minify --outfile=shareon.legacy.js --sourcemap --target=es6 --global-name=shareon", "build-legacy-js": "esbuild lib/shareon.js --format=iife --minify --outfile=shareon.legacy.js --sourcemap --target=es6 --global-name=shareon",
"build-css": "postcss lib/shareon.css --map --output shareon.css", "build-css": "postcss lib/shareon.css --map --output shareon.css",
"build-types": "tsc lib/shareon.js --declaration --allowJs --emitDeclarationOnly --outDir .",
"build": "run-p build-*", "build": "run-p build-*",
"lint": "eslint lib", "lint": "eslint lib",
"release": "np", "release": "np",
@ -60,7 +63,8 @@
"postcss-calc": "^8.0.0", "postcss-calc": "^8.0.0",
"postcss-cli": "^8.3.1", "postcss-cli": "^8.3.1",
"postcss-css-variables": "^0.18.0", "postcss-css-variables": "^0.18.0",
"size-limit": "^5.0.1" "size-limit": "^5.0.1",
"typescript": "^4.3.5"
}, },
"size-limit": [ "size-limit": [
{ {

View File

@ -6037,6 +6037,11 @@ typedarray@^0.0.6:
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.3.5:
version "4.3.5"
resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"
integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==
unbox-primitive@^1.0.1: unbox-primitive@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"