Files
supabase/packages/ui/internals/transform/web/fileHeader.js
T
Ivan Vasilov a4acebe1bc chore: Expand prettier commands to also run on packages (#32550)
* Run prettier on packages too.

* Add the generated files for icons to prettierignore.

* Format all files in the packages folder.

* Minor fix.
2025-01-03 16:23:32 +01:00

84 lines
2.9 KiB
JavaScript

/*
* Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
// no-op default
const defaultFileHeader = (arr) => arr
const lineSeparator = '\n'
const defaultFormatting = {
lineSeparator,
prefix: ' * ',
header: `/**${lineSeparator}`,
footer: `${lineSeparator} */${lineSeparator}${lineSeparator}`,
}
/**
*
* This is for creating the comment at the top of generated files with the generated at date.
* It will use the custom file header if defined on the configuration, or use the
* default file header.
* @memberof module:formatHelpers
* @param {Object} options
* @param {File} options.file - The file object that is passed to the formatter.
* @param {String} options.commentStyle - The only options are 'short' and 'xml', which will use the // or \<!-- --> style comments respectively. Anything else will use \/\* style comments.
* @param {Object} options.formatting - Custom formatting properties that define parts of a comment in code. The configurable strings are: prefix, lineSeparator, header, and footer.
* @returns {String}
* @example
* ```js
* StyleDictionary.registerFormat({
* name: 'myCustomFormat',
* formatter: function({ dictionary, file }) {
* return fileHeader({file, 'short') +
* dictionary.allTokens.map(token => `${token.name} = ${token.value}`)
* .join('\n');
* }
* });
* ```
*/
function fileHeader({ file = {}, commentStyle, formatting = {} }) {
// showFileHeader is true by default
let showFileHeader = true
if (file.options && typeof file.options.showFileHeader !== 'undefined') {
showFileHeader = file.options.showFileHeader
}
// Return empty string if the showFileHeader is false
if (!showFileHeader) return ''
let fn = defaultFileHeader
if (file.options && typeof file.options.fileHeader === 'function') {
fn = file.options.fileHeader
}
// default header
const defaultHeader = ['Do not edit directly', `Generated on ${new Date().toString()}`]
let { prefix, lineSeparator, header, footer } = Object.assign({}, defaultFormatting, formatting)
if (commentStyle === 'short') {
prefix = '// '
header = `${lineSeparator}`
footer = `${lineSeparator}${lineSeparator}`
} else if (commentStyle === 'xml') {
prefix = ' '
header = `<!--${lineSeparator}`
footer = `${lineSeparator}-->`
}
return `${header}${fn(defaultHeader)
.map((line) => `${prefix}${line}`)
.join(lineSeparator)}${footer}`
}
module.exports = fileHeader