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,
* title?: string,
* media?: string,
* text?: string,
* via?: string,
* fbAppId?: string,
* }} PublicationData
*/
/**
* @typedef {function(PublicationData): string} UrlBuilder
*/
/**
* List of social networks available to shareon
*
* @type {Record<string, UrlBuilder>}
* fbAppId?: string
* }) => string}}
*/
const URL_BUILDERS = {
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}` : ''}`,
};
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');
// 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"
},
"type": "module",
"main": "./shareon.legacy.js",
"module": "./shareon.js",
"main": "shareon.legacy.js",
"module": "shareon.js",
"exports": {
"import": "./shareon.js"
},
"types": "shareon.d.ts",
"files": [
"shareon.css",
"shareon.css.map",
"shareon.js",
"shareon.js.map",
"shareon.legacy.js",
"shareon.legacy.js.map"
"shareon.legacy.js.map",
"shareon.d.ts"
],
"scripts": {
"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-css": "postcss lib/shareon.css --map --output shareon.css",
"build-types": "tsc lib/shareon.js --declaration --allowJs --emitDeclarationOnly --outDir .",
"build": "run-p build-*",
"lint": "eslint lib",
"release": "np",
@ -60,7 +63,8 @@
"postcss-calc": "^8.0.0",
"postcss-cli": "^8.3.1",
"postcss-css-variables": "^0.18.0",
"size-limit": "^5.0.1"
"size-limit": "^5.0.1",
"typescript": "^4.3.5"
},
"size-limit": [
{

View File

@ -6037,6 +6037,11 @@ typedarray@^0.0.6:
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
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:
version "1.0.1"
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"