├── Target ├── Type │ ├── Biome.js │ └── Biome.d.ts ├── Interface │ ├── Option.js │ ├── Configuration.js │ ├── Integration.js │ ├── Configuration.d.ts │ ├── Integration.d.ts │ └── Option.d.ts ├── Function │ ├── Merge.js │ ├── Configuration.d.ts │ ├── Configuration.js │ ├── Merge.d.ts │ ├── Integration.js │ └── Integration.d.ts └── Variable │ ├── Biome.d.ts │ ├── Biome.js │ ├── Option.js │ └── Option.d.ts ├── .github ├── Update.md ├── FUNDING.yml ├── dependabot.yml └── workflows │ ├── Dependabot.yml │ ├── GitHub.yml │ ├── Auto.yml │ ├── NPM.yml │ └── Node.yml ├── .npmignore ├── docs ├── .nojekyll ├── assets │ ├── navigation.js │ ├── custom.css │ ├── highlight.css │ ├── search.js │ ├── icons.svg │ └── icons.js ├── media │ └── CHANGELOG.md ├── variables │ ├── Variable_Biome.biome.html │ ├── Variable_Option.option.html │ └── Function_Integration.Default.html ├── modules │ ├── Merge.html │ ├── Type_Biome.html │ ├── Variable_Biome.html │ ├── Variable_Option.html │ ├── Configuration.html │ ├── Interface_Option.html │ ├── Interface_Integration.html │ ├── Function_Configuration.html │ └── Function_Integration.html ├── types │ └── Type_Biome.Type.html ├── interfaces │ ├── Interface_Integration.Interface.html │ └── Configuration.Interface.html ├── functions │ ├── Function_Integration.integration.html │ ├── Function_Configuration.configuration.html │ └── Function_Configuration.resolve.html └── modules.html ├── Source ├── Function │ ├── Merge.ts │ ├── Configuration.ts │ └── Integration.ts ├── Interface │ ├── Configuration.ts │ ├── Integration.ts │ └── Option.ts ├── Type │ └── Biome.ts └── Variable │ ├── Biome.ts │ └── Option.ts ├── tsconfig.json ├── DEPENDENTS.md ├── package.json ├── CHANGELOG.md ├── biome.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE └── README.md /Target/Type/Biome.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Target/Interface/Option.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Target/Interface/Configuration.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Target/Interface/Integration.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/Update.md: -------------------------------------------------------------------------------- 1 | Update: Thu Dec 18 01:17:48 UTC 2025 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .github/ 2 | CHANGELOG.md 3 | CODE_OF_CONDUCT.md 4 | CONTRIBUTING.md 5 | docs/ 6 | Source/ 7 | -------------------------------------------------------------------------------- /Target/Function/Merge.js: -------------------------------------------------------------------------------- 1 | var e=(await import("deepmerge-ts")).deepmergeCustom({mergeArrays:!1});export{e as default}; 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://Stripe.PlayForm.Cloud/b/3csdQZfzn2LDaBOcMN 2 | open_collective: playform-cloud-collective 3 | -------------------------------------------------------------------------------- /Target/Variable/Biome.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Biome 3 | * 4 | */ 5 | declare const _default: any; 6 | export default _default; 7 | -------------------------------------------------------------------------------- /Target/Variable/Biome.js: -------------------------------------------------------------------------------- 1 | var e=JSON.parse(await(await import("../Function/Configuration.js")).default("biome.json"));export{e as default}; 2 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. -------------------------------------------------------------------------------- /Source/Function/Merge.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Merge 3 | * 4 | */ 5 | export default (await import("deepmerge-ts")).deepmergeCustom({ 6 | mergeArrays: false, 7 | }); 8 | -------------------------------------------------------------------------------- /Source/Interface/Configuration.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Configuration 3 | * 4 | */ 5 | export default interface Interface { 6 | (File: string): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /Target/Interface/Configuration.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Configuration 3 | * 4 | */ 5 | export default interface Interface { 6 | (File: string): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./", 4 | "outDir": "Target" 5 | }, 6 | "extends": "@playform/build/tsconfig", 7 | "include": ["Source"] 8 | } 9 | -------------------------------------------------------------------------------- /Target/Type/Biome.d.ts: -------------------------------------------------------------------------------- 1 | import type { Configuration } from "@biomejs/js-api"; 2 | /** 3 | * @module Biome 4 | * 5 | */ 6 | export type Type = Omit; 7 | export type { Type as default }; 8 | -------------------------------------------------------------------------------- /Source/Type/Biome.ts: -------------------------------------------------------------------------------- 1 | import type { Configuration } from "@biomejs/js-api"; 2 | 3 | /** 4 | * @module Biome 5 | * 6 | */ 7 | export type Type = Omit; 8 | 9 | export type { Type as default }; 10 | -------------------------------------------------------------------------------- /Source/Variable/Biome.ts: -------------------------------------------------------------------------------- 1 | import type Type from "../Type/Biome.js"; 2 | 3 | /** 4 | * @module Biome 5 | * 6 | */ 7 | export default JSON.parse( 8 | await (await import("@Function/Configuration.js")).default("biome.json"), 9 | ) satisfies Type; 10 | -------------------------------------------------------------------------------- /Target/Interface/Integration.d.ts: -------------------------------------------------------------------------------- 1 | import type { AstroIntegration } from "astro"; 2 | import type Option from "../Interface/Option.js"; 3 | /** 4 | * @module Integration 5 | * 6 | */ 7 | export default interface Interface { 8 | (Option?: Option): AstroIntegration; 9 | } 10 | -------------------------------------------------------------------------------- /Source/Interface/Integration.ts: -------------------------------------------------------------------------------- 1 | import type { AstroIntegration } from "astro"; 2 | 3 | import type Option from "../Interface/Option.js"; 4 | 5 | /** 6 | * @module Integration 7 | * 8 | */ 9 | export default interface Interface { 10 | (Option?: Option): AstroIntegration; 11 | } 12 | -------------------------------------------------------------------------------- /Target/Interface/Option.d.ts: -------------------------------------------------------------------------------- 1 | import type Option from "@playform/pipe/Target/Interface/Option.js"; 2 | import type Biome from "../Type/Biome.js"; 3 | /** 4 | * @module Option 5 | * 6 | */ 7 | export default interface Interface extends Option { 8 | Biome?: boolean | Biome; 9 | } 10 | -------------------------------------------------------------------------------- /Source/Interface/Option.ts: -------------------------------------------------------------------------------- 1 | import type Option from "@playform/pipe/Target/Interface/Option.js"; 2 | 3 | import type Biome from "../Type/Biome.js"; 4 | 5 | /** 6 | * @module Option 7 | * 8 | */ 9 | export default interface Interface extends Option { 10 | Biome?: boolean | Biome; 11 | } 12 | -------------------------------------------------------------------------------- /Target/Function/Configuration.d.ts: -------------------------------------------------------------------------------- 1 | import type Interface from "../Interface/Configuration.js"; 2 | /** 3 | * @module Configuration 4 | * 5 | */ 6 | declare const _default: Interface; 7 | export default _default; 8 | export declare const readFile: typeof import("fs/promises").readFile; 9 | export declare const resolve: (...paths: string[]) => string; 10 | -------------------------------------------------------------------------------- /Target/Function/Configuration.js: -------------------------------------------------------------------------------- 1 | var i=async(...[t])=>{try{return(await r(a(`${(await import("process")).cwd()}/${t}`),"utf-8")).toString()}catch{return(await r(a(`${(await import("node:path")).dirname((await import("node:url")).fileURLToPath(import.meta.url))}/../../${t}`),"utf-8")).toString()}};const{readFile:r}=await import("node:fs/promises"),{resolve:a}=await import("node:path");export{i as default,r as readFile,a as resolve}; 2 | -------------------------------------------------------------------------------- /Target/Variable/Option.js: -------------------------------------------------------------------------------- 1 | var a=(await import("../Function/Merge.js")).default((await import("@playform/pipe/Target/Variable/Option.js")).default,{Biome:(await import("./Biome.js")).default,Action:{Failed:async t=>`Error: Cannot format file ${t.Input}!`,Accomplished:async t=>`Formatted ${t.Input} in ${t.Output}.`,Fulfilled:async({File:t})=>t>0?`Successfully formatted a total of ${t} JavaScript and TypeScript ${t===1?"file":"files"}.`:!1}});export{a as default}; 2 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | enable-beta-ecosystems: true 3 | 4 | updates: 5 | - package-ecosystem: "github-actions" 6 | directory: "/" 7 | schedule: 8 | interval: "daily" 9 | 10 | - package-ecosystem: "npm" 11 | directory: "/" 12 | schedule: 13 | interval: "daily" 14 | versioning-strategy: increase 15 | ignore: 16 | - dependency-name: "tailwindcss" 17 | versions: 18 | - "^4.0.0" 19 | -------------------------------------------------------------------------------- /docs/assets/navigation.js: -------------------------------------------------------------------------------- 1 | window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACq2TXWuDMBSG/0uuZd3s2jEv11HYxdjN2E2REjVqmCaSxrIy/O9DGzWxOX7A7kpzzuOT9+QcfpEkPxJ5aMdZTJNSYEk5Qw4qsEyRh3IelRk5rYzju1TmGXLQN2UR8lwHhSnNIkEY8g4d8I1JImIckh5G27+GvK52QN5sK79yOuS+ZKHSs31x4gpt93H5XUI7OVZEkB3CX9o+ahcTBEd7mpEF6LZllHri2XkZtOm4YepDqGeVTGasVc1K+JXEuMxkTzxjQXEAMlW9yV67mie1eVoS0KkUsjZyfSciGU9VZzbVlkSHmba7Au0SmHnXvDj08RW1c2eu6kcxJXut+FdPhRxV9OFBto6WiQFiOfQSrogcGH1v8HkpyOqF8tyiUZ8dm7NZLnV5D5GXwkTUPwec++enh41r+HyprQPeIWDadi2wDUxSv+0DVnBLXLuzXloHWvDQ+IBl0VI0boE2Yn7l/wGdzOAEVQcAAA==" -------------------------------------------------------------------------------- /Target/Function/Merge.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Merge 3 | * 4 | */ 5 | declare const _default: (...objects: Ts) => import("deepmerge-ts").DeepMergeHKT, Readonly<{ 13 | key: PropertyKey; 14 | parents: ReadonlyArray>>; 15 | }>>; 16 | export default _default; 17 | -------------------------------------------------------------------------------- /Source/Variable/Option.ts: -------------------------------------------------------------------------------- 1 | import type Interface from "../Interface/Option.js"; 2 | 3 | /** 4 | * @module Option 5 | * 6 | */ 7 | export default (await import("@Function/Merge.js")).default( 8 | (await import("@playform/pipe/Target/Variable/Option.js")).default, 9 | { 10 | Biome: (await import("@Variable/Biome.js")).default, 11 | Action: { 12 | Failed: async (On) => `Error: Cannot format file ${On.Input}!`, 13 | Accomplished: async (On) => 14 | `Formatted ${On.Input} in ${On.Output}.`, 15 | Fulfilled: async ({ File }) => 16 | File > 0 17 | ? `Successfully formatted a total of ${File} JavaScript and TypeScript ${ 18 | File === 1 ? "file" : "files" 19 | }.` 20 | : false, 21 | }, 22 | } satisfies Interface, 23 | ); 24 | -------------------------------------------------------------------------------- /Source/Function/Configuration.ts: -------------------------------------------------------------------------------- 1 | import type Interface from "../Interface/Configuration.js"; 2 | 3 | /** 4 | * @module Configuration 5 | * 6 | */ 7 | export default (async (...[File]) => { 8 | try { 9 | return ( 10 | await readFile( 11 | resolve(`${(await import("process")).cwd()}/${File}`), 12 | "utf-8", 13 | ) 14 | ).toString(); 15 | } catch (_Error) { 16 | return ( 17 | await readFile( 18 | resolve( 19 | `${(await import("node:path")).dirname( 20 | (await import("node:url")).fileURLToPath( 21 | import.meta.url, 22 | ), 23 | )}/../../${File}`, 24 | ), 25 | "utf-8", 26 | ) 27 | ).toString(); 28 | } 29 | }) satisfies Interface as Interface; 30 | 31 | export const { readFile } = await import("node:fs/promises"); 32 | 33 | export const { resolve } = await import("node:path"); 34 | -------------------------------------------------------------------------------- /Target/Function/Integration.js: -------------------------------------------------------------------------------- 1 | var h=(...[r={}])=>{Object.entries(r).forEach(([t,i])=>Object.defineProperty(r,t,{value:i===!0?f[t]:r[t]}));const{Path:e,Cache:c,Logger:p,Exclude:m,Action:y,Biome:n}=s(f,r),o=new Set;return typeof e<"u"&&((Array.isArray(e)||e instanceof Set)&&e.forEach(t=>o.add(t)),e instanceof Map&&o.add(e)),{name:"@playform/format",hooks:{"astro:build:done":async({dir:t})=>{o.size===0&&o.add(t);const i=await(await import("@biomejs/js-api")).Biome.create({distribution:(await import("@biomejs/js-api")).Distribution.NODE});try{n&&typeof n=="object"&&i.applyConfiguration(n)}catch(a){console.log(a)}const l=s(y,{Wrote:async({Buffer:a,Output:d})=>{try{return i.formatContent(a.toString(),{filePath:(await import("node:path")).resolve(d)}).content}catch(u){return console.log(u),a}}});for(const a of o)await(await(await(await new(await import("@playform/pipe")).default(c,p).In(a)).By("**/*.{js,mjs,cjs,ts,json}")).Not(m)).Pipe(l)}}}};const{default:f}=await import("../Variable/Option.js"),{default:s}=await import("./Merge.js");export{f as Default,s as Merge,h as default}; 2 | -------------------------------------------------------------------------------- /Target/Variable/Option.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @module Option 3 | * 4 | */ 5 | declare const _default: { 6 | File: string; 7 | Cache: { 8 | Search: string; 9 | Folder: string; 10 | }; 11 | Path: string; 12 | Logger: 2; 13 | Action: { 14 | Failed: (On: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 15 | Accomplished: (On: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 16 | Fulfilled: ({ File }: import("@playform/pipe/Target/Interface/Plan.js").default) => Promise; 17 | Read: ({ Input }: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 18 | Wrote: ({ Buffer }: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 19 | Passed: (On: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 20 | Changed: (Plan: import("@playform/pipe/Target/Interface/Plan.js").default) => Promise; 21 | }; 22 | Exclude: false; 23 | Biome: unknown; 24 | }; 25 | export default _default; 26 | -------------------------------------------------------------------------------- /docs/assets/custom.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --dark-color-background: #000; 3 | --dark-color-background-secondary: #000; 4 | --dark-code-background: #040404; 5 | --color-accent: #2463eb; 6 | --light-hl-0: #b58900; 7 | --light-hl-1: #d33682; 8 | --light-hl-2: #dc322f; 9 | --light-hl-3: #2aa198; 10 | --light-hl-4: #859900; 11 | --dark-hl-0: #ffdd00; 12 | --dark-hl-1: #ff66ff; 13 | --dark-hl-2: #ff4444; 14 | --dark-hl-3: #44ffff; 15 | --dark-hl-4: #44ff44; 16 | } 17 | 18 | body #tsd-search .field label { 19 | left: 50%; 20 | margin-left: -20px; 21 | z-index: 1; 22 | text-align: center; 23 | } 24 | 25 | body #tsd-search.has-focus .field label { 26 | display: none; 27 | } 28 | 29 | body #tsd-search .field input { 30 | z-index: 2; 31 | } 32 | 33 | body pre, 34 | body .tsd-page-toolbar, 35 | body .tsd-generator { 36 | border: none; 37 | } 38 | 39 | body .tsd-navigation a, 40 | body .tsd-navigation summary > span, 41 | body .tsd-page-navigation a { 42 | padding: 0.5rem; 43 | border-radius: 8px; 44 | } 45 | 46 | body .tsd-description .tsd-signatures .tsd-signature, 47 | body .tsd-signature, 48 | body .tsd-signatures .tsd-signature, 49 | body .tsd-typography td, 50 | body .tsd-typography th, 51 | body code.tsd-tag { 52 | border-radius: 12px; 53 | border-width: 2px; 54 | } 55 | -------------------------------------------------------------------------------- /DEPENDENTS.md: -------------------------------------------------------------------------------- 1 | # Dependents stats for PlayForm/Format 2 | 3 | [![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by&message=3&color=informational&logo=slickpic)](https://github.com/PlayForm/Format/network/dependents) 4 | [![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=3&color=informational&logo=slickpic)](https://github.com/PlayForm/Format/network/dependents) 5 | [![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=-3&color=informational&logo=slickpic)](https://github.com/PlayForm/Format/network/dependents) 6 | [![Generated by github-dependents-info](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=28&color=informational&logo=slickpic)](https://github.com/PlayForm/Format/network/dependents) 7 | 8 | | Repository | Stars | 9 | | :-------- | -----: | 10 | |   [PlayForm](https://github.com/PlayForm) / [Starter](https://github.com/PlayForm/Starter) | 14 | 11 | 12 | _Generated using [github-dependents-info](https://github.com/nvuillam/github-dependents-info), by [Nicolas Vuillamy](https://github.com/nvuillam)_ -------------------------------------------------------------------------------- /.github/workflows/Dependabot.yml: -------------------------------------------------------------------------------- 1 | name: Dependabot 2 | 3 | concurrency: 4 | group: Dependabot-${{ github.workflow }}-${{ github.ref }} 5 | cancel-in-progress: true 6 | 7 | permissions: 8 | security-events: write 9 | contents: write 10 | pull-requests: write 11 | 12 | on: 13 | workflow_dispatch: 14 | pull_request: 15 | 16 | jobs: 17 | Approve: 18 | runs-on: ubuntu-latest 19 | 20 | if: ${{ github.actor == 'dependabot[bot]' }} 21 | 22 | steps: 23 | - uses: dependabot/fetch-metadata@v2.4.0 24 | with: 25 | github-token: "${{ secrets.GITHUB_TOKEN }}" 26 | 27 | - run: gh pr review --approve "$PR_URL" 28 | env: 29 | PR_URL: ${{github.event.pull_request.html_url}} 30 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 31 | 32 | Merge: 33 | runs-on: ubuntu-latest 34 | 35 | if: ${{ github.actor == 'dependabot[bot]' }} 36 | 37 | steps: 38 | - uses: dependabot/fetch-metadata@v2.4.0 39 | with: 40 | github-token: "${{ secrets.GITHUB_TOKEN }}" 41 | 42 | - run: gh pr merge --auto --merge "$PR_URL" 43 | env: 44 | PR_URL: ${{github.event.pull_request.html_url}} 45 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@playform/format", 3 | "version": "0.0.8", 4 | "private": false, 5 | "description": "Format 🗻", 6 | "keywords": [ 7 | "astro", 8 | "astro-component", 9 | "astro-integration", 10 | "astro-biome", 11 | "astro-format", 12 | "format", 13 | "linter", 14 | "biome", 15 | "javascript", 16 | "performance", 17 | "withastro", 18 | "playform" 19 | ], 20 | "homepage": "HTTPS://GitHub.Com/PlayForm/Format#readme", 21 | "bugs": { 22 | "url": "HTTPS://GitHub.Com/PlayForm/Format/issues" 23 | }, 24 | "repository": { 25 | "type": "git", 26 | "url": "git+https://github.com/PlayForm/Format.git" 27 | }, 28 | "license": "SEE LICENSE IN LICENSE", 29 | "author": { 30 | "name": "Source ✍🏻 Open 👐🏻", 31 | "email": "Source/Open@PlayForm.Cloud", 32 | "url": "HTTPS://PlayForm.Cloud" 33 | }, 34 | "type": "module", 35 | "main": "./Target/Function/Integration.js", 36 | "types": "./Target/Function/Integration.d.ts", 37 | "scripts": { 38 | "Run": "Build 'Source/**/*.ts' --Watch", 39 | "prepublishOnly": "Build 'Source/**/*.ts'" 40 | }, 41 | "dependencies": { 42 | "@biomejs/backend-jsonrpc": "2.3.10", 43 | "@biomejs/js-api": "4.0.0", 44 | "@biomejs/wasm-nodejs": "2.3.10", 45 | "@playform/pipe": "0.1.3", 46 | "astro": "*", 47 | "deepmerge-ts": "7.1.5" 48 | }, 49 | "devDependencies": { 50 | "@playform/build": "0.2.5" 51 | }, 52 | "publishConfig": { 53 | "access": "public", 54 | "provenance": true 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Target/Function/Integration.d.ts: -------------------------------------------------------------------------------- 1 | import type Interface from "../Interface/Integration.js"; 2 | /** 3 | * @module Integration 4 | * 5 | */ 6 | declare const _default: Interface; 7 | export default _default; 8 | export declare const Default: { 9 | File: string; 10 | Cache: { 11 | Search: string; 12 | Folder: string; 13 | }; 14 | Path: string; 15 | Logger: 2; 16 | Action: { 17 | Failed: (On: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 18 | Accomplished: (On: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 19 | Fulfilled: ({ File }: import("@playform/pipe/Target/Interface/Plan.js").default) => Promise; 20 | Read: ({ Input }: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 21 | Wrote: ({ Buffer }: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 22 | Passed: (On: import("@playform/pipe/Target/Interface/File.js").default) => Promise; 23 | Changed: (Plan: import("@playform/pipe/Target/Interface/Plan.js").default) => Promise; 24 | }; 25 | Exclude: false; 26 | Biome: unknown; 27 | }; 28 | export declare const Merge: (...objects: Ts) => import("deepmerge-ts").DeepMergeHKT, Readonly<{ 36 | key: PropertyKey; 37 | parents: ReadonlyArray>>; 38 | }>>; 39 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.8 2 | 3 | ### Change 4 | 5 | - Updated to Biome 1.9.4. 6 | - Enforced stricter code style with `useFilenamingConvention`. 7 | - Updated dependencies. 8 | - Improved developer experience with better logging and error handling. 9 | 10 | ### Add 11 | 12 | - `Run` script to package.json for building with watch mode. 13 | - Provenance to package.json. 14 | 15 | ### Removed 16 | 17 | - `Document` script from package.json. 18 | 19 | ## 0.0.7 20 | 21 | ### Change 22 | 23 | - Updated to Biome 1.8.3. 24 | - Improved logging for debugging. 25 | 26 | ### Fix 27 | 28 | - Resolved an issue where the integration would not correctly apply the Biome 29 | configuration. 30 | 31 | ## 0.0.6 32 | 33 | ### Change 34 | 35 | - Updated to Biome 1.8.2. 36 | - Improved code organization. 37 | - Updated `@playform/pipe` dependency to 0.0.6. 38 | - Updated `@playform/build` dependency to 0.0.11. 39 | 40 | ### Add 41 | 42 | - Introduced a new `Merge` function for merging configuration objects. 43 | 44 | ## 0.0.5 45 | 46 | ### Change 47 | 48 | - Updated dependencies, including bumping Biome to 1.8.0, Astro to "\*", and 49 | `deepmerge-ts` to 7.0.3. 50 | 51 | ## 0.0.4 52 | 53 | ### Change 54 | 55 | - Bumped version. 56 | 57 | ## 0.0.3 58 | 59 | ### Change 60 | 61 | - Updated to Biome 1.7.3. 62 | - Restructured codebase. 63 | - Changed the API surface. 64 | - Updated dependencies: bumped `@playform/pipe` to 0.0.5, `astro` to 4.9.2, 65 | `deepmerge-ts` to 7.0.1, and `@playform/build` to 0.0.10. 66 | 67 | ### Add 68 | 69 | - Support for Astro integration. 70 | - `astro-biome`, `astro-format`, and `format` scripts to package.json. 71 | 72 | ## 0.0.2 73 | 74 | ### Change 75 | 76 | - Updated dependencies. 77 | 78 | ### Add 79 | 80 | - Astro integrations. 81 | - `astro-component`, `astro-integration`, and `withastro` scripts to 82 | package.json. 83 | 84 | ## 0.0.1 85 | 86 | ### Add 87 | 88 | - Initial release of Format. 89 | -------------------------------------------------------------------------------- /docs/media/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.8 2 | 3 | ### Changed 4 | 5 | - Updated to Biome 1.9.4. 6 | - Enforced stricter code style with `useFilenamingConvention`. 7 | - Updated dependencies. 8 | - Improved developer experience with better logging and error handling. 9 | 10 | ### Added 11 | 12 | - `Run` script to package.json for building with watch mode. 13 | - Provenance to package.json. 14 | 15 | ### Removed 16 | 17 | - `Document` script from package.json. 18 | 19 | ## 0.0.7 20 | 21 | ### Changed 22 | 23 | - Updated to Biome 1.8.3. 24 | - Improved logging for debugging. 25 | 26 | ### Fixed 27 | 28 | - Resolved an issue where the integration would not correctly apply the Biome 29 | configuration. 30 | 31 | ## 0.0.6 32 | 33 | ### Changed 34 | 35 | - Updated to Biome 1.8.2. 36 | - Improved code organization. 37 | - Updated `@playform/pipe` dependency to 0.0.6. 38 | - Updated `@playform/build` dependency to 0.0.11. 39 | 40 | ### Added 41 | 42 | - Introduced a new `Merge` function for merging configuration objects. 43 | 44 | ## 0.0.5 45 | 46 | ### Changed 47 | 48 | - Updated dependencies, including bumping Biome to 1.8.0, Astro to "\*", and 49 | `deepmerge-ts` to 7.0.3. 50 | 51 | ## 0.0.4 52 | 53 | ### Changed 54 | 55 | - Bumped version. 56 | 57 | ## 0.0.3 58 | 59 | ### Changed 60 | 61 | - Updated to Biome 1.7.3. 62 | - Restructured codebase. 63 | - Changed the API surface. 64 | - Updated dependencies: bumped `@playform/pipe` to 0.0.5, `astro` to 4.9.2, 65 | `deepmerge-ts` to 7.0.1, and `@playform/build` to 0.0.10. 66 | 67 | ### Added 68 | 69 | - Support for Astro integration. 70 | - `astro-biome`, `astro-format`, and `format` scripts to package.json. 71 | 72 | ## 0.0.2 73 | 74 | ### Changed 75 | 76 | - Updated dependencies. 77 | 78 | ### Added 79 | 80 | - Astro integrations. 81 | - `astro-component`, `astro-integration`, and `withastro` scripts to 82 | package.json. 83 | 84 | ## 0.0.1 85 | 86 | ### Added 87 | 88 | - Initial release of Format. 89 | -------------------------------------------------------------------------------- /.github/workflows/GitHub.yml: -------------------------------------------------------------------------------- 1 | name: GitHub 2 | 3 | concurrency: 4 | group: GitHub-${{ github.workflow }}-${{ github.ref }} 5 | cancel-in-progress: true 6 | 7 | permissions: 8 | issues: write 9 | pull-requests: write 10 | 11 | on: 12 | issues: 13 | types: [opened] 14 | pull_request: 15 | types: [opened] 16 | 17 | jobs: 18 | Assign: 19 | runs-on: ubuntu-latest 20 | 21 | env: 22 | ADBLOCK: true 23 | ASTRO_TELEMETRY_DISABLED: 1 24 | AUTOMATEDLAB_TELEMETRY_OPTOUT: 1 25 | AZURE_CORE_COLLECT_TELEMETRY: 0 26 | CHOOSENIM_NO_ANALYTICS: 1 27 | DIEZ_DO_NOT_TRACK: 1 28 | DO_NOT_TRACK: 1 29 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 30 | DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT: 1 31 | ET_NO_TELEMETRY: 1 32 | GATSBY_TELEMETRY_DISABLED: 1 33 | GATSBY_TELEMETRY_OPT_OUT: 1 34 | GATSBY_TELEMETRY_OPTOUT: 1 35 | GRIT_TELEMETRY_DISABLED: 1 36 | HASURA_GRAPHQL_ENABLE_TELEMETRY: false 37 | HINT_TELEMETRY: off 38 | HOMEBREW_NO_ANALYTICS: 1 39 | INFLUXD_REPORTING_DISABLED: true 40 | ITERATIVE_DO_NOT_TRACK: 1 41 | NEXT_TELEMETRY_DEBUG: 1 42 | NEXT_TELEMETRY_DISABLED: 1 43 | NG_CLI_ANALYTICS: false 44 | NUXT_TELEMETRY_DISABLED: 1 45 | PIN_DO_NOT_TRACK: 1 46 | POWERSHELL_TELEMETRY_OPTOUT: 1 47 | SAM_CLI_TELEMETRY: 0 48 | STNOUPGRADE: 1 49 | STRIPE_CLI_TELEMETRY_OPTOUT: 1 50 | TELEMETRY_DISABLED: 1 51 | TERRAFORM_TELEMETRY: 0 52 | VCPKG_DISABLE_METRICS: 1 53 | 54 | steps: 55 | - uses: pozil/auto-assign-issue@v2.2.0 56 | with: 57 | repo-token: ${{ secrets.GITHUB_TOKEN }} 58 | assignees: NikolaRHristov 59 | numOfAssignee: 1 60 | -------------------------------------------------------------------------------- /.github/workflows/Auto.yml: -------------------------------------------------------------------------------- 1 | name: Auto 2 | 3 | concurrency: 4 | group: Auto-${{ github.workflow }}-${{ github.ref }} 5 | cancel-in-progress: true 6 | 7 | permissions: 8 | contents: write 9 | 10 | on: 11 | workflow_dispatch: 12 | schedule: 13 | - cron: "0 0 * * *" 14 | workflow_call: 15 | 16 | jobs: 17 | Commit: 18 | runs-on: ubuntu-latest 19 | 20 | env: 21 | ADBLOCK: true 22 | ASTRO_TELEMETRY_DISABLED: 1 23 | AUTOMATEDLAB_TELEMETRY_OPTOUT: 1 24 | AZURE_CORE_COLLECT_TELEMETRY: 0 25 | CHOOSENIM_NO_ANALYTICS: 1 26 | DIEZ_DO_NOT_TRACK: 1 27 | DO_NOT_TRACK: 1 28 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 29 | DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT: 1 30 | ET_NO_TELEMETRY: 1 31 | GATSBY_TELEMETRY_DISABLED: 1 32 | GATSBY_TELEMETRY_OPT_OUT: 1 33 | GATSBY_TELEMETRY_OPTOUT: 1 34 | GRIT_TELEMETRY_DISABLED: 1 35 | HASURA_GRAPHQL_ENABLE_TELEMETRY: false 36 | HINT_TELEMETRY: off 37 | HOMEBREW_NO_ANALYTICS: 1 38 | INFLUXD_REPORTING_DISABLED: true 39 | ITERATIVE_DO_NOT_TRACK: 1 40 | NEXT_TELEMETRY_DEBUG: 1 41 | NEXT_TELEMETRY_DISABLED: 1 42 | NG_CLI_ANALYTICS: false 43 | NUXT_TELEMETRY_DISABLED: 1 44 | PIN_DO_NOT_TRACK: 1 45 | POWERSHELL_TELEMETRY_OPTOUT: 1 46 | SAM_CLI_TELEMETRY: 0 47 | STNOUPGRADE: 1 48 | STRIPE_CLI_TELEMETRY_OPTOUT: 1 49 | TELEMETRY_DISABLED: 1 50 | TERRAFORM_TELEMETRY: 0 51 | VCPKG_DISABLE_METRICS: 1 52 | 53 | steps: 54 | - uses: actions/checkout@v6.0.1 55 | 56 | - run: | 57 | echo "Update: $(date)" > .github/Update.md 58 | 59 | - run: | 60 | git config user.name "Auto" 61 | git config user.email "Commit@PlayForm.Cloud" 62 | git add . 63 | git commit -a --allow-empty-message -m "" 64 | 65 | - uses: ad-m/github-push-action@master 66 | with: 67 | github_token: ${{ secrets.GITHUB_TOKEN }} 68 | branch: Current 69 | -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/biomejs/biome/main/packages/%40biomejs/biome/configuration_schema.json", 3 | "files": { 4 | "ignoreUnknown": true, 5 | "maxSize": 10000000 6 | }, 7 | "formatter": { 8 | "enabled": true, 9 | "formatWithErrors": true, 10 | "indentStyle": "tab", 11 | "indentWidth": 4, 12 | "lineEnding": "lf", 13 | "lineWidth": 80 14 | }, 15 | "javascript": { 16 | "formatter": { 17 | "arrowParentheses": "always", 18 | "bracketSameLine": true, 19 | "bracketSpacing": true, 20 | "enabled": true, 21 | "indentStyle": "tab", 22 | "indentWidth": 4, 23 | "jsxQuoteStyle": "double", 24 | "lineEnding": "lf", 25 | "lineWidth": 80, 26 | "quoteProperties": "asNeeded", 27 | "quoteStyle": "double", 28 | "semicolons": "always", 29 | "trailingCommas": "all" 30 | }, 31 | "jsxRuntime": "transparent", 32 | "parser": { 33 | "unsafeParameterDecoratorsEnabled": true 34 | } 35 | }, 36 | "json": { 37 | "formatter": { 38 | "enabled": true, 39 | "indentStyle": "tab", 40 | "indentWidth": 4, 41 | "lineEnding": "lf", 42 | "lineWidth": 80 43 | }, 44 | "parser": { 45 | "allowComments": true 46 | } 47 | }, 48 | "linter": { 49 | "enabled": true, 50 | "rules": { 51 | "complexity": { 52 | "noExcessiveCognitiveComplexity": "off", 53 | "noForEach": "off", 54 | "noUselessLoneBlockStatements": "off", 55 | "useLiteralKeys": "off" 56 | }, 57 | "correctness": { 58 | "noNodejsModules": "off", 59 | "noUndeclaredDependencies": "off", 60 | "noUnusedVariables": "off", 61 | "useJsxKeyInIterable": "off" 62 | }, 63 | "nursery": { 64 | "useSortedClasses": "off" 65 | }, 66 | 67 | "style": { 68 | "noDefaultExport": "off", 69 | "noUselessElse": "off", 70 | "useFilenamingConvention": { 71 | "level": "error", 72 | "options": { 73 | "filenameCases": ["PascalCase"], 74 | "requireAscii": true, 75 | "strictCase": true 76 | } 77 | }, 78 | "useImportType": "error", 79 | "useNamingConvention": "off", 80 | "useShorthandFunctionType": "off" 81 | }, 82 | "suspicious": { 83 | "noConsole": "off" 84 | } 85 | } 86 | }, 87 | "vcs": { 88 | "clientKind": "git", 89 | "enabled": true, 90 | "useIgnoreFile": true 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /.github/workflows/NPM.yml: -------------------------------------------------------------------------------- 1 | name: NPM 2 | 3 | concurrency: 4 | group: NPM-${{ github.workflow }}-${{ github.ref }} 5 | cancel-in-progress: true 6 | 7 | permissions: 8 | security-events: write 9 | contents: write 10 | pull-requests: write 11 | 12 | on: 13 | workflow_dispatch: 14 | release: 15 | types: [created] 16 | workflow_call: 17 | 18 | jobs: 19 | Publish: 20 | runs-on: ubuntu-latest 21 | 22 | env: 23 | ADBLOCK: true 24 | ASTRO_TELEMETRY_DISABLED: 1 25 | AUTOMATEDLAB_TELEMETRY_OPTOUT: 1 26 | AZURE_CORE_COLLECT_TELEMETRY: 0 27 | CHOOSENIM_NO_ANALYTICS: 1 28 | DIEZ_DO_NOT_TRACK: 1 29 | DO_NOT_TRACK: 1 30 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 31 | DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT: 1 32 | ET_NO_TELEMETRY: 1 33 | GATSBY_TELEMETRY_DISABLED: 1 34 | GATSBY_TELEMETRY_OPT_OUT: 1 35 | GATSBY_TELEMETRY_OPTOUT: 1 36 | GRIT_TELEMETRY_DISABLED: 1 37 | HASURA_GRAPHQL_ENABLE_TELEMETRY: false 38 | HINT_TELEMETRY: off 39 | HOMEBREW_NO_ANALYTICS: 1 40 | INFLUXD_REPORTING_DISABLED: true 41 | ITERATIVE_DO_NOT_TRACK: 1 42 | NEXT_TELEMETRY_DEBUG: 1 43 | NEXT_TELEMETRY_DISABLED: 1 44 | NG_CLI_ANALYTICS: false 45 | NUXT_TELEMETRY_DISABLED: 1 46 | PIN_DO_NOT_TRACK: 1 47 | POWERSHELL_TELEMETRY_OPTOUT: 1 48 | SAM_CLI_TELEMETRY: 0 49 | STNOUPGRADE: 1 50 | STRIPE_CLI_TELEMETRY_OPTOUT: 1 51 | TELEMETRY_DISABLED: 1 52 | TERRAFORM_TELEMETRY: 0 53 | VCPKG_DISABLE_METRICS: 1 54 | 55 | permissions: 56 | contents: read 57 | id-token: write 58 | 59 | steps: 60 | - uses: actions/checkout@v6.0.1 61 | 62 | - uses: actions/setup-node@v6.1.0 63 | with: 64 | node-version: "18" 65 | registry-url: "https://registry.npmjs.org" 66 | 67 | - run: npm install -g npm 68 | 69 | - name: Publish . 70 | continue-on-error: true 71 | working-directory: . 72 | run: | 73 | npm publish --legacy-peer-deps --provenance --ignore-scripts 74 | env: 75 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 76 | -------------------------------------------------------------------------------- /.github/workflows/Node.yml: -------------------------------------------------------------------------------- 1 | name: Node 2 | 3 | concurrency: 4 | group: Node-${{ github.workflow }}-${{ github.ref }} 5 | cancel-in-progress: true 6 | 7 | permissions: 8 | security-events: write 9 | contents: write 10 | pull-requests: write 11 | 12 | on: 13 | workflow_dispatch: 14 | push: 15 | branches: [Current] 16 | pull_request: 17 | branches: [Current] 18 | workflow_call: 19 | 20 | jobs: 21 | Pre-Publish: 22 | runs-on: ubuntu-latest 23 | 24 | env: 25 | ADBLOCK: true 26 | ASTRO_TELEMETRY_DISABLED: 1 27 | AUTOMATEDLAB_TELEMETRY_OPTOUT: 1 28 | AZURE_CORE_COLLECT_TELEMETRY: 0 29 | CHOOSENIM_NO_ANALYTICS: 1 30 | DIEZ_DO_NOT_TRACK: 1 31 | DO_NOT_TRACK: 1 32 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 33 | DOTNET_INTERACTIVE_CLI_TELEMETRY_OPTOUT: 1 34 | ET_NO_TELEMETRY: 1 35 | GATSBY_TELEMETRY_DISABLED: 1 36 | GATSBY_TELEMETRY_OPT_OUT: 1 37 | GATSBY_TELEMETRY_OPTOUT: 1 38 | GRIT_TELEMETRY_DISABLED: 1 39 | HASURA_GRAPHQL_ENABLE_TELEMETRY: false 40 | HINT_TELEMETRY: off 41 | HOMEBREW_NO_ANALYTICS: 1 42 | INFLUXD_REPORTING_DISABLED: true 43 | ITERATIVE_DO_NOT_TRACK: 1 44 | NEXT_TELEMETRY_DEBUG: 1 45 | NEXT_TELEMETRY_DISABLED: 1 46 | NG_CLI_ANALYTICS: false 47 | NUXT_TELEMETRY_DISABLED: 1 48 | PIN_DO_NOT_TRACK: 1 49 | POWERSHELL_TELEMETRY_OPTOUT: 1 50 | SAM_CLI_TELEMETRY: 0 51 | STNOUPGRADE: 1 52 | STRIPE_CLI_TELEMETRY_OPTOUT: 1 53 | TELEMETRY_DISABLED: 1 54 | TERRAFORM_TELEMETRY: 0 55 | VCPKG_DISABLE_METRICS: 1 56 | 57 | strategy: 58 | matrix: 59 | node-version: [18, 19, 20] 60 | 61 | steps: 62 | - uses: actions/checkout@v6.0.1 63 | 64 | - uses: pnpm/action-setup@v4.2.0 65 | with: 66 | version: 9.3.0 67 | run_install: | 68 | - recursive: true 69 | args: [ 70 | --link-workspace-packages=true, 71 | --lockfile-only, 72 | --prefer-frozen-lockfile=false, 73 | --shamefully-hoist=false, 74 | --shared-workspace-lockfile=true, 75 | --strict-peer-dependencies=false, 76 | --unsafe-perm=true 77 | ] 78 | 79 | - uses: actions/setup-node@v6.1.0 80 | with: 81 | node-version: ${{ matrix.node-version }} 82 | cache: "pnpm" 83 | cache-dependency-path: ./pnpm-lock.yaml 84 | 85 | - run: pnpm install 86 | working-directory: . 87 | 88 | - run: pnpm run prepublishOnly 89 | working-directory: . 90 | 91 | - uses: actions/upload-artifact@v6.0.0 92 | with: 93 | name: .-Node-${{ matrix.node-version }}-Target 94 | path: ./Target 95 | -------------------------------------------------------------------------------- /Source/Function/Integration.ts: -------------------------------------------------------------------------------- 1 | import type Action from "@playform/pipe/Target/Interface/Action.js"; 2 | import type Path from "@playform/pipe/Target/Type/Path.js"; 3 | 4 | import type Interface from "../Interface/Integration.js"; 5 | 6 | /** 7 | * @module Integration 8 | * 9 | */ 10 | export default ((...[_Option = {}]) => { 11 | Object.entries(_Option).forEach(([Key, Value]) => 12 | Object.defineProperty(_Option, Key, { 13 | value: 14 | Value === true 15 | ? Default[Key as keyof typeof Default] 16 | : _Option[Key as keyof typeof _Option], 17 | }), 18 | ); 19 | 20 | const { Path, Cache, Logger, Exclude, Action, Biome } = Merge( 21 | Default, 22 | _Option, 23 | ); 24 | 25 | const Paths = new Set(); 26 | 27 | if (typeof Path !== "undefined") { 28 | if (Array.isArray(Path) || Path instanceof Set) { 29 | Path.forEach((Path) => Paths.add(Path)); 30 | } 31 | 32 | if (Path instanceof Map) { 33 | Paths.add(Path); 34 | } 35 | } 36 | 37 | return { 38 | name: "@playform/format", 39 | hooks: { 40 | "astro:build:done": async ({ dir: Directory }) => { 41 | if (Paths.size === 0) { 42 | Paths.add(Directory); 43 | } 44 | 45 | const _Biome = await ( 46 | await import("@biomejs/js-api") 47 | ).Biome.create({ 48 | distribution: (await import("@biomejs/js-api")).Distribution 49 | .NODE, 50 | }); 51 | 52 | try { 53 | if (Biome && typeof Biome === "object") { 54 | _Biome.applyConfiguration(Biome); 55 | } 56 | } catch (_Error) { 57 | console.log(_Error); 58 | } 59 | 60 | const _Action = Merge(Action, { 61 | Wrote: async ({ Buffer, Output }) => { 62 | try { 63 | return _Biome.formatContent(Buffer.toString(), { 64 | filePath: (await import("node:path")).resolve( 65 | Output, 66 | ), 67 | }).content; 68 | } catch (_Error) { 69 | console.log(_Error); 70 | 71 | return Buffer; 72 | } 73 | }, 74 | // TODO: FINISH THIS 75 | // Passed: async ({ Buffer, Output }) => { 76 | // try { 77 | // _Biome 78 | // .lintContent(Buffer.toString(), { 79 | // filePath: ( 80 | // await import("node:path") 81 | // ).resolve(Output), 82 | // }) 83 | // .diagnostics.forEach( 84 | // ({ location: { path } }) => { 85 | // console.log(Output); 86 | 87 | // }, 88 | // ); 89 | // } catch (_Error) { 90 | // console.log(_Error); 91 | // } 92 | 93 | // return true; 94 | // }, 95 | } satisfies Action); 96 | 97 | for (const Path of Paths) { 98 | await ( 99 | await ( 100 | await ( 101 | await new ( 102 | await import("@playform/pipe") 103 | ).default(Cache, Logger).In(Path) 104 | ).By("**/*.{js,mjs,cjs,ts,json}") 105 | ).Not(Exclude) 106 | ).Pipe(_Action); 107 | } 108 | }, 109 | }, 110 | }; 111 | }) satisfies Interface as Interface; 112 | 113 | export const { default: Default } = await import("@Variable/Option.js"); 114 | 115 | export const { default: Merge } = await import("@Function/Merge.js"); 116 | -------------------------------------------------------------------------------- /docs/assets/highlight.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --light-hl-0: #795E26; 3 | --dark-hl-0: #DCDCAA; 4 | --light-hl-1: #000000; 5 | --dark-hl-1: #D4D4D4; 6 | --light-hl-2: #A31515; 7 | --dark-hl-2: #CE9178; 8 | --light-hl-3: #0000FF; 9 | --dark-hl-3: #569CD6; 10 | --light-hl-4: #AF00DB; 11 | --dark-hl-4: #C586C0; 12 | --light-hl-5: #001080; 13 | --dark-hl-5: #9CDCFE; 14 | --light-hl-6: #008000; 15 | --dark-hl-6: #6A9955; 16 | --light-hl-7: #267F99; 17 | --dark-hl-7: #4EC9B0; 18 | --light-hl-8: #098658; 19 | --dark-hl-8: #B5CEA8; 20 | --light-hl-9: #0070C1; 21 | --dark-hl-9: #4FC1FF; 22 | --light-hl-10: #000000; 23 | --dark-hl-10: #C8C8C8; 24 | --light-code-background: #FFFFFF; 25 | --dark-code-background: #1E1E1E; 26 | } 27 | 28 | @media (prefers-color-scheme: light) { :root { 29 | --hl-0: var(--light-hl-0); 30 | --hl-1: var(--light-hl-1); 31 | --hl-2: var(--light-hl-2); 32 | --hl-3: var(--light-hl-3); 33 | --hl-4: var(--light-hl-4); 34 | --hl-5: var(--light-hl-5); 35 | --hl-6: var(--light-hl-6); 36 | --hl-7: var(--light-hl-7); 37 | --hl-8: var(--light-hl-8); 38 | --hl-9: var(--light-hl-9); 39 | --hl-10: var(--light-hl-10); 40 | --code-background: var(--light-code-background); 41 | } } 42 | 43 | @media (prefers-color-scheme: dark) { :root { 44 | --hl-0: var(--dark-hl-0); 45 | --hl-1: var(--dark-hl-1); 46 | --hl-2: var(--dark-hl-2); 47 | --hl-3: var(--dark-hl-3); 48 | --hl-4: var(--dark-hl-4); 49 | --hl-5: var(--dark-hl-5); 50 | --hl-6: var(--dark-hl-6); 51 | --hl-7: var(--dark-hl-7); 52 | --hl-8: var(--dark-hl-8); 53 | --hl-9: var(--dark-hl-9); 54 | --hl-10: var(--dark-hl-10); 55 | --code-background: var(--dark-code-background); 56 | } } 57 | 58 | :root[data-theme='light'] { 59 | --hl-0: var(--light-hl-0); 60 | --hl-1: var(--light-hl-1); 61 | --hl-2: var(--light-hl-2); 62 | --hl-3: var(--light-hl-3); 63 | --hl-4: var(--light-hl-4); 64 | --hl-5: var(--light-hl-5); 65 | --hl-6: var(--light-hl-6); 66 | --hl-7: var(--light-hl-7); 67 | --hl-8: var(--light-hl-8); 68 | --hl-9: var(--light-hl-9); 69 | --hl-10: var(--light-hl-10); 70 | --code-background: var(--light-code-background); 71 | } 72 | 73 | :root[data-theme='dark'] { 74 | --hl-0: var(--dark-hl-0); 75 | --hl-1: var(--dark-hl-1); 76 | --hl-2: var(--dark-hl-2); 77 | --hl-3: var(--dark-hl-3); 78 | --hl-4: var(--dark-hl-4); 79 | --hl-5: var(--dark-hl-5); 80 | --hl-6: var(--dark-hl-6); 81 | --hl-7: var(--dark-hl-7); 82 | --hl-8: var(--dark-hl-8); 83 | --hl-9: var(--dark-hl-9); 84 | --hl-10: var(--dark-hl-10); 85 | --code-background: var(--dark-code-background); 86 | } 87 | 88 | .hl-0 { color: var(--hl-0); } 89 | .hl-1 { color: var(--hl-1); } 90 | .hl-2 { color: var(--hl-2); } 91 | .hl-3 { color: var(--hl-3); } 92 | .hl-4 { color: var(--hl-4); } 93 | .hl-5 { color: var(--hl-5); } 94 | .hl-6 { color: var(--hl-6); } 95 | .hl-7 { color: var(--hl-7); } 96 | .hl-8 { color: var(--hl-8); } 97 | .hl-9 { color: var(--hl-9); } 98 | .hl-10 { color: var(--hl-10); } 99 | pre, code { background: var(--code-background); } 100 | -------------------------------------------------------------------------------- /docs/variables/Variable_Biome.biome.html: -------------------------------------------------------------------------------- 1 | biome | @playform/format - v0.0.8
2 | -------------------------------------------------------------------------------- /docs/modules/Merge.html: -------------------------------------------------------------------------------- 1 | Merge | @playform/format - v0.0.8
3 | -------------------------------------------------------------------------------- /docs/modules/Type_Biome.html: -------------------------------------------------------------------------------- 1 | Type/Biome | @playform/format - v0.0.8
3 | -------------------------------------------------------------------------------- /docs/modules/Variable_Biome.html: -------------------------------------------------------------------------------- 1 | Variable/Biome | @playform/format - v0.0.8
3 | -------------------------------------------------------------------------------- /docs/modules/Variable_Option.html: -------------------------------------------------------------------------------- 1 | Variable/Option | @playform/format - v0.0.8
3 | -------------------------------------------------------------------------------- /docs/modules/Configuration.html: -------------------------------------------------------------------------------- 1 | Configuration | @playform/format - v0.0.8
3 | -------------------------------------------------------------------------------- /docs/modules/Interface_Option.html: -------------------------------------------------------------------------------- 1 | Interface/Option | @playform/format - v0.0.8
3 | -------------------------------------------------------------------------------- /docs/types/Type_Biome.Type.html: -------------------------------------------------------------------------------- 1 | Type | @playform/format - v0.0.8
2 | -------------------------------------------------------------------------------- /docs/modules/Interface_Integration.html: -------------------------------------------------------------------------------- 1 | Interface/Integration | @playform/format - v0.0.8
3 | -------------------------------------------------------------------------------- /docs/assets/search.js: -------------------------------------------------------------------------------- 1 | window.searchData = "data:application/octet-stream;base64,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"; -------------------------------------------------------------------------------- /docs/modules/Function_Configuration.html: -------------------------------------------------------------------------------- 1 | Function/Configuration | @playform/format - v0.0.8
5 | -------------------------------------------------------------------------------- /docs/modules/Function_Integration.html: -------------------------------------------------------------------------------- 1 | Function/Integration | @playform/format - v0.0.8
5 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | Welcome to our community! We are committed to creating a welcoming and inclusive 6 | environment for all contributors. As members, contributors, and leaders, we 7 | pledge to make participation in our community a harassment-free experience for 8 | everyone, regardless of: 9 | 10 | - Age 11 | - Body size 12 | - Visible or invisible disability 13 | - Ethnicity 14 | - Sex characteristics 15 | - Gender identity and expression 16 | - Level of experience 17 | - Education 18 | - Socio-economic status 19 | - Nationality 20 | - Personal appearance 21 | - Race 22 | - Caste 23 | - Color 24 | - Religion 25 | - Sexual identity and orientation 26 | 27 | We promise to act and interact in ways that contribute to an open, welcoming, 28 | diverse, inclusive, and healthy community. 29 | 30 | ## Our Standards 31 | 32 | Examples of behavior that contributes to a positive environment for our 33 | community include: 34 | 35 | - Demonstrating empathy and kindness toward other people 36 | - Being respectful of differing opinions, viewpoints, and experiences 37 | - Giving and gracefully accepting constructive feedback 38 | - Accepting responsibility and apologizing to those affected by our mistakes, 39 | and learning from the experience 40 | - Focusing on what is best not just for us as individuals but for the overall 41 | community 42 | 43 | Examples of unacceptable behavior include: 44 | 45 | - The use of sexualized language or imagery, and sexual attention or advances of 46 | any kind 47 | - Trolling, insulting, or derogatory comments, and personal or political attacks 48 | - Public or private harassment 49 | - Publishing others' private information, such as a physical or email address, 50 | without their explicit permission 51 | - Other conduct which could reasonably be considered inappropriate in a 52 | professional setting 53 | 54 | ## Enforcement Responsibilities 55 | 56 | Community leaders are responsible for clarifying and enforcing our standards of 57 | acceptable behavior. They will take appropriate and fair corrective action in 58 | response to any behavior they deem inappropriate, threatening, offensive, or 59 | harmful. This may include removing, editing, or rejecting comments, commits, 60 | code, wiki edits, issues, and other contributions that do not align with this 61 | Code of Conduct. Community leaders will communicate reasons for moderation 62 | decisions when appropriate. 63 | 64 | ## Scope 65 | 66 | This Code of Conduct applies within all community spaces, and also applies when 67 | an individual is officially representing the community in public spaces. 68 | Examples of representing our community include using an official e-mail address, 69 | posting via an official social media account, or acting as an appointed 70 | representative at an online or offline event. 71 | 72 | ## Enforcement 73 | 74 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 75 | reported to the community leaders responsible for enforcement at 76 | Community@PlayForm.Cloud. All complaints will be reviewed and investigated 77 | promptly and fairly. All community leaders are obligated to respect the privacy 78 | and security of the reporter of any incident. 79 | 80 | ## Enforcement Guidelines 81 | 82 | Community leaders will follow these Community Impact Guidelines in determining 83 | the consequences for any action they deem in violation of this Code of Conduct: 84 | 85 | ### 1. Correction 86 | 87 | **Community Impact**: Use of inappropriate language or other behavior deemed 88 | unprofessional or unwelcome in the community. 89 | 90 | **Consequence**: A private, written warning from community leaders, providing 91 | clarity around the nature of the violation and an explanation of why the 92 | behavior was inappropriate. A public apology may be requested. 93 | 94 | ### 2. Warning 95 | 96 | **Community Impact**: A violation through a single incident or series of 97 | actions. 98 | 99 | **Consequence**: A warning with consequences for continued behavior. No 100 | interaction with the people involved, including unsolicited interaction with 101 | those enforcing the Code of Conduct, for a specified period of time. This 102 | includes avoiding interactions in community spaces as well as external channels 103 | like social media. Violating these terms may lead to a temporary or permanent 104 | ban. 105 | 106 | ### 3. Temporary Ban 107 | 108 | **Community Impact**: A serious violation of community standards, including 109 | sustained inappropriate behavior. 110 | 111 | **Consequence**: A temporary ban from any sort of interaction or public 112 | communication with the community for a specified period of time. No public or 113 | private interaction with the people involved, including unsolicited interaction 114 | with those enforcing the Code of Conduct, is allowed during this period. 115 | Violating these terms may lead to a permanent ban. 116 | 117 | ### 4. Permanent Ban 118 | 119 | **Community Impact**: Demonstrating a pattern of violation of community 120 | standards, including sustained inappropriate behavior, harassment of an 121 | individual, or aggression toward or disparagement of classes of individuals. 122 | 123 | **Consequence**: A permanent ban from any sort of public interaction within the 124 | community. 125 | 126 | ## Attribution 127 | 128 | This Code of Conduct is adapted from the [`Contributor Covenant`][homepage], 129 | version 2.1, available at 130 | [`HTTPS://www.contributor-covenant.org/version/2/1/code_of_conduct.html`][v2.1]. 131 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 132 | enforcement ladder][Mozilla CoC]. 133 | 134 | For answers to common questions about this code of conduct, see the FAQ at 135 | [`HTTPS://www.contributor-covenant.org/faq`][FAQ]. Translations are available at 136 | [`HTTPS://www.contributor-covenant.org/translations`][translations]. 137 | 138 | [homepage]: HTTPS://www.contributor-covenant.org 139 | [v2.1]: HTTPS://www.contributor-covenant.org/version/2/1/code_of_conduct.html 140 | [Mozilla CoC]: HTTPS://github.com/mozilla/diversity 141 | [FAQ]: HTTPS://www.contributor-covenant.org/faq 142 | [translations]: HTTPS://www.contributor-covenant.org/translations 143 | 144 | Thank you for being part of our community and helping us create a safe and 145 | respectful environment for everyone! 146 | -------------------------------------------------------------------------------- /docs/interfaces/Interface_Integration.Interface.html: -------------------------------------------------------------------------------- 1 | Interface | @playform/format - v0.0.8
2 | -------------------------------------------------------------------------------- /docs/functions/Function_Integration.integration.html: -------------------------------------------------------------------------------- 1 | integration | @playform/format - v0.0.8
2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Welcome to our community! We are committed to creating a welcoming and inclusive 4 | environment for all contributors. Before you get started, please read and adhere 5 | to the following code of conduct. By participating in our community, you agree 6 | to abide by these guidelines. 7 | 8 | ## Our Pledge 9 | 10 | We, as members, contributors, and leaders, pledge to make participation in our 11 | community a harassment-free experience for everyone, regardless of age, body 12 | size, visible or invisible disability, ethnicity, sex characteristics, gender 13 | identity and expression, level of experience, education, socio-economic status, 14 | nationality, personal appearance, race, caste, color, religion, or sexual 15 | identity and orientation. We pledge to act and interact in ways that contribute 16 | to an open, welcoming, diverse, inclusive, and healthy community. 17 | 18 | ## Our Standards 19 | 20 | Examples of behavior that contributes to a positive environment for our 21 | community include: 22 | 23 | - Demonstrating empathy and kindness toward other people 24 | - Being respectful of differing opinions, viewpoints, and experiences 25 | - Giving and gracefully accepting constructive feedback 26 | - Accepting responsibility and apologizing to those affected by our mistakes, 27 | and learning from the experience 28 | - Focusing on what is best not just for us as individuals, but for the overall 29 | community 30 | 31 | Examples of unacceptable behavior include: 32 | 33 | - The use of sexualized language or imagery, and sexual attention or advances of 34 | any kind 35 | - Trolling, insulting, or derogatory comments, and personal or political attacks 36 | - Public or private harassment 37 | - Publishing others' private information, such as a physical or email address, 38 | without their explicit permission 39 | - Other conduct which could reasonably be considered inappropriate in a 40 | professional setting 41 | 42 | ## Enforcement Responsibilities 43 | 44 | Community leaders are responsible for clarifying and enforcing our standards of 45 | acceptable behavior and will take appropriate and fair corrective action in 46 | response to any behavior that they deem inappropriate, threatening, offensive, 47 | or harmful. Community leaders have the right and responsibility to remove, edit, 48 | or reject comments, commits, code, wiki edits, issues, and other contributions 49 | that are not aligned with this Code of Conduct, and will communicate reasons for 50 | moderation decisions when appropriate. 51 | 52 | ## Scope 53 | 54 | This Code of Conduct applies within all community spaces, and also applies when 55 | an individual is officially representing the community in public spaces. 56 | Examples of representing our community include using an official e-mail address, 57 | posting via an official social media account, or acting as an appointed 58 | representative at an online or offline event. 59 | 60 | ## Enforcement 61 | 62 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 63 | reported to the community leaders responsible for enforcement at 64 | Community@PlayForm.Cloud. All complaints will be reviewed and investigated 65 | promptly and fairly. All community leaders are obligated to respect the privacy 66 | and security of the reporter of any incident. 67 | 68 | ## Enforcement Guidelines 69 | 70 | Community leaders will follow these Community Impact Guidelines in determining 71 | the consequences for any action they deem in violation of this Code of Conduct: 72 | 73 | ### 1. Correction 74 | 75 | **Community Impact**: Use of inappropriate language or other behavior deemed 76 | unprofessional or unwelcome in the community. 77 | 78 | **Consequence**: A private, written warning from community leaders, providing 79 | clarity around the nature of the violation and an explanation of why the 80 | behavior was inappropriate. A public apology may be requested. 81 | 82 | ### 2. Warning 83 | 84 | **Community Impact**: A violation through a single incident or series of 85 | actions. 86 | 87 | **Consequence**: A warning with consequences for continued behavior. No 88 | interaction with the people involved, including unsolicited interaction with 89 | those enforcing the Code of Conduct, for a specified period of time. This 90 | includes avoiding interactions in community spaces as well as external channels 91 | like social media. Violating these terms may lead to a temporary or permanent 92 | ban. 93 | 94 | ### 3. Temporary Ban 95 | 96 | **Community Impact**: A serious violation of community standards, including 97 | sustained inappropriate behavior. 98 | 99 | **Consequence**: A temporary ban from any sort of interaction or public 100 | communication with the community for a specified period of time. No public or 101 | private interaction with the people involved, including unsolicited interaction 102 | with those enforcing the Code of Conduct, is allowed during this period. 103 | Violating these terms may lead to a permanent ban. 104 | 105 | ### 4. Permanent Ban 106 | 107 | **Community Impact**: Demonstrating a pattern of violation of community 108 | standards, including sustained inappropriate behavior, harassment of an 109 | individual, or aggression toward or disparagement of classes of individuals. 110 | 111 | **Consequence**: A permanent ban from any sort of public interaction within the 112 | community. 113 | 114 | ## Attribution 115 | 116 | This Code of Conduct is adapted from the [`Contributor Covenant`][homepage], 117 | version 2.1, available at 118 | [`HTTPS://www.contributor-covenant.org/version/2/1/code_of_conduct.html`][v2.1]. 119 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 120 | enforcement ladder][Mozilla CoC]. 121 | 122 | For answers to common questions about this code of conduct, see the FAQ at 123 | [`HTTPS://www.contributor-covenant.org/faq`][FAQ]. Translations are available at 124 | [`HTTPS://www.contributor-covenant.org/translations`][translations]. 125 | 126 | [homepage]: HTTPS://www.contributor-covenant.org 127 | [v2.1]: HTTPS://www.contributor-covenant.org/version/2/1/code_of_conduct.html 128 | [Mozilla CoC]: HTTPS://github.com/mozilla/diversity 129 | [FAQ]: HTTPS://www.contributor-covenant.org/faq 130 | [translations]: HTTPS://www.contributor-covenant.org/translations 131 | 132 | Thank you for being part of our community and helping us create a safe and 133 | respectful environment for everyone! 134 | -------------------------------------------------------------------------------- /docs/interfaces/Configuration.Interface.html: -------------------------------------------------------------------------------- 1 | Interface | @playform/format - v0.0.8
2 | -------------------------------------------------------------------------------- /docs/functions/Function_Configuration.configuration.html: -------------------------------------------------------------------------------- 1 | configuration | @playform/format - v0.0.8
2 | -------------------------------------------------------------------------------- /docs/modules.html: -------------------------------------------------------------------------------- 1 | @playform/format - v0.0.8
11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator and 18 | subsequent owner(s) (each and all, an "owner") of an original work of authorship 19 | and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for the 22 | purpose of contributing to a commons of creative, cultural and scientific works 23 | ("Commons") that the public can reliably and without fear of later claims of 24 | infringement build upon, modify, incorporate in other works, reuse and 25 | redistribute as freely as possible in any form whatsoever and for any purposes, 26 | including without limitation commercial purposes. These owners may contribute to 27 | the Commons to promote the ideal of a free culture and the further production of 28 | creative, cultural and scientific works, or to gain reputation or greater 29 | distribution for their Work in part through the use and efforts of others. 30 | 31 | For these and/or other purposes and motivations, and without any expectation of 32 | additional consideration or compensation, the person associating CC0 with a Work 33 | (the "Affirmer"), to the extent that he or she is an owner of Copyright and 34 | Related Rights in the Work, voluntarily elects to apply CC0 to the Work and 35 | publicly distribute the Work under its terms, with knowledge of his or her 36 | Copyright and Related Rights in the Work and the meaning and intended legal 37 | effect of CC0 on those rights. 38 | 39 | 1. Copyright and Related Rights. A Work made available under CC0 may be 40 | protected by copyright and related or neighboring rights ("Copyright and 41 | Related Rights"). Copyright and Related Rights include, but are not limited 42 | to, the following: 43 | 44 | i. the right to reproduce, adapt, distribute, perform, display, communicate, and 45 | translate a Work; ii. moral rights retained by the original author(s) and/or 46 | performer(s); iii. publicity and privacy rights pertaining to a person's image 47 | or likeness depicted in a Work; iv. rights protecting against unfair competition 48 | in regards to a Work, subject to the limitations in paragraph 4(a), below; v. 49 | rights protecting the extraction, dissemination, use and reuse of data in a 50 | Work; vi. database rights (such as those arising under Directive 96/9/EC of the 51 | European Parliament and of the Council of 11 March 1996 on the legal protection 52 | of databases, and under any national implementation thereof, including any 53 | amended or successor version of such directive); and vii. other similar, 54 | equivalent or corresponding rights throughout the world based on applicable law 55 | or treaty, and any national implementations thereof. 56 | 57 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 58 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 59 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 60 | and Related Rights and associated claims and causes of action, whether now 61 | known or unknown (including existing as well as future claims and causes of 62 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 63 | duration provided by applicable law or treaty (including future time 64 | extensions), (iii) in any current or future medium and for any number of 65 | copies, and (iv) for any purpose whatsoever, including without limitation 66 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer 67 | makes the Waiver for the benefit of each member of the public at large and to 68 | the detriment of Affirmer's heirs and successors, fully intending that such 69 | Waiver shall not be subject to revocation, rescission, cancellation, 70 | termination, or any other legal or equitable action to disrupt the quiet 71 | enjoyment of the Work by the public as contemplated by Affirmer's express . 72 | 73 | 3. Public License Fallback. Should any part of the Waiver for any reason be 74 | judged legally invalid or ineffective under applicable law, then the Waiver 75 | shall be preserved to the maximum extent permitted taking into account 76 | Affirmer's express . In addition, to the extent the Waiver is so judged 77 | Affirmer hereby grants to each affected person a royalty-free, non 78 | transferable, non sublicensable, non exclusive, irrevocable and unconditional 79 | license to exercise Affirmer's Copyright and Related Rights in the Work (i) 80 | in all territories worldwide, (ii) for the maximum duration provided by 81 | applicable law or treaty (including future time extensions), (iii) in any 82 | current or future medium and for any number of copies, and (iv) for any 83 | purpose whatsoever, including without limitation commercial, advertising or 84 | promotional purposes (the "License"). The License shall be deemed effective 85 | as of the date CC0 was applied by Affirmer to the Work. Should any part of 86 | the License for any reason be judged legally invalid or ineffective under 87 | applicable law, such partial invalidity or ineffectiveness shall not 88 | invalidate the remainder of the License, and in such case Affirmer hereby 89 | affirms that he or she will not (i) exercise any of his or her remaining 90 | Copyright and Related Rights in the Work or (ii) assert any associated claims 91 | and causes of action with respect to the Work, in either case contrary to 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. b. Affirmer offers 97 | the Work as-is and makes no representations or warranties of any kind concerning 98 | the Work, express, implied, statutory or otherwise, including without limitation 99 | warranties of title, merchantability, fitness for a particular purpose, non 100 | infringement, or the absence of latent or other defects, accuracy, or the 101 | present or absence of errors, whether or not discoverable, all to the greatest 102 | extent permissible under applicable law. c. Affirmer disclaims responsibility 103 | for clearing rights of other persons that may apply to the Work or any use 104 | thereof, including without limitation any person's Copyright and Related Rights 105 | in the Work. Further, Affirmer disclaims responsibility for obtaining any 106 | necessary consents, permissions or other rights required for any use of the 107 | Work. d. Affirmer understands and acknowledges that Creative Commons is not a 108 | party to this document and has no duty or obligation with respect to this CC0 or 109 | use of the Work. 110 | -------------------------------------------------------------------------------- /docs/functions/Function_Configuration.resolve.html: -------------------------------------------------------------------------------- 1 | resolve | @playform/format - v0.0.8
  • The right-most parameter is considered {to}. Other parameters are considered an array of {from}.

    2 |

    Starting from leftmost {from} parameter, resolves {to} to an absolute path.

    3 |

    If {to} isn't already absolute, {from} arguments are prepended in right to left order, 4 | until an absolute path is found. If after using all {from} paths still no absolute path is found, 5 | the current working directory is used as well. The resulting path is normalized, 6 | and trailing slashes are removed unless the path gets resolved to the root directory.

    7 |

    Parameters

    • Rest...paths: string[]

      A sequence of paths or path segments.

      8 |

    Returns string

    if any of the arguments is not a string.

    9 |
