From a10cc228468256b01fc984ec0d78ec2a8739a7a8 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 5 Nov 2024 15:08:28 -0800 Subject: [PATCH 1/5] fix: use import.meta.url instead of __dirname --- scripts/utils/auroLibraryUtils.mjs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/scripts/utils/auroLibraryUtils.mjs b/scripts/utils/auroLibraryUtils.mjs index 150688e..5f52dca 100644 --- a/scripts/utils/auroLibraryUtils.mjs +++ b/scripts/utils/auroLibraryUtils.mjs @@ -12,13 +12,7 @@ import {Logger} from "./logger.mjs"; export default class AuroLibraryUtils { getDirname() { - if (typeof __dirname === 'undefined') { - Logger.warn('Unable to determine project root as __dirname is not defined. Assuming current directory is okay!', true); - return ''; - } - - // eslint-disable-next-line no-undef - return __dirname; + return import.meta.url.replace("file://", ""); } get getProjectRootPath() { From 13e0aed9e116e804fcacdc449ef84ae1de8bbb88 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 5 Nov 2024 15:09:03 -0800 Subject: [PATCH 2/5] fix: properly consume remoteReadmeVariant --- scripts/build/processors/defaultDocsProcessor.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build/processors/defaultDocsProcessor.mjs b/scripts/build/processors/defaultDocsProcessor.mjs index 09e0617..cdcd9bb 100644 --- a/scripts/build/processors/defaultDocsProcessor.mjs +++ b/scripts/build/processors/defaultDocsProcessor.mjs @@ -25,14 +25,14 @@ export const defaultDocsProcessorConfig = { // eslint-disable-next-line no-warning-comments // TODO: remove this variant when all components are updated to use latest auro-library // AND the default README.md is updated to use the new paths - readmeVariant: "_updated_paths" + remoteReadmeVariant: "_updated_paths" }; /** * @param {ProcessorConfig} config - The configuration for this processor. * @returns {import('../utils/sharedFileProcessorUtils').FileProcessorConfig[]} */ -export const fileConfigs = (config = defaultDocsProcessorConfig) => [ +export const fileConfigs = (config) => [ // README.md { identifier: 'README.md', From 6366cffddde6acfec519691354aa817098c985c9 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 5 Nov 2024 15:10:17 -0800 Subject: [PATCH 3/5] fix: make api table formatter a preProcessor - add preProcessors since api table formatting completely breaks api.md when run after templateReplacer --- .../build/processors/defaultDocsProcessor.mjs | 2 +- scripts/utils/sharedFileProcessorUtils.mjs | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/scripts/build/processors/defaultDocsProcessor.mjs b/scripts/build/processors/defaultDocsProcessor.mjs index cdcd9bb..39775c1 100644 --- a/scripts/build/processors/defaultDocsProcessor.mjs +++ b/scripts/build/processors/defaultDocsProcessor.mjs @@ -59,7 +59,7 @@ export const fileConfigs = (config) => [ identifier: 'api.md', input: fromAuroComponentRoot("/docs/partials/api.md"), output: fromAuroComponentRoot("/demo/api.md"), - postProcessors: [templateFiller.formatApiTable], + preProcessors: [templateFiller.formatApiTable], } ]; diff --git a/scripts/utils/sharedFileProcessorUtils.mjs b/scripts/utils/sharedFileProcessorUtils.mjs index 6fc57aa..f8009ae 100644 --- a/scripts/utils/sharedFileProcessorUtils.mjs +++ b/scripts/utils/sharedFileProcessorUtils.mjs @@ -1,7 +1,5 @@ -import path from 'path'; import * as mdMagic from 'markdown-magic'; import fs from 'node:fs/promises'; -import { fileURLToPath } from 'url'; import AuroLibraryUtils from "./auroLibraryUtils.mjs"; import { AuroTemplateFiller } from "./auroTemplateFiller.mjs"; @@ -75,8 +73,12 @@ export const nonEsmComponents = ['combobox', 'datepicker', 'menu', 'pane', 'sele */ // TODO: test this in auro-flight before merging to main export function fromAuroComponentRoot(pathLike) { - const currentDir = fileURLToPath(new URL('.', import.meta.url)) - return path.join(currentDir, `${auroLibraryUtils.getProjectRootPath}${pathLike}`) + if (pathLike.startsWith('/')) { + // remove the first slash + return auroLibraryUtils.getProjectRootPath + pathLike.slice(1) + } + + return auroLibraryUtils.getProjectRootPath + pathLike } @@ -149,6 +151,7 @@ export function generateReadmeUrl(branchOrTag = 'master', variantOverride = '') * @property {string | InputFileType} input - path to an input file, including filename * @property {string} output - path to an output file, including filename * @property {Partial} [mdMagicConfig] - extra configuration options for md magic + * @property {Array<(contents: string) => string>} [preProcessors] - extra processor functions to run on content AFTER markdownmagic and BEFORE templateFiller * @property {Array<(contents: string) => string>} [postProcessors] - extra processor functions to run on content */ @@ -241,6 +244,13 @@ export async function processContentForFile(config) { // 3a. Read the output file contents let fileContents = await fs.readFile(output, {encoding: 'utf-8'}); + // 3c. Run any post-processors + if (config.postProcessors) { + for (const processor of config.postProcessors) { + fileContents = processor(fileContents) + } + } + // 3b. Replace template variables in output file fileContents = templateFiller.replaceTemplateValues(fileContents); From c6f9cb274e456b4bee3e6bbe2e55674da54de1a9 Mon Sep 17 00:00:00 2001 From: Doug Date: Wed, 6 Nov 2024 09:37:12 -0800 Subject: [PATCH 4/5] fix: use fileURLToPath instead of manual formatting Apparently it's more "correct" to do it this way :) --- scripts/utils/auroLibraryUtils.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/utils/auroLibraryUtils.mjs b/scripts/utils/auroLibraryUtils.mjs index 5f52dca..3e9e50d 100644 --- a/scripts/utils/auroLibraryUtils.mjs +++ b/scripts/utils/auroLibraryUtils.mjs @@ -8,11 +8,13 @@ import * as fs from 'fs'; import * as path from 'path'; import chalk from 'chalk'; +import { fileURLToPath } from 'url'; + import {Logger} from "./logger.mjs"; export default class AuroLibraryUtils { getDirname() { - return import.meta.url.replace("file://", ""); + return fileURLToPath(import.meta.url); } get getProjectRootPath() { From ef7ef6fdc8ea099bdb6a38ca87d6ce8624d9348b Mon Sep 17 00:00:00 2001 From: Doug Date: Wed, 6 Nov 2024 09:38:49 -0800 Subject: [PATCH 5/5] fix: sourcery feedback - fixes preprocessor loop using wrong array - use path.join instead of path string concat --- scripts/utils/sharedFileProcessorUtils.mjs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/scripts/utils/sharedFileProcessorUtils.mjs b/scripts/utils/sharedFileProcessorUtils.mjs index f8009ae..e6019f7 100644 --- a/scripts/utils/sharedFileProcessorUtils.mjs +++ b/scripts/utils/sharedFileProcessorUtils.mjs @@ -1,5 +1,6 @@ import * as mdMagic from 'markdown-magic'; import fs from 'node:fs/promises'; +import path from "node:path"; import AuroLibraryUtils from "./auroLibraryUtils.mjs"; import { AuroTemplateFiller } from "./auroTemplateFiller.mjs"; @@ -75,10 +76,10 @@ export const nonEsmComponents = ['combobox', 'datepicker', 'menu', 'pane', 'sele export function fromAuroComponentRoot(pathLike) { if (pathLike.startsWith('/')) { // remove the first slash - return auroLibraryUtils.getProjectRootPath + pathLike.slice(1) + return path.join(auroLibraryUtils.getProjectRootPath, pathLike.slice(1)) } - return auroLibraryUtils.getProjectRootPath + pathLike + return path.join(auroLibraryUtils.getProjectRootPath, pathLike) } @@ -244,24 +245,24 @@ export async function processContentForFile(config) { // 3a. Read the output file contents let fileContents = await fs.readFile(output, {encoding: 'utf-8'}); - // 3c. Run any post-processors - if (config.postProcessors) { - for (const processor of config.postProcessors) { + // 3b. Run any pre-processors + if (config.preProcessors) { + for (const processor of config.preProcessors) { fileContents = processor(fileContents) } } - // 3b. Replace template variables in output file + // 3c. Replace template variables in output file fileContents = templateFiller.replaceTemplateValues(fileContents); - // 3c. Run any post-processors + // 3d. Run any post-processors if (config.postProcessors) { for (const processor of config.postProcessors) { fileContents = processor(fileContents) } } - // 3d. Write the final file contents + // 3e. Write the final file contents if (!await AuroFileHandler.tryWriteFile(output, fileContents)) { throw new Error(`Error writing "${bareFileName}" file to output ${output}`); }