@pine-ds/icons 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/cheatsheet.html +20 -4
  2. package/dist/collection/components/pds-icon/pds-icon.js.map +1 -1
  3. package/dist/collection/components/pds-icon/request.js.map +1 -1
  4. package/dist/collection/components/pds-icon/svg/blog-filled.svg +1 -0
  5. package/dist/collection/components/pds-icon/svg/flash-filled.svg +1 -0
  6. package/dist/collection/components/pds-icon/svg/flash.svg +1 -0
  7. package/dist/collection/components/pds-icon/svg/form-filled.svg +1 -0
  8. package/dist/collection/components/pds-icon/svg/mail-filled.svg +1 -0
  9. package/dist/collection/components/pds-icon/svg/map.svg +1 -0
  10. package/dist/collection/components/pds-icon/svg/publish.svg +1 -0
  11. package/dist/collection/components/pds-icon/svg/wrench.svg +1 -0
  12. package/dist/collection/components/pds-icon/test/pds-icon.e2e.js.map +1 -1
  13. package/dist/collection/components/pds-icon/test/pds-icon.spec.js.map +1 -1
  14. package/dist/collection/components/pds-icon/utils.js.map +1 -1
  15. package/dist/collection/components/pds-icon/validate.js.map +1 -1
  16. package/dist/collection/index.js.map +1 -1
  17. package/dist/docs.json +1 -1
  18. package/dist/pds-icons.json +61 -1
  19. package/dist/pds-icons.symbols.svg +9 -1
  20. package/dist/svg/blog-filled.svg +1 -0
  21. package/dist/svg/flash-filled.svg +1 -0
  22. package/dist/svg/flash.svg +1 -0
  23. package/dist/svg/form-filled.svg +1 -0
  24. package/dist/svg/mail-filled.svg +1 -0
  25. package/dist/svg/map.svg +1 -0
  26. package/dist/svg/publish.svg +1 -0
  27. package/dist/svg/wrench.svg +1 -0
  28. package/icons/index.d.ts +9 -1
  29. package/icons/index.js +9 -1
  30. package/icons/index.mjs +9 -1
  31. package/icons/package.json +1 -1
  32. package/package.json +1 -1
  33. package/dist/scripts/collection-copy.js +0 -28
  34. package/dist/scripts/collection-copy.js.map +0 -1
  35. package/dist/scripts/figma_icons/figma-icon-export.js +0 -666
  36. package/dist/scripts/figma_icons/figma-icon-export.js.map +0 -1
  37. package/dist/scripts/figma_icons/types.js +0 -2
  38. package/dist/scripts/figma_icons/types.js.map +0 -1
  39. package/dist/scripts/helpers.js +0 -51
  40. package/dist/scripts/helpers.js.map +0 -1
  41. package/dist/scripts/optimize-svgs.js +0 -352
  42. package/dist/scripts/optimize-svgs.js.map +0 -1
  43. package/dist/types/Users/julian.skinner/kajabi/pine-icons/.stencil/scripts/collection-copy.d.ts +0 -1
  44. package/dist/types/Users/julian.skinner/kajabi/pine-icons/.stencil/scripts/figma_icons/figma-icon-export.d.ts +0 -1
  45. package/dist/types/Users/julian.skinner/kajabi/pine-icons/.stencil/scripts/figma_icons/types.d.ts +0 -112
  46. package/dist/types/Users/julian.skinner/kajabi/pine-icons/.stencil/scripts/helpers.d.ts +0 -55
  47. package/dist/types/Users/julian.skinner/kajabi/pine-icons/.stencil/scripts/optimize-svgs.d.ts +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"file":"figma-icon-export.js","sourceRoot":"","sources":["../../../scripts/figma_icons/figma-icon-export.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dotenv from 'dotenv';\n\nimport { run as optimizeSvgs} from '../optimize-svgs'\nimport { collectionCopy } from '../collection-copy';\n\n\n/* eslint-disable @typescript-eslint/no-var-requires */\nconst axios = require('axios');\nimport chalk from 'chalk'; // Terminal string styling done right\nimport path from 'path';\nimport fs from 'fs-extra';\nimport mkdirp from 'mkdirp';\nimport cliui from 'cliui';\nimport { simpleGit, SimpleGitOptions, StatusResult } from 'simple-git';\n\nimport { FigmaIcon, FigmaIconConfig, IconFileDetail, SvgDiffResult } from './types';\n\nif (process.env.NODE_ENV !== 'prod') {\n dotenv.config({ path: `${process.cwd()}/.env` })\n}\n\n\nconst info = chalk.white;\nconst error = chalk.red.bold;\nconst detail = chalk.yellowBright;\nconst log = console.log;\n\nconst baseDir = process.cwd();\nconst scriptsDir = path.join(baseDir, 'scripts');\nconst srcDir = path.join(baseDir, 'src');\nconst srcSvgBasePath = path.join(srcDir, 'svg');\n\nconst date = new Date();\nconst strDate = [date.getFullYear().toString(), (date.getMonth() + 1).toString().padStart(2,'0'), date.getDate().toString().padStart(2, '0')].join('-');\n\nlet figmaClient;\n\nconst run = async (rootDir: string) => {\n try {\n const config: FigmaIconConfig = await loadFigmaIconConfig(rootDir);\n figmaClient = client(config.figmaAccessToken);\n\n const data = await processData(rootDir, config);\n\n await optimizeSvgs(rootDir, true);\n\n const git = gitClient();\n await git.add(srcSvgBasePath);\n\n const statusResults: StatusResult = await git.status([srcSvgBasePath]);\n const filesChanged = statusResults.files;\n\n if (filesChanged.length <= 0) {\n log(detail('No changes were found. Exiting the process!!!!'))\n\n removeTmpDirectory(config);\n\n return;\n }\n\n log('Copying collections...');\n await collectionCopy(rootDir);\n\n log(`${makeResultsTable(data.downloaded)}\\n`);\n\n console.log('Icon Count: ', data.icons.length, 'Result Count: ', data.downloaded.length);\n createJsonIconList(data.icons, srcDir);\n\n await createChangelogHTML(statusResults);\n\n removeTmpDirectory(config)\n\n // restore staged files in case of failure\n const { exec } = require('node:child_process')\n exec(`git restore --staged ${srcSvgBasePath}`)\n }\n catch (e) {\n log(error(e));\n process.exit(1);\n }\n}\n\n/**\n * Reads the file contents to read the Svg File and stores\n * into a property to be used later\n *\n * @param status - staus indicator, this could be D - deleted, M - modified, or empty - new\n * @param filePath - relattive path to the file\n * @returns - SvgDiffResult\n */\nconst buildBeforeAndAfterSvg = async (status: string, filePath: string, previousFilePath: string = null): Promise<SvgDiffResult> => {\n const filename = path.basename(filePath);\n const previousFileName = previousFilePath && path.basename(previousFilePath);\n\n let beforeSvg = null;\n let afterSvg = null;\n\n switch(status) {\n case 'D':\n beforeSvg = await getFileContentsFromGit(filePath);\n break;\n\n case 'M':\n beforeSvg = await getFileContentsFromGit(filePath);\n afterSvg = await getFileContentsFromDisk(filename)\n break;\n\n case 'R':\n beforeSvg = await getFileContentsFromGit(previousFilePath);\n afterSvg = await getFileContentsFromDisk(filename)\n break;\n\n case '':\n afterSvg = await getFileContentsFromDisk(filename);\n break;\n }\n\n\n return {\n previousFileName,\n filename,\n status,\n before: beforeSvg,\n after: afterSvg,\n }\n}\n\n/**\n * Generates a Header and table\n *\n * @param sectionName - name used for the Header\n * @param data - an array of {@link SVGDiffResult}\n * @returns The string of html used to represent a section e.g Added in the Changelog\n */\nconst buildHTMLSection = (sectionName: string, data: Array<SvgDiffResult>) => {\n const content = `<h2>${sectionName}</h2>`\n const table: string = buildHTMLTable(data, sectionName == 'Renamed');\n\n return [content, table].join('\\n')\n}\n\n/**\n * Generates a HTML Table\n *\n * @param data an array of {@link SvgDiffResult}\n * @returns - The html table markup\n */\nconst buildHTMLTable = (data: Array<SvgDiffResult>, isRenamed = false) => {\n const tableRows = data.map((diff) => `<tr>\n ${ isRenamed ? `<td>${diff.previousFileName}</td>` : ''}\n <td>${diff.filename}</td>\n <td>${diff.before || ''}</td>\n <td>${diff.after || ''}</td>\n</tr>`);\n\n const tableBody = `<tbody>\n ${tableRows.join('')}\n </tbody>`\n\n const table = `<table>\n <thead>\n <tr>\n ${ isRenamed ? `<td>Previous Filename</td>` : ''}\n <td>${ isRenamed ? `New Filename</td>` : 'FileName'}</td>\n <td>Before</td>\n <td>After</td>\n </tr>\n </thead>\n ${tableBody}\n</table>`\n\n return table;\n}\n\n\n/**\n * Creates the axios client with the appropriate\n * headers and url.\n *\n * @param apiToken required token to pass in the headers\n * @returns Axios client object\n */\nconst client = (apiToken) => {\n const figmaBaseApiURL = 'https://api.figma.com/v1';\n const instance = axios.create({\n baseURL: figmaBaseApiURL,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Figma-Token': apiToken\n }\n })\n\n instance.interceptors.request.use((conf) => {\n conf.startTime = new Date().getTime();\n\n return conf;\n });\n\n return instance;\n};\n\n/**\n * Creates the Changelog.html file based on the\n * latest data pulled from Figma\n *\n * @returns The results from SimpleGit.status()\n */\nconst createChangelogHTML = async (statusResults: StatusResult) => {\n const {modified, created, deleted, renamed} = await processStatusResults(statusResults);\n\n // Adding or Deleting will be Major version bump\n // Modifying will be a MINOR version bump\n\n const html = fs.readFileSync(path.join(scriptsDir, 'figma_icons', 'changelog-template.html'), 'utf8')\n .replace(/{{date}}/g, strDate)\n .replace(/{{modified}}/g, statusResults.modified.length.toString())\n .replace(/{{deleted}}/g, statusResults.deleted.length.toString())\n .replace(/{{created}}/g, statusResults.created.length.toString())\n .replace(/{{renamed}}/g, statusResults.renamed.length.toString())\n .replace(/{{content}}/g, [created, modified, deleted, renamed].join('\\n'));\n\n const changelogFilename = `${strDate}-changelog.html`\n const changelogPath = path.join(baseDir, 'changelogs');\n const fullChangelogFilename = path.join(changelogPath, changelogFilename)\n\n // Write file to changelogs directory\n fs.writeFileSync(fullChangelogFilename, html);\n\n const arrChangelogs = fs.readdirSync(changelogPath);\n\n const changelogRecords = []\n let numberOfChangelogs = 0;\n\n arrChangelogs.reverse().forEach((filename, idx) => {\n if ( path.extname(filename) === '.html') {\n if (idx < 10 ) {\n changelogRecords.push(`<a href=\"changelogs/${filename}\">${path.basename(filename)}</a>`)\n }\n numberOfChangelogs++\n }\n })\n log('Number of Changelog files found: ', detail(numberOfChangelogs));\n\n const indexHtml = fs.readFileSync(path.join(baseDir, 'src','index-template.html'), 'utf8')\n .replace(/{{changelogs}}/g, changelogRecords.join(' <br/>'));\n\n // Copy index.html file to www worker folder\n fs.writeFileSync(path.join(baseDir, 'src', 'index.html'), indexHtml);\n\n if ( fs.ensureDir(path.join(baseDir, 'www')) ) {\n const wwwChangelogPath = path.join(baseDir, 'www', 'changelogs');\n const wwwChangelogFile = path.join(wwwChangelogPath, changelogFilename);\n\n // Create Changelogs folder in `www` worker folder\n fs.mkdirSync(wwwChangelogPath, { recursive: true })\n fs.copyFileSync(fullChangelogFilename, wwwChangelogFile)\n }\n\n return statusResults;\n}\n\n/**\n * Creates JSON data file that contains additional\n * metadata\n *\n * @example\n * ```\n * {\n * \"category\": \"features\",\n * \"name\": \"access-key\",\n * \"tags\": [\n * \"access\",\n * \"key\",\n * \"license\",\n * \"object\",\n * \"password\",\n * \"secure\"\n * ]\n * }\n * ```\n *\n * @param icons - array of FigmaIcons\n * @param outputDir - output directory to save the JSON data\n */\nconst createJsonIconList = (icons: Array<FigmaIcon>, outputDir: string) => {\n try {\n icons = icons.sort((a,b) => {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n\n const outputObj = {\n icons: icons.map((icon) => {\n let tags;\n\n if (icon.tags) {\n tags = icon.tags?.split(',').map((tag) => (tag.trim())).sort();\n }\n else {\n tags = icon.name.split('-');\n }\n\n return {\n name: icon.name,\n category: icon.frame || null,\n tags: tags.sort(),\n }\n }\n )};\n\n const srcJsonStr = JSON.stringify(outputObj, null, 2) + '\\n';\n fs.writeFileSync(path.join(outputDir, 'icon-data.json'), srcJsonStr);\n\n }\n catch (e) {\n logErrorMessage('createJsonIconList', e);\n }\n}\n\n/**\n * Creates the directory that will\n * contain the SVGs\n *\n * @param outputDir - The directory name to create\n */\nconst createOutputDirectory = async (outputDir: string) => {\n return new Promise<void>((resolve) => {\n const directory = path.resolve(outputDir);\n\n if(!fs.existsSync(directory)) {\n log(info(`Directory ${outputDir} does not exist`));\n\n if (mkdirp.sync(directory)) {\n log(info(`Created directory ${outputDir}`))\n resolve();\n }\n }\n else {\n resolve();\n }\n })\n}\n\n/**\n * Downloads the images\n *\n * @param icon - The FigmaIcon object\n * @param outputDir - The directory that the svg will be downloaded\n * @returns a object with the name and size of the svg\n */\nconst downloadImage = (icon: FigmaIcon, outputDir: string) => {\n const nameClean = icon.name.toLowerCase();;\n const directory = outputDir;\n\n const imagePath = path.resolve(directory, `${nameClean}.svg`);\n const writer = fs.createWriteStream(imagePath);\n\n // log('Image url: ', info(icon.url), 'Frame: ', info(icon.frame));\n // log('Image Path: ', info(imagePath));\n\n axios.get(icon.url, {responseType: 'stream'})\n .then((res) => {\n res.data.pipe(writer)\n })\n .catch((err) => {\n if (err.message === 'Socket connection timeout') {\n log(detail('Create new Figma access Token'),)\n }\n\n log('Icon name: ', detail(icon.name))\n log('Error details ', '\\nMessage: ', error(err.message), '\\nUrl: ', detail(err.config.url))\n log(chalk.red.bold('Something went wrong fetching the image from S3, please try again'),)\n log(chalk.red.bold(err),)\n });\n\n return new Promise<IconFileDetail>((resolve, reject) => {\n writer.on('finish', () => {\n // log(info(`Saved ${name}.svg`, fs.statSync(imagePath).size))\n icon.filesize = fs.statSync(imagePath).size;\n resolve({\n name: `${icon.name}.svg`,\n size: fs.statSync(imagePath).size\n })\n });\n\n writer.on('error', (err) => {\n console.log('error writting file', err)\n reject(err)\n })\n })\n}\n\n/**\n * Extract all the icons from figma page data.\n *\n * @param pageData - an object containing the Page details\n * @param ignoreFrames - an array of names to be ignored\n * @param componentMetadata - an object containing additional details for the icon\n * @returns An array of FigmaIcons\n */\nconst extractIcons = (pageData, ignoreFrames: string[], componentMetadata) => {\n const iconFrames = pageData.children;\n\n const iconLibrary: Array<FigmaIcon> = [];\n\n iconFrames.forEach((frame) => {\n if ( ['COMPONENT_SET', 'FRAME'].includes(frame.type) && (!frame.name.startsWith('_') && !ignoreFrames?.includes(frame.name)) ) {\n const components = frame.children;\n\n components.forEach( (component) => {\n // if ( componentMetadata[component.id] === undefined) {\n // console.log('Frame: ', frame.name, 'Component Id: ', component.id, 'Metadata: ', componentMetadata[component.id])\n // }\n\n const icon = {\n id: component.id,\n frame: frame.name.toLowerCase().replaceAll(' ', '-'),\n name: !isNaN(component.name) ? `number-${component.name}`: component.name\n };\n\n if (componentMetadata[component.id] !== undefined ) {\n icon[\"tags\"] = componentMetadata[component.id].description\n }\n\n iconLibrary.push(icon)\n });\n }\n });\n\n return iconLibrary;\n}\n\n/**\n * Process that finds and downloads SVGs\n *\n * @param page - Page object in figma\n * @param fileId - The unique Id for the Figma File\n */\nconst fetchAndDownloadIcons = async (page, fileId: string, config: FigmaIconConfig, componentMetadata) => {\n try {\n const iconLibrary = extractIcons(page, config.ignoreFrames, componentMetadata);\n\n log(chalk.yellowBright(iconLibrary.length), info('icons have been extracted'))\n\n const icons: Array<FigmaIcon> = await fetchImageUrls(fileId, iconLibrary)\n\n await createOutputDirectory(config.downloadPath);\n fs.emptyDirSync(config.downloadPath);\n\n const allIcons = icons.map((icon) => downloadImage(icon, config.downloadPath));\n\n const results = await Promise.all(allIcons).then((res) => { return res; });\n\n return {\n icons: iconLibrary,\n downloaded: results,\n }\n\n } catch (e) {\n logErrorMessage('fetchAndDonwloadIcons', e);\n }\n}\n\n/**\n * Process that will make an API call to retrieve\n * the FigmaFile data\n *\n * @oaram fileId - string: the fileId of the Figma File / Branch\n * @returns - JSON data from Figma API - See {@link https://www.figma.com/developers/api#get-files-endpoint | GET File}\n */\nconst fetchFigmaData = (fileId: string) => {\n const requestPath = `files/${fileId}?branch_data=true`;\n\n const data = figmaClient.get(requestPath)\n .then((resp) => {\n return resp.data;\n })\n .catch((err) => {\n log(error('Error occurred fetching Figma Data, error: ', err));\n });\n\n return data;\n}\n\n/**\n * Sends a request to get a collection\n * icon urls to download\n *\n * @param fileId - The FileId that contains the icons\n * @param icons - An array of @see {@link FigmaIcon}\n * @returns - Array<FigmaIcon> with urls\n */\nconst fetchImageUrls = (fileId: string, icons: Array<FigmaIcon>) => {\n return new Promise<FigmaIcon[]>((resolve) => {\n const iconIds = icons.map(icon => icon.id).join(',')\n\n figmaClient.get(`images/${fileId}?ids=${iconIds}&format=svg`)\n .then((res) => {\n const imageUrls: string[] = res.data.images;\n log(info(`Image Api returned ${chalk.yellowBright(Object.keys(res.data.images).length)} image urls\\n`));\n\n icons.forEach(icon => {\n icon.url = imageUrls[icon.id]\n })\n\n resolve(icons);\n })\n .catch((err) => {\n log(error('Unable to get icons: ', err));\n process.exit(1);\n });\n })\n}\n\n/**\n * Locate the page in the Figma Data\n *\n * @param document - Figma document data\n * @param pageName - Name of the page to find\n * @returns a Node with the Page data\n */\nconst findPage = (document, pageName: string,) => {\n const iconPage = document.children.find(c => c.name === pageName);\n\n if (!iconPage) {\n log(error('No Page found, please check the name \"', chalk.white.bgRedBright(pageName), '\"'));\n process.exit(1);\n // throw error(`No Page found, please check the name \"${chalk.white.bgRedBright(pageName)}\"`)\n }\n\n return iconPage\n};\n\n/**\n * Reads the file contents using git cat-file\n * See {@link https://git-scm.com/docs/git-cat-file} for more details\n *\n * @param filePath - the relative path to the file on disk\n * @returns string\n */\nconst getFileContentsFromGit = async (filePath: string) => {\n return await gitClient().catFile(['blob', `HEAD:${filePath}`]);\n}\n\n/**\n * Reads the file contents located on disk\n * @param filename - the name of the file\n * @returns string\n */\nconst getFileContentsFromDisk = async (filename: string) => {\n return await fs.readFileSync(path.join(srcSvgBasePath, filename), 'utf8');\n}\n\n/**\n * Creates an instance of the SimpleGit object\n * @param options - list of SimpleGitOptions\n * @returns SimpleGit client\n */\n const gitClient = (options: Partial<SimpleGitOptions> = {baseDir: srcSvgBasePath, binary: 'git'} ) => {\n return simpleGit(options);\n }\n\n/**\n * Loads the figma-icon-config\n *\n * @params rootDir - The source directory\n * @returns FigmaIconConfig object\n */\nconst loadFigmaIconConfig = async (rootDir: string) => {\n try {\n const configFile = path.resolve(path.join(rootDir, 'figma-icon-config.json'));\n\n if ( fs.existsSync(configFile)) {\n log(info('Config file located at: ', detail(configFile)));\n\n const strConfig = await fs.readFile(configFile, 'utf-8');\n const config = JSON.parse(strConfig) as FigmaIconConfig;\n\n let hasError = false;\n\n hasError ||= setFigmaAccessToken(config);\n hasError ||= setFigmaFileId(config);\n\n if (hasError) {\n logErrorMessage('loadFigmaIconConfig', null);\n process.exit(1);\n }\n\n return config;\n }\n }\n catch (e) {\n logErrorMessage('loadFigmaIconConfig', e);\n process.exit(1);\n }\n}\n\n/**\n * The main process that invokes the Figma Export process\n *\n * @params rootDir - The initial starting directory\n * @params config - The config data\n */\nconst processData = async (rootDir: string, config: FigmaIconConfig) => {\n try {\n config.downloadPath = path.join(rootDir, config.downloadPath);\n\n let figmaFileId = config.figmaFileId;\n let figmaData = await fetchFigmaData(figmaFileId);\n\n if ( config.branchName && figmaData.branches.length > 0) {\n const branch = figmaData.branches.find(b => b.name === config.branchName)\n\n if (!branch) {\n // throw error(`No branch found with the name \"${chalk.white.bgRed(config.branchName)}\"`);\n log(error('No branch found with the name'), chalk.white.bgRed(config.branchName));\n process.exit(1);\n }\n\n figmaFileId = branch.key;\n log(info('Found branch!! Retrieving data for Branch:',detail(config.branchName), ', Branch File id:',detail(figmaFileId)));\n\n figmaData = await fetchFigmaData(figmaFileId);\n }\n\n const page = findPage(figmaData.document, config.pageName);\n\n const response = await fs.emptyDir(config.downloadPath)\n .then(() => {\n return fetchAndDownloadIcons(page, figmaFileId, config, figmaData.components);\n })\n\n return response;\n } catch (e) {\n logErrorMessage('processData', e);\n }\n}\n\n/**\n * Processes the SimpleGit status results and builds\n * the HTML Section data\n *\n * @param results - list of results from SimpleGit.status\n * @returns object - string html data for modifed, created, deleted\n */\nconst processStatusResults = async (results: StatusResult) => {\n const { modified: m, created: n, deleted: d, renamed: r } = results;\n\n let created, deleted, modified, renamed\n\n if (n.length > 0) {\n created = await Promise.all(n.map((path) => { return buildBeforeAndAfterSvg('', path)}));\n created = buildHTMLSection('Added', created);\n }\n\n if (d.length > 0) {\n deleted = await Promise.all(d.map((path) => ( buildBeforeAndAfterSvg('D', path))));\n deleted = buildHTMLSection('Deleted', deleted);\n }\n\n if (m.length > 0) {\n modified = await Promise.all(m.map((path) => ( buildBeforeAndAfterSvg('M', path))));\n modified = buildHTMLSection('Modified', modified);\n }\n\n if (r.length > 0) {\n renamed = await Promise.all(r.map((path) => ( buildBeforeAndAfterSvg('R', path.to, path.from))));\n renamed = buildHTMLSection('Renamed', renamed);\n }\n\n return { created, deleted, modified, renamed }\n}\n\n/***************************/\n/* Kicks off the Process */\n/***************************/\nconsole.log(path.join(__dirname, '../..'))\nrun(path.join(__dirname, '../..'));\n\n/**\n *\n * Helper Methods\n *\n *\n */\n\n/**\n * Generates a string that represents the number\n * of KiB\n *\n * @param size - number -\n * @returns string\n */\nconst formatSize = (size) => {\n return (size / 1024).toFixed(2) + ' KiB'\n}\n\n/**\n * Logs an error message\n * @param methodName - the name of the method the error occurred in\n * @param err - the error\n */\nconst logErrorMessage = (methodName: string, err) => {\n log('Error in ' , detail(methodName), '\\n Message: ', error(err));\n}\n\n/**\n * Outputs a table of Name and Filesize for each\n * file downloaded\n *\n * @param results - Collection of name and filesize\n */\nconst makeResultsTable = (results) => {\n const ui = cliui({width: 80});\n\n ui.div(\n makeRow(\n chalk.cyan.bold(`File`),\n chalk.cyan.bold(`Size`),\n ) + `\\n\\n` +\n results.map(asset => makeRow(\n asset.name.includes('-duplicate-name')\n ? chalk.red.bold(asset.name)\n : chalk.green(asset.name),\n formatSize(asset.size)\n )).join(`\\n`)\n )\n return ui.toString()\n}\n\nconst makeRow = (a, b) => {\n return ` ${a}\\t ${b}\\t`\n}\n\n/**\n * Removes the tmp directory created during\n * the download process from the FigmaAPI\n *\n * @param config - FigmaIconConfig object\n */\nconst removeTmpDirectory = (config: FigmaIconConfig) => {\n log('Removing tmp directory')\n const tmpDir = path.join(config.downloadPath, '..');\n fs.rmSync(tmpDir, { force: true, recursive: true });\n}\n/**\n * Reads and Sets the Figma access token\n *\n * @params config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\nconst setFigmaAccessToken = (config: FigmaIconConfig) => {\n let hasError = false;\n\n // Figma Token check\n // Config file overrides Environment variable\n switch(true) {\n // Use Environment variable\n case (!!process.env.FIGMA_ACCESS_TOKEN == true):\n log(info('Using Figma Access Token in ', detail('ENVIRONMENT variable')));\n config.figmaAccessToken = process.env.FIGMA_ACCESS_TOKEN;\n break;\n\n case (!!config.figmaAccessToken == true):\n log(info('Using Figma Access Token in ', detail('CONFIGURATION file')));\n break;\n\n case (!config.figmaAccessToken && !process.env.FIGMA_ACCESS_TOKEN) == true:\n hasError ||= true;\n log(error('No Figma Access Token has been provided!!!!!'));\n break;\n }\n\n return hasError;\n}\n\n/**\n * Sets the Figma file id\n *\n * @params config - FigmaIconConfig object\n * @returns boolean - hasError occurred\n */\nconst setFigmaFileId = (config: FigmaIconConfig) => {\n let hasError = false\n\n // Figma File Id check\n // Config file overrides Environment Variable\n switch(true) {\n // Use Environment variable\n case (!!process.env.FIGMA_FILE_ID == true):\n log(info('Using Figma File Id in ',detail('ENVIROMENT variable')));\n config.figmaFileId = process.env.FIGMA_FILE_ID\n break;\n\n // Use provided token in config\n case (!!config.figmaFileId == true):\n log(info('Using Figma File Id in ',detail('Configuration file')));\n break;\n\n\n // Render error and exit process\n case (!config.figmaFileId && !process.env.FIGMA_FILE_ID) == true:\n hasError ||= true;\n log(error('No Figma File Id has been provided!!!!'))\n\n break;\n }\n\n return hasError;\n}\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../scripts/figma_icons/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface FigmaIconConfig {\n /**\n * Branch that is located in the\n * Figma file\n * @example spike-branch\n */\n branchName: string;\n\n /**\n * The Personal Acecss Token created\n * from your Figma Account\n * @see {@link https://www.figma.com/developers/api#intro:~:text=Access-,tokens,-A%20personal%20access|Figma API}\n */\n figmaAccessToken: string;\n\n /**\n * File id\n * can be located in the url\n * @example\n * ```\n * https://www.figma.com/file/some-unique-id\n * ```\n */\n figmaFileId: string;\n\n /**\n * Frames that will be ignored when\n * extracting icons\n * @example\n * ```json\n * ignoreFrames: 'Docs'\n * ```\n * or\n * @example\n * ```json\n * ignoreFrames: ['Docs', 'Navigation']\n */\n ignoreFrames: string[]\n\n /**\n * Path to save the downloaded SVGs\n */\n downloadPath: string,\n\n /**\n * Page that contains the icons\n */\n pageName: string,\n}\n\nexport type FigmaIcon = {\n /**\n * The unique identifier in Figma\n */\n id: string;\n\n /**\n * The name of the file stored on disk\n */\n filename?: string;\n\n /**\n * The name of the file stored on disk\n */\n filesize?: number;\n\n /**\n * The frame the icon is located inside\n * of Figma\n *\n */\n frame?: string;\n\n /**\n * Name of the component\n */\n name: string;\n\n /**\n * Url to download the icon\n */\n url?: string;\n\n /**\n * Tags\n */\n tags?: string;\n}\n\nexport type IconFileDetail = {\n /**\n * The name of the svg file\n */\n name: string;\n\n /**\n * The numeric size of the file in kB\n */\n size: number;\n}\n\nexport interface SvgDiffResult {\n\n /**\n * The name of the Previous file\n */\n previousFileName?: string;\n\n /**\n * The name of the file\n */\n filename: string;\n\n /**\n * Git status provided from SimpleGit\n * Will be 'D', 'M', or ''.\n * D: Deleted\n * M: Modified\n * '': Added\n */\n status: string;\n\n /**\n * What the svg content looked like before it was modified or deleted\n */\n before: string | null;\n\n /**\n * What the svg content looked like AFTER it was modified or deleted\n */\n after: string | null;\n}\n"]}