10 | -------------------------------------------------------------------------------- /docs/assets/icons.svg: -------------------------------------------------------------------------------- 1 | MMNEPVFCICPMFPCPTTAAATR -------------------------------------------------------------------------------- /docs/assets/icons.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | addIcons(); 3 | function addIcons() { 4 | if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); 5 | const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); 6 | svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; 7 | svg.style.display = "none"; 8 | if (location.protocol === "file:") updateUseElements(); 9 | } 10 | 11 | function updateUseElements() { 12 | document.querySelectorAll("use").forEach(el => { 13 | if (el.getAttribute("href").includes("#icon-")) { 14 | el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); 15 | } 16 | }); 17 | } 18 | })() -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Astro

Related

Build
Dependency
Version
Star
Download
Compress 🗜️
Build
Dependency
Version
Star
Download
Inline 🦔
2 | 3 | # [Format] 🗻 4 | 5 | This **[`Astro integration`][astro-integration]** brings Biome tools to your 6 | Astro project. 7 | 8 | [`Biome`][Biome] 9 | 10 | > **Note** 11 | > 12 | > `Format` will not lint / format your requests, only your statically generated 13 | > build and pre-rendered routes. 14 | 15 | ## Installation 🚀 16 | 17 | There are two ways to add integrations to your project. Let's try the most 18 | convenient option first! 19 | 20 | ### `astro add` command 21 | 22 | Astro includes a CLI tool for adding first party integrations: `astro add`. This 23 | command will: 24 | 25 | 1. (Optionally) Install all necessary dependencies and peer dependencies 26 | 2. (Also optionally) Update your `astro.config.*` file to apply this integration 27 | 28 | To install `Format`, run the following from your project directory and follow 29 | the prompts: 30 | 31 | Using NPM: 32 | 33 | ```sh 34 | npx astro add @playform/format 35 | ``` 36 | 37 | Using Yarn: 38 | 39 | ```sh 40 | yarn astro add @playform/format 41 | ``` 42 | 43 | Using PNPM: 44 | 45 | ```sh 46 | pnpx astro add @playform/format 47 | ``` 48 | 49 | ### Install dependencies manually 50 | 51 | First, install the `Format` integration like so: 52 | 53 | ```sh 54 | npm install -D -E @playform/format 55 | ``` 56 | 57 | Then, apply this integration to your `astro.config.*` file using the 58 | `integrations` property: 59 | 60 | **`astro.config.ts`** 61 | 62 | ```ts 63 | import Biome from "@playform/format"; 64 | 65 | export default { integrations: [Biome()] }; 66 | ``` 67 | 68 | ## Getting started 69 | 70 | The utility will now lint and format with [`Biome`][Biome] all of your 71 | JavaScript and TypeScript files, including CommonJS modules in the Astro 72 | `outDir` folder. 73 | 74 | You can override any of the default options from the configurations of: 75 | 76 | - [`biome`](Source/Option/Biome.ts) 77 | 78 | or disable them entirely: 79 | 80 | **`astro.config.ts`** 81 | 82 | ```ts 83 | import Biome from "@playform/format"; 84 | 85 | export default { 86 | integrations: [ 87 | Biome({ 88 | Biome: false, 89 | }), 90 | ], 91 | }; 92 | ``` 93 | 94 | > **Note** 95 | > 96 | > If you provide a `biome.json` config file the utility will pick it up 97 | > automatically. 98 | 99 | > [!WARNING] 100 | > 101 | > The configuration options from the `astro.config.ts` file will override the 102 | > `biome.json` config. 103 | 104 | ### Add Multiple Paths 105 | 106 | You can add multiple paths to validate / format by specifying an array as the 107 | `Path` variable. 108 | 109 | **`astro.config.ts`** 110 | 111 | ```ts 112 | import Biome from "@playform/format"; 113 | 114 | export default { 115 | integrations: [ 116 | Biome({ 117 | Path: ["./Target", "./Build"], 118 | }), 119 | ], 120 | }; 121 | ``` 122 | 123 | ### Input-Output Mapping 124 | 125 | You can also provide a map of paths for different input output directories: 126 | 127 | **`astro.config.ts`** 128 | 129 | ```ts 130 | import Biome from "@playform/format"; 131 | 132 | export default { 133 | integrations: [ 134 | Biome({ 135 | Path: new Map([["./Source", "./Target"]]), 136 | }), 137 | ], 138 | }; 139 | ``` 140 | 141 | Or an array of the two: 142 | 143 | **`astro.config.ts`** 144 | 145 | ```ts 146 | import Biome from "@playform/format"; 147 | 148 | export default { 149 | integrations: [ 150 | Biome({ 151 | Path: [ 152 | // Format Target 153 | "./Target", 154 | // Format Target one more time into a different directory 155 | new Map([["./Target", "./TargetInline"]]), 156 | ], 157 | }), 158 | ], 159 | }; 160 | ``` 161 | 162 | ### File Filtering 163 | 164 | You can provide a filter to exclude files from formatting. A filter can be an 165 | array of regexes or a single match. You can use functions, as well to match on 166 | file names: 167 | 168 | **`astro.config.ts`** 169 | 170 | ```ts 171 | import Biome from "@playform/format"; 172 | 173 | export default { 174 | integrations: [ 175 | Biome({ 176 | Exclude: [ 177 | "Firebase.ts", 178 | (File: string) => File === "./Source/Library/File.ts", 179 | ], 180 | }), 181 | ], 182 | }; 183 | ``` 184 | 185 | ### Controlling Logging 186 | 187 | Set `Logger` to `0` if you do not want to see debug messages. Default is `2`: 188 | 189 | **`astro.config.ts`** 190 | 191 | ```ts 192 | import Biome from "@playform/format"; 193 | 194 | export default { 195 | integrations: [ 196 | Biome({ 197 | Logger: 0, 198 | }), 199 | ], 200 | }; 201 | ``` 202 | 203 | [Format]: HTTPS://NPMJS.Org/@playform/format 204 | [Biome]: HTTPS://NPMJS.Org/@biomejs/biome 205 | [astro-integration]: HTTPS://docs.astro.build/en/guides/integrations-guide/ 206 | 207 | ## Changelog 208 | 209 | See [`CHANGELOG.md`](CHANGELOG.md) for a history of changes to this integration. 210 | -------------------------------------------------------------------------------- /docs/variables/Variable_Option.option.html: -------------------------------------------------------------------------------- 1 | option | @playform/format - v0.0.8
option: {
    Action: {
        Accomplished: ((On: Interface) => Promise<string>);
        Changed: ((Plan: Interface) => Promise<Interface>);
        Failed: ((On: Interface) => Promise<string>);
        Fulfilled: ((__namedParameters: Interface) => Promise<string | false>);
        Passed: ((On: Interface) => Promise<true>);
        Read: ((__namedParameters: Interface) => Promise<string>);
        Wrote: ((__namedParameters: Interface) => Promise<Type>);
    };
    Biome: unknown;
    Cache: {
        Folder: string;
        Search: string;
    };
    Exclude: false;
    File: string;
    Logger: 2;
    Path: string;
}
2 | -------------------------------------------------------------------------------- /docs/variables/Function_Integration.Default.html: -------------------------------------------------------------------------------- 1 | Default | @playform/format - v0.0.8
Default: {
    Action: {
        Accomplished: ((On: Interface) => Promise<string>);
        Changed: ((Plan: Interface) => Promise<Interface>);
        Failed: ((On: Interface) => Promise<string>);
        Fulfilled: ((__namedParameters: Interface) => Promise<string | false>);
        Passed: ((On: Interface) => Promise<true>);
        Read: ((__namedParameters: Interface) => Promise<string>);
        Wrote: ((__namedParameters: Interface) => Promise<Type>);
    };
    Biome: unknown;
    Cache: {
        Folder: string;
        Search: string;
    };
    Exclude: false;
    File: string;
    Logger: 2;
    Path: string;
}
2 | --------------------------------------------------------------------------------