diff --git a/.github/workflows/release-on-vtag.yaml b/.github/workflows/release-on-vtag.yaml index faed059..a9c87bf 100644 --- a/.github/workflows/release-on-vtag.yaml +++ b/.github/workflows/release-on-vtag.yaml @@ -1,15 +1,16 @@ -name: release +name: Create Release + on: push: tags: - 'v*' + jobs: build: - name: Create Release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/create-release@v1 + - uses: actions/checkout@v4 #see: https://github.com/actions/checkout/releases + - uses: actions/create-release@v1 #see: https://github.com/actions/create-release/releases env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} with: diff --git a/.github/workflows/run-spec-on-push.yaml b/.github/workflows/run-spec-on-push.yaml index 463ef8d..3f8814c 100644 --- a/.github/workflows/run-spec-on-push.yaml +++ b/.github/workflows/run-spec-on-push.yaml @@ -1,11 +1,12 @@ -name: build +name: Build and Run Specifications + on: [push] + jobs: build: - name: Run Specifications runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 #see: https://github.com/actions/checkout/releases + - uses: actions/setup-node@v4 #see: https://github.com/actions/setup-node/releases - run: npm install - run: npm test diff --git a/README.md b/README.md index c103388..158eb0f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ _Pretty-print JSON data into HTML to indent and colorize (written in functional [![npm](https://img.shields.io/npm/v/pretty-print-json.svg)](https://www.npmjs.com/package/pretty-print-json) [![Size](https://badgen.net/bundlephobia/minzip/pretty-print-json)](https://bundlephobia.com/package/pretty-print-json) [![Hits](https://data.jsdelivr.com/v1/package/npm/pretty-print-json/badge?style=rounded)](https://www.jsdelivr.com/package/npm/pretty-print-json) -[![Build](https://github.com/center-key/pretty-print-json/workflows/build/badge.svg)](https://github.com/center-key/pretty-print-json/actions/workflows/run-spec-on-push.yaml) +[![Build](https://github.com/center-key/pretty-print-json/actions/workflows/run-spec-on-push.yaml/badge.svg)](https://github.com/center-key/pretty-print-json/actions/workflows/run-spec-on-push.yaml) ![Screenshot](docs/screenshot.png) diff --git a/dist/css/pretty-print-json.css b/dist/css/pretty-print-json.css index e171731..cde82d7 100644 --- a/dist/css/pretty-print-json.css +++ b/dist/css/pretty-print-json.css @@ -1,4 +1,4 @@ -/*! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License */ +/*! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License */ /* Layout */ .json-container { font-family: menlo, consolas, monospace; font-style: normal; font-weight: bold; line-height: 1.4em; font-size: 0.9rem; transition: background-color 400ms; } diff --git a/dist/css/pretty-print-json.dark-mode.css b/dist/css/pretty-print-json.dark-mode.css index a2ddfbc..9492dfd 100644 --- a/dist/css/pretty-print-json.dark-mode.css +++ b/dist/css/pretty-print-json.dark-mode.css @@ -1,4 +1,4 @@ -/*! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License */ +/*! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License */ /* Layout */ .json-container { font-family: menlo, consolas, monospace; font-style: normal; font-weight: bold; line-height: 1.4em; font-size: 0.9rem; transition: background-color 400ms; } diff --git a/dist/css/pretty-print-json.dark-mode.min.css b/dist/css/pretty-print-json.dark-mode.min.css index 261f3f1..2775aa4 100644 --- a/dist/css/pretty-print-json.dark-mode.min.css +++ b/dist/css/pretty-print-json.dark-mode.min.css @@ -1,2 +1,2 @@ -/*! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License */ +/*! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License */ .json-container{font-family:menlo,consolas,monospace;font-style:normal;font-weight:700;line-height:1.4em;font-size:.9rem;transition:background-color 400ms}a.json-link{text-decoration:none;border-bottom:1px solid;outline:0}a.json-link:hover{background-color:transparent;outline:0}ol.json-lines{white-space:normal;padding-inline-start:3em;margin:0}ol.json-lines>li{white-space:pre;text-indent:.7em;line-height:1.5em;padding:0}ol.json-lines>li::marker{font-family:system-ui,sans-serif;font-weight:400;color:silver}.json-boolean,.json-key,.json-mark,.json-null,.json-number,.json-string,a.json-link,ol.json-lines>li{transition:all 400ms}.json-container{background-color:#000}.json-key{color:#cd5c5c}.json-string{color:khaki}.json-number{color:#00bfff}.json-boolean{color:#3cb371}.json-null{color:#ff8c00}.json-mark{color:silver}a.json-link{color:#ba55d3}a.json-link:visited{color:#708090}a.json-link:hover{color:violet}a.json-link:active{color:#708090}ol.json-lines>li:nth-child(odd){background-color:#222}ol.json-lines>li:nth-child(even){background-color:#161616}ol.json-lines>li:hover{background-color:#696969} diff --git a/dist/css/pretty-print-json.min.css b/dist/css/pretty-print-json.min.css index 6595414..ee87f8b 100644 --- a/dist/css/pretty-print-json.min.css +++ b/dist/css/pretty-print-json.min.css @@ -1,2 +1,2 @@ -/*! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License */ +/*! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License */ .json-container{font-family:menlo,consolas,monospace;font-style:normal;font-weight:700;line-height:1.4em;font-size:.9rem;transition:background-color 400ms}a.json-link{text-decoration:none;border-bottom:1px solid;outline:0}a.json-link:hover{background-color:transparent;outline:0}ol.json-lines{white-space:normal;padding-inline-start:3em;margin:0}ol.json-lines>li{white-space:pre;text-indent:.7em;line-height:1.5em;padding:0}ol.json-lines>li::marker{font-family:system-ui,sans-serif;font-weight:400;color:#696969}.json-boolean,.json-key,.json-mark,.json-null,.json-number,.json-string,a.json-link,ol.json-lines>li{transition:all 400ms}.json-container{background-color:#fff}.json-key{color:brown}.json-string{color:olive}.json-number{color:navy}.json-boolean{color:teal}.json-null{color:#696969}.json-mark{color:#000}a.json-link{color:purple}a.json-link:visited{color:#708090}a.json-link:hover{color:#8a2be2}.dark-mode a.json-link:visited,a.json-link:active{color:#708090}ol.json-lines>li:nth-child(odd){background-color:#dcdcdc}ol.json-lines>li:nth-child(even){background-color:#f5f5f5}ol.json-lines>li:hover{background-color:#fffacd}.dark-mode .json-container{background-color:#000}.dark-mode .json-key{color:#cd5c5c}.dark-mode .json-string{color:khaki}.dark-mode .json-number{color:#00bfff}.dark-mode .json-boolean{color:#3cb371}.dark-mode .json-null{color:#ff8c00}.dark-mode .json-mark{color:silver}.dark-mode a.json-link{color:#ba55d3}.dark-mode a.json-link:hover{color:violet}.dark-mode a.json-link:active{color:#708090}.dark-mode ol.json-lines>li::marker{color:silver}.dark-mode ol.json-lines>li:nth-child(odd){background-color:#222}.dark-mode ol.json-lines>li:nth-child(even){background-color:#161616}.dark-mode ol.json-lines>li:hover{background-color:#696969} diff --git a/dist/css/pretty-print-json.prefers.css b/dist/css/pretty-print-json.prefers.css index 95383c6..ccf7398 100644 --- a/dist/css/pretty-print-json.prefers.css +++ b/dist/css/pretty-print-json.prefers.css @@ -1,4 +1,4 @@ -/*! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License */ +/*! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License */ /* Layout */ .json-container { font-family: menlo, consolas, monospace; font-style: normal; font-weight: bold; line-height: 1.4em; font-size: 0.9rem; transition: background-color 400ms; } diff --git a/dist/css/pretty-print-json.prefers.min.css b/dist/css/pretty-print-json.prefers.min.css index 1584d83..359c4c9 100644 --- a/dist/css/pretty-print-json.prefers.min.css +++ b/dist/css/pretty-print-json.prefers.min.css @@ -1,2 +1,2 @@ -/*! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License */ +/*! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License */ .json-container{font-family:menlo,consolas,monospace;font-style:normal;font-weight:700;line-height:1.4em;font-size:.9rem;transition:background-color 400ms}a.json-link{text-decoration:none;border-bottom:1px solid;outline:0}a.json-link:hover{background-color:transparent;outline:0}ol.json-lines{white-space:normal;padding-inline-start:3em;margin:0}ol.json-lines>li{white-space:pre;text-indent:.7em;line-height:1.5em;padding:0}ol.json-lines>li::marker{font-family:system-ui,sans-serif;font-weight:400;color:#696969}.json-boolean,.json-key,.json-mark,.json-null,.json-number,.json-string,a.json-link,ol.json-lines>li{transition:all 400ms}.json-container{background-color:#fff}.json-key{color:brown}.json-string{color:olive}.json-number{color:navy}.json-boolean{color:teal}.json-null{color:#696969}.json-mark{color:#000}a.json-link{color:purple}a.json-link:visited{color:#708090}a.json-link:hover{color:#8a2be2}a.json-link:active{color:#708090}ol.json-lines>li:nth-child(odd){background-color:#dcdcdc}ol.json-lines>li:nth-child(even){background-color:#f5f5f5}ol.json-lines>li:hover{background-color:#fffacd}@media (prefers-color-scheme:dark){.json-container{background-color:#000}.json-key{color:#cd5c5c}.json-string{color:khaki}.json-number{color:#00bfff}.json-boolean{color:#3cb371}.json-null{color:#ff8c00}.json-mark{color:silver}a.json-link{color:#ba55d3}a.json-link:visited{color:#708090}a.json-link:hover{color:violet}a.json-link:active{color:#708090}ol.json-lines>li::marker{color:silver}ol.json-lines>li:nth-child(odd){background-color:#222}ol.json-lines>li:nth-child(even){background-color:#161616}ol.json-lines>li:hover{background-color:#696969}} diff --git a/dist/pretty-print-json.d.ts b/dist/pretty-print-json.d.ts index 8e0ad51..e2f2a69 100644 --- a/dist/pretty-print-json.d.ts +++ b/dist/pretty-print-json.d.ts @@ -1,4 +1,4 @@ -//! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License +//! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License export type FormatSettings = { indent: number; diff --git a/dist/pretty-print-json.dev.js b/dist/pretty-print-json.dev.js index c6c3e31..922c5a6 100644 --- a/dist/pretty-print-json.dev.js +++ b/dist/pretty-print-json.dev.js @@ -1,7 +1,7 @@ -//! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License +//! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License const prettyPrintJson = { - version: '3.0.0', + version: '3.0.1', toHtml(data, options) { const defaults = { indent: 3, diff --git a/dist/pretty-print-json.js b/dist/pretty-print-json.js index 9f36229..bfa2410 100644 --- a/dist/pretty-print-json.js +++ b/dist/pretty-print-json.js @@ -1,7 +1,7 @@ -//! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License +//! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License const prettyPrintJson = { - version: '3.0.0', + version: '3.0.1', toHtml(data, options) { const defaults = { indent: 3, diff --git a/dist/pretty-print-json.min.js b/dist/pretty-print-json.min.js index 0d9cb29..b8219a0 100644 --- a/dist/pretty-print-json.min.js +++ b/dist/pretty-print-json.min.js @@ -1,2 +1,2 @@ -//! pretty-print-json v3.0.0 ~~ https://pretty-print-json.js.org ~~ MIT License -const prettyPrintJson={version:"3.0.0",toHtml(data,options){const defaults={indent:3,lineNumbers:false,linkUrls:true,linksNewTab:true,quoteKeys:false,trailingCommas:true};const settings={...defaults,...options};const invalidHtml=/[<>&]|\\"/g;const toHtml=char=>char==="<"?"<":char===">"?">":char==="&"?"&":"\"";const spanTag=(type,display)=>display?""+display+"":"";const buildValueHtml=value=>{const strType=/^"/.test(value)&&"string";const boolType=["true","false"].includes(value)&&"boolean";const nullType=value==="null"&&"null";const type=boolType||nullType||strType||"number";const urlPattern=/https?:\/\/[^\s"]+/g;const target=settings.linksNewTab?" target=_blank":"";const makeLink=link=>`${link}`;const display=strType&&settings.linkUrls?value.replace(urlPattern,makeLink):value;return spanTag(type,display)};const replacer=(match,...parts)=>{const part={indent:parts[0],key:parts[1],value:parts[2],end:parts[3]};const findName=settings.quoteKeys?/(.*)(): /:/"([\w$]+)": |(.*): /;const indentHtml=part.indent||"";const keyName=part.key&&part.key.replace(findName,"$1$2");const keyHtml=part.key?spanTag("key",keyName)+spanTag("mark",": "):"";const valueHtml=part.value?buildValueHtml(part.value):"";const noComma=!part.end||["]","}"].includes(match.at(-1));const addComma=settings.trailingCommas&&match.at(0)===" "&&noComma;const endHtml=spanTag("mark",addComma?(part.end??"")+",":part.end);return indentHtml+keyHtml+valueHtml+endHtml};const jsonLine=/^( *)("[^"]+": )?("[^"]*"|[\w.+-]*)?([{}[\],]*)?$/gm;const json=JSON.stringify(data,null,settings.indent)||"undefined";const html=json.replace(invalidHtml,toHtml).replace(jsonLine,replacer);const makeLine=line=>`
  • ${line}
  • `;const addLineNumbers=html=>["
      ",...html.split("\n").map(makeLine),"
    "].join("\n");return settings.lineNumbers?addLineNumbers(html):html}};globalThis.prettyPrintJson=prettyPrintJson; +//! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License +const prettyPrintJson={version:"3.0.1",toHtml(data,options){const defaults={indent:3,lineNumbers:false,linkUrls:true,linksNewTab:true,quoteKeys:false,trailingCommas:true};const settings={...defaults,...options};const invalidHtml=/[<>&]|\\"/g;const toHtml=char=>char==="<"?"<":char===">"?">":char==="&"?"&":"\"";const spanTag=(type,display)=>display?""+display+"":"";const buildValueHtml=value=>{const strType=/^"/.test(value)&&"string";const boolType=["true","false"].includes(value)&&"boolean";const nullType=value==="null"&&"null";const type=boolType||nullType||strType||"number";const urlPattern=/https?:\/\/[^\s"]+/g;const target=settings.linksNewTab?" target=_blank":"";const makeLink=link=>`${link}`;const display=strType&&settings.linkUrls?value.replace(urlPattern,makeLink):value;return spanTag(type,display)};const replacer=(match,...parts)=>{const part={indent:parts[0],key:parts[1],value:parts[2],end:parts[3]};const findName=settings.quoteKeys?/(.*)(): /:/"([\w$]+)": |(.*): /;const indentHtml=part.indent||"";const keyName=part.key&&part.key.replace(findName,"$1$2");const keyHtml=part.key?spanTag("key",keyName)+spanTag("mark",": "):"";const valueHtml=part.value?buildValueHtml(part.value):"";const noComma=!part.end||["]","}"].includes(match.at(-1));const addComma=settings.trailingCommas&&match.at(0)===" "&&noComma;const endHtml=spanTag("mark",addComma?(part.end??"")+",":part.end);return indentHtml+keyHtml+valueHtml+endHtml};const jsonLine=/^( *)("[^"]+": )?("[^"]*"|[\w.+-]*)?([{}[\],]*)?$/gm;const json=JSON.stringify(data,null,settings.indent)||"undefined";const html=json.replace(invalidHtml,toHtml).replace(jsonLine,replacer);const makeLine=line=>`
  • ${line}
  • `;const addLineNumbers=html=>["
      ",...html.split("\n").map(makeLine),"
    "].join("\n");return settings.lineNumbers?addLineNumbers(html):html}};globalThis.prettyPrintJson=prettyPrintJson; diff --git a/docs/dynamic/index.html b/docs/dynamic/index.html index 0a87c31..b29a1ea 100644 --- a/docs/dynamic/index.html +++ b/docs/dynamic/index.html @@ -14,7 +14,7 @@ - + - + - + + - +