@@ -1,51 +0,0 @@
1
- export const reservedKeywords = new Set([
2
- 'do',
3
- 'if',
4
- 'in',
5
- 'for',
6
- 'let',
7
- 'new',
8
- 'try',
9
- 'var',
10
- 'case',
11
- 'else',
12
- 'enum',
13
- 'eval',
14
- 'null',
15
- 'this',
16
- 'true',
17
- 'void',
18
- 'with',
19
- 'await',
20
- 'break',
21
- 'catch',
22
- 'class',
23
- 'const',
24
- 'false',
25
- 'super',
26
- 'throw',
27
- 'while',
28
- 'yield',
29
- 'delete',
30
- 'export',
31
- 'import',
32
- 'public',
33
- 'return',
34
- 'static',
35
- 'switch',
36
- 'typeof',
37
- 'default',
38
- 'extends',
39
- 'finally',
40
- 'private',
41
- 'continue',
42
- 'debugger',
43
- 'function',
44
- 'arguments',
45
- 'interface',
46
- 'protected',
47
- 'implements',
48
- 'instanceof',
49
- 'constructor',
50
- ]);
51
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../scripts/helpers.ts"],"names":[],"mappings":"AA+DA,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;EACtC,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,UAAU;EACV,UAAU;EACV,UAAU;EACV,WAAW;EACX,WAAW;EACX,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,aAAa;CACd,CAAC,CAAA","sourcesContent":["export interface SvgData {\n /**\n * /dist/svg/airplane-outline.svg\n */\n distSvgFilePath: string;\n\n /**\n * airplaneOutline\n */\n exportName: string;\n\n /**\n * airplane-outline.svg\n */\n fileName: string;\n\n /**\n * airplane-outline.js\n */\n fileNameCjs: string;\n\n /**\n * airplane-outline.mjs\n */\n fileNameMjs: string;\n\n /**\n * airplane-outline\n */\n iconName: string;\n\n /**\n * /dist/pds-icons/svg/airplane-outline.svg\n */\n optimizedFilePath: string;\n\n /**\n * The path to the save the optimized SVG within the Repo\n */\n optimizedLocalSvgFilePath: string;\n\n /**\n * Optimized svg content data generated from\n * SVGO\n */\n optimizedSvgContent: string;\n\n /**\n * /tmp/svg/airplane-outline.svg\n */\n srcFilePath: string;\n\n /**\n * airplane\n */\n title: string;\n}\n\nexport interface JsonData {\n icons: { name: string; tags?: string[] }[];\n version?: string;\n}\n\nexport const reservedKeywords = new Set([\n 'do',\n 'if',\n 'in',\n 'for',\n 'let',\n 'new',\n 'try',\n 'var',\n 'case',\n 'else',\n 'enum',\n 'eval',\n 'null',\n 'this',\n 'true',\n 'void',\n 'with',\n 'await',\n 'break',\n 'catch',\n 'class',\n 'const',\n 'false',\n 'super',\n 'throw',\n 'while',\n 'yield',\n 'delete',\n 'export',\n 'import',\n 'public',\n 'return',\n 'static',\n 'switch',\n 'typeof',\n 'default',\n 'extends',\n 'finally',\n 'private',\n 'continue',\n 'debugger',\n 'function',\n 'arguments',\n 'interface',\n 'protected',\n 'implements',\n 'instanceof',\n 'constructor',\n])\n"]}
@@ -1,352 +0,0 @@
1
- import fs from "fs-extra";
2
- import chalk from "chalk";
3
- import { join } from "path";
4
- import { optimize } from "svgo";
5
- import { reservedKeywords } from "./helpers";
6
- import camelCase from "lodash/camelCase";
7
- import startCase from "lodash/startCase";
8
- const log = console.log;
9
- const error = chalk.red.bold;
10
- const libraryName = 'pds-icons';
11
- /**
12
- * Builds the icons for distribution
13
- *
14
- * @param rootDir - The source directory
15
- * @param optimizeeFiles - Flag to indicate if we have files to optimize in `tmp/svg` folder.
16
- */
17
- export const run = async (rootDir, optimizeFiles = false) => {
18
- try {
19
- const packageJsonPath = join(rootDir, 'package.json');
20
- const distDir = join(rootDir, 'dist');
21
- const distPineIconsDir = join(distDir, libraryName);
22
- const distSvgDir = join(distDir, 'svg');
23
- const iconDir = join(rootDir, 'icons');
24
- const optimizedOutputDir = join(rootDir, 'src');
25
- const optimizedOutputSvgDir = join(optimizedOutputDir, 'svg');
26
- const srcDir = join(rootDir, 'tmp');
27
- let srcSvgDir = join(srcDir, 'svg');
28
- // We will use the current svgs in the repo (src/svg) as the
29
- // source during CI builds. optimizeFiles will be FALSE.
30
- //
31
- // When running Figma icon process we will use `tmp/svg` folder.
32
- // optimizeFiles will be TRUE
33
- srcSvgDir = optimizeFiles ? srcSvgDir : optimizedOutputSvgDir;
34
- log('Source SVG Directory: ', srcSvgDir);
35
- await cleanDirectories(iconDir, distDir, distSvgDir, distPineIconsDir);
36
- const packageData = await fs.readJson(packageJsonPath);
37
- const version = packageData.version;
38
- log('Getting SVGs...');
39
- const srcSvgData = await getSvgs(srcSvgDir, distSvgDir, distPineIconsDir, optimizedOutputSvgDir, optimizeFiles);
40
- if (optimizeFiles) {
41
- log('Optimized OuputSvgDir: ', optimizedOutputSvgDir);
42
- await fs.emptyDir(optimizedOutputSvgDir);
43
- log('Optimizing SVGs...');
44
- await optimizeSvgs(srcSvgData);
45
- }
46
- await Promise.all([
47
- createDataJson(version, optimizedOutputDir, distDir, srcSvgData),
48
- createIconPackage(version, iconDir, srcSvgData),
49
- ]);
50
- const svgSymbolsContent = await createSvgSymbols(version, distDir, srcSvgData);
51
- await createCheatSheet(version, rootDir, distDir, svgSymbolsContent, srcSvgData);
52
- await copyToTesting(rootDir, distDir, srcSvgData);
53
- }
54
- catch (e) {
55
- log(error(e));
56
- process.exit(1);
57
- }
58
- };
59
- const cleanDirectories = async (iconDir, distDir, distSvgDir, distPineIconsDir) => {
60
- await Promise.all([fs.emptyDir(iconDir), fs.emptyDir(distDir)]);
61
- await fs.emptyDir(distSvgDir), await fs.emptyDir(distPineIconsDir);
62
- };
63
- const getSvgs = async (srcDir, distSvgDir, distPineIconsDir, outputSvgDir, isOptimizing) => {
64
- const optimizedSvgDir = join(distPineIconsDir, 'svg');
65
- await fs.emptyDir(optimizedSvgDir);
66
- const svgFiles = (await fs.readdir(srcDir)).filter((filename) => {
67
- return !filename.startsWith('.') && filename.endsWith('.svg');
68
- });
69
- const svgData = await Promise.all(svgFiles.map(async (fileName) => {
70
- // fileName: airplane-outline.svg
71
- if (fileName.toLowerCase() !== fileName) {
72
- throw new Error(`svg filename "${fileName}" must be all lowercase`);
73
- }
74
- // srcFilePath: /tmp/svg/airplane-outline.svg
75
- const srcFilePath = join(srcDir, fileName);
76
- // distSvgFilePath: /dist/svg/airplane-outline.svg
77
- const distSvgFilePath = join(distSvgDir, fileName);
78
- // optimizedFilePath: /dist/pds-icons/svg/airplane-outline.svg
79
- const optimizedFilePath = join(optimizedSvgDir, fileName);
80
- // optimizedLocalSvgFilePath: /src/svg/airplane-outline.svg
81
- const optimizedLocalSvgFilePath = join(outputSvgDir, fileName);
82
- const dotSplit = fileName.split('.');
83
- if (dotSplit.length > 2) {
84
- throw new Error(`svg filename "${fileName}" cannot contain more than one period`);
85
- }
86
- // iconName: airplane-outline
87
- const iconName = dotSplit[0];
88
- if (reservedKeywords.has(iconName)) {
89
- throw new Error(`svg icon name "${iconName}" is a reserved JavaScript keyword`);
90
- }
91
- // fileNameMjs: airplane-outline.mjs
92
- const fileNameMjs = iconName + '.mjs';
93
- // fileNameCjs: airplane-outline.mjs
94
- const fileNameCjs = iconName + '.js';
95
- // exportName: airplaneOutline
96
- const exportName = camelCase(iconName);
97
- const title = startCase(fileName.replace('.svg', '').replace('-outline', '').replace('-sharp', '').replace(/-/g, ' '));
98
- return {
99
- distSvgFilePath,
100
- exportName,
101
- fileName,
102
- fileNameCjs,
103
- fileNameMjs,
104
- iconName,
105
- optimizedFilePath,
106
- optimizedSvgContent: isOptimizing ? null : await fs.readFile(srcFilePath, 'utf8'),
107
- optimizedLocalSvgFilePath,
108
- srcFilePath,
109
- srcSvgContent: await fs.readFile(srcFilePath, 'utf8'),
110
- title,
111
- };
112
- }));
113
- return svgData.sort((a, b) => {
114
- if (a.exportName < b.exportName)
115
- return -1;
116
- if (a.exportName > b.exportName)
117
- return 1;
118
- return 0;
119
- });
120
- };
121
- /**
122
- * Optimizes the SVGs that are located in
123
- * the src/svg folder
124
- *
125
- *
126
- */
127
- const optimizeSvgs = async (srcSvgData) => {
128
- const optimizePass = {};
129
- const webComponentPass = {
130
- multipass: true,
131
- plugins: [
132
- 'removeStyleElement',
133
- 'removeScriptElement',
134
- 'removeDimensions',
135
- 'removeUselessDefs',
136
- {
137
- name: 'removeAttrs',
138
- params: {
139
- attrs: "(fill|stroke|clip-rule)"
140
- }
141
- },
142
- {
143
- name: 'addClassesToSVGElement',
144
- params: {
145
- className: 'pdsicon'
146
- }
147
- },
148
- ],
149
- };
150
- const sourcePass = {
151
- multipass: true,
152
- plugins: [
153
- 'removeStyleElement',
154
- 'removeScriptElement',
155
- 'removeDimensions',
156
- 'removeUselessDefs',
157
- {
158
- name: 'removeAttrs',
159
- params: {
160
- attrs: "(fill|stroke|clip-rule)"
161
- }
162
- },
163
- {
164
- name: 'addClassesToSVGElement',
165
- params: {
166
- className: 'pdsicon'
167
- }
168
- },
169
- ]
170
- };
171
- const validatePass = {
172
- multipass: true,
173
- plugins: [],
174
- };
175
- await Promise.all(srcSvgData.map(async (svgData) => {
176
- return optimizeSvg(optimizePass, webComponentPass, sourcePass, validatePass, svgData);
177
- }));
178
- };
179
- const optimizeSvg = async (optimizePass, webComponentPass, sourcePass, validatePass, svgData) => {
180
- const srcSvgContent = await fs.readFile(svgData.srcFilePath, 'utf8');
181
- const optimizedSvg = await optimize(srcSvgContent, Object.assign(optimizePass, { path: svgData.srcFilePath }));
182
- const optimizedCode = optimizedSvg.data;
183
- const webComponentSvg = await optimize(optimizedCode, Object.assign(webComponentPass, { path: svgData.srcFilePath }));
184
- const sourceSvg = await optimize(optimizedCode, Object.assign(sourcePass, { path: svgData.srcFilePath }));
185
- svgData.optimizedSvgContent = webComponentSvg.data;
186
- try {
187
- optimize(svgData.optimizedSvgContent, Object.assign(validatePass, { path: svgData.srcFilePath }));
188
- }
189
- catch (err) {
190
- log(error(`${err.message}: ${svgData.srcFilePath}`));
191
- }
192
- await fs.writeFile(svgData.optimizedFilePath, svgData.optimizedSvgContent);
193
- await fs.writeFile(svgData.distSvgFilePath, sourceSvg.data);
194
- await fs.writeFile(svgData.optimizedLocalSvgFilePath, sourceSvg.data);
195
- };
196
- const copyToTesting = async (rootDir, distDir, srcSvgData) => {
197
- const testDir = join(rootDir, 'www');
198
- const testBuildDir = join(testDir, 'build');
199
- const testSvgDir = join(testBuildDir, 'svg');
200
- await fs.ensureDir(testSvgDir);
201
- await Promise.all(srcSvgData.map(async (svgData) => {
202
- const testSvgFilePath = join(testSvgDir, svgData.fileName);
203
- await fs.writeFile(testSvgFilePath, svgData.optimizedSvgContent);
204
- }));
205
- const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');
206
- const testCheatsheetFilePath = join(testDir, 'cheatsheet.html');
207
- await fs.copyFile(distCheatsheetFilePath, testCheatsheetFilePath);
208
- };
209
- const createCheatSheet = async (version, rootDir, distDir, svgSymbolsContent, srcSvgData) => {
210
- const CheatSheetTmpFilePath = join(rootDir, 'scripts', 'cheatsheet-template.html');
211
- const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');
212
- const c = srcSvgData.map((svgData) => `<a href="./svg/${svgData.fileName}"><svg><use href="#${svgData.iconName}" xlink:href="#${svgData.iconName}"/></svg></a>`);
213
- c.push(svgSymbolsContent);
214
- const html = (await fs.readFile(CheatSheetTmpFilePath, 'utf8'))
215
- .replace(/{{version}}/g, version)
216
- .replace(/{{count}}/g, srcSvgData.length.toString())
217
- .replace(/{{content}/g, c.join('\n'));
218
- await fs.writeFile(distCheatsheetFilePath, html);
219
- };
220
- const createDataJson = async (version, srcDir, distDir, srcSvgData) => {
221
- const srcDataJsonPath = join(srcDir, 'icon-data.json');
222
- const distDataJsonPath = join(distDir, `${libraryName}.json`);
223
- let data;
224
- try {
225
- data = await fs.readJson(srcDataJsonPath);
226
- }
227
- catch (e) {
228
- data = {};
229
- }
230
- data.icons = data.icons || [];
231
- // Add any new icons
232
- srcSvgData.forEach((svgData) => {
233
- if (!data.icons.some((i) => i.name === svgData.iconName)) {
234
- data.icons.push({
235
- name: svgData.iconName,
236
- });
237
- }
238
- });
239
- // remove deleted icons
240
- data.icons = data.icons.filter((dataIcon) => {
241
- return srcSvgData.some((svgData) => dataIcon.name === svgData.iconName);
242
- });
243
- // Sort the icons
244
- data.icons = data.icons.sort((a, b) => {
245
- if (a.name < b.name)
246
- return -1;
247
- if (a.name > b.name)
248
- return 1;
249
- return 0;
250
- });
251
- data.icons.forEach((icon) => {
252
- icon.tags = icon.tags || icon.name.split('-');
253
- icon.tags = icon.tags.sort();
254
- });
255
- const srcJsonStr = JSON.stringify(data, null, 2) + '\n';
256
- await fs.writeFile(srcDataJsonPath, srcJsonStr);
257
- const distJsonData = {
258
- name: libraryName,
259
- version,
260
- icons: data.icons,
261
- };
262
- const distJsonStr = JSON.stringify(distJsonData, null, 2) + '\n';
263
- await fs.writeFile(distDataJsonPath, distJsonStr);
264
- };
265
- const createIconPackage = async (version, iconDir, srcSvgData) => {
266
- const iconPkgJsonFilePath = join(iconDir, 'package.json');
267
- await Promise.all([
268
- createEsmIcons(version, iconDir, srcSvgData),
269
- createCjsIcons(version, iconDir, srcSvgData),
270
- createDtsIcons(version, iconDir, srcSvgData),
271
- ]);
272
- const iconPkgJson = {
273
- name: '@ju-skinner/icons',
274
- version,
275
- module: 'index.mjs',
276
- main: 'index.js',
277
- typings: 'index.d.ts',
278
- private: true
279
- };
280
- const jsonStr = JSON.stringify(iconPkgJson, null, 2) + '\n';
281
- await fs.writeFile(iconPkgJsonFilePath, jsonStr);
282
- };
283
- const createEsmIcons = async (version, iconDir, srcSvgData) => {
284
- const iconEsmFilePath = join(iconDir, 'index.mjs');
285
- const o = [`/* pds-icons v${version}, ES Modules */`, ``];
286
- srcSvgData.forEach((svgData) => {
287
- o.push(`export const ${svgData.exportName} = ${getDataUrl(svgData)}`);
288
- });
289
- await fs.writeFile(iconEsmFilePath, o.join('\n') + '\n');
290
- };
291
- const createCjsIcons = async (version, iconDir, srcSvgData) => {
292
- const iconCjsFilePath = join(iconDir, 'index.js');
293
- const o = [`/* pds-icons v${version}, CommonJs */`, ``];
294
- srcSvgData.forEach((svgData) => {
295
- o.push(`exports.${svgData.exportName} = ${getDataUrl(svgData)}`);
296
- });
297
- await fs.writeFile(iconCjsFilePath, o.join('\n') + '\n');
298
- };
299
- const createDtsIcons = async (version, iconDir, srcSvgData) => {
300
- const iconDtsFilePath = join(iconDir, 'index.d.ts');
301
- const o = [`/* pds-icons v${version}, Types */`, ``];
302
- srcSvgData.forEach((svgData) => {
303
- o.push(`export declare var ${svgData.exportName}: string`);
304
- });
305
- await fs.writeFile(iconDtsFilePath, o.join('\n') + '\n');
306
- };
307
- const createSvgSymbols = async (version, distDir, srcSvgData) => {
308
- srcSvgData = srcSvgData.sort((a, b) => {
309
- if (a.iconName < b.iconName)
310
- return -1;
311
- if (a.iconName > b.iconName)
312
- return 1;
313
- return 0;
314
- });
315
- const symbolsSvgFilePath = join(distDir, `${libraryName}.symbols.svg`);
316
- const lines = [
317
- `<svg data-pdsicons="${version}" style="display:none">`,
318
- `<style>`,
319
- `.pdsicon {`,
320
- ` fill: currentColor;`,
321
- `}`,
322
- `.pdsicon-fill-none {`,
323
- ` fill: none;`,
324
- `}`,
325
- `.pdsicon-stroke-width {`,
326
- ` stroke-width: 32px;`,
327
- `}`,
328
- `</style>`,
329
- ];
330
- srcSvgData.forEach((svgData) => {
331
- const svg = svgData.optimizedSvgContent
332
- .replace(`<svg xmlns="http://www.w3.org/2000/svg"`, `<symbol id="${svgData.iconName}"`)
333
- .replace(`</svg>`, `</symbol>`);
334
- lines.push(svg);
335
- });
336
- lines.push(`</svg/`, ``);
337
- const content = lines.join('\n');
338
- await fs.writeFile(symbolsSvgFilePath, content);
339
- return content;
340
- };
341
- const getDataUrl = (svgData) => {
342
- let svg = svgData.optimizedSvgContent;
343
- if (svg.includes(`'`)) {
344
- throw new Error(`Single quotes are NOT allowed!!!!! ${svgData.fileName}`);
345
- }
346
- if (svg.includes('\n') || svg.includes('\r')) {
347
- throw new Error(`New lines are NOT allowed!!!!! ${svgData.fileName}`);
348
- }
349
- svg = svg.replace(/"/g, "'");
350
- return `"data:image/svg+xml;utf8,${svg}"`;
351
- };
352
- //# sourceMappingURL=optimize-svgs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"optimize-svgs.js","sourceRoot":"","sources":["../../scripts/optimize-svgs.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport chalk from 'chalk';\nimport { join } from 'path'\nimport { optimize } from 'svgo';\n\nimport { JsonData, SvgData, reservedKeywords } from './helpers';\n\nimport camelCase from 'lodash/camelCase';\nimport startCase from 'lodash/startCase';\n\nconst log = console.log;\nconst error = chalk.red.bold;\n\nconst libraryName = 'pds-icons';\n\n/**\n * Builds the icons for distribution\n *\n * @param rootDir - The source directory\n * @param optimizeeFiles - Flag to indicate if we have files to optimize in `tmp/svg` folder.\n */\nexport const run = async(rootDir: string, optimizeFiles = false) => {\n try {\n const packageJsonPath = join(rootDir, 'package.json');\n const distDir = join(rootDir, 'dist');\n const distPineIconsDir = join(distDir, libraryName);\n const distSvgDir = join(distDir, 'svg');\n const iconDir = join(rootDir, 'icons');\n\n const optimizedOutputDir = join(rootDir, 'src');\n const optimizedOutputSvgDir = join(optimizedOutputDir, 'svg');\n\n const srcDir = join(rootDir, 'tmp');\n let srcSvgDir = join(srcDir, 'svg');\n\n // We will use the current svgs in the repo (src/svg) as the\n // source during CI builds. optimizeFiles will be FALSE.\n //\n // When running Figma icon process we will use `tmp/svg` folder.\n // optimizeFiles will be TRUE\n srcSvgDir = optimizeFiles ? srcSvgDir : optimizedOutputSvgDir;\n\n log('Source SVG Directory: ', srcSvgDir);\n\n await cleanDirectories(iconDir, distDir, distSvgDir, distPineIconsDir);\n\n const packageData = await fs.readJson(packageJsonPath);\n const version = packageData.version as string;\n\n log('Getting SVGs...');\n const srcSvgData = await getSvgs(srcSvgDir, distSvgDir, distPineIconsDir, optimizedOutputSvgDir, optimizeFiles);\n\n if (optimizeFiles) {\n log('Optimized OuputSvgDir: ', optimizedOutputSvgDir)\n await fs.emptyDir(optimizedOutputSvgDir);\n\n log('Optimizing SVGs...');\n await optimizeSvgs(srcSvgData);\n }\n\n await Promise.all([\n createDataJson(version, optimizedOutputDir, distDir, srcSvgData),\n createIconPackage(version, iconDir, srcSvgData),\n ])\n\n const svgSymbolsContent = await createSvgSymbols(version, distDir, srcSvgData);\n\n await createCheatSheet(version, rootDir, distDir, svgSymbolsContent, srcSvgData);\n\n await copyToTesting(rootDir, distDir, srcSvgData);\n }\n catch (e) {\n log(error(e));\n process.exit(1);\n }\n\n}\n\nconst cleanDirectories = async (iconDir, distDir, distSvgDir, distPineIconsDir) => {\n await Promise.all([fs.emptyDir(iconDir), fs.emptyDir(distDir)]);\n await fs.emptyDir(distSvgDir), await fs.emptyDir(distPineIconsDir);\n}\n\nconst getSvgs = async (srcDir: string, distSvgDir: string, distPineIconsDir: string, outputSvgDir: string, isOptimizing: boolean): Promise<SvgData[]> => {\n const optimizedSvgDir = join(distPineIconsDir, 'svg');\n await fs.emptyDir(optimizedSvgDir);\n\n const svgFiles = (await fs.readdir(srcDir)).filter((filename) => {\n return !filename.startsWith('.') && filename.endsWith('.svg');\n });\n\n const svgData = await Promise.all(\n svgFiles.map(async (fileName) => {\n // fileName: airplane-outline.svg\n\n if (fileName.toLowerCase() !== fileName) {\n throw new Error(`svg filename \"${fileName}\" must be all lowercase`);\n }\n\n // srcFilePath: /tmp/svg/airplane-outline.svg\n const srcFilePath = join(srcDir, fileName);\n\n // distSvgFilePath: /dist/svg/airplane-outline.svg\n const distSvgFilePath = join(distSvgDir, fileName);\n\n // optimizedFilePath: /dist/pds-icons/svg/airplane-outline.svg\n const optimizedFilePath = join(optimizedSvgDir, fileName);\n\n // optimizedLocalSvgFilePath: /src/svg/airplane-outline.svg\n const optimizedLocalSvgFilePath = join(outputSvgDir, fileName);\n\n const dotSplit = fileName.split('.');\n if (dotSplit.length > 2) {\n throw new Error(`svg filename \"${fileName}\" cannot contain more than one period`);\n }\n\n // iconName: airplane-outline\n const iconName = dotSplit[0];\n\n if (reservedKeywords.has(iconName)) {\n throw new Error(`svg icon name \"${iconName}\" is a reserved JavaScript keyword`);\n }\n\n // fileNameMjs: airplane-outline.mjs\n const fileNameMjs = iconName + '.mjs';\n\n // fileNameCjs: airplane-outline.mjs\n const fileNameCjs = iconName + '.js';\n\n // exportName: airplaneOutline\n const exportName = camelCase(iconName);\n\n const title = startCase(\n fileName.replace('.svg', '').replace('-outline', '').replace('-sharp', '').replace(/-/g, ' '),\n );\n\n return {\n distSvgFilePath,\n exportName,\n fileName,\n fileNameCjs,\n fileNameMjs,\n iconName,\n optimizedFilePath,\n optimizedSvgContent: isOptimizing ? null : await fs.readFile(srcFilePath, 'utf8'),\n optimizedLocalSvgFilePath,\n srcFilePath,\n srcSvgContent: await fs.readFile(srcFilePath, 'utf8'),\n title,\n };\n }),\n );\n\n return svgData.sort((a, b) => {\n if (a.exportName < b.exportName) return -1;\n if (a.exportName > b.exportName) return 1;\n return 0;\n });\n}\n\n/**\n * Optimizes the SVGs that are located in\n * the src/svg folder\n *\n *\n */\nconst optimizeSvgs = async (srcSvgData: Array<SvgData>) => {\n const optimizePass = {};\n const webComponentPass = {\n multipass: true,\n plugins: [\n 'removeStyleElement',\n 'removeScriptElement',\n 'removeDimensions',\n 'removeUselessDefs',\n {\n name: 'removeAttrs',\n params: {\n attrs: \"(fill|stroke|clip-rule)\"\n }\n },\n {\n name: 'addClassesToSVGElement',\n params: {\n className: 'pdsicon'\n }\n },\n ],\n };\n\n const sourcePass = {\n multipass: true,\n plugins: [\n 'removeStyleElement',\n 'removeScriptElement',\n 'removeDimensions',\n 'removeUselessDefs',\n {\n name: 'removeAttrs',\n params: {\n attrs: \"(fill|stroke|clip-rule)\"\n }\n },\n {\n name: 'addClassesToSVGElement',\n params: {\n className: 'pdsicon'\n }\n },\n ]\n };\n\n const validatePass = {\n multipass: true,\n plugins: [],\n };\n\n await Promise.all(\n srcSvgData.map( async (svgData) => {\n return optimizeSvg(optimizePass, webComponentPass, sourcePass, validatePass, svgData);\n }),\n );\n}\n\nconst optimizeSvg = async (optimizePass: Record<string, unknown>, webComponentPass: Record<string, unknown>, sourcePass: Record<string, unknown>, validatePass: Record<string, unknown>, svgData: SvgData) => {\n const srcSvgContent = await fs.readFile(svgData.srcFilePath, 'utf8');\n\n const optimizedSvg = await optimize(srcSvgContent, Object.assign(optimizePass, { path: svgData.srcFilePath }));\n\n const optimizedCode = optimizedSvg.data\n\n const webComponentSvg = await optimize(optimizedCode, Object.assign( webComponentPass, { path: svgData.srcFilePath }));\n const sourceSvg = await optimize(optimizedCode, Object.assign(sourcePass, { path: svgData.srcFilePath }));\n\n svgData.optimizedSvgContent = webComponentSvg.data;\n\n try {\n optimize(svgData.optimizedSvgContent, Object.assign(validatePass,{ path: svgData.srcFilePath }));\n }\n catch (err) {\n log(error(`${err.message}: ${svgData.srcFilePath}`));\n }\n\n await fs.writeFile(svgData.optimizedFilePath, svgData.optimizedSvgContent);\n await fs.writeFile(svgData.distSvgFilePath, sourceSvg.data);\n await fs.writeFile(svgData.optimizedLocalSvgFilePath, sourceSvg.data);\n}\n\nconst copyToTesting = async (rootDir: string, distDir: string, srcSvgData: Array<SvgData>) => {\n const testDir = join(rootDir, 'www');\n const testBuildDir = join(testDir, 'build');\n const testSvgDir = join(testBuildDir, 'svg');\n\n await fs.ensureDir(testSvgDir);\n\n await Promise.all(\n srcSvgData.map(async (svgData) => {\n const testSvgFilePath = join(testSvgDir, svgData.fileName);\n await fs.writeFile(testSvgFilePath, svgData.optimizedSvgContent);\n }),\n );\n\n const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');\n const testCheatsheetFilePath = join(testDir, 'cheatsheet.html');\n await fs.copyFile(distCheatsheetFilePath, testCheatsheetFilePath);\n}\n\nconst createCheatSheet = async (version: string, rootDir: string, distDir: string, svgSymbolsContent: string, srcSvgData: Array<SvgData>) => {\n const CheatSheetTmpFilePath = join(rootDir, 'scripts', 'cheatsheet-template.html');\n const distCheatsheetFilePath = join(distDir, 'cheatsheet.html');\n\n const c = srcSvgData.map(\n (svgData) => `<a href=\"./svg/${svgData.fileName}\"><svg><use href=\"#${svgData.iconName}\" xlink:href=\"#${svgData.iconName}\"/></svg></a>`,\n );\n\n c.push(svgSymbolsContent);\n\n const html = (await fs.readFile(CheatSheetTmpFilePath, 'utf8'))\n .replace(/{{version}}/g, version)\n .replace(/{{count}}/g, srcSvgData.length.toString())\n .replace(/{{content}/g, c.join('\\n'));\n\n await fs.writeFile(distCheatsheetFilePath, html);\n}\n\nconst createDataJson = async (version: string, srcDir: string, distDir: string, srcSvgData: Array<SvgData>) => {\n const srcDataJsonPath = join(srcDir, 'icon-data.json');\n const distDataJsonPath = join(distDir, `${libraryName}.json`);\n\n let data: JsonData;\n\n try {\n data = await fs.readJson(srcDataJsonPath);\n }\n catch (e) {\n data = {} as any;\n }\n\n data.icons = data.icons || [];\n\n // Add any new icons\n srcSvgData.forEach((svgData) => {\n if (!data.icons.some((i) => i.name === svgData.iconName)) {\n data.icons.push({\n name: svgData.iconName,\n })\n }\n });\n\n // remove deleted icons\n data.icons = data.icons.filter((dataIcon) => {\n return srcSvgData.some((svgData) => dataIcon.name === svgData.iconName);\n });\n\n // Sort the icons\n data.icons = data.icons.sort((a, b) => {\n if (a.name < b.name) return -1;\n if (a.name > b.name) return 1;\n return 0;\n });\n\n data.icons.forEach((icon) => {\n icon.tags = icon.tags || icon.name.split('-');\n icon.tags = icon.tags.sort();\n });\n\n const srcJsonStr = JSON.stringify(data, null, 2) + '\\n';\n await fs.writeFile(srcDataJsonPath, srcJsonStr);\n\n const distJsonData = {\n name: libraryName,\n version,\n icons: data.icons,\n };\n\n const distJsonStr = JSON.stringify(distJsonData, null, 2) + '\\n';\n await fs.writeFile(distDataJsonPath, distJsonStr);\n}\n\nconst createIconPackage = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconPkgJsonFilePath = join(iconDir, 'package.json');\n\n await Promise.all([\n createEsmIcons(version, iconDir, srcSvgData),\n createCjsIcons(version, iconDir, srcSvgData),\n createDtsIcons(version, iconDir, srcSvgData),\n ]);\n\n const iconPkgJson = {\n name: '@ju-skinner/icons',\n version,\n module: 'index.mjs',\n main: 'index.js',\n typings: 'index.d.ts',\n private: true\n };\n\n const jsonStr = JSON.stringify(iconPkgJson, null, 2) + '\\n';\n await fs.writeFile(iconPkgJsonFilePath, jsonStr);\n}\n\nconst createEsmIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconEsmFilePath = join(iconDir, 'index.mjs');\n\n const o = [`/* pds-icons v${version}, ES Modules */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`export const ${svgData.exportName} = ${getDataUrl(svgData)}`);\n });\n\n await fs.writeFile(iconEsmFilePath, o.join('\\n') + '\\n');\n}\n\nconst createCjsIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconCjsFilePath = join(iconDir, 'index.js');\n\n const o = [`/* pds-icons v${version}, CommonJs */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`exports.${svgData.exportName} = ${getDataUrl(svgData)}`);\n });\n\n await fs.writeFile(iconCjsFilePath, o.join('\\n') + '\\n');\n}\n\nconst createDtsIcons = async (version: string, iconDir: string, srcSvgData: Array<SvgData>) => {\n const iconDtsFilePath = join(iconDir, 'index.d.ts');\n\n const o = [`/* pds-icons v${version}, Types */`, ``];\n\n srcSvgData.forEach((svgData) => {\n o.push(`export declare var ${svgData.exportName}: string`);\n });\n\n await fs.writeFile(iconDtsFilePath, o.join('\\n') + '\\n');\n}\n\nconst createSvgSymbols = async (version: string, distDir: string, srcSvgData: Array<SvgData>) => {\n srcSvgData = srcSvgData.sort((a, b) => {\n if (a.iconName < b.iconName) return -1;\n if (a.iconName > b.iconName) return 1;\n return 0;\n });\n\n const symbolsSvgFilePath = join(distDir, `${libraryName}.symbols.svg`);\n\n const lines = [\n `<svg data-pdsicons=\"${version}\" style=\"display:none\">`,\n `<style>`,\n `.pdsicon {`,\n ` fill: currentColor;`,\n `}`,\n `.pdsicon-fill-none {`,\n ` fill: none;`,\n `}`,\n `.pdsicon-stroke-width {`,\n ` stroke-width: 32px;`,\n `}`,\n `</style>`,\n ];\n\n srcSvgData.forEach((svgData) => {\n const svg = svgData.optimizedSvgContent\n .replace(`<svg xmlns=\"http://www.w3.org/2000/svg\"`, `<symbol id=\"${svgData.iconName}\"`)\n .replace(`</svg>`, `</symbol>`);\n lines.push(svg);\n });\n\n lines.push(`</svg/`, ``);\n\n const content = lines.join('\\n');\n\n await fs.writeFile(symbolsSvgFilePath, content);\n\n return content;\n}\n\nconst getDataUrl = (svgData: SvgData) => {\n let svg = svgData.optimizedSvgContent;\n if ( svg.includes(`'`)) {\n throw new Error(`Single quotes are NOT allowed!!!!! ${svgData.fileName}`);\n }\n\n if (svg.includes('\\n') || svg.includes('\\r')) {\n throw new Error(`New lines are NOT allowed!!!!! ${svgData.fileName}`);\n }\n\n svg = svg.replace(/\"/g, \"'\");\n\n return `\"data:image/svg+xml;utf8,${svg}\"`;\n}\n"]}
@@ -1 +0,0 @@
1
- export declare const collectionCopy: (rootDir: string) => Promise<void>;