Compare commits
114 Commits
docs
...
1ad8f51a05
| Author | SHA1 | Date | |
|---|---|---|---|
| 1ad8f51a05 | |||
| d7ab3e7056 | |||
| fe6a71ff25 | |||
| b2a77b5d93 | |||
| e8b9ad6bdf | |||
| ce4f22ba16 | |||
|
|
06951f92aa | ||
| b9277ec2da | |||
| a1cfb6d7dd | |||
| 429c1678d3 | |||
| ef4036f3c7 | |||
| 0f1b730fde | |||
| 4c5fff5390 | |||
| 34c8f2a185 | |||
| 1480f5b617 | |||
| 03191a219f | |||
|
|
61d6e70fd3 | ||
|
|
e2fc5cdbfe | ||
|
|
5036ffe451 | ||
|
|
0328663185 | ||
|
|
b6b6d20672 | ||
|
|
17224544bb | ||
|
|
457b7a398b | ||
| 9d7f4f7149 | |||
| a1544d6fd5 | |||
| 4838d965da | |||
| a873a9e244 | |||
| 184c5241f3 | |||
| f8b7b69a91 | |||
|
|
643aa6d395 | ||
| 6909def4e2 | |||
| 9cfc02ebc3 | |||
|
|
0ebe3f33df | ||
|
|
0354e1b59d | ||
|
|
55c4593e2f | ||
|
|
005a388e22 | ||
|
|
d638383af3 | ||
|
|
50d92ca663 | ||
| 37d3d926c1 | |||
|
|
ef562a7df4 | ||
| 7a92935dc6 | |||
| 6e49516962 | |||
| b6c325198d | |||
| 532d30aa93 | |||
| aae86d8b4e | |||
| 0b91447b05 | |||
| 4b1fb765b0 | |||
|
|
aa5ce2b038 | ||
| 533f732c53 | |||
| 009274e4ad | |||
| 76f6c30b9d | |||
| 9ec22add55 | |||
| 272227e4e3 | |||
| ec8f8c1e2d | |||
| 1c14092068 | |||
| 00bdafc621 | |||
| 78422899e4 | |||
| c47f7de5b8 | |||
| 37aae9e03c | |||
| fa134d31d6 | |||
| d035dcd531 | |||
| c50bf452ca | |||
| dace5ce2b0 | |||
| ef145169aa | |||
| 7b746155f7 | |||
|
|
b289f4054d | ||
|
|
bdee1fdf84 | ||
| 541e4e96cf | |||
| 401eb3ab39 | |||
| d3eba96a29 | |||
| 81c02db00d | |||
|
|
9cb2ccbb4e | ||
| 8a10b8fe0f | |||
| 8fce8bdca4 | |||
| 1ab934cee9 | |||
| 6659ac6fad | |||
| 3a5ab1c614 | |||
| 1e07e1f833 | |||
| e1e91a3683 | |||
| c30d95a3e0 | |||
| 97f6fa843c | |||
| f43fc47539 | |||
|
|
c330de52fa | ||
| 67d35626cb | |||
| cc4c2189dc | |||
| d16905c0a3 | |||
| 4e611db349 | |||
| 7e9fc0ac3f | |||
| ff072d1a93 | |||
| a9c81c878e | |||
| 3660d13d7d | |||
| 281f53c049 | |||
| 71ca541f78 | |||
| 91f4f4afac | |||
| fc5639d7bd | |||
|
|
6668c11846 | ||
| 17f3351cea | |||
| dd3dd4ddb2 | |||
| 60d1494d45 | |||
| 1ef5350b3f | |||
| 3521e5787b | |||
| 8d9bcdad7e | |||
| ac086db1ed | |||
| 6dff0181d2 | |||
| ad24d3a140 | |||
| 4b0f39d747 | |||
| 096cc1da94 | |||
| 2d3200ad97 | |||
| 4e82e2f6f7 | |||
| 339ed53c2e | |||
| fc7c162e2f | |||
|
|
24f1549730 | ||
| 5584a46ca2 | |||
| 4471441d6f |
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- OS: [e.g. iOS]
|
||||||
|
- Browser [e.g. chrome, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
**Smartphone (please complete the following information):**
|
||||||
|
- Device: [e.g. iPhone6]
|
||||||
|
- OS: [e.g. iOS8.1]
|
||||||
|
- Browser [e.g. stock browser, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
3
.github/workflows/build-release.yml
vendored
@@ -28,6 +28,7 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
# 准备构建配置
|
# 准备构建配置
|
||||||
prepare:
|
prepare:
|
||||||
|
permissions: {}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||||
@@ -84,6 +85,8 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
needs: prepare
|
needs: prepare
|
||||||
if: ${{ fromJson(needs.prepare.outputs.matrix).include[0] != null }}
|
if: ${{ fromJson(needs.prepare.outputs.matrix).include[0] != null }}
|
||||||
strategy:
|
strategy:
|
||||||
|
|||||||
109
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# For most projects, this workflow file will not need changing; you simply need
|
||||||
|
# to commit it to your repository.
|
||||||
|
#
|
||||||
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
|
# or to provide custom queries or build logic.
|
||||||
|
#
|
||||||
|
# ******** NOTE ********
|
||||||
|
# We have attempted to detect the languages in your repository. Please check
|
||||||
|
# the `language` matrix defined below to confirm you have the correct set of
|
||||||
|
# supported CodeQL languages.
|
||||||
|
#
|
||||||
|
name: "CodeQL Advanced"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "master" ]
|
||||||
|
schedule:
|
||||||
|
- cron: '29 8 * * 3'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze (${{ matrix.language }})
|
||||||
|
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
||||||
|
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
||||||
|
# - https://gh.io/supported-runners-and-hardware-resources
|
||||||
|
# - https://gh.io/using-larger-runners (GitHub.com only)
|
||||||
|
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
|
||||||
|
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
|
||||||
|
permissions:
|
||||||
|
# required for all workflows
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
# required to fetch internal or private CodeQL packs
|
||||||
|
packages: read
|
||||||
|
|
||||||
|
# only required for workflows in private repositories
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- language: actions
|
||||||
|
build-mode: none
|
||||||
|
- language: c-cpp
|
||||||
|
build-mode: none
|
||||||
|
- language: go
|
||||||
|
build-mode: autobuild
|
||||||
|
- language: javascript-typescript
|
||||||
|
build-mode: none
|
||||||
|
- language: python
|
||||||
|
build-mode: none
|
||||||
|
- language: rust
|
||||||
|
build-mode: none
|
||||||
|
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
|
||||||
|
# Use `c-cpp` to analyze code written in C, C++ or both
|
||||||
|
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
|
||||||
|
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
|
||||||
|
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
|
||||||
|
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
|
||||||
|
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
|
||||||
|
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Add any setup steps before running the `github/codeql-action/init` action.
|
||||||
|
# This includes steps like installing compilers or runtimes (`actions/setup-node`
|
||||||
|
# or others). This is typically only required for manual builds.
|
||||||
|
# - name: Setup runtime (example)
|
||||||
|
# uses: actions/setup-example@v1
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v4
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
build-mode: ${{ matrix.build-mode }}
|
||||||
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
# By default, queries listed here will override any specified in a config file.
|
||||||
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
|
|
||||||
|
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||||
|
# queries: security-extended,security-and-quality
|
||||||
|
|
||||||
|
# If the analyze step fails for one of the languages you are analyzing with
|
||||||
|
# "We were unable to automatically build your code", modify the matrix above
|
||||||
|
# to set the build mode to "manual" for that language. Then modify this step
|
||||||
|
# to build your code.
|
||||||
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
|
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||||
|
- name: Run manual build steps
|
||||||
|
if: matrix.build-mode == 'manual'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo 'If you are using a "manual" build mode for one or more of the' \
|
||||||
|
'languages you are analyzing, replace this with the commands to build' \
|
||||||
|
'your code, for example:'
|
||||||
|
echo ' make bootstrap'
|
||||||
|
echo ' make release'
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v4
|
||||||
|
with:
|
||||||
|
category: "/language:${{matrix.language}}"
|
||||||
@@ -61,5 +61,3 @@ export class ServiceOptions {
|
|||||||
return new ServiceOptions($$parsedSource as Partial<ServiceOptions>);
|
return new ServiceOptions($$parsedSource as Partial<ServiceOptions>);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Window = any;
|
|
||||||
|
|||||||
@@ -18,6 +18,14 @@ import * as application$0 from "../../application/models.js";
|
|||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as $models from "./models.js";
|
import * as $models from "./models.js";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GetBadge returns the badge label on the application icon.
|
||||||
|
*/
|
||||||
|
export function GetBadge(): Promise<string | null> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(1150236961) as any;
|
||||||
|
return $resultPromise;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HideAppIcon hides the app icon in the dock/taskbar.
|
* HideAppIcon hides the app icon in the dock/taskbar.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
export * from "./models.js";
|
||||||
17
frontend/bindings/voidraft/internal/common/helper/models.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Unused imports
|
||||||
|
import {Create as $Create} from "@wailsio/runtime";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CancelFunc 取消订阅函数
|
||||||
|
* 调用此函数可以取消对配置的监听
|
||||||
|
*/
|
||||||
|
export type CancelFunc = any;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ObserverCallback 观察者回调函数
|
||||||
|
*/
|
||||||
|
export type ObserverCallback = any;
|
||||||
4
frontend/bindings/voidraft/internal/models/ent/index.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
export * from "./models.js";
|
||||||
370
frontend/bindings/voidraft/internal/models/ent/models.ts
Normal file
@@ -0,0 +1,370 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Unused imports
|
||||||
|
import {Create as $Create} from "@wailsio/runtime";
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Unused imports
|
||||||
|
import * as theme$0 from "./theme/models.js";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Document is the model entity for the Document schema.
|
||||||
|
*/
|
||||||
|
export class Document {
|
||||||
|
/**
|
||||||
|
* ID of the ent.
|
||||||
|
*/
|
||||||
|
"id"?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UUID for cross-device sync (UUIDv7)
|
||||||
|
*/
|
||||||
|
"uuid": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creation time
|
||||||
|
*/
|
||||||
|
"created_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update time
|
||||||
|
*/
|
||||||
|
"updated_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* deleted at
|
||||||
|
*/
|
||||||
|
"deleted_at"?: string | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* document title
|
||||||
|
*/
|
||||||
|
"title": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* document content
|
||||||
|
*/
|
||||||
|
"content": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* document locked status
|
||||||
|
*/
|
||||||
|
"locked": boolean;
|
||||||
|
|
||||||
|
/** Creates a new Document instance. */
|
||||||
|
constructor($$source: Partial<Document> = {}) {
|
||||||
|
if (!("uuid" in $$source)) {
|
||||||
|
this["uuid"] = "";
|
||||||
|
}
|
||||||
|
if (!("created_at" in $$source)) {
|
||||||
|
this["created_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("updated_at" in $$source)) {
|
||||||
|
this["updated_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("title" in $$source)) {
|
||||||
|
this["title"] = "";
|
||||||
|
}
|
||||||
|
if (!("content" in $$source)) {
|
||||||
|
this["content"] = "";
|
||||||
|
}
|
||||||
|
if (!("locked" in $$source)) {
|
||||||
|
this["locked"] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.assign(this, $$source);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Document instance from a string or object.
|
||||||
|
*/
|
||||||
|
static createFrom($$source: any = {}): Document {
|
||||||
|
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
|
||||||
|
return new Document($$parsedSource as Partial<Document>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extension is the model entity for the Extension schema.
|
||||||
|
*/
|
||||||
|
export class Extension {
|
||||||
|
/**
|
||||||
|
* ID of the ent.
|
||||||
|
*/
|
||||||
|
"id"?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UUID for cross-device sync (UUIDv7)
|
||||||
|
*/
|
||||||
|
"uuid": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creation time
|
||||||
|
*/
|
||||||
|
"created_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update time
|
||||||
|
*/
|
||||||
|
"updated_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* deleted at
|
||||||
|
*/
|
||||||
|
"deleted_at"?: string | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extension name
|
||||||
|
*/
|
||||||
|
"name": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extension enabled or not
|
||||||
|
*/
|
||||||
|
"enabled": boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extension config
|
||||||
|
*/
|
||||||
|
"config": { [_: string]: any };
|
||||||
|
|
||||||
|
/** Creates a new Extension instance. */
|
||||||
|
constructor($$source: Partial<Extension> = {}) {
|
||||||
|
if (!("uuid" in $$source)) {
|
||||||
|
this["uuid"] = "";
|
||||||
|
}
|
||||||
|
if (!("created_at" in $$source)) {
|
||||||
|
this["created_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("updated_at" in $$source)) {
|
||||||
|
this["updated_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("name" in $$source)) {
|
||||||
|
this["name"] = "";
|
||||||
|
}
|
||||||
|
if (!("enabled" in $$source)) {
|
||||||
|
this["enabled"] = false;
|
||||||
|
}
|
||||||
|
if (!("config" in $$source)) {
|
||||||
|
this["config"] = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.assign(this, $$source);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Extension instance from a string or object.
|
||||||
|
*/
|
||||||
|
static createFrom($$source: any = {}): Extension {
|
||||||
|
const $$createField7_0 = $$createType0;
|
||||||
|
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
|
||||||
|
if ("config" in $$parsedSource) {
|
||||||
|
$$parsedSource["config"] = $$createField7_0($$parsedSource["config"]);
|
||||||
|
}
|
||||||
|
return new Extension($$parsedSource as Partial<Extension>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* KeyBinding is the model entity for the KeyBinding schema.
|
||||||
|
*/
|
||||||
|
export class KeyBinding {
|
||||||
|
/**
|
||||||
|
* ID of the ent.
|
||||||
|
*/
|
||||||
|
"id"?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UUID for cross-device sync (UUIDv7)
|
||||||
|
*/
|
||||||
|
"uuid": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creation time
|
||||||
|
*/
|
||||||
|
"created_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update time
|
||||||
|
*/
|
||||||
|
"updated_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* deleted at
|
||||||
|
*/
|
||||||
|
"deleted_at"?: string | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* command identifier
|
||||||
|
*/
|
||||||
|
"name": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* keybinding type: standard or emacs
|
||||||
|
*/
|
||||||
|
"type": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* universal keybinding (cross-platform)
|
||||||
|
*/
|
||||||
|
"key"?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* macOS specific keybinding
|
||||||
|
*/
|
||||||
|
"macos"?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Windows specific keybinding
|
||||||
|
*/
|
||||||
|
"windows"?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Linux specific keybinding
|
||||||
|
*/
|
||||||
|
"linux"?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extension name (functional category)
|
||||||
|
*/
|
||||||
|
"extension": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* whether this keybinding is enabled
|
||||||
|
*/
|
||||||
|
"enabled": boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prevent browser default behavior
|
||||||
|
*/
|
||||||
|
"preventDefault": boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* keybinding scope (default: editor)
|
||||||
|
*/
|
||||||
|
"scope"?: string;
|
||||||
|
|
||||||
|
/** Creates a new KeyBinding instance. */
|
||||||
|
constructor($$source: Partial<KeyBinding> = {}) {
|
||||||
|
if (!("uuid" in $$source)) {
|
||||||
|
this["uuid"] = "";
|
||||||
|
}
|
||||||
|
if (!("created_at" in $$source)) {
|
||||||
|
this["created_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("updated_at" in $$source)) {
|
||||||
|
this["updated_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("name" in $$source)) {
|
||||||
|
this["name"] = "";
|
||||||
|
}
|
||||||
|
if (!("type" in $$source)) {
|
||||||
|
this["type"] = "";
|
||||||
|
}
|
||||||
|
if (!("extension" in $$source)) {
|
||||||
|
this["extension"] = "";
|
||||||
|
}
|
||||||
|
if (!("enabled" in $$source)) {
|
||||||
|
this["enabled"] = false;
|
||||||
|
}
|
||||||
|
if (!("preventDefault" in $$source)) {
|
||||||
|
this["preventDefault"] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.assign(this, $$source);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new KeyBinding instance from a string or object.
|
||||||
|
*/
|
||||||
|
static createFrom($$source: any = {}): KeyBinding {
|
||||||
|
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
|
||||||
|
return new KeyBinding($$parsedSource as Partial<KeyBinding>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Theme is the model entity for the Theme schema.
|
||||||
|
*/
|
||||||
|
export class Theme {
|
||||||
|
/**
|
||||||
|
* ID of the ent.
|
||||||
|
*/
|
||||||
|
"id"?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UUID for cross-device sync (UUIDv7)
|
||||||
|
*/
|
||||||
|
"uuid": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creation time
|
||||||
|
*/
|
||||||
|
"created_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* update time
|
||||||
|
*/
|
||||||
|
"updated_at": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* deleted at
|
||||||
|
*/
|
||||||
|
"deleted_at"?: string | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* theme name
|
||||||
|
*/
|
||||||
|
"name": string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* theme type
|
||||||
|
*/
|
||||||
|
"type": theme$0.Type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* theme colors
|
||||||
|
*/
|
||||||
|
"colors": { [_: string]: any };
|
||||||
|
|
||||||
|
/** Creates a new Theme instance. */
|
||||||
|
constructor($$source: Partial<Theme> = {}) {
|
||||||
|
if (!("uuid" in $$source)) {
|
||||||
|
this["uuid"] = "";
|
||||||
|
}
|
||||||
|
if (!("created_at" in $$source)) {
|
||||||
|
this["created_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("updated_at" in $$source)) {
|
||||||
|
this["updated_at"] = "";
|
||||||
|
}
|
||||||
|
if (!("name" in $$source)) {
|
||||||
|
this["name"] = "";
|
||||||
|
}
|
||||||
|
if (!("type" in $$source)) {
|
||||||
|
this["type"] = ("" as theme$0.Type);
|
||||||
|
}
|
||||||
|
if (!("colors" in $$source)) {
|
||||||
|
this["colors"] = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.assign(this, $$source);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Theme instance from a string or object.
|
||||||
|
*/
|
||||||
|
static createFrom($$source: any = {}): Theme {
|
||||||
|
const $$createField7_0 = $$createType0;
|
||||||
|
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
|
||||||
|
if ("colors" in $$parsedSource) {
|
||||||
|
$$parsedSource["colors"] = $$createField7_0($$parsedSource["colors"]);
|
||||||
|
}
|
||||||
|
return new Theme($$parsedSource as Partial<Theme>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Private type creation functions
|
||||||
|
const $$createType0 = $Create.Map($Create.Any, $Create.Any);
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
export * from "./models.js";
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Unused imports
|
||||||
|
import {Create as $Create} from "@wailsio/runtime";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type defines the type for the "type" enum field.
|
||||||
|
*/
|
||||||
|
export enum Type {
|
||||||
|
/**
|
||||||
|
* The Go zero value for the underlying type of the enum.
|
||||||
|
*/
|
||||||
|
$zero = "",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type values.
|
||||||
|
*/
|
||||||
|
TypeDark = "dark",
|
||||||
|
TypeLight = "light",
|
||||||
|
};
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
|
||||||
// This file is automatically generated. DO NOT EDIT
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BackupService 提供基于Git的备份功能
|
|
||||||
* @module
|
|
||||||
*/
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore: Unused imports
|
|
||||||
import {Call as $Call, Create as $Create} from "@wailsio/runtime";
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore: Unused imports
|
|
||||||
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore: Unused imports
|
|
||||||
import * as models$0 from "../models/models.js";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HandleConfigChange 处理备份配置变更
|
|
||||||
*/
|
|
||||||
export function HandleConfigChange(config: models$0.GitBackupConfig | null): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(395287784, config) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize 初始化备份服务
|
|
||||||
*/
|
|
||||||
export function Initialize(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(1052437974) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PushToRemote 推送本地更改到远程仓库
|
|
||||||
*/
|
|
||||||
export function PushToRemote(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(262644139) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reinitialize 重新初始化备份服务,用于响应配置变更
|
|
||||||
*/
|
|
||||||
export function Reinitialize(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(301562543) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ServiceShutdown 服务关闭时的清理工作
|
|
||||||
*/
|
|
||||||
export function ServiceShutdown(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(422131801) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(2900331732, options) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* StartAutoBackup 启动自动备份定时器
|
|
||||||
*/
|
|
||||||
export function StartAutoBackup(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(3035755449) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* StopAutoBackup 停止自动备份
|
|
||||||
*/
|
|
||||||
export function StopAutoBackup(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(2641894021) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
@@ -15,11 +15,10 @@ import {Call as $Call, Create as $Create} from "@wailsio/runtime";
|
|||||||
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as models$0 from "../models/models.js";
|
import * as helper$0 from "../common/helper/models.js";
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as $models from "./models.js";
|
import * as models$0 from "../models/models.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get 获取配置项
|
* Get 获取配置项
|
||||||
@@ -50,7 +49,7 @@ export function MigrateConfig(): Promise<void> & { cancel(): void } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ResetConfig 强制重置所有配置为默认值
|
* ResetConfig 重置所有配置为默认值
|
||||||
*/
|
*/
|
||||||
export function ResetConfig(): Promise<void> & { cancel(): void } {
|
export function ResetConfig(): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3593047389) as any;
|
let $resultPromise = $Call.ByID(3593047389) as any;
|
||||||
@@ -66,7 +65,7 @@ export function ServiceShutdown(): Promise<void> & { cancel(): void } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ServiceStartup initializes the service when the application starts
|
* ServiceStartup 服务启动时初始化
|
||||||
*/
|
*/
|
||||||
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3311949428, options) as any;
|
let $resultPromise = $Call.ByID(3311949428, options) as any;
|
||||||
@@ -84,7 +83,7 @@ export function Set(key: string, value: any): Promise<void> & { cancel(): void }
|
|||||||
/**
|
/**
|
||||||
* Watch 注册配置变更监听器
|
* Watch 注册配置变更监听器
|
||||||
*/
|
*/
|
||||||
export function Watch(path: string, callback: $models.ObserverCallback): Promise<$models.CancelFunc> & { cancel(): void } {
|
export function Watch(path: string, callback: helper$0.ObserverCallback): Promise<helper$0.CancelFunc> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(1143583035, path, callback) as any;
|
let $resultPromise = $Call.ByID(1143583035, path, callback) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
@@ -92,7 +91,7 @@ export function Watch(path: string, callback: $models.ObserverCallback): Promise
|
|||||||
/**
|
/**
|
||||||
* WatchWithContext 使用 Context 注册监听器
|
* WatchWithContext 使用 Context 注册监听器
|
||||||
*/
|
*/
|
||||||
export function WatchWithContext(path: string, callback: $models.ObserverCallback): Promise<void> & { cancel(): void } {
|
export function WatchWithContext(path: string, callback: helper$0.ObserverCallback): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(1454973098, path, callback) as any;
|
let $resultPromise = $Call.ByID(1454973098, path, callback) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// This file is automatically generated. DO NOT EDIT
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DatabaseService provides shared database functionality
|
* DatabaseService 数据库服务
|
||||||
* @module
|
* @module
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -15,15 +15,7 @@ import {Call as $Call, Create as $Create} from "@wailsio/runtime";
|
|||||||
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RegisterModel 注册模型与表的映射关系
|
* ServiceShutdown 服务关闭
|
||||||
*/
|
|
||||||
export function RegisterModel(tableName: string, model: any): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(175397515, tableName, model) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ServiceShutdown shuts down the service when the application closes
|
|
||||||
*/
|
*/
|
||||||
export function ServiceShutdown(): Promise<void> & { cancel(): void } {
|
export function ServiceShutdown(): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3907893632) as any;
|
let $resultPromise = $Call.ByID(3907893632) as any;
|
||||||
@@ -31,7 +23,7 @@ export function ServiceShutdown(): Promise<void> & { cancel(): void } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ServiceStartup initializes the service when the application starts
|
* ServiceStartup 服务启动
|
||||||
*/
|
*/
|
||||||
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(2067840771, options) as any;
|
let $resultPromise = $Call.ByID(2067840771, options) as any;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// This file is automatically generated. DO NOT EDIT
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DocumentService provides document management functionality
|
* DocumentService 文档服务
|
||||||
* @module
|
* @module
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -15,12 +15,12 @@ import {Call as $Call, Create as $Create} from "@wailsio/runtime";
|
|||||||
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as models$0 from "../models/models.js";
|
import * as ent$0 from "../models/ent/models.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CreateDocument creates a new document and returns the created document with ID
|
* CreateDocument 创建文档
|
||||||
*/
|
*/
|
||||||
export function CreateDocument(title: string): Promise<models$0.Document | null> & { cancel(): void } {
|
export function CreateDocument(title: string): Promise<ent$0.Document | null> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3360680842, title) as any;
|
let $resultPromise = $Call.ByID(3360680842, title) as any;
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
return $$createType1($result);
|
return $$createType1($result);
|
||||||
@@ -30,7 +30,7 @@ export function CreateDocument(title: string): Promise<models$0.Document | null>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DeleteDocument marks a document as deleted (default document with ID=1 cannot be deleted)
|
* DeleteDocument 删除文档
|
||||||
*/
|
*/
|
||||||
export function DeleteDocument(id: number): Promise<void> & { cancel(): void } {
|
export function DeleteDocument(id: number): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(412287269, id) as any;
|
let $resultPromise = $Call.ByID(412287269, id) as any;
|
||||||
@@ -38,9 +38,9 @@ export function DeleteDocument(id: number): Promise<void> & { cancel(): void } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GetDocumentByID gets a document by ID
|
* GetDocumentByID 根据ID获取文档
|
||||||
*/
|
*/
|
||||||
export function GetDocumentByID(id: number): Promise<models$0.Document | null> & { cancel(): void } {
|
export function GetDocumentByID(id: number): Promise<ent$0.Document | null> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3468193232, id) as any;
|
let $resultPromise = $Call.ByID(3468193232, id) as any;
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
return $$createType1($result);
|
return $$createType1($result);
|
||||||
@@ -50,9 +50,9 @@ export function GetDocumentByID(id: number): Promise<models$0.Document | null> &
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ListAllDocumentsMeta lists all active (non-deleted) document metadata
|
* ListAllDocumentsMeta 列出所有文档
|
||||||
*/
|
*/
|
||||||
export function ListAllDocumentsMeta(): Promise<(models$0.Document | null)[]> & { cancel(): void } {
|
export function ListAllDocumentsMeta(): Promise<(ent$0.Document | null)[]> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3073950297) as any;
|
let $resultPromise = $Call.ByID(3073950297) as any;
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
return $$createType2($result);
|
return $$createType2($result);
|
||||||
@@ -62,19 +62,7 @@ export function ListAllDocumentsMeta(): Promise<(models$0.Document | null)[]> &
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ListDeletedDocumentsMeta lists all deleted document metadata
|
* LockDocument 锁定文档
|
||||||
*/
|
|
||||||
export function ListDeletedDocumentsMeta(): Promise<(models$0.Document | null)[]> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(490143787) as any;
|
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
|
||||||
return $$createType2($result);
|
|
||||||
}) as any;
|
|
||||||
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
|
||||||
return $typingPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* LockDocument 锁定文档,防止删除
|
|
||||||
*/
|
*/
|
||||||
export function LockDocument(id: number): Promise<void> & { cancel(): void } {
|
export function LockDocument(id: number): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(1889494473, id) as any;
|
let $resultPromise = $Call.ByID(1889494473, id) as any;
|
||||||
@@ -82,15 +70,7 @@ export function LockDocument(id: number): Promise<void> & { cancel(): void } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RestoreDocument restores a deleted document
|
* ServiceStartup 服务启动
|
||||||
*/
|
|
||||||
export function RestoreDocument(id: number): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(784200778, id) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ServiceStartup initializes the service when the application starts
|
|
||||||
*/
|
*/
|
||||||
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(1474135487, options) as any;
|
let $resultPromise = $Call.ByID(1474135487, options) as any;
|
||||||
@@ -106,7 +86,7 @@ export function UnlockDocument(id: number): Promise<void> & { cancel(): void } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdateDocumentContent updates the content of a document
|
* UpdateDocumentContent 更新文档内容
|
||||||
*/
|
*/
|
||||||
export function UpdateDocumentContent(id: number, content: string): Promise<void> & { cancel(): void } {
|
export function UpdateDocumentContent(id: number, content: string): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3251897116, id, content) as any;
|
let $resultPromise = $Call.ByID(3251897116, id, content) as any;
|
||||||
@@ -114,7 +94,7 @@ export function UpdateDocumentContent(id: number, content: string): Promise<void
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdateDocumentTitle updates the title of a document
|
* UpdateDocumentTitle 更新文档标题
|
||||||
*/
|
*/
|
||||||
export function UpdateDocumentTitle(id: number, title: string): Promise<void> & { cancel(): void } {
|
export function UpdateDocumentTitle(id: number, title: string): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(2045530459, id, title) as any;
|
let $resultPromise = $Call.ByID(2045530459, id, title) as any;
|
||||||
@@ -122,6 +102,6 @@ export function UpdateDocumentTitle(id: number, title: string): Promise<void> &
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Private type creation functions
|
// Private type creation functions
|
||||||
const $$createType0 = models$0.Document.createFrom;
|
const $$createType0 = ent$0.Document.createFrom;
|
||||||
const $$createType1 = $Create.Nullable($$createType0);
|
const $$createType1 = $Create.Nullable($$createType0);
|
||||||
const $$createType2 = $Create.Array($$createType1);
|
const $$createType2 = $Create.Array($$createType1);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// This file is automatically generated. DO NOT EDIT
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ExtensionService 扩展管理服务
|
* ExtensionService 扩展服务
|
||||||
* @module
|
* @module
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -16,12 +16,15 @@ import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/applic
|
|||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as models$0 from "../models/models.js";
|
import * as models$0 from "../models/models.js";
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Unused imports
|
||||||
|
import * as ent$0 from "../models/ent/models.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GetAllExtensions 获取所有扩展配置
|
* GetDefaultExtensions 获取默认扩展配置(用于前端绑定生成)
|
||||||
*/
|
*/
|
||||||
export function GetAllExtensions(): Promise<models$0.Extension[]> & { cancel(): void } {
|
export function GetDefaultExtensions(): Promise<models$0.Extension[]> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(3094292124) as any;
|
let $resultPromise = $Call.ByID(4036328166) as any;
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
return $$createType1($result);
|
return $$createType1($result);
|
||||||
}) as any;
|
}) as any;
|
||||||
@@ -30,23 +33,51 @@ export function GetAllExtensions(): Promise<models$0.Extension[]> & { cancel():
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ResetAllExtensionsToDefault 重置所有扩展到默认状态
|
* GetExtensionByID 根据ID获取扩展
|
||||||
*/
|
*/
|
||||||
export function ResetAllExtensionsToDefault(): Promise<void> & { cancel(): void } {
|
export function GetExtensionByID(id: number): Promise<ent$0.Extension | null> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(270611949) as any;
|
let $resultPromise = $Call.ByID(1521424252, id) as any;
|
||||||
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
|
return $$createType3($result);
|
||||||
|
}) as any;
|
||||||
|
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
||||||
|
return $typingPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GetExtensionConfig 获取扩展配置
|
||||||
|
*/
|
||||||
|
export function GetExtensionConfig(id: number): Promise<{ [_: string]: any }> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(1629559882, id) as any;
|
||||||
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
|
return $$createType4($result);
|
||||||
|
}) as any;
|
||||||
|
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
||||||
|
return $typingPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GetExtensions 获取所有扩展
|
||||||
|
*/
|
||||||
|
export function GetExtensions(): Promise<(ent$0.Extension | null)[]> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(3179289021) as any;
|
||||||
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
|
return $$createType5($result);
|
||||||
|
}) as any;
|
||||||
|
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
||||||
|
return $typingPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ResetExtensionConfig 重置单个扩展到默认状态
|
||||||
|
*/
|
||||||
|
export function ResetExtensionConfig(id: number): Promise<void> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(3990780299, id) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ResetExtensionToDefault 重置扩展到默认状态
|
* ServiceStartup 服务启动
|
||||||
*/
|
|
||||||
export function ResetExtensionToDefault(id: models$0.ExtensionID): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(868308101, id) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ServiceStartup 启动时调用
|
|
||||||
*/
|
*/
|
||||||
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(40324057, options) as any;
|
let $resultPromise = $Call.ByID(40324057, options) as any;
|
||||||
@@ -54,21 +85,33 @@ export function ServiceStartup(options: application$0.ServiceOptions): Promise<v
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdateExtensionEnabled 更新扩展启用状态
|
* SyncExtensions 同步扩展配置
|
||||||
*/
|
*/
|
||||||
export function UpdateExtensionEnabled(id: models$0.ExtensionID, enabled: boolean): Promise<void> & { cancel(): void } {
|
export function SyncExtensions(): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(1067300094, id, enabled) as any;
|
let $resultPromise = $Call.ByID(167560004) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdateExtensionState 更新扩展状态
|
* UpdateExtensionConfig 更新扩展配置
|
||||||
*/
|
*/
|
||||||
export function UpdateExtensionState(id: models$0.ExtensionID, enabled: boolean, config: models$0.ExtensionConfig): Promise<void> & { cancel(): void } {
|
export function UpdateExtensionConfig(id: number, config: { [_: string]: any }): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(2917946454, id, enabled, config) as any;
|
let $resultPromise = $Call.ByID(3184142503, id, config) as any;
|
||||||
|
return $resultPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateExtensionEnabled 更新扩展启用状态
|
||||||
|
*/
|
||||||
|
export function UpdateExtensionEnabled(id: number, enabled: boolean): Promise<void> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(1067300094, id, enabled) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Private type creation functions
|
// Private type creation functions
|
||||||
const $$createType0 = models$0.Extension.createFrom;
|
const $$createType0 = models$0.Extension.createFrom;
|
||||||
const $$createType1 = $Create.Array($$createType0);
|
const $$createType1 = $Create.Array($$createType0);
|
||||||
|
const $$createType2 = ent$0.Extension.createFrom;
|
||||||
|
const $$createType3 = $Create.Nullable($$createType2);
|
||||||
|
const $$createType4 = $Create.Map($Create.Any, $Create.Any);
|
||||||
|
const $$createType5 = $Create.Array($$createType3);
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/applic
|
|||||||
import * as models$0 from "../models/models.js";
|
import * as models$0 from "../models/models.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GetCurrentHotkey 获取当前热键
|
* GetSupportedKeys 返回系统支持的快捷键列表
|
||||||
*/
|
*/
|
||||||
export function GetCurrentHotkey(): Promise<models$0.HotkeyCombo | null> & { cancel(): void } {
|
export function GetSupportedKeys(): Promise<string[]> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(2572811187) as any;
|
let $resultPromise = $Call.ByID(1511528650) as any;
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
return $$createType1($result);
|
return $$createType0($result);
|
||||||
}) as any;
|
}) as any;
|
||||||
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
||||||
return $typingPromise;
|
return $typingPromise;
|
||||||
@@ -86,5 +86,4 @@ export function UpdateHotkey(enable: boolean, combo: models$0.HotkeyCombo | null
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Private type creation functions
|
// Private type creation functions
|
||||||
const $$createType0 = models$0.HotkeyCombo.createFrom;
|
const $$createType0 = $Create.Array($Create.Any);
|
||||||
const $$createType1 = $Create.Nullable($$createType0);
|
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
|
||||||
// This file is automatically generated. DO NOT EDIT
|
|
||||||
|
|
||||||
import * as BackupService from "./backupservice.js";
|
|
||||||
import * as ConfigService from "./configservice.js";
|
|
||||||
import * as DatabaseService from "./databaseservice.js";
|
|
||||||
import * as DialogService from "./dialogservice.js";
|
|
||||||
import * as DocumentService from "./documentservice.js";
|
|
||||||
import * as ExtensionService from "./extensionservice.js";
|
|
||||||
import * as HotkeyService from "./hotkeyservice.js";
|
|
||||||
import * as HttpClientService from "./httpclientservice.js";
|
|
||||||
import * as KeyBindingService from "./keybindingservice.js";
|
|
||||||
import * as MigrationService from "./migrationservice.js";
|
|
||||||
import * as SelfUpdateService from "./selfupdateservice.js";
|
|
||||||
import * as StartupService from "./startupservice.js";
|
|
||||||
import * as SystemService from "./systemservice.js";
|
|
||||||
import * as TestService from "./testservice.js";
|
|
||||||
import * as ThemeService from "./themeservice.js";
|
|
||||||
import * as TranslationService from "./translationservice.js";
|
|
||||||
import * as TrayService from "./trayservice.js";
|
|
||||||
import * as WindowService from "./windowservice.js";
|
|
||||||
export {
|
|
||||||
BackupService,
|
|
||||||
ConfigService,
|
|
||||||
DatabaseService,
|
|
||||||
DialogService,
|
|
||||||
DocumentService,
|
|
||||||
ExtensionService,
|
|
||||||
HotkeyService,
|
|
||||||
HttpClientService,
|
|
||||||
KeyBindingService,
|
|
||||||
MigrationService,
|
|
||||||
SelfUpdateService,
|
|
||||||
StartupService,
|
|
||||||
SystemService,
|
|
||||||
TestService,
|
|
||||||
ThemeService,
|
|
||||||
TranslationService,
|
|
||||||
TrayService,
|
|
||||||
WindowService
|
|
||||||
};
|
|
||||||
|
|
||||||
export * from "./models.js";
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
// This file is automatically generated. DO NOT EDIT
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* KeyBindingService 快捷键管理服务
|
* KeyBindingService 快捷键服务
|
||||||
* @module
|
* @module
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -16,12 +16,15 @@ import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/applic
|
|||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as models$0 from "../models/models.js";
|
import * as models$0 from "../models/models.js";
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Unused imports
|
||||||
|
import * as ent$0 from "../models/ent/models.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GetAllKeyBindings 获取所有快捷键配置
|
* GetDefaultKeyBindings 获取默认快捷键配置
|
||||||
*/
|
*/
|
||||||
export function GetAllKeyBindings(): Promise<models$0.KeyBinding[]> & { cancel(): void } {
|
export function GetDefaultKeyBindings(): Promise<models$0.KeyBinding[]> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(1633502882) as any;
|
let $resultPromise = $Call.ByID(3843471588) as any;
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
return $$createType1($result);
|
return $$createType1($result);
|
||||||
}) as any;
|
}) as any;
|
||||||
@@ -30,13 +33,80 @@ export function GetAllKeyBindings(): Promise<models$0.KeyBinding[]> & { cancel()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ServiceStartup 启动时调用
|
* GetKeyBindingByID 根据ID获取快捷键
|
||||||
|
*/
|
||||||
|
export function GetKeyBindingByID(id: number): Promise<ent$0.KeyBinding | null> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(1578192526, id) as any;
|
||||||
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
|
return $$createType3($result);
|
||||||
|
}) as any;
|
||||||
|
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
||||||
|
return $typingPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GetKeyBindings 根据类型获取快捷键
|
||||||
|
*/
|
||||||
|
export function GetKeyBindings(kbType: models$0.KeyBindingType): Promise<(ent$0.KeyBinding | null)[]> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(4253885163, kbType) as any;
|
||||||
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
|
return $$createType4($result);
|
||||||
|
}) as any;
|
||||||
|
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
||||||
|
return $typingPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ResetKeyBindings 重置所有快捷键到默认值
|
||||||
|
*/
|
||||||
|
export function ResetKeyBindings(): Promise<void> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(4251626010) as any;
|
||||||
|
return $resultPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ServiceStartup 服务启动
|
||||||
*/
|
*/
|
||||||
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(2057121990, options) as any;
|
let $resultPromise = $Call.ByID(2057121990, options) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SyncKeyBindings 同步快捷键配置
|
||||||
|
*/
|
||||||
|
export function SyncKeyBindings(): Promise<void> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(1522202638) as any;
|
||||||
|
return $resultPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateKeyBindingEnabled 更新快捷键启用状态
|
||||||
|
*/
|
||||||
|
export function UpdateKeyBindingEnabled(id: number, enabled: boolean): Promise<void> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(843626124, id, enabled) as any;
|
||||||
|
return $resultPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateKeyBindingKeys 更新快捷键绑定
|
||||||
|
*/
|
||||||
|
export function UpdateKeyBindingKeys(id: number, key: string): Promise<void> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(3432755175, id, key) as any;
|
||||||
|
return $resultPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateKeyBindingPreventDefault 更新快捷键 PreventDefault 状态
|
||||||
|
*/
|
||||||
|
export function UpdateKeyBindingPreventDefault(id: number, preventDefault: boolean): Promise<void> & { cancel(): void } {
|
||||||
|
let $resultPromise = $Call.ByID(202386744, id, preventDefault) as any;
|
||||||
|
return $resultPromise;
|
||||||
|
}
|
||||||
|
|
||||||
// Private type creation functions
|
// Private type creation functions
|
||||||
const $$createType0 = models$0.KeyBinding.createFrom;
|
const $$createType0 = models$0.KeyBinding.createFrom;
|
||||||
const $$createType1 = $Create.Array($$createType0);
|
const $$createType1 = $Create.Array($$createType0);
|
||||||
|
const $$createType2 = ent$0.KeyBinding.createFrom;
|
||||||
|
const $$createType3 = $Create.Nullable($$createType2);
|
||||||
|
const $$createType4 = $Create.Array($$createType3);
|
||||||
|
|||||||
@@ -12,12 +12,6 @@ import * as http$0 from "../../../net/http/models.js";
|
|||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as time$0 from "../../../time/models.js";
|
import * as time$0 from "../../../time/models.js";
|
||||||
|
|
||||||
/**
|
|
||||||
* CancelFunc 取消订阅函数
|
|
||||||
* 调用此函数可以取消对配置的监听
|
|
||||||
*/
|
|
||||||
export type CancelFunc = any;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HttpRequest HTTP请求结构
|
* HttpRequest HTTP请求结构
|
||||||
*/
|
*/
|
||||||
@@ -191,15 +185,14 @@ export class MemoryStats {
|
|||||||
* MigrationProgress 迁移进度信息
|
* MigrationProgress 迁移进度信息
|
||||||
*/
|
*/
|
||||||
export class MigrationProgress {
|
export class MigrationProgress {
|
||||||
"status": MigrationStatus;
|
/**
|
||||||
|
* 0-100
|
||||||
|
*/
|
||||||
"progress": number;
|
"progress": number;
|
||||||
"error"?: string;
|
"error"?: string;
|
||||||
|
|
||||||
/** Creates a new MigrationProgress instance. */
|
/** Creates a new MigrationProgress instance. */
|
||||||
constructor($$source: Partial<MigrationProgress> = {}) {
|
constructor($$source: Partial<MigrationProgress> = {}) {
|
||||||
if (!("status" in $$source)) {
|
|
||||||
this["status"] = ("" as MigrationStatus);
|
|
||||||
}
|
|
||||||
if (!("progress" in $$source)) {
|
if (!("progress" in $$source)) {
|
||||||
this["progress"] = 0;
|
this["progress"] = 0;
|
||||||
}
|
}
|
||||||
@@ -216,20 +209,6 @@ export class MigrationProgress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* MigrationStatus 迁移状态
|
|
||||||
*/
|
|
||||||
export enum MigrationStatus {
|
|
||||||
/**
|
|
||||||
* The Go zero value for the underlying type of the enum.
|
|
||||||
*/
|
|
||||||
$zero = "",
|
|
||||||
|
|
||||||
MigrationStatusMigrating = "migrating",
|
|
||||||
MigrationStatusCompleted = "completed",
|
|
||||||
MigrationStatusFailed = "failed",
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OSInfo 操作系统信息
|
* OSInfo 操作系统信息
|
||||||
*/
|
*/
|
||||||
@@ -266,11 +245,6 @@ export class OSInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ObserverCallback 观察者回调函数
|
|
||||||
*/
|
|
||||||
export type ObserverCallback = any;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SelfUpdateResult 自我更新结果
|
* SelfUpdateResult 自我更新结果
|
||||||
*/
|
*/
|
||||||
@@ -311,7 +285,7 @@ export class SelfUpdateResult {
|
|||||||
"error": string;
|
"error": string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新源(github/gitea)
|
* 更新源(github)
|
||||||
*/
|
*/
|
||||||
"source": string;
|
"source": string;
|
||||||
|
|
||||||
|
|||||||
@@ -15,26 +15,13 @@ import {Call as $Call, Create as $Create} from "@wailsio/runtime";
|
|||||||
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as models$0 from "../models/models.js";
|
import * as ent$0 from "../models/ent/models.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GetAllThemes 获取所有主题
|
* GetThemeByName 根据Key获取主题
|
||||||
*/
|
*/
|
||||||
export function GetAllThemes(): Promise<(models$0.Theme | null)[]> & { cancel(): void } {
|
export function GetThemeByName(name: string): Promise<ent$0.Theme | null> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(2425053076) as any;
|
let $resultPromise = $Call.ByID(1938954770, name) as any;
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
|
||||||
return $$createType2($result);
|
|
||||||
}) as any;
|
|
||||||
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
|
||||||
return $typingPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GetThemeByID 根据ID或名称获取主题
|
|
||||||
* 如果 id > 0,按ID查询;如果 id = 0,按名称查询
|
|
||||||
*/
|
|
||||||
export function GetThemeByIdOrName(id: number, ...name: string[]): Promise<models$0.Theme | null> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(127385338, id, name) as any;
|
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
let $typingPromise = $resultPromise.then(($result: any) => {
|
||||||
return $$createType1($result);
|
return $$createType1($result);
|
||||||
}) as any;
|
}) as any;
|
||||||
@@ -43,23 +30,15 @@ export function GetThemeByIdOrName(id: number, ...name: string[]): Promise<model
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ResetTheme 重置主题为预设配置
|
* ResetTheme 删除主题
|
||||||
*/
|
*/
|
||||||
export function ResetTheme(id: number, ...name: string[]): Promise<void> & { cancel(): void } {
|
export function ResetTheme(key: string): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(1806334457, id, name) as any;
|
let $resultPromise = $Call.ByID(1806334457, key) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ServiceShutdown 服务关闭
|
* ServiceStartup 服务启动
|
||||||
*/
|
|
||||||
export function ServiceShutdown(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(1676749034) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ServiceStartup 服务启动时初始化
|
|
||||||
*/
|
*/
|
||||||
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
export function ServiceStartup(options: application$0.ServiceOptions): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(2915959937, options) as any;
|
let $resultPromise = $Call.ByID(2915959937, options) as any;
|
||||||
@@ -67,14 +46,13 @@ export function ServiceStartup(options: application$0.ServiceOptions): Promise<v
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdateTheme 更新主题
|
* UpdateTheme 保存或更新主题
|
||||||
*/
|
*/
|
||||||
export function UpdateTheme(id: number, colors: models$0.ThemeColorConfig): Promise<void> & { cancel(): void } {
|
export function UpdateTheme(key: string, colors: { [_: string]: any }): Promise<void> & { cancel(): void } {
|
||||||
let $resultPromise = $Call.ByID(70189749, id, colors) as any;
|
let $resultPromise = $Call.ByID(70189749, key, colors) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Private type creation functions
|
// Private type creation functions
|
||||||
const $$createType0 = models$0.Theme.createFrom;
|
const $$createType0 = ent$0.Theme.createFrom;
|
||||||
const $$createType1 = $Create.Nullable($$createType0);
|
const $$createType1 = $Create.Nullable($$createType0);
|
||||||
const $$createType2 = $Create.Array($$createType1);
|
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
|
||||||
// This file is automatically generated. DO NOT EDIT
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TrayService 系统托盘服务
|
|
||||||
* @module
|
|
||||||
*/
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore: Unused imports
|
|
||||||
import {Call as $Call, Create as $Create} from "@wailsio/runtime";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* AutoShowHide 自动显示/隐藏主窗口
|
|
||||||
*/
|
|
||||||
export function AutoShowHide(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(4044219428) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HandleWindowClose 处理窗口关闭事件
|
|
||||||
*/
|
|
||||||
export function HandleWindowClose(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(1824247204) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HandleWindowMinimize 处理窗口最小化事件
|
|
||||||
*/
|
|
||||||
export function HandleWindowMinimize(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(178686624) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MinimizeButtonClicked 处理标题栏最小化按钮点击
|
|
||||||
*/
|
|
||||||
export function MinimizeButtonClicked(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(2477618539) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ShouldMinimizeToTray 检查是否应该最小化到托盘
|
|
||||||
*/
|
|
||||||
export function ShouldMinimizeToTray(): Promise<boolean> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(3403884012) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ShowWindow 显示主窗口
|
|
||||||
*/
|
|
||||||
export function ShowWindow(): Promise<void> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(1315913255) as any;
|
|
||||||
return $resultPromise;
|
|
||||||
}
|
|
||||||
@@ -14,18 +14,6 @@ import {Call as $Call, Create as $Create} from "@wailsio/runtime";
|
|||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
import * as application$0 from "../../../github.com/wailsapp/wails/v3/pkg/application/models.js";
|
||||||
|
|
||||||
/**
|
|
||||||
* GetOpenWindows 获取所有打开的文档窗口
|
|
||||||
*/
|
|
||||||
export function GetOpenWindows(): Promise<application$0.Window[]> & { cancel(): void } {
|
|
||||||
let $resultPromise = $Call.ByID(1464997251) as any;
|
|
||||||
let $typingPromise = $resultPromise.then(($result: any) => {
|
|
||||||
return $$createType0($result);
|
|
||||||
}) as any;
|
|
||||||
$typingPromise.cancel = $resultPromise.cancel.bind($resultPromise);
|
|
||||||
return $typingPromise;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IsDocumentWindowOpen 检查指定文档的窗口是否已打开
|
* IsDocumentWindowOpen 检查指定文档的窗口是否已打开
|
||||||
*/
|
*/
|
||||||
@@ -57,6 +45,3 @@ export function ServiceStartup(options: application$0.ServiceOptions): Promise<v
|
|||||||
let $resultPromise = $Call.ByID(2432987694, options) as any;
|
let $resultPromise = $Call.ByID(2432987694, options) as any;
|
||||||
return $resultPromise;
|
return $resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Private type creation functions
|
|
||||||
const $$createType0 = $Create.Array($Create.Any);
|
|
||||||
|
|||||||
4
frontend/components.d.ts
vendored
@@ -11,6 +11,8 @@ export {}
|
|||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
|
AccordionContainer: typeof import('./src/components/accordion/AccordionContainer.vue')['default']
|
||||||
|
AccordionItem: typeof import('./src/components/accordion/AccordionItem.vue')['default']
|
||||||
BlockLanguageSelector: typeof import('./src/components/toolbar/BlockLanguageSelector.vue')['default']
|
BlockLanguageSelector: typeof import('./src/components/toolbar/BlockLanguageSelector.vue')['default']
|
||||||
DocumentSelector: typeof import('./src/components/toolbar/DocumentSelector.vue')['default']
|
DocumentSelector: typeof import('./src/components/toolbar/DocumentSelector.vue')['default']
|
||||||
LinuxTitleBar: typeof import('./src/components/titlebar/LinuxTitleBar.vue')['default']
|
LinuxTitleBar: typeof import('./src/components/titlebar/LinuxTitleBar.vue')['default']
|
||||||
@@ -22,6 +24,8 @@ declare module 'vue' {
|
|||||||
TabContainer: typeof import('./src/components/tabs/TabContainer.vue')['default']
|
TabContainer: typeof import('./src/components/tabs/TabContainer.vue')['default']
|
||||||
TabContextMenu: typeof import('./src/components/tabs/TabContextMenu.vue')['default']
|
TabContextMenu: typeof import('./src/components/tabs/TabContextMenu.vue')['default']
|
||||||
TabItem: typeof import('./src/components/tabs/TabItem.vue')['default']
|
TabItem: typeof import('./src/components/tabs/TabItem.vue')['default']
|
||||||
|
Toast: typeof import('./src/components/toast/Toast.vue')['default']
|
||||||
|
ToastContainer: typeof import('./src/components/toast/ToastContainer.vue')['default']
|
||||||
Toolbar: typeof import('./src/components/toolbar/Toolbar.vue')['default']
|
Toolbar: typeof import('./src/components/toolbar/Toolbar.vue')['default']
|
||||||
WindowsTitleBar: typeof import('./src/components/titlebar/WindowsTitleBar.vue')['default']
|
WindowsTitleBar: typeof import('./src/components/titlebar/WindowsTitleBar.vue')['default']
|
||||||
WindowTitleBar: typeof import('./src/components/titlebar/WindowTitleBar.vue')['default']
|
WindowTitleBar: typeof import('./src/components/titlebar/WindowTitleBar.vue')['default']
|
||||||
|
|||||||
6853
frontend/package-lock.json
generated
@@ -22,19 +22,19 @@
|
|||||||
"app:generate": "cd .. && wails3 generate bindings -ts"
|
"app:generate": "cd .. && wails3 generate bindings -ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/autocomplete": "^6.19.1",
|
"@codemirror/autocomplete": "^6.20.1",
|
||||||
"@codemirror/commands": "^6.10.0",
|
"@codemirror/commands": "^6.10.3",
|
||||||
"@codemirror/lang-angular": "^0.1.4",
|
"@codemirror/lang-angular": "^0.1.4",
|
||||||
"@codemirror/lang-cpp": "^6.0.3",
|
"@codemirror/lang-cpp": "^6.0.3",
|
||||||
"@codemirror/lang-css": "^6.3.1",
|
"@codemirror/lang-css": "^6.3.1",
|
||||||
"@codemirror/lang-go": "^6.0.1",
|
"@codemirror/lang-go": "^6.0.1",
|
||||||
"@codemirror/lang-html": "^6.4.11",
|
"@codemirror/lang-html": "^6.4.11",
|
||||||
"@codemirror/lang-java": "^6.0.2",
|
"@codemirror/lang-java": "^6.0.2",
|
||||||
"@codemirror/lang-javascript": "^6.2.4",
|
"@codemirror/lang-javascript": "^6.2.5",
|
||||||
"@codemirror/lang-json": "^6.0.2",
|
"@codemirror/lang-json": "^6.0.2",
|
||||||
"@codemirror/lang-less": "^6.0.2",
|
"@codemirror/lang-less": "^6.0.2",
|
||||||
"@codemirror/lang-lezer": "^6.0.2",
|
"@codemirror/lang-lezer": "^6.0.2",
|
||||||
"@codemirror/lang-liquid": "^6.3.0",
|
"@codemirror/lang-liquid": "^6.3.2",
|
||||||
"@codemirror/lang-markdown": "^6.5.0",
|
"@codemirror/lang-markdown": "^6.5.0",
|
||||||
"@codemirror/lang-php": "^6.0.2",
|
"@codemirror/lang-php": "^6.0.2",
|
||||||
"@codemirror/lang-python": "^6.2.1",
|
"@codemirror/lang-python": "^6.2.1",
|
||||||
@@ -43,68 +43,61 @@
|
|||||||
"@codemirror/lang-sql": "^6.10.0",
|
"@codemirror/lang-sql": "^6.10.0",
|
||||||
"@codemirror/lang-vue": "^0.1.3",
|
"@codemirror/lang-vue": "^0.1.3",
|
||||||
"@codemirror/lang-wast": "^6.0.2",
|
"@codemirror/lang-wast": "^6.0.2",
|
||||||
"@codemirror/lang-yaml": "^6.1.2",
|
"@codemirror/lang-yaml": "^6.1.3",
|
||||||
"@codemirror/language": "^6.11.3",
|
"@codemirror/language": "^6.12.3",
|
||||||
"@codemirror/language-data": "^6.5.2",
|
"@codemirror/language-data": "^6.5.2",
|
||||||
"@codemirror/legacy-modes": "^6.5.2",
|
"@codemirror/legacy-modes": "^6.5.2",
|
||||||
"@codemirror/lint": "^6.9.2",
|
"@codemirror/lint": "^6.9.5",
|
||||||
"@codemirror/search": "^6.5.11",
|
"@codemirror/search": "^6.6.0",
|
||||||
"@codemirror/state": "^6.5.2",
|
"@codemirror/state": "^6.6.0",
|
||||||
"@codemirror/view": "^6.38.6",
|
"@codemirror/view": "^6.40.0",
|
||||||
"@cospaia/prettier-plugin-clojure": "^0.0.2",
|
"@cospaia/prettier-plugin-clojure": "^0.0.2",
|
||||||
"@lezer/highlight": "^1.2.3",
|
"@lezer/highlight": "^1.2.3",
|
||||||
"@lezer/lr": "^1.4.3",
|
"@lezer/lr": "^1.4.8",
|
||||||
"@mdit/plugin-katex": "^0.23.2",
|
|
||||||
"@mdit/plugin-tasklist": "^0.22.2",
|
|
||||||
"@prettier/plugin-xml": "^3.4.2",
|
"@prettier/plugin-xml": "^3.4.2",
|
||||||
"@replit/codemirror-lang-svelte": "^6.0.0",
|
"@replit/codemirror-lang-svelte": "^6.0.0",
|
||||||
"@toml-tools/lexer": "^1.0.0",
|
"@toml-tools/lexer": "^1.0.1",
|
||||||
"@toml-tools/parser": "^1.0.0",
|
"@toml-tools/parser": "^1.0.1",
|
||||||
"@types/markdown-it": "^14.1.2",
|
"@types/katex": "^0.16.8",
|
||||||
|
"@zumer/snapdom": "^2.7.0",
|
||||||
"codemirror": "^6.0.2",
|
"codemirror": "^6.0.2",
|
||||||
"codemirror-lang-elixir": "^4.0.0",
|
"codemirror-lang-elixir": "^4.0.1",
|
||||||
"colors-named": "^1.0.2",
|
"colors-named": "^1.0.5",
|
||||||
"colors-named-hex": "^1.0.2",
|
"colors-named-hex": "^1.0.4",
|
||||||
"groovy-beautify": "^0.0.17",
|
"groovy-beautify": "^0.0.17",
|
||||||
"highlight.js": "^11.11.1",
|
|
||||||
"hsl-matcher": "^1.2.4",
|
"hsl-matcher": "^1.2.4",
|
||||||
"java-parser": "^3.0.1",
|
"katex": "^0.16.44",
|
||||||
"linguist-languages": "^9.1.0",
|
"linguist-languages": "^9.3.1",
|
||||||
"markdown-it": "^14.1.0",
|
"marked": "^17.0.5",
|
||||||
"mermaid": "^11.12.1",
|
"mermaid": "^11.13.0",
|
||||||
"npm": "^11.6.2",
|
"php-parser": "^3.5.0",
|
||||||
"php-parser": "^3.2.5",
|
|
||||||
"pinia": "^3.0.4",
|
"pinia": "^3.0.4",
|
||||||
"pinia-plugin-persistedstate": "^4.7.1",
|
"pinia-plugin-persistedstate": "^4.7.1",
|
||||||
"prettier": "^3.6.2",
|
"prettier": "^3.8.1",
|
||||||
"sass": "^1.94.0",
|
"sass": "^1.98.0",
|
||||||
"vue": "^3.5.24",
|
"vue": "^3.5.31",
|
||||||
"vue-i18n": "^11.1.12",
|
"vue-i18n": "^11.3.0",
|
||||||
"vue-pick-colors": "^1.8.0",
|
"vue-pick-colors": "^1.8.0",
|
||||||
"vue-router": "^4.6.3"
|
"vue-router": "^5.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.39.1",
|
"@eslint/js": "^10.0.1",
|
||||||
"@lezer/generator": "^1.8.0",
|
"@lezer/generator": "^1.8.0",
|
||||||
"@types/node": "^24.9.2",
|
"@types/node": "^25.5.0",
|
||||||
"@vitejs/plugin-vue": "^6.0.1",
|
"@vitejs/plugin-vue": "^6.0.5",
|
||||||
"@wailsio/runtime": "latest",
|
"@wailsio/runtime": "^3.0.0-alpha.79",
|
||||||
"cross-env": "^10.1.0",
|
"cross-env": "^10.1.0",
|
||||||
"eslint": "^9.39.1",
|
"eslint": "^10.1.0",
|
||||||
"eslint-plugin-vue": "^10.5.1",
|
"eslint-plugin-vue": "^10.8.0",
|
||||||
"globals": "^16.5.0",
|
"globals": "^17.4.0",
|
||||||
"happy-dom": "^20.0.10",
|
|
||||||
"typescript": "^5.9.3",
|
"typescript": "^5.9.3",
|
||||||
"typescript-eslint": "^8.46.4",
|
"typescript-eslint": "^8.57.2",
|
||||||
"unplugin-vue-components": "^30.0.0",
|
"unplugin-vue-components": "^32.0.0",
|
||||||
"vite": "npm:rolldown-vite@latest",
|
"vite": "^7.3.1",
|
||||||
"vite-plugin-node-polyfills": "^0.24.0",
|
"vite-plugin-node-polyfills": "^0.25.0",
|
||||||
"vitepress": "^2.0.0-alpha.12",
|
"vitepress": "^2.0.0-alpha.12",
|
||||||
"vitest": "^4.0.8",
|
"vitest": "^4.1.2",
|
||||||
"vue-eslint-parser": "^10.2.0",
|
"vue-eslint-parser": "^10.4.0",
|
||||||
"vue-tsc": "^3.1.3"
|
"vue-tsc": "^3.2.6"
|
||||||
},
|
|
||||||
"overrides": {
|
|
||||||
"vite": "npm:rolldown-vite@latest"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1
frontend/public/images/blockImage.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767366893329" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="106998" width="200" height="200"><path d="M344.064 36.571429v95.085714H155.428571a23.771429 23.771429 0 0 0-23.259428 19.017143l-0.512 4.754285-0.073143 509.952L306.176 505.417143a95.085714 95.085714 0 0 1 121.270857-5.997714l4.827429 3.876571 152.137143 130.413714 102.546285-102.4a95.085714 95.085714 0 0 1 119.003429-12.507428l5.266286 3.657143 81.042285 60.781714 0.073143-118.784 0.512-7.021714a47.542857 47.542857 0 0 1 94.061714 0l0.512 7.021714v404.114286c0 62.171429-47.762286 113.225143-108.617142 118.418285l-10.24 0.438857h-713.142858l-10.24-0.438857a118.857143 118.857143 0 0 1-108.105142-107.52L36.571429 868.498286v-713.142857l0.438857-10.24A118.857143 118.857143 0 0 1 155.428571 36.571429h188.708572z m26.331429 538.916571L131.657143 794.404571l0.073143 74.166858c0 11.483429 8.118857 21.065143 19.017143 23.259428l4.754285 0.512h713.142857a23.771429 23.771429 0 0 0 23.259429-19.017143l0.512-4.754285-0.073143-166.473143-138.093714-103.570286-97.353143 97.28 76.288 65.316571a47.542857 47.542857 0 0 1-58.002286 75.190858l-3.876571-2.925715-300.836572-257.901714zM649.069714 60.269714a47.542857 47.542857 0 0 1 3.291429 63.634286l-3.291429 3.657143-61.44 61.44 61.44 61.44a47.542857 47.542857 0 0 1 3.291429 63.634286l-3.291429 3.657142a47.542857 47.542857 0 0 1-63.634285 3.218286l-3.584-3.291428-95.085715-95.085715a47.542857 47.542857 0 0 1-3.291428-63.634285l3.291428-3.584 95.085715-95.085715a47.542857 47.542857 0 0 1 67.291428 0zM855.259429 57.051429l3.584 3.218285 95.085714 95.085715a47.542857 47.542857 0 0 1 3.291428 63.634285l-3.291428 3.657143-95.085714 95.085714a47.542857 47.542857 0 0 1-70.509715-63.634285l3.291429-3.657143 61.44-61.44-61.44-61.44a47.542857 47.542857 0 0 1-3.291429-63.634286l3.291429-3.657143a47.542857 47.542857 0 0 1 63.634286-3.218285zM344.210286 36.571429a47.542857 47.542857 0 0 1 7.021714 94.573714l-7.021714 0.512V36.571429z" p-id="106999" fill="#e0620d"></path></svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
1
frontend/public/images/colorSelector.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767367606621" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15611" width="200" height="200"><path d="M511.966509 0.066982c96.036384 0 185.886507 26.451603 262.724147 72.443261L767.949763 68.670494l-127.948963 221.638835A254.788666 254.788666 0 0 0 511.966509 256.050237V0.066982z" fill="#E70212" p-id="15612"></path><path d="M767.949763 68.670494a509.577332 509.577332 0 0 1 191.304819 194.120635L955.329506 256.050237l-221.638835 127.991627a257.263171 257.263171 0 0 0-93.689871-93.689871L767.949763 68.670494z" fill="#EA6101" p-id="15613"></path><path d="M955.329506 256.050237A509.577332 509.577332 0 0 1 1023.933018 519.798317V512.033491h-255.983255a254.788666 254.788666 0 0 0-34.259092-127.991627l221.638835-127.991627z" fill="#F39801" p-id="15614"></path><path d="M1023.933018 512.033491c0 90.020778-23.251812 174.665907-64.038478 248.175765l-4.565034 7.80749-221.638835-127.948964c21.758577-37.672202 34.259092-81.402675 34.259092-128.034291v-0.042664L1023.933018 512.033491z" fill="#FCC902" p-id="15615"></path><path d="M733.690671 640.025118l221.638835 127.991628a509.66266 509.66266 0 0 1-179.52959 182.900035l-7.850153 4.479707-127.991627-221.638835A257.263171 257.263171 0 0 0 733.690671 640.025118z" fill="#FEF200" p-id="15616"></path><path d="M640.0008 733.757653L767.949763 955.396488A509.66266 509.66266 0 0 1 521.011251 1024H511.966509v-255.983254a254.788666 254.788666 0 0 0 128.034291-34.259093z" fill="#90C320" p-id="15617"></path><path d="M511.966509 768.016746v255.983254c-90.020778 0-174.665907-23.251812-248.175765-64.038477L255.983254 955.396488l127.991628-221.638835c37.672202 21.758577 81.402675 34.259092 128.034291 34.259093z" fill="#019A44" p-id="15618"></path><path d="M383.974882 733.757653l-127.991628 221.638835a509.66266 509.66266 0 0 1-182.900035-179.529589L68.603512 768.016746l221.638835-127.991628A257.263171 257.263171 0 0 0 383.974882 733.757653z" fill="#019E97" p-id="15619"></path><path d="M255.983254 512.033491c0 46.631616 12.457852 90.362089 34.259093 128.034291L68.603512 768.016746A509.66266 509.66266 0 0 1 0 521.078233V512.033491h255.983254z" fill="#0169B8" p-id="15620"></path><path d="M68.603512 256.050237l221.638835 127.991627A254.788666 254.788666 0 0 0 255.983254 512.033491H0c0-90.020778 23.251812-174.665907 64.038477-248.175765L68.603512 256.050237z" fill="#1C2089" p-id="15621"></path><path d="M262.681483 64.745418L255.983254 68.670494l127.991628 221.638835A257.263171 257.263171 0 0 0 290.242347 384.041864L68.603512 256.050237a509.577332 509.577332 0 0 1 194.120635-191.304819z" fill="#621988" p-id="15622"></path><path d="M519.731334 0.066982H511.966509v255.983255a254.788666 254.788666 0 0 0-128.034291 34.259092L255.983254 68.670494A509.577332 509.577332 0 0 1 519.731334 0.066982z" fill="#910783" p-id="15623"></path></svg>
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
1
frontend/public/images/contextMenu.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767366808037" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="103196" width="200" height="200"><path d="M878.921143 96c27.099429 0 49.078857 21.942857 49.078857 49.078857v349.842286c0 27.099429-21.942857 49.078857-49.078857 49.078857h-221.842286c-27.099429 0-49.078857-21.942857-49.078857-49.078857V145.078857c0-27.099429 21.942857-49.078857 49.078857-49.078857z m-14.921143 320h-192v64h192v-64z m0-128h-192v64h192v-64z m0-128h-192v64h192v-64zM384 309.321143A202.678857 202.678857 0 0 1 586.678857 512v213.321143a202.678857 202.678857 0 0 1-202.678857 202.678857H298.678857a202.678857 202.678857 0 0 1-202.678857-202.678857V512a202.678857 202.678857 0 0 1 202.678857-202.678857z m138.642286 298.642286H160v117.394285a138.678857 138.678857 0 0 0 131.547429 138.459429l7.131428 0.182857H384a138.678857 138.678857 0 0 0 138.678857-138.678857l-0.036571-117.357714z m-213.321143-234.642286h-10.642286A138.678857 138.678857 0 0 0 160 512v31.963429h149.321143v-170.642286z" p-id="103197" fill="#8992c8"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
1
frontend/public/images/fold.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767366707029" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="100833" width="200" height="200"><path d="M533.333 54c16.138 0 29.75 12.016 31.753 28.03l17.828 142.569L896 224.6c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53V939c0 17.673-14.327 32-32 32H469.735a31.94 31.94 0 0 1-3.051-0.102l-0.09-0.009c-10.834-0.868-19.434-6.86-24.45-14.999a31.766 31.766 0 0 1-3.374-7.39 32.348 32.348 0 0 1-1.405-7.246L419.752 800.4H128c-17.496 0-31.713-14.042-31.996-31.47L96 768.4V86c0-17.673 14.327-32 32-32zM864 288.599H590.917l13.33 106.6L704 395.2c17.673 0 32 14.327 32 32 0 17.496-14.042 31.713-31.47 31.996l-0.53 0.004-91.75-0.001 13.331 106.6L704 565.8c17.673 0 32 14.327 32 32 0 17.496-14.042 31.713-31.47 31.996l-0.53 0.004-70.416-0.001 16.548 132.332 0.287 2.298c0.024 0.188 0.046 0.376 0.066 0.565 0.986 9.171-2.002 17.793-7.523 24.232l-0.217 0.25L539.872 907H864v-618.4zM548.127 800.4H484.25l7.985 63.851 55.892-63.851zM505.085 118H160v618.4h287.598c0.302-0.004 0.603-0.004 0.904 0h133.913l-0.001-0.004L569.01 629.21l-3.386-27.076c-0.03-0.225-0.058-0.45-0.084-0.676l-21.256-169.977c-0.03-0.219-0.056-0.438-0.081-0.659L505.085 118zM448 565.8c17.673 0 32 14.327 32 32 0 17.496-14.042 31.713-31.47 31.996l-0.53 0.004H256c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.996l0.53-0.004h192z m-21.333-170.6c17.673 0 32 14.327 32 32 0 17.496-14.042 31.713-31.471 31.996l-0.53 0.004H256c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.996l0.53-0.004h170.667z m-21.334-170.6c17.673 0 32 14.327 32 32 0 17.496-14.041 31.713-31.47 31.996l-0.53 0.004H256c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.996l0.53-0.004h149.333z" p-id="100834" fill="#1aaba8"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
1
frontend/public/images/highlightTrailingWhitespace.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767367226608" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5585" width="200" height="200"><path d="M416 64H768v64h-64v704h64v64H448v-64h64V512H416a224 224 0 1 1 0-448zM576 832h64V128H576v704zM416 128H512v320H416a160 160 0 0 1 0-320z" fill="#a4579d" p-id="5586"></path></svg>
|
||||||
|
After Width: | Height: | Size: 330 B |
1
frontend/public/images/highlightWhitespace.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1767366207284" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="95138" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M753.5 130.4v763.3h70.1v66.4H477v-66.4h70.1V547.1H443.9c-44.2 0-84.8-11.1-121.7-33.2-36.9-22.1-66.4-51.6-88.5-88.5s-33.2-76.8-33.2-119.8 11.1-83.6 33.2-121.7c22.1-38.1 51.6-67.6 88.5-88.5s77.4-31.3 121.7-31.3h379.8v66.4h-70.1z m-206.5 0H443.8c-49.2 0-90.3 17.2-123.5 51.6-33.2 34.4-49.8 75.6-49.8 123.5s16.6 88.5 49.8 121.7c33.2 33.2 74.4 49.8 123.5 49.8H547V130.4z m140.1 0H617v763.3h70.1V130.4z" p-id="95139"></path></svg>
|
||||||
|
After Width: | Height: | Size: 758 B |
1
frontend/public/images/httpClient.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1767365935803" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="81379" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M896 64a64 64 0 0 1 64 64v613.952l-121.28-95.68a83.2 83.2 0 0 0-110.848 7.04l-6.016 6.784-5.312 7.616a83.2 83.2 0 0 0-12.032 34.56l-0.064 1.728H595.2A83.2 83.2 0 0 0 512 787.2v44.8H128a64 64 0 0 1-64-64V128a64 64 0 0 1 64-64h768z" fill="#B5E3CC" p-id="81380"></path><path d="M640 256a32 32 0 1 1 0 64h-32v224a32 32 0 0 1-64 0V320h-64v224a32 32 0 0 1-64 0V320H384a32 32 0 0 1 0-64h256z m160 0a96 96 0 0 1 0 192H768v96a32 32 0 0 1-26.24 31.488L736 576a32 32 0 0 1-32-32v-256a32 32 0 0 1 32-32h64zM768 384h32a32 32 0 1 0 0-64H768v64zM288 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V448H192v96a32 32 0 0 1-64 0v-256a32 32 0 0 1 64 0V384h64V288a32 32 0 0 1 32-32zM772.096 699.712a19.2 19.2 0 0 0-4.096 11.904v56.32L595.2 768a19.2 19.2 0 0 0-19.2 19.2v89.6a19.2 19.2 0 0 0 19.2 19.2H768v56.384a19.2 19.2 0 0 0 31.104 15.104l152.576-120.384a19.2 19.2 0 0 0 0-30.208l-152.576-120.32a19.2 19.2 0 0 0-27.008 3.136z" fill="#129250" p-id="81381"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
1
frontend/public/images/hyperlink.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1767365120766" class="icon" viewBox="0 0 1160 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12589" xmlns:xlink="http://www.w3.org/1999/xlink" width="226.5625" height="200"><path d="M398.5408 736.142222l435.768889-384.568889a44.009244 44.009244 0 0 0 0-67.675022 59.483022 59.483022 0 0 0-76.731733 0l-435.768889 384.568889a43.872711 43.872711 0 0 0 0 67.675022 59.164444 59.164444 0 0 0 76.731733 0z m143.7696-66.582755a39.867733 39.867733 0 0 1 9.102222 25.031111 38.866489 38.866489 0 0 1-13.653333 30.128355L308.929422 926.151111a52.8384 52.8384 0 0 1-68.266666 0L111.047111 811.781689a39.139556 39.139556 0 0 1 0-60.302222l228.192711-201.9328a50.335289 50.335289 0 0 1 34.178845-11.969423 53.748622 53.748622 0 0 1 22.755555 4.551112l69.632-60.848356c-57.617067-41.824711-141.7216-38.365867-194.696533 7.964444L42.052267 690.631111c-56.069689 50.3808-56.069689 131.117511 0 181.4528l130.207289 114.323911a158.651733 158.651733 0 0 0 204.8 0L605.297778 785.066667c54.613333-48.196267 57.025422-125.474133 5.779911-176.355556zM1117.980444 151.916089L988.410311 37.546667c-56.797867-50.062222-148.821333-50.062222-205.664711 0L554.552889 238.933333c-52.519822 46.739911-56.388267 120.968533-9.102222 171.804445L614.4 349.889422a41.688178 41.688178 0 0 1-5.142756-20.48 38.866489 38.866489 0 0 1 13.653334-30.128355l228.875378-201.386667a50.335289 50.335289 0 0 1 34.178844-12.515556 52.383289 52.383289 0 0 1 34.178844 12.515556l129.570134 114.323911a39.139556 39.139556 0 0 1 0 60.302222l-228.192711 201.9328a50.335289 50.335289 0 0 1-34.178845 11.969423 57.7536 57.7536 0 0 1-28.353422-7.418312l-68.266667 60.302223c57.389511 45.101511 144.543289 43.099022 199.202134-4.551111l228.192711-201.9328a117.418667 117.418667 0 0 0 0-180.906667z" fill="#1A97F0" p-id="12590"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
1
frontend/public/images/lineNumbers.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767366749042" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="102155" width="200" height="200"><path d="M426.7008 256c0-23.552 19.0976-42.6496 42.6496-42.6496h384a42.6496 42.6496 0 1 1 0 85.2992h-384A42.6496 42.6496 0 0 1 426.7008 256zM426.7008 512c0-23.552 19.0976-42.6496 42.6496-42.6496h384a42.6496 42.6496 0 1 1 0 85.2992h-384A42.6496 42.6496 0 0 1 426.7008 512zM469.2992 768c0-23.552 19.1488-42.6496 42.7008-42.6496h341.2992a42.6496 42.6496 0 0 1 0 85.2992H512A42.6496 42.6496 0 0 1 469.2992 768zM256 640a42.6496 42.6496 0 0 0-42.6496 42.6496 42.6496 42.6496 0 0 1-85.3504 0 128 128 0 1 1 256 0c0 25.856-11.264 45.6192-22.4256 59.8528-8.0384 10.1888-18.5856 20.48-26.8288 28.5184l-5.888 5.8368a42.4448 42.4448 0 0 1-2.8672 2.56l-37.4784 31.232h52.8384a42.6496 42.6496 0 1 1 0 85.3504H170.6496a42.6496 42.6496 0 0 1-27.2896-75.4688l126.5152-105.472 6.5024-6.3488 0.4096-0.4096 7.2704-7.168c4.608-4.608 7.936-8.192 10.3936-11.3664a28.672 28.672 0 0 0 3.9424-6.0928c0.3072-0.7168 0.256-0.9728 0.256-1.024A42.6496 42.6496 0 0 0 256 640zM272.3328 131.2256a42.6496 42.6496 0 0 1 26.3168 39.424v256a42.6496 42.6496 0 0 1-85.2992 0V273.664l-12.4928 12.4928a42.6496 42.6496 0 1 1-60.3648-60.3136l85.3504-85.3504a42.6496 42.6496 0 0 1 46.4896-9.216z" p-id="102156" fill="#87c38f"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
1
frontend/public/images/markdown.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1767365625477" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="51837" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M98.649225 16.619164h734.636904v990.162784h-734.636904z" fill="#FF8A90" p-id="51838"></path><path d="M881.197231 128.411736h-31.940735V32.589531c0-17.642265-14.29847-31.940735-31.940735-31.940735H114.619592c-17.642265 0-31.940735 14.29847-31.940735 31.940735v958.222049c0 17.642265 14.29847 31.940735 31.940735 31.940735h702.696169c17.642265 0 31.940735-14.29847 31.940735-31.940735V415.878351h31.940735c17.642265 0 31.940735-14.29847 31.940735-31.940735V160.352471c0-17.642265-14.29847-31.940735-31.940735-31.940735z m-63.88147 0h-383.288819c-17.642265 0-31.940735 14.29847-31.940735 31.940735V383.937616c0 17.642265 14.29847 31.940735 31.940735 31.940735h383.288819v574.933229H114.619592v-958.222049h702.696169v95.822205z" fill="#2B3139" p-id="51839"></path><path d="M434.026942 160.352471h447.170289V383.937616h-447.170289z" fill="#FFFFFF" p-id="51840"></path><path d="M544.808889 215.175748h49.969783l16.294765 67.025636h0.311922l16.294765-67.025636h49.957306v113.963544h-33.18842v-73.101861h-0.336875l-19.80076 73.101861h-26.176431l-19.788283-73.101861h-0.336875v73.101861h-33.200897zM698.947889 215.175748h57.618092c37.992007 0 51.392143 28.097865 51.392143 56.819573 0 34.947656-18.490691 57.143971-58.241934 57.143971h-50.768301v-113.963544z" fill="#2B3139" p-id="51841"></path><path d="M726.584111 299.918511h13.712058c21.85944 0 25.065991-17.717126 25.065991-28.409787 0-7.174189-2.233356-27.112194-27.611269-27.112194h-11.154303v55.521981z" fill="#FFFFFF" p-id="51842"></path><path d="M630.512369 785.841895l-94.998733-129.709328h57.318647V544.888976h76.445658v111.243591h57.30617L630.487415 785.841895z" fill="#1EB9B0" p-id="51843"></path><path d="M508.139428 785.754557l-76.445657 0.087338v-120.439029l-57.331124 77.194268-57.343601-77.194268v120.439029H240.573389V544.976313h76.445657l57.343601 80.288528 57.331124-80.288528 76.445657-0.087337z" fill="#1EB9B0" p-id="51844"></path></svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
1
frontend/public/images/minimap.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767367796950" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="18541" width="200" height="200"><path d="M880.489336 512H993.882278v455.107765A56.786824 56.786824 0 0 1 937.185807 1024h-56.681412V512z" fill="#4AC3BB" fill-opacity=".603" p-id="18542"></path><path d="M143.510513 1024a113.182118 113.182118 0 0 1-80.188235-33.325176A113.980235 113.980235 0 0 1 30.117572 910.215529V113.784471C30.117572 83.606588 42.059219 54.663529 63.322278 33.325176A113.182118 113.182118 0 0 1 143.510513 0h510.238118C778.977807 0 880.489336 101.872941 880.489336 227.553882v739.553883A56.786824 56.786824 0 0 0 937.185807 1024H143.510513z" fill="#4AC3BB" p-id="18543"></path><path d="M575.653572 335.329882c64.331294 65.024 66.529882 169.758118 4.954353 237.477647l-4.954353 5.240471-98.063059 122.473412a28.175059 28.175059 0 0 1-21.985882 10.586353 28.175059 28.175059 0 0 1-21.985883-10.586353l-98.078117-122.473412-4.412236-4.638118c-63.503059-68.487529-60.777412-175.841882 6.098824-240.941176a168.478118 168.478118 0 0 1 238.426353 2.861176z m-120.048941 64.150589a56.470588 56.470588 0 0 0-49.016471 28.611764 57.735529 57.735529 0 0 0 0 57.193412 56.470588 56.470588 0 0 0 49.016471 28.611765c31.247059-0.015059 56.576-25.630118 56.576-57.22353 0-31.578353-25.328941-57.193412-56.576-57.193411z" fill="#FFFFFF" fill-opacity=".95" p-id="18544"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
1
frontend/public/images/rainbowBrackets.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1767364585914" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8006" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M960 128c0-35.36-28.704-64.224-63.936-61.728A896.48 896.48 0 0 0 326.4 326.4a896.48 896.48 0 0 0-260.128 569.664C63.776 931.296 92.64 960 128 960c0 0 19.52 0.576 32 0 64-272 84.48-383.68 234.24-533.76C544.32 276.16 752 192 960 160V128z" fill="#F8312F" p-id="8007"></path><path d="M960 256V160a800 800 0 0 0-565.76 234.24A801.344 801.344 0 0 0 160 960h96c32-128 106.24-333.76 238.08-465.92C625.92 362.24 752 304 960 256z" fill="#FFB02E" p-id="8008"></path><path d="M960 256v96c-160 16-284.16 96-398.08 209.92C448 676.16 384 800 352 960H256c0-186.56 74.24-365.76 206.08-497.92A704.32 704.32 0 0 1 960 256z" fill="#FFF478" p-id="8009"></path><path d="M630.08 630.08C534.08 726.08 480 832 448 960h-96c0-161.28 64-315.84 177.92-430.08C643.84 416 798.72 352 960 352v96c-144 32-233.92 86.08-329.92 182.08z" fill="#00D26A" p-id="8010"></path><path d="M960 544v-96c-135.68 0-265.92 54.08-361.92 150.08-96 96-150.08 226.24-150.08 361.92h96c0-110.4 43.84-216.32 121.92-294.08C744 587.84 849.92 544 960 544z" fill="#3F5FFF" p-id="8011"></path><path d="M960 576c0 35.36-28.928 63.36-63.584 70.336a320.384 320.384 0 0 0-250.112 250.08C639.36 931.04 611.392 960 576 960h-32c0-110.4 43.84-216.32 121.92-294.08C744 587.84 849.92 544 960 544v32z" fill="#8D65C5" p-id="8012"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
1
frontend/public/images/search.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg t="1767366992790" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="111373" width="200" height="200"><path d="M581.973333 846.933333a380.8 380.8 0 1 1 380.8-380.8A381.226667 381.226667 0 0 1 581.973333 846.933333z m0-688a307.2 307.2 0 1 0 307.2 307.2 307.413333 307.413333 0 0 0-307.2-307.2z" fill="#FA6302" p-id="111374"></path><path d="M146.56 938.666667a36.906667 36.906667 0 0 1-26.026667-64l192-190.933334a36.906667 36.906667 0 0 1 52.053334 52.266667l-192 192a37.333333 37.333333 0 0 1-26.026667 10.666667z" fill="#43D7B4" p-id="111375"></path><path d="M470.826667 274.773333m-49.066667 0a49.066667 49.066667 0 1 0 98.133333 0 49.066667 49.066667 0 1 0-98.133333 0Z" fill="#43D7B4" p-id="111376"></path><path d="M312.106667 684.8l-23.68 23.466667A388.693333 388.693333 0 0 0 341.333333 760.32l23.466667-23.253333a36.906667 36.906667 0 0 0-52.053333-52.266667z" fill="#425300" p-id="111377"></path></svg>
|
||||||
|
After Width: | Height: | Size: 956 B |
1
frontend/public/images/translator.svg
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
@@ -6,7 +6,10 @@ import {useKeybindingStore} from '@/stores/keybindingStore';
|
|||||||
import {useThemeStore} from '@/stores/themeStore';
|
import {useThemeStore} from '@/stores/themeStore';
|
||||||
import {useUpdateStore} from '@/stores/updateStore';
|
import {useUpdateStore} from '@/stores/updateStore';
|
||||||
import WindowTitleBar from '@/components/titlebar/WindowTitleBar.vue';
|
import WindowTitleBar from '@/components/titlebar/WindowTitleBar.vue';
|
||||||
|
import ToastContainer from '@/components/toast/ToastContainer.vue';
|
||||||
import {useTranslationStore} from "@/stores/translationStore";
|
import {useTranslationStore} from "@/stores/translationStore";
|
||||||
|
import {useI18n} from "vue-i18n";
|
||||||
|
import {LanguageType} from "../bindings/voidraft/internal/models";
|
||||||
|
|
||||||
const configStore = useConfigStore();
|
const configStore = useConfigStore();
|
||||||
const systemStore = useSystemStore();
|
const systemStore = useSystemStore();
|
||||||
@@ -14,18 +17,18 @@ const keybindingStore = useKeybindingStore();
|
|||||||
const themeStore = useThemeStore();
|
const themeStore = useThemeStore();
|
||||||
const updateStore = useUpdateStore();
|
const updateStore = useUpdateStore();
|
||||||
const translationStore = useTranslationStore();
|
const translationStore = useTranslationStore();
|
||||||
|
const {locale} = useI18n();
|
||||||
|
|
||||||
onBeforeMount(async () => {
|
onBeforeMount(async () => {
|
||||||
// 并行初始化配置、系统信息和快捷键配置
|
// 并行初始化配置、系统信息和快捷键配置
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
configStore.initConfig(),
|
configStore.initConfig(),
|
||||||
systemStore.initializeSystemInfo(),
|
systemStore.initSystemInfo(),
|
||||||
keybindingStore.loadKeyBindings(),
|
keybindingStore.loadKeyBindings(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 初始化语言和主题
|
locale.value = configStore.config.appearance.language || LanguageType.LangEnUS;
|
||||||
await configStore.initializeLanguage();
|
await themeStore.initTheme();
|
||||||
await themeStore.initializeTheme();
|
|
||||||
await translationStore.loadTranslators();
|
await translationStore.loadTranslators();
|
||||||
|
|
||||||
// 启动时检查更新
|
// 启动时检查更新
|
||||||
@@ -39,6 +42,7 @@ onBeforeMount(async () => {
|
|||||||
<div class="app-content">
|
<div class="app-content">
|
||||||
<router-view/>
|
<router-view/>
|
||||||
</div>
|
</div>
|
||||||
|
<ToastContainer/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
1
frontend/src/assets/images/translator.svg
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
@@ -1,8 +1,9 @@
|
|||||||
/* 导入所有CSS文件 */
|
/* 导入所有CSS文件 */
|
||||||
@import 'normalize.css';
|
@import 'normalize.css';
|
||||||
@import 'variables.css';
|
|
||||||
@import 'scrollbar.css';
|
|
||||||
@import "harmony_fonts.css";
|
@import "harmony_fonts.css";
|
||||||
@import 'hack_fonts.css';
|
@import 'hack_fonts.css';
|
||||||
@import 'opensans_fonts.css';
|
@import 'opensans_fonts.css';
|
||||||
@import "monocraft_fonts.css";
|
@import "monocraft_fonts.css";
|
||||||
|
@import 'variables.css';
|
||||||
|
@import 'scrollbar.css';
|
||||||
|
@import 'styles.css';
|
||||||
3
frontend/src/assets/styles/styles.css
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
body {
|
||||||
|
background-color: var(--bg-primary);
|
||||||
|
}
|
||||||
@@ -1,255 +1,266 @@
|
|||||||
:root {
|
:root {
|
||||||
/* 编辑器区域 */
|
--voidraft-font-mono: "HarmonyOS", SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace;
|
||||||
--text-primary: #9BB586; /* 内容区域字体颜色 */
|
|
||||||
|
|
||||||
/* 深色主题颜色变量 */
|
|
||||||
--dark-toolbar-bg: #2d2d2d;
|
|
||||||
--dark-toolbar-border: #404040;
|
|
||||||
--dark-toolbar-text: #ffffff;
|
|
||||||
--dark-toolbar-text-secondary: #cccccc;
|
|
||||||
--dark-toolbar-button-hover: #404040;
|
|
||||||
--dark-tab-active-line: linear-gradient(90deg, #007acc 0%, #0099ff 100%);
|
|
||||||
--dark-bg-secondary: #0E1217;
|
|
||||||
--dark-text-secondary: #a0aec0;
|
|
||||||
--dark-text-muted: #666;
|
|
||||||
--dark-border-color: #2d3748;
|
|
||||||
--dark-settings-bg: #2a2a2a;
|
|
||||||
--dark-settings-card-bg: #333333;
|
|
||||||
--dark-settings-text: #ffffff;
|
|
||||||
--dark-settings-text-secondary: #cccccc;
|
|
||||||
--dark-settings-border: #444444;
|
|
||||||
--dark-settings-input-bg: #3a3a3a;
|
|
||||||
--dark-settings-input-border: #555555;
|
|
||||||
--dark-settings-hover: #404040;
|
|
||||||
--dark-scrollbar-track: #2a2a2a;
|
|
||||||
--dark-scrollbar-thumb: #555555;
|
|
||||||
--dark-scrollbar-thumb-hover: #666666;
|
|
||||||
--dark-selection-bg: rgba(181, 206, 168, 0.1);
|
|
||||||
--dark-selection-text: #b5cea8;
|
|
||||||
--dark-danger-color: #ff6b6b;
|
|
||||||
--dark-bg-primary: #1a1a1a;
|
|
||||||
--dark-bg-hover: #2a2a2a;
|
|
||||||
--dark-loading-bg-gradient: radial-gradient(#222922, #000500);
|
|
||||||
--dark-loading-color: #fff;
|
|
||||||
--dark-loading-glow: 0 0 10px rgba(50, 255, 50, 0.5), 0 0 5px rgba(100, 255, 100, 0.5);
|
|
||||||
--dark-loading-done-color: #6f6;
|
|
||||||
--dark-loading-overlay: linear-gradient(transparent 0%, rgba(10, 16, 10, 0.5) 50%);
|
|
||||||
|
|
||||||
/* 浅色主题颜色变量 */
|
|
||||||
--light-toolbar-bg: #f8f9fa;
|
|
||||||
--light-toolbar-border: #e9ecef;
|
|
||||||
--light-toolbar-text: #212529;
|
|
||||||
--light-toolbar-text-secondary: #495057;
|
|
||||||
--light-toolbar-button-hover: #e9ecef;
|
|
||||||
--light-tab-active-line: linear-gradient(90deg, #0066cc 0%, #0088ff 100%);
|
|
||||||
--light-bg-secondary: #f7fef7;
|
|
||||||
--light-text-secondary: #374151;
|
|
||||||
--light-text-muted: #6b7280;
|
|
||||||
--light-border-color: #e5e7eb;
|
|
||||||
--light-settings-bg: #ffffff;
|
|
||||||
--light-settings-card-bg: #f8f9fa;
|
|
||||||
--light-settings-text: #212529;
|
|
||||||
--light-settings-text-secondary: #6c757d;
|
|
||||||
--light-settings-border: #dee2e6;
|
|
||||||
--light-settings-input-bg: #ffffff;
|
|
||||||
--light-settings-input-border: #ced4da;
|
|
||||||
--light-settings-hover: #e9ecef;
|
|
||||||
--light-scrollbar-track: #f1f3f4;
|
|
||||||
--light-scrollbar-thumb: #c1c1c1;
|
|
||||||
--light-scrollbar-thumb-hover: #a8a8a8;
|
|
||||||
--light-selection-bg: rgba(59, 130, 246, 0.15);
|
|
||||||
--light-selection-text: #2563eb;
|
|
||||||
--light-danger-color: #dc3545;
|
|
||||||
--light-bg-primary: #ffffff;
|
|
||||||
--light-bg-hover: #f1f3f4;
|
|
||||||
--light-loading-bg-gradient: radial-gradient(#f0f6f0, #e5efe5);
|
|
||||||
--light-loading-color: #1a3c1a;
|
|
||||||
--light-loading-glow: 0 0 10px rgba(0, 160, 0, 0.3), 0 0 5px rgba(0, 120, 0, 0.2);
|
|
||||||
--light-loading-done-color: #008800;
|
|
||||||
--light-loading-overlay: linear-gradient(transparent 0%, rgba(220, 240, 220, 0.5) 50%);
|
|
||||||
|
|
||||||
/* 默认使用深色主题 */
|
|
||||||
--toolbar-bg: var(--dark-toolbar-bg);
|
|
||||||
--toolbar-border: var(--dark-toolbar-border);
|
|
||||||
--toolbar-text: var(--dark-toolbar-text);
|
|
||||||
--toolbar-text-secondary: var(--dark-toolbar-text-secondary);
|
|
||||||
--toolbar-button-hover: var(--dark-toolbar-button-hover);
|
|
||||||
--toolbar-separator: var(--dark-toolbar-button-hover);
|
|
||||||
--tab-active-line: var(--dark-tab-active-line);
|
|
||||||
--bg-secondary: var(--dark-bg-secondary);
|
|
||||||
--text-secondary: var(--dark-text-secondary);
|
|
||||||
--text-muted: var(--dark-text-muted);
|
|
||||||
--border-color: var(--dark-border-color);
|
|
||||||
--settings-bg: var(--dark-settings-bg);
|
|
||||||
--settings-card-bg: var(--dark-settings-card-bg);
|
|
||||||
--settings-text: var(--dark-settings-text);
|
|
||||||
--settings-text-secondary: var(--dark-settings-text-secondary);
|
|
||||||
--settings-border: var(--dark-settings-border);
|
|
||||||
--settings-input-bg: var(--dark-settings-input-bg);
|
|
||||||
--settings-input-border: var(--dark-settings-input-border);
|
|
||||||
--settings-hover: var(--dark-settings-hover);
|
|
||||||
--scrollbar-track: var(--dark-scrollbar-track);
|
|
||||||
--scrollbar-thumb: var(--dark-scrollbar-thumb);
|
|
||||||
--scrollbar-thumb-hover: var(--dark-scrollbar-thumb-hover);
|
|
||||||
--selection-bg: var(--dark-selection-bg);
|
|
||||||
--selection-text: var(--dark-selection-text);
|
|
||||||
--text-danger: var(--dark-danger-color);
|
|
||||||
--bg-primary: var(--dark-bg-primary);
|
|
||||||
--bg-hover: var(--dark-bg-hover);
|
|
||||||
--voidraft-bg-gradient: var(--dark-loading-bg-gradient);
|
|
||||||
--voidraft-loading-color: var(--dark-loading-color);
|
|
||||||
--voidraft-loading-glow: var(--dark-loading-glow);
|
|
||||||
--voidraft-loading-done-color: var(--dark-loading-done-color);
|
|
||||||
--voidraft-loading-overlay: var(--dark-loading-overlay);
|
|
||||||
--voidraft-mono-font: "HarmonyOS Sans Mono", monospace;
|
|
||||||
|
|
||||||
color-scheme: light dark;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 监听系统深色主题 */
|
/* 默认/暗色主题 */
|
||||||
@media (prefers-color-scheme: dark) {
|
:root,
|
||||||
:root[data-theme="auto"] {
|
:root[data-theme="dark"],
|
||||||
--toolbar-bg: var(--dark-toolbar-bg);
|
:root[data-theme="auto"] {
|
||||||
--toolbar-border: var(--dark-toolbar-border);
|
color-scheme: dark;
|
||||||
--toolbar-text: var(--dark-toolbar-text);
|
|
||||||
--toolbar-text-secondary: var(--dark-toolbar-text-secondary);
|
--text-primary: #ffffff;
|
||||||
--toolbar-button-hover: var(--dark-toolbar-button-hover);
|
|
||||||
--toolbar-separator: var(--dark-toolbar-button-hover);
|
--toolbar-bg: #2d2d2d;
|
||||||
--tab-active-line: var(--dark-tab-active-line);
|
--toolbar-border: #404040;
|
||||||
--bg-secondary: var(--dark-bg-secondary);
|
--toolbar-text: #ffffff;
|
||||||
--text-secondary: var(--dark-text-secondary);
|
--toolbar-text-secondary: #cccccc;
|
||||||
--text-muted: var(--dark-text-muted);
|
--toolbar-button-hover: #404040;
|
||||||
--border-color: var(--dark-border-color);
|
--toolbar-separator: #404040;
|
||||||
--settings-bg: var(--dark-settings-bg);
|
|
||||||
--settings-card-bg: var(--dark-settings-card-bg);
|
--tab-active-line: linear-gradient(90deg, #007acc 0%, #0099ff 100%);
|
||||||
--settings-text: var(--dark-settings-text);
|
--bg-secondary: #0e1217;
|
||||||
--settings-text-secondary: var(--dark-settings-text-secondary);
|
--bg-primary: #1a1a1a;
|
||||||
--settings-border: var(--dark-settings-border);
|
--bg-hover: #2a2a2a;
|
||||||
--settings-input-bg: var(--dark-settings-input-bg);
|
|
||||||
--settings-input-border: var(--dark-settings-input-border);
|
--text-secondary: #a0aec0;
|
||||||
--settings-hover: var(--dark-settings-hover);
|
--text-muted: #666666;
|
||||||
--scrollbar-track: var(--dark-scrollbar-track);
|
--text-danger: #ff6b6b;
|
||||||
--scrollbar-thumb: var(--dark-scrollbar-thumb);
|
|
||||||
--scrollbar-thumb-hover: var(--dark-scrollbar-thumb-hover);
|
--border-color: #2d3748;
|
||||||
--selection-bg: var(--dark-selection-bg);
|
|
||||||
--selection-text: var(--dark-selection-text);
|
--settings-bg: #2a2a2a;
|
||||||
--text-danger: var(--dark-danger-color);
|
--settings-card-bg: #333333;
|
||||||
--bg-primary: var(--dark-bg-primary);
|
--settings-text: #ffffff;
|
||||||
--bg-hover: var(--dark-bg-hover);
|
--settings-text-secondary: #cccccc;
|
||||||
--voidraft-bg-gradient: var(--dark-loading-bg-gradient);
|
--settings-border: #444444;
|
||||||
--voidraft-loading-color: var(--dark-loading-color);
|
--settings-input-bg: #3a3a3a;
|
||||||
--voidraft-loading-glow: var(--dark-loading-glow);
|
--settings-input-border: #555555;
|
||||||
--voidraft-loading-done-color: var(--dark-loading-done-color);
|
--settings-hover: #404040;
|
||||||
--voidraft-loading-overlay: var(--dark-loading-overlay);
|
|
||||||
}
|
--scrollbar-track: #2a2a2a;
|
||||||
|
--scrollbar-thumb: #555555;
|
||||||
|
--scrollbar-thumb-hover: #666666;
|
||||||
|
|
||||||
|
--selection-bg: rgba(181, 206, 168, 0.1);
|
||||||
|
--selection-text: #b5cea8;
|
||||||
|
|
||||||
|
--voidraft-bg-gradient: radial-gradient(#222922, #000500);
|
||||||
|
--voidraft-loading-color: #ffffff;
|
||||||
|
--voidraft-loading-glow: 0 0 10px rgba(50, 255, 50, 0.5), 0 0 5px rgba(100, 255, 100, 0.5);
|
||||||
|
--voidraft-loading-done-color: #66ff66;
|
||||||
|
--voidraft-loading-overlay: linear-gradient(transparent 0%, rgba(10, 16, 10, 0.5) 50%);
|
||||||
|
|
||||||
|
/* Markdown 代码块样式 - 暗色主题 */
|
||||||
|
--cm-codeblock-bg: rgba(46, 51, 69, 0.8);
|
||||||
|
--cm-codeblock-radius: 0.4rem;
|
||||||
|
|
||||||
|
|
||||||
|
/* Markdown 内联代码样式 */
|
||||||
|
--cm-inline-code-bg: oklch(28% 0.02 255);
|
||||||
|
|
||||||
|
/* Markdown 上标/下标样式 */
|
||||||
|
--cm-superscript-color: inherit;
|
||||||
|
--cm-subscript-color: inherit;
|
||||||
|
|
||||||
|
/* Markdown 高亮样式 */
|
||||||
|
--cm-highlight-background: rgba(250, 204, 21, 0.35);
|
||||||
|
|
||||||
|
/* Markdown 表格样式 - 暗色主题 */
|
||||||
|
--cm-table-bg: rgba(35, 40, 52, 0.5);
|
||||||
|
--cm-table-header-bg: rgba(46, 51, 69, 0.7);
|
||||||
|
--cm-table-border: rgba(75, 85, 99, 0.35);
|
||||||
|
--cm-table-row-hover: rgba(55, 62, 78, 0.5);
|
||||||
|
|
||||||
|
/* Search Panel - Dark Theme */
|
||||||
|
--search-panel-bg: #252526;
|
||||||
|
--search-panel-text: #cccccc;
|
||||||
|
--search-panel-border: #454545;
|
||||||
|
--search-input-bg: #3c3c3c;
|
||||||
|
--search-input-text: #cccccc;
|
||||||
|
--search-input-border: #3c3c3c;
|
||||||
|
--search-focus-border: #0078d4;
|
||||||
|
--search-btn-hover: rgba(255, 255, 255, 0.1);
|
||||||
|
--search-btn-active-bg: rgba(0, 120, 212, 0.4);
|
||||||
|
--search-btn-active-text: #ffffff;
|
||||||
|
--search-error-border: #f14c4c;
|
||||||
|
--search-error-bg: #5a1d1d;
|
||||||
|
|
||||||
|
/* Search Match Highlight - Dark Theme (VSCode style) */
|
||||||
|
--search-match-bg: rgba(250, 220, 81, 0.85);
|
||||||
|
--search-match-selected-bg: rgba(81, 175, 255, 0.5);
|
||||||
|
--search-match-selected-border: #74b0f4;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 监听系统浅色主题 */
|
/* 亮色主题 */
|
||||||
|
:root[data-theme="light"] {
|
||||||
|
color-scheme: light;
|
||||||
|
|
||||||
|
--text-primary: #000000;
|
||||||
|
|
||||||
|
--toolbar-bg: #f8f9fa;
|
||||||
|
--toolbar-border: #e9ecef;
|
||||||
|
--toolbar-text: #212529;
|
||||||
|
--toolbar-text-secondary: #495057;
|
||||||
|
--toolbar-button-hover: #e9ecef;
|
||||||
|
--toolbar-separator: #e9ecef;
|
||||||
|
|
||||||
|
--tab-active-line: linear-gradient(90deg, #0066cc 0%, #0088ff 100%);
|
||||||
|
--bg-secondary: #f7fef7;
|
||||||
|
--bg-primary: #ffffff;
|
||||||
|
--bg-hover: #f1f3f4;
|
||||||
|
|
||||||
|
--text-secondary: #374151;
|
||||||
|
--text-muted: #6b7280;
|
||||||
|
--text-danger: #dc3545;
|
||||||
|
|
||||||
|
--border-color: #e5e7eb;
|
||||||
|
|
||||||
|
--settings-bg: #ffffff;
|
||||||
|
--settings-card-bg: #f8f9fa;
|
||||||
|
--settings-text: #212529;
|
||||||
|
--settings-text-secondary: #6c757d;
|
||||||
|
--settings-border: #dee2e6;
|
||||||
|
--settings-input-bg: #ffffff;
|
||||||
|
--settings-input-border: #ced4da;
|
||||||
|
--settings-hover: #e9ecef;
|
||||||
|
|
||||||
|
--scrollbar-track: #f1f3f4;
|
||||||
|
--scrollbar-thumb: #c1c1c1;
|
||||||
|
--scrollbar-thumb-hover: #a8a8a8;
|
||||||
|
|
||||||
|
--selection-bg: rgba(59, 130, 246, 0.15);
|
||||||
|
--selection-text: #2563eb;
|
||||||
|
|
||||||
|
--voidraft-bg-gradient: radial-gradient(#f0f6f0, #e5efe5);
|
||||||
|
--voidraft-loading-color: #1a3c1a;
|
||||||
|
--voidraft-loading-glow: 0 0 10px rgba(0, 160, 0, 0.3), 0 0 5px rgba(0, 120, 0, 0.2);
|
||||||
|
--voidraft-loading-done-color: #008800;
|
||||||
|
--voidraft-loading-overlay: linear-gradient(transparent 0%, rgba(220, 240, 220, 0.5) 50%);
|
||||||
|
|
||||||
|
/* Markdown 代码块样式 - 亮色主题 */
|
||||||
|
--cm-codeblock-bg: #f3f3f3;
|
||||||
|
--cm-codeblock-radius: 0.4rem;
|
||||||
|
|
||||||
|
/* Markdown 内联代码样式 */
|
||||||
|
--cm-inline-code-bg: oklch(92.9% 0.013 255.508);
|
||||||
|
|
||||||
|
/* Markdown 上标/下标样式 */
|
||||||
|
--cm-superscript-color: inherit;
|
||||||
|
--cm-subscript-color: inherit;
|
||||||
|
|
||||||
|
/* Markdown 高亮样式 */
|
||||||
|
--cm-highlight-background: rgba(253, 224, 71, 0.45);
|
||||||
|
|
||||||
|
/* Markdown 表格样式 - 亮色主题 */
|
||||||
|
--cm-table-bg: oklch(97.5% 0.006 255);
|
||||||
|
--cm-table-header-bg: oklch(94% 0.01 255);
|
||||||
|
--cm-table-border: oklch(88% 0.008 255);
|
||||||
|
--cm-table-row-hover: oklch(95% 0.008 255);
|
||||||
|
|
||||||
|
/* Search Panel - Light Theme */
|
||||||
|
--search-panel-bg: #f3f3f3;
|
||||||
|
--search-panel-text: #616161;
|
||||||
|
--search-panel-border: #c8c8c8;
|
||||||
|
--search-input-bg: #ffffff;
|
||||||
|
--search-input-text: #616161;
|
||||||
|
--search-input-border: #cecece;
|
||||||
|
--search-focus-border: #0078d4;
|
||||||
|
--search-btn-hover: rgba(0, 0, 0, 0.1);
|
||||||
|
--search-btn-active-bg: rgba(0, 120, 212, 0.2);
|
||||||
|
--search-btn-active-text: #0078d4;
|
||||||
|
--search-error-border: #e51400;
|
||||||
|
--search-error-bg: #fdeceb;
|
||||||
|
|
||||||
|
/* Search Match Highlight - Light Theme (VSCode style) */
|
||||||
|
--search-match-bg: rgba(250, 220, 81, 0.85);
|
||||||
|
--search-match-selected-bg: rgba(38, 143, 255, 0.3);
|
||||||
|
--search-match-selected-border: #268fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 跟随系统的浅色偏好 */
|
||||||
@media (prefers-color-scheme: light) {
|
@media (prefers-color-scheme: light) {
|
||||||
:root[data-theme="auto"] {
|
:root[data-theme="auto"] {
|
||||||
--toolbar-bg: var(--light-toolbar-bg);
|
color-scheme: light;
|
||||||
--toolbar-border: var(--light-toolbar-border);
|
|
||||||
--toolbar-text: var(--light-toolbar-text);
|
--text-primary: #000000;
|
||||||
--toolbar-text-secondary: var(--light-toolbar-text-secondary);
|
|
||||||
--toolbar-button-hover: var(--light-toolbar-button-hover);
|
--toolbar-bg: #f8f9fa;
|
||||||
--toolbar-separator: var(--light-toolbar-button-hover);
|
--toolbar-border: #e9ecef;
|
||||||
--tab-active-line: var(--light-tab-active-line);
|
--toolbar-text: #212529;
|
||||||
--bg-secondary: var(--light-bg-secondary);
|
--toolbar-text-secondary: #495057;
|
||||||
--text-secondary: var(--light-text-secondary);
|
--toolbar-button-hover: #e9ecef;
|
||||||
--text-muted: var(--light-text-muted);
|
--toolbar-separator: #e9ecef;
|
||||||
--border-color: var(--light-border-color);
|
|
||||||
--settings-bg: var(--light-settings-bg);
|
--tab-active-line: linear-gradient(90deg, #0066cc 0%, #0088ff 100%);
|
||||||
--settings-card-bg: var(--light-settings-card-bg);
|
--bg-secondary: #f7fef7;
|
||||||
--settings-text: var(--light-settings-text);
|
--bg-primary: #ffffff;
|
||||||
--settings-text-secondary: var(--light-settings-text-secondary);
|
--bg-hover: #f1f3f4;
|
||||||
--settings-border: var(--light-settings-border);
|
|
||||||
--settings-input-bg: var(--light-settings-input-bg);
|
--text-secondary: #374151;
|
||||||
--settings-input-border: var(--light-settings-input-border);
|
--text-muted: #6b7280;
|
||||||
--settings-hover: var(--light-settings-hover);
|
--text-danger: #dc3545;
|
||||||
--scrollbar-track: var(--light-scrollbar-track);
|
|
||||||
--scrollbar-thumb: var(--light-scrollbar-thumb);
|
--border-color: #e5e7eb;
|
||||||
--scrollbar-thumb-hover: var(--light-scrollbar-thumb-hover);
|
|
||||||
--selection-bg: var(--light-selection-bg);
|
--settings-bg: #ffffff;
|
||||||
--selection-text: var(--light-selection-text);
|
--settings-card-bg: #f8f9fa;
|
||||||
--text-danger: var(--light-danger-color);
|
--settings-text: #212529;
|
||||||
--bg-primary: var(--light-bg-primary);
|
--settings-text-secondary: #6c757d;
|
||||||
--bg-hover: var(--light-bg-hover);
|
--settings-border: #dee2e6;
|
||||||
--voidraft-bg-gradient: var(--light-loading-bg-gradient);
|
--settings-input-bg: #ffffff;
|
||||||
--voidraft-loading-color: var(--light-loading-color);
|
--settings-input-border: #ced4da;
|
||||||
--voidraft-loading-glow: var(--light-loading-glow);
|
--settings-hover: #e9ecef;
|
||||||
--voidraft-loading-done-color: var(--light-loading-done-color);
|
|
||||||
--voidraft-loading-overlay: var(--light-loading-overlay);
|
--scrollbar-track: #f1f3f4;
|
||||||
|
--scrollbar-thumb: #c1c1c1;
|
||||||
|
--scrollbar-thumb-hover: #a8a8a8;
|
||||||
|
|
||||||
|
--selection-bg: rgba(59, 130, 246, 0.15);
|
||||||
|
--selection-text: #2563eb;
|
||||||
|
|
||||||
|
--voidraft-bg-gradient: radial-gradient(#f0f6f0, #e5efe5);
|
||||||
|
--voidraft-loading-color: #1a3c1a;
|
||||||
|
--voidraft-loading-glow: 0 0 10px rgba(0, 160, 0, 0.3), 0 0 5px rgba(0, 120, 0, 0.2);
|
||||||
|
--voidraft-loading-done-color: #008800;
|
||||||
|
--voidraft-loading-overlay: linear-gradient(transparent 0%, rgba(220, 240, 220, 0.5) 50%);
|
||||||
|
|
||||||
|
/* Markdown 代码块样式 - 亮色主题 */
|
||||||
|
--cm-codeblock-bg: oklch(92.9% 0.013 255.508);
|
||||||
|
--cm-codeblock-radius: 0.4rem;
|
||||||
|
|
||||||
|
/* Markdown 内联代码样式 */
|
||||||
|
--cm-inline-code-bg: oklch(92.9% 0.013 255.508);
|
||||||
|
|
||||||
|
/* Markdown 上标/下标样式 */
|
||||||
|
--cm-superscript-color: inherit;
|
||||||
|
--cm-subscript-color: inherit;
|
||||||
|
|
||||||
|
/* Markdown 高亮样式 */
|
||||||
|
--cm-highlight-background: rgba(253, 224, 71, 0.45);
|
||||||
|
|
||||||
|
/* Markdown 表格样式 - 亮色主题 */
|
||||||
|
--cm-table-bg: oklch(97.5% 0.006 255);
|
||||||
|
--cm-table-header-bg: oklch(94% 0.01 255);
|
||||||
|
--cm-table-border: oklch(88% 0.008 255);
|
||||||
|
--cm-table-row-hover: oklch(95% 0.008 255);
|
||||||
|
|
||||||
|
/* Search Panel - Light Theme (auto) */
|
||||||
|
--search-panel-bg: #f3f3f3;
|
||||||
|
--search-panel-text: #616161;
|
||||||
|
--search-panel-border: #c8c8c8;
|
||||||
|
--search-input-bg: #ffffff;
|
||||||
|
--search-input-text: #616161;
|
||||||
|
--search-input-border: #cecece;
|
||||||
|
--search-focus-border: #0078d4;
|
||||||
|
--search-btn-hover: rgba(0, 0, 0, 0.1);
|
||||||
|
--search-btn-active-bg: rgba(0, 120, 212, 0.2);
|
||||||
|
--search-btn-active-text: #0078d4;
|
||||||
|
--search-error-border: #e51400;
|
||||||
|
--search-error-bg: #fdeceb;
|
||||||
|
|
||||||
|
/* Search Match Highlight - Light Theme auto (VSCode style) */
|
||||||
|
--search-match-bg: rgba(250, 220, 81, 0.85);
|
||||||
|
--search-match-selected-bg: rgba(38, 143, 255, 0.3);
|
||||||
|
--search-match-selected-border: #268fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 手动选择浅色主题 */
|
|
||||||
:root[data-theme="light"] {
|
|
||||||
--toolbar-bg: var(--light-toolbar-bg);
|
|
||||||
--toolbar-border: var(--light-toolbar-border);
|
|
||||||
--toolbar-text: var(--light-toolbar-text);
|
|
||||||
--toolbar-text-secondary: var(--light-toolbar-text-secondary);
|
|
||||||
--toolbar-button-hover: var(--light-toolbar-button-hover);
|
|
||||||
--toolbar-separator: var(--light-toolbar-button-hover);
|
|
||||||
--tab-active-line: var(--light-tab-active-line);
|
|
||||||
--bg-secondary: var(--light-bg-secondary);
|
|
||||||
--text-secondary: var(--light-text-secondary);
|
|
||||||
--text-muted: var(--light-text-muted);
|
|
||||||
--border-color: var(--light-border-color);
|
|
||||||
--settings-bg: var(--light-settings-bg);
|
|
||||||
--settings-card-bg: var(--light-settings-card-bg);
|
|
||||||
--settings-text: var(--light-settings-text);
|
|
||||||
--settings-text-secondary: var(--light-settings-text-secondary);
|
|
||||||
--settings-border: var(--light-settings-border);
|
|
||||||
--settings-input-bg: var(--light-settings-input-bg);
|
|
||||||
--settings-input-border: var(--light-settings-input-border);
|
|
||||||
--settings-hover: var(--light-settings-hover);
|
|
||||||
--scrollbar-track: var(--light-scrollbar-track);
|
|
||||||
--scrollbar-thumb: var(--light-scrollbar-thumb);
|
|
||||||
--scrollbar-thumb-hover: var(--light-scrollbar-thumb-hover);
|
|
||||||
--selection-bg: var(--light-selection-bg);
|
|
||||||
--selection-text: var(--light-selection-text);
|
|
||||||
--text-danger: var(--light-danger-color);
|
|
||||||
--bg-primary: var(--light-bg-primary);
|
|
||||||
--bg-hover: var(--light-bg-hover);
|
|
||||||
--voidraft-bg-gradient: var(--light-loading-bg-gradient);
|
|
||||||
--voidraft-loading-color: var(--light-loading-color);
|
|
||||||
--voidraft-loading-glow: var(--light-loading-glow);
|
|
||||||
--voidraft-loading-done-color: var(--light-loading-done-color);
|
|
||||||
--voidraft-loading-overlay: var(--light-loading-overlay);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 手动选择深色主题 */
|
|
||||||
:root[data-theme="dark"] {
|
|
||||||
--toolbar-bg: var(--dark-toolbar-bg);
|
|
||||||
--toolbar-border: var(--dark-toolbar-border);
|
|
||||||
--toolbar-text: var(--dark-toolbar-text);
|
|
||||||
--toolbar-text-secondary: var(--dark-toolbar-text-secondary);
|
|
||||||
--toolbar-button-hover: var(--dark-toolbar-button-hover);
|
|
||||||
--toolbar-separator: var(--dark-toolbar-button-hover);
|
|
||||||
--tab-active-line: var(--dark-tab-active-line);
|
|
||||||
--bg-secondary: var(--dark-bg-secondary);
|
|
||||||
--text-secondary: var(--dark-text-secondary);
|
|
||||||
--text-muted: var(--dark-text-muted);
|
|
||||||
--border-color: var(--dark-border-color);
|
|
||||||
--settings-bg: var(--dark-settings-bg);
|
|
||||||
--settings-card-bg: var(--dark-settings-card-bg);
|
|
||||||
--settings-text: var(--dark-settings-text);
|
|
||||||
--settings-text-secondary: var(--dark-settings-text-secondary);
|
|
||||||
--settings-border: var(--dark-settings-border);
|
|
||||||
--settings-input-bg: var(--dark-settings-input-bg);
|
|
||||||
--settings-input-border: var(--dark-settings-input-border);
|
|
||||||
--settings-hover: var(--dark-settings-hover);
|
|
||||||
--scrollbar-track: var(--dark-scrollbar-track);
|
|
||||||
--scrollbar-thumb: var(--dark-scrollbar-thumb);
|
|
||||||
--scrollbar-thumb-hover: var(--dark-scrollbar-thumb-hover);
|
|
||||||
--selection-bg: var(--dark-selection-bg);
|
|
||||||
--selection-text: var(--dark-selection-text);
|
|
||||||
--text-danger: var(--dark-danger-color);
|
|
||||||
--bg-primary: var(--dark-bg-primary);
|
|
||||||
--bg-hover: var(--dark-bg-hover);
|
|
||||||
--voidraft-bg-gradient: var(--dark-loading-bg-gradient);
|
|
||||||
--voidraft-loading-color: var(--dark-loading-color);
|
|
||||||
--voidraft-loading-glow: var(--dark-loading-glow);
|
|
||||||
--voidraft-loading-done-color: var(--dark-loading-done-color);
|
|
||||||
--voidraft-loading-overlay: var(--dark-loading-overlay);
|
|
||||||
}
|
|
||||||
@@ -1,43 +1,16 @@
|
|||||||
import {
|
import {
|
||||||
AppConfig,
|
AppConfig,
|
||||||
AppearanceConfig,
|
AuthMethod,
|
||||||
EditingConfig,
|
SyncTarget,
|
||||||
GeneralConfig,
|
KeyBindingType,
|
||||||
LanguageType,
|
LanguageType,
|
||||||
SystemThemeType,
|
SystemThemeType,
|
||||||
TabType,
|
TabType,
|
||||||
UpdatesConfig,
|
|
||||||
UpdateSourceType,
|
|
||||||
GitBackupConfig,
|
|
||||||
AuthMethod
|
|
||||||
} from '@/../bindings/voidraft/internal/models/models';
|
} from '@/../bindings/voidraft/internal/models/models';
|
||||||
import {FONT_OPTIONS} from './fonts';
|
import {FONT_OPTIONS} from './fonts';
|
||||||
|
|
||||||
// 配置键映射和限制的类型定义
|
// 统一配置键映射(平级展开)
|
||||||
export type GeneralConfigKeyMap = {
|
export const CONFIG_KEY_MAP = {
|
||||||
readonly [K in keyof GeneralConfig]: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type EditingConfigKeyMap = {
|
|
||||||
readonly [K in keyof EditingConfig]: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type AppearanceConfigKeyMap = {
|
|
||||||
readonly [K in keyof AppearanceConfig]: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type UpdatesConfigKeyMap = {
|
|
||||||
readonly [K in keyof UpdatesConfig]: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type BackupConfigKeyMap = {
|
|
||||||
readonly [K in keyof GitBackupConfig]: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type NumberConfigKey = 'fontSize' | 'tabSize' | 'lineHeight';
|
|
||||||
|
|
||||||
// 配置键映射
|
|
||||||
export const GENERAL_CONFIG_KEY_MAP: GeneralConfigKeyMap = {
|
|
||||||
alwaysOnTop: 'general.alwaysOnTop',
|
alwaysOnTop: 'general.alwaysOnTop',
|
||||||
dataPath: 'general.dataPath',
|
dataPath: 'general.dataPath',
|
||||||
enableSystemTray: 'general.enableSystemTray',
|
enableSystemTray: 'general.enableSystemTray',
|
||||||
@@ -47,9 +20,8 @@ export const GENERAL_CONFIG_KEY_MAP: GeneralConfigKeyMap = {
|
|||||||
enableWindowSnap: 'general.enableWindowSnap',
|
enableWindowSnap: 'general.enableWindowSnap',
|
||||||
enableLoadingAnimation: 'general.enableLoadingAnimation',
|
enableLoadingAnimation: 'general.enableLoadingAnimation',
|
||||||
enableTabs: 'general.enableTabs',
|
enableTabs: 'general.enableTabs',
|
||||||
} as const;
|
enableMemoryMonitor: 'general.enableMemoryMonitor',
|
||||||
|
|
||||||
export const EDITING_CONFIG_KEY_MAP: EditingConfigKeyMap = {
|
|
||||||
fontSize: 'editing.fontSize',
|
fontSize: 'editing.fontSize',
|
||||||
fontFamily: 'editing.fontFamily',
|
fontFamily: 'editing.fontFamily',
|
||||||
fontWeight: 'editing.fontWeight',
|
fontWeight: 'editing.fontWeight',
|
||||||
@@ -57,38 +29,37 @@ export const EDITING_CONFIG_KEY_MAP: EditingConfigKeyMap = {
|
|||||||
enableTabIndent: 'editing.enableTabIndent',
|
enableTabIndent: 'editing.enableTabIndent',
|
||||||
tabSize: 'editing.tabSize',
|
tabSize: 'editing.tabSize',
|
||||||
tabType: 'editing.tabType',
|
tabType: 'editing.tabType',
|
||||||
autoSaveDelay: 'editing.autoSaveDelay'
|
keymapMode: 'editing.keymapMode',
|
||||||
} as const;
|
autoSaveDelay: 'editing.autoSaveDelay',
|
||||||
|
|
||||||
export const APPEARANCE_CONFIG_KEY_MAP: AppearanceConfigKeyMap = {
|
|
||||||
language: 'appearance.language',
|
language: 'appearance.language',
|
||||||
systemTheme: 'appearance.systemTheme',
|
systemTheme: 'appearance.systemTheme',
|
||||||
currentTheme: 'appearance.currentTheme'
|
currentTheme: 'appearance.currentTheme',
|
||||||
} as const;
|
|
||||||
|
|
||||||
export const UPDATES_CONFIG_KEY_MAP: UpdatesConfigKeyMap = {
|
|
||||||
version: 'updates.version',
|
|
||||||
autoUpdate: 'updates.autoUpdate',
|
autoUpdate: 'updates.autoUpdate',
|
||||||
primarySource: 'updates.primarySource',
|
|
||||||
backupSource: 'updates.backupSource',
|
|
||||||
backupBeforeUpdate: 'updates.backupBeforeUpdate',
|
backupBeforeUpdate: 'updates.backupBeforeUpdate',
|
||||||
updateTimeout: 'updates.updateTimeout',
|
updateTimeout: 'updates.updateTimeout',
|
||||||
github: 'updates.github',
|
github: 'updates.github',
|
||||||
gitea: 'updates.gitea'
|
|
||||||
|
sync_target: 'sync.target',
|
||||||
|
git_enabled: 'sync.git.enabled',
|
||||||
|
git_auto_sync: 'sync.git.auto_sync',
|
||||||
|
git_sync_interval: 'sync.git.sync_interval',
|
||||||
|
git_repo_url: 'sync.git.repo_url',
|
||||||
|
git_auth_method: 'sync.git.auth_method',
|
||||||
|
git_username: 'sync.git.username',
|
||||||
|
git_password: 'sync.git.password',
|
||||||
|
git_token: 'sync.git.token',
|
||||||
|
git_ssh_key_path: 'sync.git.ssh_key_path',
|
||||||
|
git_ssh_key_passphrase: 'sync.git.ssh_key_passphrase',
|
||||||
|
localfs_enabled: 'sync.localfs.enabled',
|
||||||
|
localfs_auto_sync: 'sync.localfs.auto_sync',
|
||||||
|
localfs_sync_interval: 'sync.localfs.sync_interval',
|
||||||
|
localfs_root_path: 'sync.localfs.root_path',
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export const BACKUP_CONFIG_KEY_MAP: BackupConfigKeyMap = {
|
export type ConfigKey = keyof typeof CONFIG_KEY_MAP;
|
||||||
enabled: 'backup.enabled',
|
export type NumberConfigKey = 'fontSize' | 'tabSize' | 'lineHeight';
|
||||||
repo_url: 'backup.repo_url',
|
|
||||||
auth_method: 'backup.auth_method',
|
|
||||||
username: 'backup.username',
|
|
||||||
password: 'backup.password',
|
|
||||||
token: 'backup.token',
|
|
||||||
ssh_key_path: 'backup.ssh_key_path',
|
|
||||||
ssh_key_passphrase: 'backup.ssh_key_passphrase',
|
|
||||||
backup_interval: 'backup.backup_interval',
|
|
||||||
auto_backup: 'backup.auto_backup',
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
// 配置限制
|
// 配置限制
|
||||||
export const CONFIG_LIMITS = {
|
export const CONFIG_LIMITS = {
|
||||||
@@ -116,6 +87,7 @@ export const DEFAULT_CONFIG: AppConfig = {
|
|||||||
enableWindowSnap: true,
|
enableWindowSnap: true,
|
||||||
enableLoadingAnimation: true,
|
enableLoadingAnimation: true,
|
||||||
enableTabs: false,
|
enableTabs: false,
|
||||||
|
enableMemoryMonitor: true,
|
||||||
},
|
},
|
||||||
editing: {
|
editing: {
|
||||||
fontSize: CONFIG_LIMITS.fontSize.default,
|
fontSize: CONFIG_LIMITS.fontSize.default,
|
||||||
@@ -125,44 +97,47 @@ export const DEFAULT_CONFIG: AppConfig = {
|
|||||||
enableTabIndent: true,
|
enableTabIndent: true,
|
||||||
tabSize: CONFIG_LIMITS.tabSize.default,
|
tabSize: CONFIG_LIMITS.tabSize.default,
|
||||||
tabType: CONFIG_LIMITS.tabType.default,
|
tabType: CONFIG_LIMITS.tabType.default,
|
||||||
|
keymapMode: KeyBindingType.Standard,
|
||||||
autoSaveDelay: 5000
|
autoSaveDelay: 5000
|
||||||
},
|
},
|
||||||
appearance: {
|
appearance: {
|
||||||
language: LanguageType.LangZhCN,
|
language: LanguageType.LangZhCN,
|
||||||
systemTheme: SystemThemeType.SystemThemeAuto,
|
systemTheme: SystemThemeType.SystemThemeDark,
|
||||||
currentTheme: 'default-dark'
|
currentTheme: 'default-dark'
|
||||||
},
|
},
|
||||||
updates: {
|
updates: {
|
||||||
version: "1.0.0",
|
version: "1.0.0",
|
||||||
autoUpdate: true,
|
autoUpdate: true,
|
||||||
primarySource: UpdateSourceType.UpdateSourceGithub,
|
|
||||||
backupSource: UpdateSourceType.UpdateSourceGitea,
|
|
||||||
backupBeforeUpdate: true,
|
backupBeforeUpdate: true,
|
||||||
updateTimeout: 30,
|
updateTimeout: 120,
|
||||||
github: {
|
github: {
|
||||||
owner: "landaiqing",
|
owner: "landaiqing",
|
||||||
repo: "voidraft",
|
repo: "voidraft",
|
||||||
},
|
},
|
||||||
gitea: {
|
|
||||||
baseURL: "https://git.landaiqing.cn",
|
|
||||||
owner: "landaiqing",
|
|
||||||
repo: "voidraft",
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
backup: {
|
sync: {
|
||||||
enabled: false,
|
target: SyncTarget.SyncTargetGit,
|
||||||
repo_url: "",
|
git: {
|
||||||
auth_method: AuthMethod.UserPass,
|
enabled: false,
|
||||||
username: "",
|
auto_sync: false,
|
||||||
password: "",
|
sync_interval: 60,
|
||||||
token: "",
|
repo_url: '',
|
||||||
ssh_key_path: "",
|
auth_method: AuthMethod.UserPass,
|
||||||
ssh_key_passphrase: "",
|
username: '',
|
||||||
backup_interval: 60,
|
password: '',
|
||||||
auto_backup: true,
|
token: '',
|
||||||
|
ssh_key_path: '',
|
||||||
|
ssh_key_passphrase: '',
|
||||||
|
},
|
||||||
|
localfs: {
|
||||||
|
enabled: false,
|
||||||
|
auto_sync: false,
|
||||||
|
sync_interval: 60,
|
||||||
|
root_path: '',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
metadata: {
|
metadata: {
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
lastUpdated: new Date().toString(),
|
lastUpdated: new Date().toString(),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
// 编辑器实例管理
|
// 编辑器实例管理
|
||||||
export const EDITOR_CONFIG = {
|
export const EDITOR_CONFIG = {
|
||||||
/** 最多缓存的编辑器实例数量 */
|
/** 最多缓存的编辑器实例数量 */
|
||||||
MAX_INSTANCES: 5,
|
MAX_INSTANCES: 10,
|
||||||
/** 语法树缓存过期时间(毫秒) */
|
/** 语法树缓存过期时间(毫秒) */
|
||||||
SYNTAX_TREE_CACHE_TIMEOUT: 30000,
|
SYNTAX_TREE_CACHE_TIMEOUT: 30000,
|
||||||
/** 加载状态延迟时间(毫秒) */
|
/** 加载状态延迟时间(毫秒) */
|
||||||
|
|||||||
1945
frontend/src/common/constant/emojies.ts
Normal file
@@ -1,49 +0,0 @@
|
|||||||
/**
|
|
||||||
* 默认翻译配置
|
|
||||||
*/
|
|
||||||
export const DEFAULT_TRANSLATION_CONFIG = {
|
|
||||||
minSelectionLength: 2,
|
|
||||||
maxTranslationLength: 5000,
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 翻译相关的错误消息
|
|
||||||
*/
|
|
||||||
export const TRANSLATION_ERRORS = {
|
|
||||||
NO_TEXT: 'no text to translate',
|
|
||||||
TRANSLATION_FAILED: 'translation failed',
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 翻译结果接口
|
|
||||||
*/
|
|
||||||
export interface TranslationResult {
|
|
||||||
translatedText: string;
|
|
||||||
error?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 语言信息接口
|
|
||||||
*/
|
|
||||||
export interface LanguageInfo {
|
|
||||||
Code: string; // 语言代码
|
|
||||||
Name: string; // 语言名称
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 翻译器扩展配置
|
|
||||||
*/
|
|
||||||
export interface TranslatorConfig {
|
|
||||||
/** 最小选择字符数才显示翻译按钮 */
|
|
||||||
minSelectionLength: number;
|
|
||||||
/** 最大翻译字符数 */
|
|
||||||
maxTranslationLength: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 翻译图标SVG
|
|
||||||
*/
|
|
||||||
export const TRANSLATION_ICON_SVG = `
|
|
||||||
<svg class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24">
|
|
||||||
<path d="M599.68 485.056h-8l30.592 164.672c20.352-7.04 38.72-17.344 54.912-31.104a271.36 271.36 0 0 1-40.704-64.64l32.256-4.032c8.896 17.664 19.072 33.28 30.592 46.72 23.872-27.968 42.24-65.152 55.04-111.744l-154.688 0.128z m121.92 133.76c18.368 15.36 39.36 26.56 62.848 33.472l14.784 4.416-8.64 30.336-14.72-4.352a205.696 205.696 0 0 1-76.48-41.728c-20.672 17.92-44.928 31.552-71.232 40.064l20.736 110.912H519.424l-9.984 72.512h385.152c18.112 0 32.704-14.144 32.704-31.616V295.424a32.128 32.128 0 0 0-32.704-31.552H550.528l35.2 189.696h79.424v-31.552h61.44v31.552h102.4v31.616h-42.688c-14.272 55.488-35.712 100.096-64.64 133.568zM479.36 791.68H193.472c-36.224 0-65.472-28.288-65.472-63.168V191.168C128 156.16 157.312 128 193.472 128h327.68l20.544 104.32h352.832c36.224 0 65.472 28.224 65.472 63.104v537.408c0 34.944-29.312 63.168-65.472 63.168H468.608l10.688-104.32zM337.472 548.352v-33.28H272.768v-48.896h60.16V433.28h-60.16v-41.728h64.704v-32.896h-102.4v189.632h102.4z m158.272 0V453.76c0-17.216-4.032-30.272-12.16-39.488-8.192-9.152-20.288-13.696-36.032-13.696a55.04 55.04 0 0 0-24.768 5.376 39.04 39.04 0 0 0-17.088 15.936h-1.984l-5.056-18.56h-28.352V548.48h37.12V480c0-17.088 2.304-29.376 6.912-36.736 4.608-7.424 12.16-11.072 22.528-11.072 7.616 0 13.248 2.56 16.64 7.872 3.52 5.248 5.312 13.056 5.312 23.488v84.736h36.928z" fill="currentColor"></path>
|
|
||||||
</svg>`;
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
// Enclose abbreviations in <abbr> tags
|
|
||||||
//
|
|
||||||
import MarkdownIt, {StateBlock, StateCore, Token} from 'markdown-it';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 环境接口,包含缩写定义
|
|
||||||
*/
|
|
||||||
interface AbbrEnv {
|
|
||||||
abbreviations?: { [key: string]: string };
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* markdown-it-abbr 插件
|
|
||||||
* 用于支持缩写语法
|
|
||||||
*/
|
|
||||||
export default function abbr_plugin(md: MarkdownIt): void {
|
|
||||||
const escapeRE = md.utils.escapeRE;
|
|
||||||
const arrayReplaceAt = md.utils.arrayReplaceAt;
|
|
||||||
|
|
||||||
// ASCII characters in Cc, Sc, Sm, Sk categories we should terminate on;
|
|
||||||
// you can check character classes here:
|
|
||||||
// http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
|
|
||||||
const OTHER_CHARS = ' \r\n$+<=>^`|~';
|
|
||||||
|
|
||||||
const UNICODE_PUNCT_RE = md.utils.lib.ucmicro.P.source;
|
|
||||||
const UNICODE_SPACE_RE = md.utils.lib.ucmicro.Z.source;
|
|
||||||
|
|
||||||
function abbr_def(state: StateBlock, startLine: number, endLine: number, silent: boolean): boolean {
|
|
||||||
let labelEnd: number;
|
|
||||||
let pos = state.bMarks[startLine] + state.tShift[startLine];
|
|
||||||
const max = state.eMarks[startLine];
|
|
||||||
|
|
||||||
if (pos + 2 >= max) { return false; }
|
|
||||||
|
|
||||||
if (state.src.charCodeAt(pos++) !== 0x2A/* * */) { return false; }
|
|
||||||
if (state.src.charCodeAt(pos++) !== 0x5B/* [ */) { return false; }
|
|
||||||
|
|
||||||
const labelStart = pos;
|
|
||||||
|
|
||||||
for (; pos < max; pos++) {
|
|
||||||
const ch = state.src.charCodeAt(pos);
|
|
||||||
if (ch === 0x5B /* [ */) {
|
|
||||||
return false;
|
|
||||||
} else if (ch === 0x5D /* ] */) {
|
|
||||||
labelEnd = pos;
|
|
||||||
break;
|
|
||||||
} else if (ch === 0x5C /* \ */) {
|
|
||||||
pos++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (labelEnd! < 0 || state.src.charCodeAt(labelEnd! + 1) !== 0x3A/* : */) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (silent) { return true; }
|
|
||||||
|
|
||||||
const label = state.src.slice(labelStart, labelEnd!).replace(/\\(.)/g, '$1');
|
|
||||||
const title = state.src.slice(labelEnd! + 2, max).trim();
|
|
||||||
if (label.length === 0) { return false; }
|
|
||||||
if (title.length === 0) { return false; }
|
|
||||||
|
|
||||||
const env = state.env as AbbrEnv;
|
|
||||||
if (!env.abbreviations) { env.abbreviations = {}; }
|
|
||||||
// prepend ':' to avoid conflict with Object.prototype members
|
|
||||||
if (typeof env.abbreviations[':' + label] === 'undefined') {
|
|
||||||
env.abbreviations[':' + label] = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
state.line = startLine + 1;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function abbr_replace(state: StateCore): void {
|
|
||||||
const blockTokens = state.tokens;
|
|
||||||
|
|
||||||
const env = state.env as AbbrEnv;
|
|
||||||
if (!env.abbreviations) { return; }
|
|
||||||
|
|
||||||
const regSimple = new RegExp('(?:' +
|
|
||||||
Object.keys(env.abbreviations).map(function (x: string) {
|
|
||||||
return x.substr(1);
|
|
||||||
}).sort(function (a: string, b: string) {
|
|
||||||
return b.length - a.length;
|
|
||||||
}).map(escapeRE).join('|') +
|
|
||||||
')');
|
|
||||||
|
|
||||||
const regText = '(^|' + UNICODE_PUNCT_RE + '|' + UNICODE_SPACE_RE +
|
|
||||||
'|[' + OTHER_CHARS.split('').map(escapeRE).join('') + '])' +
|
|
||||||
'(' + Object.keys(env.abbreviations).map(function (x: string) {
|
|
||||||
return x.substr(1);
|
|
||||||
}).sort(function (a: string, b: string) {
|
|
||||||
return b.length - a.length;
|
|
||||||
}).map(escapeRE).join('|') + ')' +
|
|
||||||
'($|' + UNICODE_PUNCT_RE + '|' + UNICODE_SPACE_RE +
|
|
||||||
'|[' + OTHER_CHARS.split('').map(escapeRE).join('') + '])'
|
|
||||||
|
|
||||||
const reg = new RegExp(regText, 'g');
|
|
||||||
|
|
||||||
for (let j = 0, l = blockTokens.length; j < l; j++) {
|
|
||||||
if (blockTokens[j].type !== 'inline') { continue; }
|
|
||||||
let tokens = blockTokens[j].children!;
|
|
||||||
|
|
||||||
// We scan from the end, to keep position when new tags added.
|
|
||||||
for (let i = tokens.length - 1; i >= 0; i--) {
|
|
||||||
const currentToken = tokens[i];
|
|
||||||
if (currentToken.type !== 'text') { continue; }
|
|
||||||
|
|
||||||
let pos = 0;
|
|
||||||
const text = currentToken.content;
|
|
||||||
reg.lastIndex = 0;
|
|
||||||
const nodes: Token[] = [];
|
|
||||||
|
|
||||||
// fast regexp run to determine whether there are any abbreviated words
|
|
||||||
// in the current token
|
|
||||||
if (!regSimple.test(text)) { continue; }
|
|
||||||
|
|
||||||
let m: RegExpExecArray | null;
|
|
||||||
|
|
||||||
while ((m = reg.exec(text))) {
|
|
||||||
if (m.index > 0 || m[1].length > 0) {
|
|
||||||
const token = new state.Token('text', '', 0);
|
|
||||||
token.content = text.slice(pos, m.index + m[1].length);
|
|
||||||
nodes.push(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
const token_o = new state.Token('abbr_open', 'abbr', 1);
|
|
||||||
token_o.attrs = [['title', env.abbreviations[':' + m[2]]]];
|
|
||||||
nodes.push(token_o);
|
|
||||||
|
|
||||||
const token_t = new state.Token('text', '', 0);
|
|
||||||
token_t.content = m[2];
|
|
||||||
nodes.push(token_t);
|
|
||||||
|
|
||||||
const token_c = new state.Token('abbr_close', 'abbr', -1);
|
|
||||||
nodes.push(token_c);
|
|
||||||
|
|
||||||
reg.lastIndex -= m[3].length;
|
|
||||||
pos = reg.lastIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!nodes.length) { continue; }
|
|
||||||
|
|
||||||
if (pos < text.length) {
|
|
||||||
const token = new state.Token('text', '', 0);
|
|
||||||
token.content = text.slice(pos);
|
|
||||||
nodes.push(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
// replace current node
|
|
||||||
blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
md.block.ruler.before('reference', 'abbr_def', abbr_def, { alt: ['paragraph', 'reference'] });
|
|
||||||
|
|
||||||
md.core.ruler.after('linkify', 'abbr_replace', abbr_replace);
|
|
||||||
}
|
|
||||||
@@ -1,209 +0,0 @@
|
|||||||
// Process definition lists
|
|
||||||
//
|
|
||||||
import MarkdownIt, { StateBlock, Token } from 'markdown-it';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* markdown-it-deflist 插件
|
|
||||||
* 用于支持定义列表语法
|
|
||||||
*/
|
|
||||||
export default function deflist_plugin(md: MarkdownIt): void {
|
|
||||||
const isSpace = md.utils.isSpace;
|
|
||||||
|
|
||||||
// Search `[:~][\n ]`, returns next pos after marker on success
|
|
||||||
// or -1 on fail.
|
|
||||||
function skipMarker(state: StateBlock, line: number): number {
|
|
||||||
let start = state.bMarks[line] + state.tShift[line];
|
|
||||||
const max = state.eMarks[line];
|
|
||||||
|
|
||||||
if (start >= max) { return -1; }
|
|
||||||
|
|
||||||
// Check bullet
|
|
||||||
const marker = state.src.charCodeAt(start++);
|
|
||||||
if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; }
|
|
||||||
|
|
||||||
const pos = state.skipSpaces(start);
|
|
||||||
|
|
||||||
// require space after ":"
|
|
||||||
if (start === pos) { return -1; }
|
|
||||||
|
|
||||||
// no empty definitions, e.g. " : "
|
|
||||||
if (pos >= max) { return -1; }
|
|
||||||
|
|
||||||
return start;
|
|
||||||
}
|
|
||||||
|
|
||||||
function markTightParagraphs(state: StateBlock, idx: number): void {
|
|
||||||
const level = state.level + 2;
|
|
||||||
|
|
||||||
for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) {
|
|
||||||
if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {
|
|
||||||
state.tokens[i + 2].hidden = true;
|
|
||||||
state.tokens[i].hidden = true;
|
|
||||||
i += 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function deflist(state: StateBlock, startLine: number, endLine: number, silent: boolean): boolean {
|
|
||||||
if (silent) {
|
|
||||||
// quirk: validation mode validates a dd block only, not a whole deflist
|
|
||||||
if (state.ddIndent < 0) { return false; }
|
|
||||||
return skipMarker(state, startLine) >= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
let nextLine = startLine + 1;
|
|
||||||
if (nextLine >= endLine) { return false; }
|
|
||||||
|
|
||||||
if (state.isEmpty(nextLine)) {
|
|
||||||
nextLine++;
|
|
||||||
if (nextLine >= endLine) { return false; }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (state.sCount[nextLine] < state.blkIndent) { return false; }
|
|
||||||
let contentStart = skipMarker(state, nextLine);
|
|
||||||
if (contentStart < 0) { return false; }
|
|
||||||
|
|
||||||
// Start list
|
|
||||||
const listTokIdx = state.tokens.length;
|
|
||||||
let tight = true;
|
|
||||||
|
|
||||||
const token_dl_o: Token = state.push('dl_open', 'dl', 1);
|
|
||||||
const listLines: [number, number] = [startLine, 0];
|
|
||||||
token_dl_o.map = listLines;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Iterate list items
|
|
||||||
//
|
|
||||||
|
|
||||||
let dtLine = startLine;
|
|
||||||
let ddLine = nextLine;
|
|
||||||
|
|
||||||
// One definition list can contain multiple DTs,
|
|
||||||
// and one DT can be followed by multiple DDs.
|
|
||||||
//
|
|
||||||
// Thus, there is two loops here, and label is
|
|
||||||
// needed to break out of the second one
|
|
||||||
//
|
|
||||||
/* eslint no-labels:0,block-scoped-var:0 */
|
|
||||||
OUTER:
|
|
||||||
for (;;) {
|
|
||||||
let prevEmptyEnd = false;
|
|
||||||
|
|
||||||
const token_dt_o: Token = state.push('dt_open', 'dt', 1);
|
|
||||||
token_dt_o.map = [dtLine, dtLine];
|
|
||||||
|
|
||||||
const token_i: Token = state.push('inline', '', 0);
|
|
||||||
token_i.map = [dtLine, dtLine];
|
|
||||||
token_i.content = state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim();
|
|
||||||
token_i.children = [];
|
|
||||||
|
|
||||||
state.push('dt_close', 'dt', -1);
|
|
||||||
|
|
||||||
for (;;) {
|
|
||||||
const token_dd_o: Token = state.push('dd_open', 'dd', 1);
|
|
||||||
const itemLines: [number, number] = [nextLine, 0];
|
|
||||||
token_dd_o.map = itemLines;
|
|
||||||
|
|
||||||
let pos = contentStart;
|
|
||||||
const max = state.eMarks[ddLine];
|
|
||||||
let offset = state.sCount[ddLine] + contentStart - (state.bMarks[ddLine] + state.tShift[ddLine]);
|
|
||||||
|
|
||||||
while (pos < max) {
|
|
||||||
const ch = state.src.charCodeAt(pos);
|
|
||||||
|
|
||||||
if (isSpace(ch)) {
|
|
||||||
if (ch === 0x09) {
|
|
||||||
offset += 4 - offset % 4;
|
|
||||||
} else {
|
|
||||||
offset++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
contentStart = pos;
|
|
||||||
|
|
||||||
const oldTight = state.tight;
|
|
||||||
const oldDDIndent = state.ddIndent;
|
|
||||||
const oldIndent = state.blkIndent;
|
|
||||||
const oldTShift = state.tShift[ddLine];
|
|
||||||
const oldSCount = state.sCount[ddLine];
|
|
||||||
const oldParentType = state.parentType;
|
|
||||||
state.blkIndent = state.ddIndent = state.sCount[ddLine] + 2;
|
|
||||||
state.tShift[ddLine] = contentStart - state.bMarks[ddLine];
|
|
||||||
state.sCount[ddLine] = offset;
|
|
||||||
state.tight = true;
|
|
||||||
state.parentType = 'deflist' as any;
|
|
||||||
|
|
||||||
state.md.block.tokenize(state, ddLine, endLine);
|
|
||||||
|
|
||||||
// If any of list item is tight, mark list as tight
|
|
||||||
if (!state.tight || prevEmptyEnd) {
|
|
||||||
tight = false;
|
|
||||||
}
|
|
||||||
// Item become loose if finish with empty line,
|
|
||||||
// but we should filter last element, because it means list finish
|
|
||||||
prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1);
|
|
||||||
|
|
||||||
state.tShift[ddLine] = oldTShift;
|
|
||||||
state.sCount[ddLine] = oldSCount;
|
|
||||||
state.tight = oldTight;
|
|
||||||
state.parentType = oldParentType;
|
|
||||||
state.blkIndent = oldIndent;
|
|
||||||
state.ddIndent = oldDDIndent;
|
|
||||||
|
|
||||||
state.push('dd_close', 'dd', -1);
|
|
||||||
|
|
||||||
itemLines[1] = nextLine = state.line;
|
|
||||||
|
|
||||||
if (nextLine >= endLine) { break OUTER; }
|
|
||||||
|
|
||||||
if (state.sCount[nextLine] < state.blkIndent) { break OUTER; }
|
|
||||||
contentStart = skipMarker(state, nextLine);
|
|
||||||
if (contentStart < 0) { break; }
|
|
||||||
|
|
||||||
ddLine = nextLine;
|
|
||||||
|
|
||||||
// go to the next loop iteration:
|
|
||||||
// insert DD tag and repeat checking
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nextLine >= endLine) { break; }
|
|
||||||
dtLine = nextLine;
|
|
||||||
|
|
||||||
if (state.isEmpty(dtLine)) { break; }
|
|
||||||
if (state.sCount[dtLine] < state.blkIndent) { break; }
|
|
||||||
|
|
||||||
ddLine = dtLine + 1;
|
|
||||||
if (ddLine >= endLine) { break; }
|
|
||||||
if (state.isEmpty(ddLine)) { ddLine++; }
|
|
||||||
if (ddLine >= endLine) { break; }
|
|
||||||
|
|
||||||
if (state.sCount[ddLine] < state.blkIndent) { break; }
|
|
||||||
contentStart = skipMarker(state, ddLine);
|
|
||||||
if (contentStart < 0) { break; }
|
|
||||||
|
|
||||||
// go to the next loop iteration:
|
|
||||||
// insert DT and DD tags and repeat checking
|
|
||||||
}
|
|
||||||
|
|
||||||
// Finilize list
|
|
||||||
state.push('dl_close', 'dl', -1);
|
|
||||||
|
|
||||||
listLines[1] = nextLine;
|
|
||||||
|
|
||||||
state.line = nextLine;
|
|
||||||
|
|
||||||
// mark paragraphs tight if needed
|
|
||||||
if (tight) {
|
|
||||||
markTightParagraphs(state, listTokIdx);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
md.block.ruler.before('paragraph', 'deflist', deflist, { alt: ['paragraph', 'reference', 'blockquote'] });
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
export { default as bare } from './lib/bare';
|
|
||||||
export { default as light } from './lib/light';
|
|
||||||
export { default as full } from './lib/full';
|
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import MarkdownIt from 'markdown-it';
|
|
||||||
import emoji_html from './render';
|
|
||||||
import emoji_replace from './replace';
|
|
||||||
import normalize_opts, { EmojiOptions } from './normalize_opts';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Bare emoji 插件(不包含预定义的 emoji 数据)
|
|
||||||
*/
|
|
||||||
export default function emoji_plugin(md: MarkdownIt, options?: Partial<EmojiOptions>): void {
|
|
||||||
const defaults: EmojiOptions = {
|
|
||||||
defs: {},
|
|
||||||
shortcuts: {},
|
|
||||||
enabled: []
|
|
||||||
};
|
|
||||||
|
|
||||||
const opts = normalize_opts(md.utils.assign({}, defaults, options || {}) as EmojiOptions);
|
|
||||||
|
|
||||||
md.renderer.rules.emoji = emoji_html;
|
|
||||||
|
|
||||||
md.core.ruler.after(
|
|
||||||
'linkify',
|
|
||||||
'emoji',
|
|
||||||
emoji_replace(md, opts.defs, opts.shortcuts, opts.scanRE, opts.replaceRE)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,158 +0,0 @@
|
|||||||
// Generated, don't edit
|
|
||||||
import { EmojiDefs } from '../normalize_opts';
|
|
||||||
|
|
||||||
const emojies: EmojiDefs = {
|
|
||||||
"grinning": "😀",
|
|
||||||
"smiley": "😃",
|
|
||||||
"smile": "😄",
|
|
||||||
"grin": "😁",
|
|
||||||
"laughing": "😆",
|
|
||||||
"satisfied": "😆",
|
|
||||||
"sweat_smile": "😅",
|
|
||||||
"joy": "😂",
|
|
||||||
"wink": "😉",
|
|
||||||
"blush": "😊",
|
|
||||||
"innocent": "😇",
|
|
||||||
"heart_eyes": "😍",
|
|
||||||
"kissing_heart": "😘",
|
|
||||||
"kissing": "😗",
|
|
||||||
"kissing_closed_eyes": "😚",
|
|
||||||
"kissing_smiling_eyes": "😙",
|
|
||||||
"yum": "😋",
|
|
||||||
"stuck_out_tongue": "😛",
|
|
||||||
"stuck_out_tongue_winking_eye": "😜",
|
|
||||||
"stuck_out_tongue_closed_eyes": "😝",
|
|
||||||
"neutral_face": "😐",
|
|
||||||
"expressionless": "😑",
|
|
||||||
"no_mouth": "😶",
|
|
||||||
"smirk": "😏",
|
|
||||||
"unamused": "😒",
|
|
||||||
"relieved": "😌",
|
|
||||||
"pensive": "😔",
|
|
||||||
"sleepy": "😪",
|
|
||||||
"sleeping": "😴",
|
|
||||||
"mask": "😷",
|
|
||||||
"dizzy_face": "😵",
|
|
||||||
"sunglasses": "😎",
|
|
||||||
"confused": "😕",
|
|
||||||
"worried": "😟",
|
|
||||||
"open_mouth": "😮",
|
|
||||||
"hushed": "😯",
|
|
||||||
"astonished": "😲",
|
|
||||||
"flushed": "😳",
|
|
||||||
"frowning": "😦",
|
|
||||||
"anguished": "😧",
|
|
||||||
"fearful": "😨",
|
|
||||||
"cold_sweat": "😰",
|
|
||||||
"disappointed_relieved": "😥",
|
|
||||||
"cry": "😢",
|
|
||||||
"sob": "😭",
|
|
||||||
"scream": "😱",
|
|
||||||
"confounded": "😖",
|
|
||||||
"persevere": "😣",
|
|
||||||
"disappointed": "😞",
|
|
||||||
"sweat": "😓",
|
|
||||||
"weary": "😩",
|
|
||||||
"tired_face": "😫",
|
|
||||||
"rage": "😡",
|
|
||||||
"pout": "😡",
|
|
||||||
"angry": "😠",
|
|
||||||
"smiling_imp": "😈",
|
|
||||||
"smiley_cat": "😺",
|
|
||||||
"smile_cat": "😸",
|
|
||||||
"joy_cat": "😹",
|
|
||||||
"heart_eyes_cat": "😻",
|
|
||||||
"smirk_cat": "😼",
|
|
||||||
"kissing_cat": "😽",
|
|
||||||
"scream_cat": "🙀",
|
|
||||||
"crying_cat_face": "😿",
|
|
||||||
"pouting_cat": "😾",
|
|
||||||
"heart": "❤️",
|
|
||||||
"hand": "✋",
|
|
||||||
"raised_hand": "✋",
|
|
||||||
"v": "✌️",
|
|
||||||
"point_up": "☝️",
|
|
||||||
"fist_raised": "✊",
|
|
||||||
"fist": "✊",
|
|
||||||
"monkey_face": "🐵",
|
|
||||||
"cat": "🐱",
|
|
||||||
"cow": "🐮",
|
|
||||||
"mouse": "🐭",
|
|
||||||
"coffee": "☕",
|
|
||||||
"hotsprings": "♨️",
|
|
||||||
"anchor": "⚓",
|
|
||||||
"airplane": "✈️",
|
|
||||||
"hourglass": "⌛",
|
|
||||||
"watch": "⌚",
|
|
||||||
"sunny": "☀️",
|
|
||||||
"star": "⭐",
|
|
||||||
"cloud": "☁️",
|
|
||||||
"umbrella": "☔",
|
|
||||||
"zap": "⚡",
|
|
||||||
"snowflake": "❄️",
|
|
||||||
"sparkles": "✨",
|
|
||||||
"black_joker": "🃏",
|
|
||||||
"mahjong": "🀄",
|
|
||||||
"phone": "☎️",
|
|
||||||
"telephone": "☎️",
|
|
||||||
"envelope": "✉️",
|
|
||||||
"pencil2": "✏️",
|
|
||||||
"black_nib": "✒️",
|
|
||||||
"scissors": "✂️",
|
|
||||||
"wheelchair": "♿",
|
|
||||||
"warning": "⚠️",
|
|
||||||
"aries": "♈",
|
|
||||||
"taurus": "♉",
|
|
||||||
"gemini": "♊",
|
|
||||||
"cancer": "♋",
|
|
||||||
"leo": "♌",
|
|
||||||
"virgo": "♍",
|
|
||||||
"libra": "♎",
|
|
||||||
"scorpius": "♏",
|
|
||||||
"sagittarius": "♐",
|
|
||||||
"capricorn": "♑",
|
|
||||||
"aquarius": "♒",
|
|
||||||
"pisces": "♓",
|
|
||||||
"heavy_multiplication_x": "✖️",
|
|
||||||
"heavy_plus_sign": "➕",
|
|
||||||
"heavy_minus_sign": "➖",
|
|
||||||
"heavy_division_sign": "➗",
|
|
||||||
"bangbang": "‼️",
|
|
||||||
"interrobang": "⁉️",
|
|
||||||
"question": "❓",
|
|
||||||
"grey_question": "❔",
|
|
||||||
"grey_exclamation": "❕",
|
|
||||||
"exclamation": "❗",
|
|
||||||
"heavy_exclamation_mark": "❗",
|
|
||||||
"wavy_dash": "〰️",
|
|
||||||
"recycle": "♻️",
|
|
||||||
"white_check_mark": "✅",
|
|
||||||
"ballot_box_with_check": "☑️",
|
|
||||||
"heavy_check_mark": "✔️",
|
|
||||||
"x": "❌",
|
|
||||||
"negative_squared_cross_mark": "❎",
|
|
||||||
"curly_loop": "➰",
|
|
||||||
"loop": "➿",
|
|
||||||
"part_alternation_mark": "〽️",
|
|
||||||
"eight_spoked_asterisk": "✳️",
|
|
||||||
"eight_pointed_black_star": "✴️",
|
|
||||||
"sparkle": "❇️",
|
|
||||||
"copyright": "©️",
|
|
||||||
"registered": "®️",
|
|
||||||
"tm": "™️",
|
|
||||||
"information_source": "ℹ️",
|
|
||||||
"m": "Ⓜ️",
|
|
||||||
"black_circle": "⚫",
|
|
||||||
"white_circle": "⚪",
|
|
||||||
"black_large_square": "⬛",
|
|
||||||
"white_large_square": "⬜",
|
|
||||||
"black_medium_square": "◼️",
|
|
||||||
"white_medium_square": "◻️",
|
|
||||||
"black_medium_small_square": "◾",
|
|
||||||
"white_medium_small_square": "◽",
|
|
||||||
"black_small_square": "▪️",
|
|
||||||
"white_small_square": "▫️"
|
|
||||||
};
|
|
||||||
|
|
||||||
export default emojies;
|
|
||||||
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
// Emoticons -> Emoji mapping.
|
|
||||||
//
|
|
||||||
// (!) Some patterns skipped, to avoid collisions
|
|
||||||
// without increase matcher complicity. Than can change in future.
|
|
||||||
//
|
|
||||||
// Places to look for more emoticons info:
|
|
||||||
//
|
|
||||||
// - http://en.wikipedia.org/wiki/List_of_emoticons#Western
|
|
||||||
// - https://github.com/wooorm/emoticon/blob/master/Support.md
|
|
||||||
// - http://factoryjoe.com/projects/emoticons/
|
|
||||||
//
|
|
||||||
|
|
||||||
import { EmojiShortcuts } from '../normalize_opts';
|
|
||||||
|
|
||||||
const shortcuts: EmojiShortcuts = {
|
|
||||||
angry: ['>:(', '>:-('],
|
|
||||||
blush: [':")', ':-")'],
|
|
||||||
broken_heart: ['</3', '<\\3'],
|
|
||||||
// :\ and :-\ not used because of conflict with markdown escaping
|
|
||||||
confused: [':/', ':-/'], // twemoji shows question
|
|
||||||
cry: [":'(", ":'-(", ':,(', ':,-('],
|
|
||||||
frowning: [':(', ':-('],
|
|
||||||
heart: ['<3'],
|
|
||||||
imp: [']:(', ']:-('],
|
|
||||||
innocent: ['o:)', 'O:)', 'o:-)', 'O:-)', '0:)', '0:-)'],
|
|
||||||
joy: [":')", ":'-)", ':,)', ':,-)', ":'D", ":'-D", ':,D', ':,-D'],
|
|
||||||
kissing: [':*', ':-*'],
|
|
||||||
laughing: ['x-)', 'X-)'],
|
|
||||||
neutral_face: [':|', ':-|'],
|
|
||||||
open_mouth: [':o', ':-o', ':O', ':-O'],
|
|
||||||
rage: [':@', ':-@'],
|
|
||||||
smile: [':D', ':-D'],
|
|
||||||
smiley: [':)', ':-)'],
|
|
||||||
smiling_imp: [']:)', ']:-)'],
|
|
||||||
sob: [":,'(", ":,'-(", ';(', ';-('],
|
|
||||||
stuck_out_tongue: [':P', ':-P'],
|
|
||||||
sunglasses: ['8-)', 'B-)'],
|
|
||||||
sweat: [',:(', ',:-('],
|
|
||||||
sweat_smile: [',:)', ',:-)'],
|
|
||||||
unamused: [':s', ':-S', ':z', ':-Z', ':$', ':-$'],
|
|
||||||
wink: [';)', ';-)']
|
|
||||||
};
|
|
||||||
|
|
||||||
export default shortcuts;
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
import MarkdownIt from 'markdown-it';
|
|
||||||
import emojies_defs from './data/full';
|
|
||||||
import emojies_shortcuts from './data/shortcuts';
|
|
||||||
import bare_emoji_plugin from './bare';
|
|
||||||
import { EmojiOptions } from './normalize_opts';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Full emoji 插件(包含完整的 emoji 数据)
|
|
||||||
*/
|
|
||||||
export default function emoji_plugin(md: MarkdownIt, options?: Partial<EmojiOptions>): void {
|
|
||||||
const defaults: EmojiOptions = {
|
|
||||||
defs: emojies_defs,
|
|
||||||
shortcuts: emojies_shortcuts,
|
|
||||||
enabled: []
|
|
||||||
};
|
|
||||||
|
|
||||||
const opts = md.utils.assign({}, defaults, options || {}) as EmojiOptions;
|
|
||||||
|
|
||||||
bare_emoji_plugin(md, opts);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
import MarkdownIt from 'markdown-it';
|
|
||||||
import emojies_defs from './data/light';
|
|
||||||
import emojies_shortcuts from './data/shortcuts';
|
|
||||||
import bare_emoji_plugin from './bare';
|
|
||||||
import { EmojiOptions } from './normalize_opts';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Light emoji 插件(包含常用的 emoji 数据)
|
|
||||||
*/
|
|
||||||
export default function emoji_plugin(md: MarkdownIt, options?: Partial<EmojiOptions>): void {
|
|
||||||
const defaults: EmojiOptions = {
|
|
||||||
defs: emojies_defs,
|
|
||||||
shortcuts: emojies_shortcuts,
|
|
||||||
enabled: []
|
|
||||||
};
|
|
||||||
|
|
||||||
const opts = md.utils.assign({}, defaults, options || {}) as EmojiOptions;
|
|
||||||
|
|
||||||
bare_emoji_plugin(md, opts);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
/**
|
|
||||||
* Emoji 定义类型
|
|
||||||
*/
|
|
||||||
export interface EmojiDefs {
|
|
||||||
[key: string]: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Emoji 快捷方式类型
|
|
||||||
*/
|
|
||||||
export interface EmojiShortcuts {
|
|
||||||
[key: string]: string | string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 输入选项接口
|
|
||||||
*/
|
|
||||||
export interface EmojiOptions {
|
|
||||||
defs: EmojiDefs;
|
|
||||||
shortcuts: EmojiShortcuts;
|
|
||||||
enabled: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 标准化后的选项接口
|
|
||||||
*/
|
|
||||||
export interface NormalizedEmojiOptions {
|
|
||||||
defs: EmojiDefs;
|
|
||||||
shortcuts: { [key: string]: string };
|
|
||||||
scanRE: RegExp;
|
|
||||||
replaceRE: RegExp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转义正则表达式特殊字符
|
|
||||||
*/
|
|
||||||
function quoteRE(str: string): string {
|
|
||||||
return str.replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将输入选项转换为更可用的格式并编译搜索正则表达式
|
|
||||||
*/
|
|
||||||
export default function normalize_opts(options: EmojiOptions): NormalizedEmojiOptions {
|
|
||||||
let emojies = options.defs;
|
|
||||||
|
|
||||||
// Filter emojies by whitelist, if needed
|
|
||||||
if (options.enabled.length) {
|
|
||||||
emojies = Object.keys(emojies).reduce((acc: EmojiDefs, key: string) => {
|
|
||||||
if (options.enabled.indexOf(key) >= 0) acc[key] = emojies[key];
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flatten shortcuts to simple object: { alias: emoji_name }
|
|
||||||
const shortcuts = Object.keys(options.shortcuts).reduce((acc: { [key: string]: string }, key: string) => {
|
|
||||||
// Skip aliases for filtered emojies, to reduce regexp
|
|
||||||
if (!emojies[key]) return acc;
|
|
||||||
|
|
||||||
if (Array.isArray(options.shortcuts[key])) {
|
|
||||||
(options.shortcuts[key] as string[]).forEach((alias: string) => { acc[alias] = key; });
|
|
||||||
return acc;
|
|
||||||
}
|
|
||||||
|
|
||||||
acc[options.shortcuts[key] as string] = key;
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
const keys = Object.keys(emojies);
|
|
||||||
let names: string;
|
|
||||||
|
|
||||||
// If no definitions are given, return empty regex to avoid replacements with 'undefined'.
|
|
||||||
if (keys.length === 0) {
|
|
||||||
names = '^$';
|
|
||||||
} else {
|
|
||||||
// Compile regexp
|
|
||||||
names = keys
|
|
||||||
.map((name: string) => { return `:${name}:`; })
|
|
||||||
.concat(Object.keys(shortcuts))
|
|
||||||
.sort()
|
|
||||||
.reverse()
|
|
||||||
.map((name: string) => { return quoteRE(name); })
|
|
||||||
.join('|');
|
|
||||||
}
|
|
||||||
const scanRE = RegExp(names);
|
|
||||||
const replaceRE = RegExp(names, 'g');
|
|
||||||
|
|
||||||
return {
|
|
||||||
defs: emojies,
|
|
||||||
shortcuts,
|
|
||||||
scanRE,
|
|
||||||
replaceRE
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import { Token } from 'markdown-it';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Emoji 渲染函数
|
|
||||||
*/
|
|
||||||
export default function emoji_html(tokens: Token[], idx: number): string {
|
|
||||||
return tokens[idx].content;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
import MarkdownIt, { StateCore, Token } from 'markdown-it';
|
|
||||||
import { EmojiDefs } from './normalize_opts';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Emoji 和快捷方式替换逻辑
|
|
||||||
*
|
|
||||||
* 注意:理论上,在内联链中解析 :smile: 并只留下快捷方式会更快。
|
|
||||||
* 但是,谁在乎呢...
|
|
||||||
*/
|
|
||||||
export default function create_rule(
|
|
||||||
md: MarkdownIt,
|
|
||||||
emojies: EmojiDefs,
|
|
||||||
shortcuts: { [key: string]: string },
|
|
||||||
scanRE: RegExp,
|
|
||||||
replaceRE: RegExp
|
|
||||||
) {
|
|
||||||
const arrayReplaceAt = md.utils.arrayReplaceAt;
|
|
||||||
const ucm = md.utils.lib.ucmicro;
|
|
||||||
const has = md.utils.has;
|
|
||||||
const ZPCc = new RegExp([ucm.Z.source, ucm.P.source, ucm.Cc.source].join('|'));
|
|
||||||
|
|
||||||
function splitTextToken(text: string, level: number, TokenConstructor: any): Token[] {
|
|
||||||
let last_pos = 0;
|
|
||||||
const nodes: Token[] = [];
|
|
||||||
|
|
||||||
text.replace(replaceRE, function (match: string, offset: number, src: string): string {
|
|
||||||
let emoji_name: string;
|
|
||||||
// Validate emoji name
|
|
||||||
if (has(shortcuts, match)) {
|
|
||||||
// replace shortcut with full name
|
|
||||||
emoji_name = shortcuts[match];
|
|
||||||
|
|
||||||
// Don't allow letters before any shortcut (as in no ":/" in http://)
|
|
||||||
if (offset > 0 && !ZPCc.test(src[offset - 1])) return '';
|
|
||||||
|
|
||||||
// Don't allow letters after any shortcut
|
|
||||||
if (offset + match.length < src.length && !ZPCc.test(src[offset + match.length])) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
emoji_name = match.slice(1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add new tokens to pending list
|
|
||||||
if (offset > last_pos) {
|
|
||||||
const token = new TokenConstructor('text', '', 0);
|
|
||||||
token.content = text.slice(last_pos, offset);
|
|
||||||
nodes.push(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
const token = new TokenConstructor('emoji', '', 0);
|
|
||||||
token.markup = emoji_name;
|
|
||||||
token.content = emojies[emoji_name];
|
|
||||||
nodes.push(token);
|
|
||||||
|
|
||||||
last_pos = offset + match.length;
|
|
||||||
return '';
|
|
||||||
});
|
|
||||||
|
|
||||||
if (last_pos < text.length) {
|
|
||||||
const token = new TokenConstructor('text', '', 0);
|
|
||||||
token.content = text.slice(last_pos);
|
|
||||||
nodes.push(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
return nodes;
|
|
||||||
}
|
|
||||||
|
|
||||||
return function emoji_replace(state: StateCore): void {
|
|
||||||
let token: Token;
|
|
||||||
const blockTokens = state.tokens;
|
|
||||||
let autolinkLevel = 0;
|
|
||||||
|
|
||||||
for (let j = 0, l = blockTokens.length; j < l; j++) {
|
|
||||||
if (blockTokens[j].type !== 'inline') { continue; }
|
|
||||||
let tokens = blockTokens[j].children!;
|
|
||||||
|
|
||||||
// We scan from the end, to keep position when new tags added.
|
|
||||||
// Use reversed logic in links start/end match
|
|
||||||
for (let i = tokens.length - 1; i >= 0; i--) {
|
|
||||||
token = tokens[i];
|
|
||||||
|
|
||||||
if (token.type === 'link_open' || token.type === 'link_close') {
|
|
||||||
if (token.info === 'auto') { autolinkLevel -= token.nesting; }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (token.type === 'text' && autolinkLevel === 0 && scanRE.test(token.content)) {
|
|
||||||
// replace current node
|
|
||||||
blockTokens[j].children = tokens = arrayReplaceAt(
|
|
||||||
tokens, i, splitTextToken(token.content, token.level, state.Token)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,390 +0,0 @@
|
|||||||
import MarkdownIt, {Renderer, StateBlock, StateCore, StateInline, Token} from 'markdown-it';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 脚注元数据接口
|
|
||||||
*/
|
|
||||||
interface FootnoteMeta {
|
|
||||||
id: number;
|
|
||||||
subId: number;
|
|
||||||
label: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 脚注列表项接口
|
|
||||||
*/
|
|
||||||
interface FootnoteItem {
|
|
||||||
label?: string;
|
|
||||||
content?: string;
|
|
||||||
tokens?: Token[];
|
|
||||||
count: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 环境接口
|
|
||||||
*/
|
|
||||||
interface FootnoteEnv {
|
|
||||||
footnotes?: {
|
|
||||||
refs?: { [key: string]: number };
|
|
||||||
list?: FootnoteItem[];
|
|
||||||
};
|
|
||||||
docId?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// /////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Renderer partials
|
|
||||||
|
|
||||||
function render_footnote_anchor_name(tokens: Token[], idx: number, options: any, env: FootnoteEnv): string {
|
|
||||||
const n = Number(tokens[idx].meta.id + 1).toString();
|
|
||||||
let prefix = '';
|
|
||||||
|
|
||||||
if (typeof env.docId === 'string') prefix = `-${env.docId}-`;
|
|
||||||
|
|
||||||
return prefix + n;
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_footnote_caption(tokens: Token[], idx: number): string {
|
|
||||||
let n = Number(tokens[idx].meta.id + 1).toString();
|
|
||||||
|
|
||||||
if (tokens[idx].meta.subId > 0) n += `:${tokens[idx].meta.subId}`;
|
|
||||||
|
|
||||||
return `[${n}]`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_footnote_ref(tokens: Token[], idx: number, options: any, env: FootnoteEnv, slf: Renderer): string {
|
|
||||||
const id = slf.rules.footnote_anchor_name!(tokens, idx, options, env, slf);
|
|
||||||
const caption = slf.rules.footnote_caption!(tokens, idx, options, env, slf);
|
|
||||||
let refid = id;
|
|
||||||
|
|
||||||
if (tokens[idx].meta.subId > 0) refid += `:${tokens[idx].meta.subId}`;
|
|
||||||
|
|
||||||
return `<sup class="footnote-ref"><a href="#fn${id}" id="fnref${refid}">${caption}</a></sup>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_footnote_block_open(tokens: Token[], idx: number, options: any): string {
|
|
||||||
return (options.xhtmlOut ? '<hr class="footnotes-sep" />\n' : '<hr class="footnotes-sep">\n') +
|
|
||||||
'<section class="footnotes">\n' +
|
|
||||||
'<ol class="footnotes-list">\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_footnote_block_close(): string {
|
|
||||||
return '</ol>\n</section>\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_footnote_open(tokens: Token[], idx: number, options: any, env: FootnoteEnv, slf: Renderer): string {
|
|
||||||
let id = slf.rules.footnote_anchor_name!(tokens, idx, options, env, slf);
|
|
||||||
|
|
||||||
if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
|
|
||||||
|
|
||||||
return `<li id="fn${id}" class="footnote-item">`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_footnote_close(): string {
|
|
||||||
return '</li>\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_footnote_anchor(tokens: Token[], idx: number, options: any, env: FootnoteEnv, slf: Renderer): string {
|
|
||||||
let id = slf.rules.footnote_anchor_name!(tokens, idx, options, env, slf);
|
|
||||||
|
|
||||||
if (tokens[idx].meta.subId > 0) id += `:${tokens[idx].meta.subId}`;
|
|
||||||
|
|
||||||
/* ↩ with escape code to prevent display as Apple Emoji on iOS */
|
|
||||||
return ` <a href="#fnref${id}" class="footnote-backref">\u21a9\uFE0E</a>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* markdown-it-footnote 插件
|
|
||||||
* 用于支持脚注语法
|
|
||||||
*/
|
|
||||||
export default function footnote_plugin(md: MarkdownIt): void {
|
|
||||||
const parseLinkLabel = md.helpers.parseLinkLabel;
|
|
||||||
const isSpace = md.utils.isSpace;
|
|
||||||
|
|
||||||
md.renderer.rules.footnote_ref = render_footnote_ref;
|
|
||||||
md.renderer.rules.footnote_block_open = render_footnote_block_open;
|
|
||||||
md.renderer.rules.footnote_block_close = render_footnote_block_close;
|
|
||||||
md.renderer.rules.footnote_open = render_footnote_open;
|
|
||||||
md.renderer.rules.footnote_close = render_footnote_close;
|
|
||||||
md.renderer.rules.footnote_anchor = render_footnote_anchor;
|
|
||||||
|
|
||||||
// helpers (only used in other rules, no tokens are attached to those)
|
|
||||||
md.renderer.rules.footnote_caption = render_footnote_caption;
|
|
||||||
md.renderer.rules.footnote_anchor_name = render_footnote_anchor_name;
|
|
||||||
|
|
||||||
// Process footnote block definition
|
|
||||||
function footnote_def(state: StateBlock, startLine: number, endLine: number, silent: boolean): boolean {
|
|
||||||
const start = state.bMarks[startLine] + state.tShift[startLine];
|
|
||||||
const max = state.eMarks[startLine];
|
|
||||||
|
|
||||||
// line should be at least 5 chars - "[^x]:"
|
|
||||||
if (start + 4 > max) return false;
|
|
||||||
|
|
||||||
if (state.src.charCodeAt(start) !== 0x5B/* [ */) return false;
|
|
||||||
if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) return false;
|
|
||||||
|
|
||||||
let pos: number;
|
|
||||||
|
|
||||||
for (pos = start + 2; pos < max; pos++) {
|
|
||||||
if (state.src.charCodeAt(pos) === 0x20) return false;
|
|
||||||
if (state.src.charCodeAt(pos) === 0x5D /* ] */) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pos === start + 2) return false; // no empty footnote labels
|
|
||||||
if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) return false;
|
|
||||||
if (silent) return true;
|
|
||||||
pos++;
|
|
||||||
|
|
||||||
const env = state.env as FootnoteEnv;
|
|
||||||
if (!env.footnotes) env.footnotes = {};
|
|
||||||
if (!env.footnotes.refs) env.footnotes.refs = {};
|
|
||||||
const label = state.src.slice(start + 2, pos - 2);
|
|
||||||
env.footnotes.refs[`:${label}`] = -1;
|
|
||||||
|
|
||||||
const token_fref_o = new state.Token('footnote_reference_open', '', 1);
|
|
||||||
token_fref_o.meta = { label };
|
|
||||||
token_fref_o.level = state.level++;
|
|
||||||
state.tokens.push(token_fref_o);
|
|
||||||
|
|
||||||
const oldBMark = state.bMarks[startLine];
|
|
||||||
const oldTShift = state.tShift[startLine];
|
|
||||||
const oldSCount = state.sCount[startLine];
|
|
||||||
const oldParentType = state.parentType;
|
|
||||||
|
|
||||||
const posAfterColon = pos;
|
|
||||||
const initial = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);
|
|
||||||
let offset = initial;
|
|
||||||
|
|
||||||
while (pos < max) {
|
|
||||||
const ch = state.src.charCodeAt(pos);
|
|
||||||
|
|
||||||
if (isSpace(ch)) {
|
|
||||||
if (ch === 0x09) {
|
|
||||||
offset += 4 - offset % 4;
|
|
||||||
} else {
|
|
||||||
offset++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
state.tShift[startLine] = pos - posAfterColon;
|
|
||||||
state.sCount[startLine] = offset - initial;
|
|
||||||
|
|
||||||
state.bMarks[startLine] = posAfterColon;
|
|
||||||
state.blkIndent += 4;
|
|
||||||
state.parentType = 'footnote' as any;
|
|
||||||
|
|
||||||
if (state.sCount[startLine] < state.blkIndent) {
|
|
||||||
state.sCount[startLine] += state.blkIndent;
|
|
||||||
}
|
|
||||||
|
|
||||||
state.md.block.tokenize(state, startLine, endLine);
|
|
||||||
|
|
||||||
state.parentType = oldParentType;
|
|
||||||
state.blkIndent -= 4;
|
|
||||||
state.tShift[startLine] = oldTShift;
|
|
||||||
state.sCount[startLine] = oldSCount;
|
|
||||||
state.bMarks[startLine] = oldBMark;
|
|
||||||
|
|
||||||
const token_fref_c = new state.Token('footnote_reference_close', '', -1);
|
|
||||||
token_fref_c.level = --state.level;
|
|
||||||
state.tokens.push(token_fref_c);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Process inline footnotes (^[...])
|
|
||||||
function footnote_inline(state: StateInline, silent: boolean): boolean {
|
|
||||||
const max = state.posMax;
|
|
||||||
const start = state.pos;
|
|
||||||
|
|
||||||
if (start + 2 >= max) return false;
|
|
||||||
if (state.src.charCodeAt(start) !== 0x5E/* ^ */) return false;
|
|
||||||
if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) return false;
|
|
||||||
|
|
||||||
const labelStart = start + 2;
|
|
||||||
const labelEnd = parseLinkLabel(state, start + 1);
|
|
||||||
|
|
||||||
// parser failed to find ']', so it's not a valid note
|
|
||||||
if (labelEnd < 0) return false;
|
|
||||||
|
|
||||||
// We found the end of the link, and know for a fact it's a valid link;
|
|
||||||
// so all that's left to do is to call tokenizer.
|
|
||||||
//
|
|
||||||
if (!silent) {
|
|
||||||
const env = state.env as FootnoteEnv;
|
|
||||||
if (!env.footnotes) env.footnotes = {};
|
|
||||||
if (!env.footnotes.list) env.footnotes.list = [];
|
|
||||||
const footnoteId = env.footnotes.list.length;
|
|
||||||
const tokens: Token[] = [];
|
|
||||||
|
|
||||||
state.md.inline.parse(
|
|
||||||
state.src.slice(labelStart, labelEnd),
|
|
||||||
state.md,
|
|
||||||
state.env,
|
|
||||||
tokens
|
|
||||||
);
|
|
||||||
|
|
||||||
const token = state.push('footnote_ref', '', 0);
|
|
||||||
token.meta = { id: footnoteId };
|
|
||||||
|
|
||||||
env.footnotes.list[footnoteId] = {
|
|
||||||
content: state.src.slice(labelStart, labelEnd),
|
|
||||||
tokens,
|
|
||||||
count: 0
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
state.pos = labelEnd + 1;
|
|
||||||
state.posMax = max;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Process footnote references ([^...])
|
|
||||||
function footnote_ref(state: StateInline, silent: boolean): boolean {
|
|
||||||
const max = state.posMax;
|
|
||||||
const start = state.pos;
|
|
||||||
|
|
||||||
// should be at least 4 chars - "[^x]"
|
|
||||||
if (start + 3 > max) return false;
|
|
||||||
|
|
||||||
const env = state.env as FootnoteEnv;
|
|
||||||
if (!env.footnotes || !env.footnotes.refs) return false;
|
|
||||||
if (state.src.charCodeAt(start) !== 0x5B/* [ */) return false;
|
|
||||||
if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) return false;
|
|
||||||
|
|
||||||
let pos: number;
|
|
||||||
|
|
||||||
for (pos = start + 2; pos < max; pos++) {
|
|
||||||
if (state.src.charCodeAt(pos) === 0x20) return false;
|
|
||||||
if (state.src.charCodeAt(pos) === 0x0A) return false;
|
|
||||||
if (state.src.charCodeAt(pos) === 0x5D /* ] */) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pos === start + 2) return false; // no empty footnote labels
|
|
||||||
if (pos >= max) return false;
|
|
||||||
pos++;
|
|
||||||
|
|
||||||
const label = state.src.slice(start + 2, pos - 1);
|
|
||||||
if (typeof env.footnotes.refs[`:${label}`] === 'undefined') return false;
|
|
||||||
|
|
||||||
if (!silent) {
|
|
||||||
if (!env.footnotes.list) env.footnotes.list = [];
|
|
||||||
|
|
||||||
let footnoteId: number;
|
|
||||||
|
|
||||||
if (env.footnotes.refs[`:${label}`] < 0) {
|
|
||||||
footnoteId = env.footnotes.list.length;
|
|
||||||
env.footnotes.list[footnoteId] = { label, count: 0 };
|
|
||||||
env.footnotes.refs[`:${label}`] = footnoteId;
|
|
||||||
} else {
|
|
||||||
footnoteId = env.footnotes.refs[`:${label}`];
|
|
||||||
}
|
|
||||||
|
|
||||||
const footnoteSubId = env.footnotes.list[footnoteId].count;
|
|
||||||
env.footnotes.list[footnoteId].count++;
|
|
||||||
|
|
||||||
const token = state.push('footnote_ref', '', 0);
|
|
||||||
token.meta = { id: footnoteId, subId: footnoteSubId, label };
|
|
||||||
}
|
|
||||||
|
|
||||||
state.pos = pos;
|
|
||||||
state.posMax = max;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Glue footnote tokens to end of token stream
|
|
||||||
function footnote_tail(state: StateCore): void {
|
|
||||||
let tokens: Token[] | null = null;
|
|
||||||
let current: Token[];
|
|
||||||
let currentLabel: string;
|
|
||||||
let insideRef = false;
|
|
||||||
const refTokens: { [key: string]: Token[] } = {};
|
|
||||||
|
|
||||||
const env = state.env as FootnoteEnv;
|
|
||||||
if (!env.footnotes) { return; }
|
|
||||||
|
|
||||||
state.tokens = state.tokens.filter(function (tok) {
|
|
||||||
if (tok.type === 'footnote_reference_open') {
|
|
||||||
insideRef = true;
|
|
||||||
current = [];
|
|
||||||
currentLabel = tok.meta.label;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (tok.type === 'footnote_reference_close') {
|
|
||||||
insideRef = false;
|
|
||||||
// prepend ':' to avoid conflict with Object.prototype members
|
|
||||||
refTokens[':' + currentLabel] = current;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (insideRef) { current.push(tok); }
|
|
||||||
return !insideRef;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!env.footnotes.list) { return; }
|
|
||||||
const list = env.footnotes.list;
|
|
||||||
|
|
||||||
state.tokens.push(new state.Token('footnote_block_open', '', 1));
|
|
||||||
|
|
||||||
for (let i = 0, l = list.length; i < l; i++) {
|
|
||||||
const token_fo = new state.Token('footnote_open', '', 1);
|
|
||||||
token_fo.meta = { id: i, label: list[i].label };
|
|
||||||
state.tokens.push(token_fo);
|
|
||||||
|
|
||||||
if (list[i].tokens) {
|
|
||||||
tokens = [];
|
|
||||||
|
|
||||||
const token_po = new state.Token('paragraph_open', 'p', 1);
|
|
||||||
token_po.block = true;
|
|
||||||
tokens.push(token_po);
|
|
||||||
|
|
||||||
const token_i = new state.Token('inline', '', 0);
|
|
||||||
token_i.children = list[i].tokens || null;
|
|
||||||
token_i.content = list[i].content || '';
|
|
||||||
tokens.push(token_i);
|
|
||||||
|
|
||||||
const token_pc = new state.Token('paragraph_close', 'p', -1);
|
|
||||||
token_pc.block = true;
|
|
||||||
tokens.push(token_pc);
|
|
||||||
} else if (list[i].label) {
|
|
||||||
tokens = refTokens[`:${list[i].label}`] || null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tokens) state.tokens = state.tokens.concat(tokens);
|
|
||||||
|
|
||||||
let lastParagraph: Token | null;
|
|
||||||
|
|
||||||
if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') {
|
|
||||||
lastParagraph = state.tokens.pop()!;
|
|
||||||
} else {
|
|
||||||
lastParagraph = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const t = list[i].count > 0 ? list[i].count : 1;
|
|
||||||
for (let j = 0; j < t; j++) {
|
|
||||||
const token_a = new state.Token('footnote_anchor', '', 0);
|
|
||||||
token_a.meta = { id: i, subId: j, label: list[i].label };
|
|
||||||
state.tokens.push(token_a);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lastParagraph) {
|
|
||||||
state.tokens.push(lastParagraph);
|
|
||||||
}
|
|
||||||
|
|
||||||
state.tokens.push(new state.Token('footnote_close', '', -1));
|
|
||||||
}
|
|
||||||
|
|
||||||
state.tokens.push(new state.Token('footnote_block_close', '', -1));
|
|
||||||
}
|
|
||||||
|
|
||||||
md.block.ruler.before('reference', 'footnote_def', footnote_def, { alt: ['paragraph', 'reference'] });
|
|
||||||
md.inline.ruler.after('image', 'footnote_inline', footnote_inline);
|
|
||||||
md.inline.ruler.after('footnote_inline', 'footnote_ref', footnote_ref);
|
|
||||||
md.core.ruler.after('inline', 'footnote_tail', footnote_tail);
|
|
||||||
}
|
|
||||||
@@ -1,160 +0,0 @@
|
|||||||
import MarkdownIt, { StateInline, Token } from 'markdown-it';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分隔符接口定义
|
|
||||||
*/
|
|
||||||
interface Delimiter {
|
|
||||||
marker: number;
|
|
||||||
length: number;
|
|
||||||
jump: number;
|
|
||||||
token: number;
|
|
||||||
end: number;
|
|
||||||
open: boolean;
|
|
||||||
close: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 扫描结果接口定义
|
|
||||||
*/
|
|
||||||
interface ScanResult {
|
|
||||||
can_open: boolean;
|
|
||||||
can_close: boolean;
|
|
||||||
length: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Token 元数据接口定义
|
|
||||||
*/
|
|
||||||
interface TokenMeta {
|
|
||||||
delimiters?: Delimiter[];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* markdown-it-ins 插件
|
|
||||||
* 用于支持插入文本语法 ++text++
|
|
||||||
*/
|
|
||||||
export default function ins_plugin(md: MarkdownIt): void {
|
|
||||||
// Insert each marker as a separate text token, and add it to delimiter list
|
|
||||||
//
|
|
||||||
function tokenize(state: StateInline, silent: boolean): boolean {
|
|
||||||
const start = state.pos;
|
|
||||||
const marker = state.src.charCodeAt(start);
|
|
||||||
|
|
||||||
if (silent) { return false; }
|
|
||||||
|
|
||||||
if (marker !== 0x2B/* + */) { return false; }
|
|
||||||
|
|
||||||
const scanned = state.scanDelims(state.pos, true) as ScanResult;
|
|
||||||
let len = scanned.length;
|
|
||||||
const ch = String.fromCharCode(marker);
|
|
||||||
|
|
||||||
if (len < 2) { return false; }
|
|
||||||
|
|
||||||
if (len % 2) {
|
|
||||||
const token: Token = state.push('text', '', 0);
|
|
||||||
token.content = ch;
|
|
||||||
len--;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < len; i += 2) {
|
|
||||||
const token: Token = state.push('text', '', 0);
|
|
||||||
token.content = ch + ch;
|
|
||||||
|
|
||||||
if (!scanned.can_open && !scanned.can_close) { continue; }
|
|
||||||
|
|
||||||
state.delimiters.push({
|
|
||||||
marker,
|
|
||||||
length: 0, // disable "rule of 3" length checks meant for emphasis
|
|
||||||
jump: i / 2, // 1 delimiter = 2 characters
|
|
||||||
token: state.tokens.length - 1,
|
|
||||||
end: -1,
|
|
||||||
open: scanned.can_open,
|
|
||||||
close: scanned.can_close
|
|
||||||
} as Delimiter);
|
|
||||||
}
|
|
||||||
|
|
||||||
state.pos += scanned.length;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Walk through delimiter list and replace text tokens with tags
|
|
||||||
//
|
|
||||||
function postProcess(state: StateInline, delimiters: Delimiter[]): void {
|
|
||||||
let token: Token;
|
|
||||||
const loneMarkers: number[] = [];
|
|
||||||
const max = delimiters.length;
|
|
||||||
|
|
||||||
for (let i = 0; i < max; i++) {
|
|
||||||
const startDelim = delimiters[i];
|
|
||||||
|
|
||||||
if (startDelim.marker !== 0x2B/* + */) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (startDelim.end === -1) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const endDelim = delimiters[startDelim.end];
|
|
||||||
|
|
||||||
token = state.tokens[startDelim.token];
|
|
||||||
token.type = 'ins_open';
|
|
||||||
token.tag = 'ins';
|
|
||||||
token.nesting = 1;
|
|
||||||
token.markup = '++';
|
|
||||||
token.content = '';
|
|
||||||
|
|
||||||
token = state.tokens[endDelim.token];
|
|
||||||
token.type = 'ins_close';
|
|
||||||
token.tag = 'ins';
|
|
||||||
token.nesting = -1;
|
|
||||||
token.markup = '++';
|
|
||||||
token.content = '';
|
|
||||||
|
|
||||||
if (state.tokens[endDelim.token - 1].type === 'text' &&
|
|
||||||
state.tokens[endDelim.token - 1].content === '+') {
|
|
||||||
loneMarkers.push(endDelim.token - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If a marker sequence has an odd number of characters, it's splitted
|
|
||||||
// like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the
|
|
||||||
// start of the sequence.
|
|
||||||
//
|
|
||||||
// So, we have to move all those markers after subsequent s_close tags.
|
|
||||||
//
|
|
||||||
while (loneMarkers.length) {
|
|
||||||
const i = loneMarkers.pop()!;
|
|
||||||
let j = i + 1;
|
|
||||||
|
|
||||||
while (j < state.tokens.length && state.tokens[j].type === 'ins_close') {
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
|
|
||||||
j--;
|
|
||||||
|
|
||||||
if (i !== j) {
|
|
||||||
token = state.tokens[j];
|
|
||||||
state.tokens[j] = state.tokens[i];
|
|
||||||
state.tokens[i] = token;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
md.inline.ruler.before('emphasis', 'ins', tokenize);
|
|
||||||
md.inline.ruler2.before('emphasis', 'ins', function (state: StateInline): boolean {
|
|
||||||
const tokens_meta = state.tokens_meta as TokenMeta[];
|
|
||||||
const max = (state.tokens_meta || []).length;
|
|
||||||
|
|
||||||
postProcess(state, state.delimiters as Delimiter[]);
|
|
||||||
|
|
||||||
for (let curr = 0; curr < max; curr++) {
|
|
||||||
if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
|
|
||||||
postProcess(state, tokens_meta[curr].delimiters!);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,160 +0,0 @@
|
|||||||
import MarkdownIt, {StateInline, Token} from 'markdown-it';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分隔符接口定义
|
|
||||||
*/
|
|
||||||
interface Delimiter {
|
|
||||||
marker: number;
|
|
||||||
length: number;
|
|
||||||
jump: number;
|
|
||||||
token: number;
|
|
||||||
end: number;
|
|
||||||
open: boolean;
|
|
||||||
close: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 扫描结果接口定义
|
|
||||||
*/
|
|
||||||
interface ScanResult {
|
|
||||||
can_open: boolean;
|
|
||||||
can_close: boolean;
|
|
||||||
length: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Token 元数据接口定义
|
|
||||||
*/
|
|
||||||
interface TokenMeta {
|
|
||||||
delimiters?: Delimiter[];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* markdown-it-mark 插件
|
|
||||||
* 用于支持 ==标记文本== 语法
|
|
||||||
*/
|
|
||||||
export default function markPlugin(md: MarkdownIt): void {
|
|
||||||
// Insert each marker as a separate text token, and add it to delimiter list
|
|
||||||
//
|
|
||||||
function tokenize(state: StateInline, silent: boolean): boolean {
|
|
||||||
const start = state.pos;
|
|
||||||
const marker = state.src.charCodeAt(start);
|
|
||||||
|
|
||||||
if (silent) { return false; }
|
|
||||||
|
|
||||||
if (marker !== 0x3D/* = */) { return false; }
|
|
||||||
|
|
||||||
const scanned = state.scanDelims(state.pos, true) as ScanResult;
|
|
||||||
let len = scanned.length;
|
|
||||||
const ch = String.fromCharCode(marker);
|
|
||||||
|
|
||||||
if (len < 2) { return false; }
|
|
||||||
|
|
||||||
if (len % 2) {
|
|
||||||
const token: Token = state.push('text', '', 0);
|
|
||||||
token.content = ch;
|
|
||||||
len--;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < len; i += 2) {
|
|
||||||
const token: Token = state.push('text', '', 0);
|
|
||||||
token.content = ch + ch;
|
|
||||||
|
|
||||||
if (!scanned.can_open && !scanned.can_close) { continue; }
|
|
||||||
|
|
||||||
state.delimiters.push({
|
|
||||||
marker,
|
|
||||||
length: 0, // disable "rule of 3" length checks meant for emphasis
|
|
||||||
jump: i / 2, // 1 delimiter = 2 characters
|
|
||||||
token: state.tokens.length - 1,
|
|
||||||
end: -1,
|
|
||||||
open: scanned.can_open,
|
|
||||||
close: scanned.can_close
|
|
||||||
} as Delimiter);
|
|
||||||
}
|
|
||||||
|
|
||||||
state.pos += scanned.length;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Walk through delimiter list and replace text tokens with tags
|
|
||||||
//
|
|
||||||
function postProcess(state: StateInline, delimiters: Delimiter[]): void {
|
|
||||||
const loneMarkers: number[] = [];
|
|
||||||
const max = delimiters.length;
|
|
||||||
|
|
||||||
for (let i = 0; i < max; i++) {
|
|
||||||
const startDelim = delimiters[i];
|
|
||||||
|
|
||||||
if (startDelim.marker !== 0x3D/* = */) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (startDelim.end === -1) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const endDelim = delimiters[startDelim.end];
|
|
||||||
|
|
||||||
const token_o = state.tokens[startDelim.token];
|
|
||||||
token_o.type = 'mark_open';
|
|
||||||
token_o.tag = 'mark';
|
|
||||||
token_o.nesting = 1;
|
|
||||||
token_o.markup = '==';
|
|
||||||
token_o.content = '';
|
|
||||||
|
|
||||||
const token_c = state.tokens[endDelim.token];
|
|
||||||
token_c.type = 'mark_close';
|
|
||||||
token_c.tag = 'mark';
|
|
||||||
token_c.nesting = -1;
|
|
||||||
token_c.markup = '==';
|
|
||||||
token_c.content = '';
|
|
||||||
|
|
||||||
if (state.tokens[endDelim.token - 1].type === 'text' &&
|
|
||||||
state.tokens[endDelim.token - 1].content === '=') {
|
|
||||||
loneMarkers.push(endDelim.token - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If a marker sequence has an odd number of characters, it's splitted
|
|
||||||
// like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the
|
|
||||||
// start of the sequence.
|
|
||||||
//
|
|
||||||
// So, we have to move all those markers after subsequent s_close tags.
|
|
||||||
//
|
|
||||||
while (loneMarkers.length) {
|
|
||||||
const i = loneMarkers.pop()!;
|
|
||||||
let j = i + 1;
|
|
||||||
|
|
||||||
while (j < state.tokens.length && state.tokens[j].type === 'mark_close') {
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
|
|
||||||
j--;
|
|
||||||
|
|
||||||
if (i !== j) {
|
|
||||||
const token = state.tokens[j];
|
|
||||||
state.tokens[j] = state.tokens[i];
|
|
||||||
state.tokens[i] = token;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
md.inline.ruler.before('emphasis', 'mark', tokenize);
|
|
||||||
md.inline.ruler2.before('emphasis', 'mark', function (state: StateInline): boolean {
|
|
||||||
let curr: number;
|
|
||||||
const tokens_meta = state.tokens_meta as TokenMeta[];
|
|
||||||
const max = (state.tokens_meta || []).length;
|
|
||||||
|
|
||||||
postProcess(state, state.delimiters as Delimiter[]);
|
|
||||||
|
|
||||||
for (curr = 0; curr < max; curr++) {
|
|
||||||
if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
|
|
||||||
postProcess(state, tokens_meta[curr].delimiters!);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
import mermaid from "mermaid";
|
|
||||||
import {genUid, hashCode, sleep} from "./utils";
|
|
||||||
|
|
||||||
const mermaidCache = new Map<string, HTMLElement>();
|
|
||||||
|
|
||||||
// 缓存计数器,用于清除缓存
|
|
||||||
const mermaidCacheCount = new Map<string, number>();
|
|
||||||
let count = 0;
|
|
||||||
|
|
||||||
|
|
||||||
let countTmo = setTimeout(() => undefined, 0);
|
|
||||||
const addCount = () => {
|
|
||||||
clearTimeout(countTmo);
|
|
||||||
countTmo = setTimeout(() => {
|
|
||||||
count++;
|
|
||||||
clearCache();
|
|
||||||
}, 500);
|
|
||||||
};
|
|
||||||
|
|
||||||
const clearCache = () => {
|
|
||||||
for (const key of mermaidCacheCount.keys()) {
|
|
||||||
const value = mermaidCacheCount.get(key)!;
|
|
||||||
if (value + 3 < count) {
|
|
||||||
mermaidCache.delete(key);
|
|
||||||
mermaidCacheCount.delete(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 渲染 mermaid
|
|
||||||
* @param code mermaid 代码
|
|
||||||
* @param targetId 目标 id
|
|
||||||
* @param count 计数器
|
|
||||||
*/
|
|
||||||
const renderMermaid = async (code: string, targetId: string, count: number) => {
|
|
||||||
let limit = 100;
|
|
||||||
while (limit-- > 0) {
|
|
||||||
const container = document.getElementById(targetId);
|
|
||||||
if (!container) {
|
|
||||||
await sleep(100);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
const {svg} = await mermaid.render("mermaid-svg-" + genUid(), code, container);
|
|
||||||
container.innerHTML = svg;
|
|
||||||
mermaidCache.set(targetId, container);
|
|
||||||
mermaidCacheCount.set(targetId, count);
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export interface MermaidItOptions {
|
|
||||||
theme?: "default" | "dark" | "forest" | "neutral" | "base";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新 mermaid 主题
|
|
||||||
*/
|
|
||||||
export const updateMermaidTheme = (theme: "default" | "dark" | "forest" | "neutral" | "base") => {
|
|
||||||
mermaid.initialize({
|
|
||||||
startOnLoad: false,
|
|
||||||
theme: theme
|
|
||||||
});
|
|
||||||
// 清空缓存,强制重新渲染
|
|
||||||
mermaidCache.clear();
|
|
||||||
mermaidCacheCount.clear();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* mermaid 插件
|
|
||||||
* @param md markdown-it
|
|
||||||
* @param options 配置选项
|
|
||||||
* @constructor MermaidIt
|
|
||||||
*/
|
|
||||||
export const MermaidIt = function (md: any, options?: MermaidItOptions): void {
|
|
||||||
const theme = options?.theme || "default";
|
|
||||||
mermaid.initialize({
|
|
||||||
startOnLoad: false,
|
|
||||||
theme: theme
|
|
||||||
});
|
|
||||||
const defaultRenderer = md.renderer.rules.fence.bind(md.renderer.rules);
|
|
||||||
md.renderer.rules.fence = (tokens: any, idx: any, options: any, env: any, self: any) => {
|
|
||||||
addCount();
|
|
||||||
const token = tokens[idx];
|
|
||||||
const info = token.info.trim();
|
|
||||||
if (info === "mermaid") {
|
|
||||||
const containerId = "mermaid-container-" + hashCode(token.content);
|
|
||||||
const container = document.createElement("div");
|
|
||||||
container.id = containerId;
|
|
||||||
if (mermaidCache.has(containerId)) {
|
|
||||||
container.innerHTML = mermaidCache.get(containerId)!.innerHTML;
|
|
||||||
mermaidCacheCount.set(containerId, count);
|
|
||||||
} else {
|
|
||||||
renderMermaid(token.content, containerId, count).then();
|
|
||||||
}
|
|
||||||
return container.outerHTML;
|
|
||||||
}
|
|
||||||
// 使用默认的渲染规则
|
|
||||||
return defaultRenderer(tokens, idx, options, env, self);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
import { v4 as uuidv4 } from "uuid";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* uuid 生成函数
|
|
||||||
* @param split 分隔符
|
|
||||||
*/
|
|
||||||
export const genUid = (split = "") => {
|
|
||||||
return uuidv4().split("-").join(split);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 一个简易的sleep函数
|
|
||||||
*/
|
|
||||||
export const sleep = async (ms: number) => {
|
|
||||||
return new Promise((resolve) => {
|
|
||||||
setTimeout(resolve, ms);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 计算字符串的hash值
|
|
||||||
* 返回一个数字
|
|
||||||
* @param str
|
|
||||||
*/
|
|
||||||
export const hashCode = (str: string) => {
|
|
||||||
let hash = 0;
|
|
||||||
if (str.length === 0) return hash;
|
|
||||||
for (let i = 0; i < str.length; i++) {
|
|
||||||
const char = str.charCodeAt(i);
|
|
||||||
hash = (hash << 5) - hash + char;
|
|
||||||
hash = hash & hash; // Convert to 32bit integer
|
|
||||||
}
|
|
||||||
return hash;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 一个简易的阻塞函数
|
|
||||||
*/
|
|
||||||
export const awaitFor = async (cb: () => boolean, timeout = 0, errText = "超时暂停阻塞") => {
|
|
||||||
const start = Date.now();
|
|
||||||
while (true) {
|
|
||||||
if (cb()) return true;
|
|
||||||
if (timeout && Date.now() - start > timeout) {
|
|
||||||
console.error("阻塞超时: " + errText);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
await sleep(100);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
// Process ~subscript~
|
|
||||||
|
|
||||||
import MarkdownIt, { StateInline, Token } from 'markdown-it';
|
|
||||||
|
|
||||||
// same as UNESCAPE_MD_RE plus a space
|
|
||||||
const UNESCAPE_RE = /\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/g;
|
|
||||||
|
|
||||||
function subscript(state: StateInline, silent: boolean): boolean {
|
|
||||||
const max = state.posMax;
|
|
||||||
const start = state.pos;
|
|
||||||
|
|
||||||
if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; }
|
|
||||||
if (silent) { return false; } // don't run any pairs in validation mode
|
|
||||||
if (start + 2 >= max) { return false; }
|
|
||||||
|
|
||||||
state.pos = start + 1;
|
|
||||||
let found = false;
|
|
||||||
|
|
||||||
while (state.pos < max) {
|
|
||||||
if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) {
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
state.md.inline.skipToken(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found || start + 1 === state.pos) {
|
|
||||||
state.pos = start;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const content = state.src.slice(start + 1, state.pos);
|
|
||||||
|
|
||||||
// don't allow unescaped spaces/newlines inside
|
|
||||||
if (content.match(/(^|[^\\])(\\\\)*\s/)) {
|
|
||||||
state.pos = start;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// found!
|
|
||||||
state.posMax = state.pos;
|
|
||||||
state.pos = start + 1;
|
|
||||||
|
|
||||||
// Earlier we checked !silent, but this implementation does not need it
|
|
||||||
const token_so: Token = state.push('sub_open', 'sub', 1);
|
|
||||||
token_so.markup = '~';
|
|
||||||
|
|
||||||
const token_t: Token = state.push('text', '', 0);
|
|
||||||
token_t.content = content.replace(UNESCAPE_RE, '$1');
|
|
||||||
|
|
||||||
const token_sc: Token = state.push('sub_close', 'sub', -1);
|
|
||||||
token_sc.markup = '~';
|
|
||||||
|
|
||||||
state.pos = state.posMax + 1;
|
|
||||||
state.posMax = max;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* markdown-it-sub 插件
|
|
||||||
* 用于支持下标语法 ~text~
|
|
||||||
*/
|
|
||||||
export default function sub_plugin(md: MarkdownIt): void {
|
|
||||||
md.inline.ruler.after('emphasis', 'sub', subscript);
|
|
||||||
}
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
// Process ^superscript^
|
|
||||||
|
|
||||||
import MarkdownIt, { StateInline, Token } from 'markdown-it';
|
|
||||||
|
|
||||||
// same as UNESCAPE_MD_RE plus a space
|
|
||||||
const UNESCAPE_RE = /\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/g;
|
|
||||||
|
|
||||||
function superscript(state: StateInline, silent: boolean): boolean {
|
|
||||||
const max = state.posMax;
|
|
||||||
const start = state.pos;
|
|
||||||
|
|
||||||
if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }
|
|
||||||
if (silent) { return false; } // don't run any pairs in validation mode
|
|
||||||
if (start + 2 >= max) { return false; }
|
|
||||||
|
|
||||||
state.pos = start + 1;
|
|
||||||
let found = false;
|
|
||||||
|
|
||||||
while (state.pos < max) {
|
|
||||||
if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) {
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
state.md.inline.skipToken(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found || start + 1 === state.pos) {
|
|
||||||
state.pos = start;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const content = state.src.slice(start + 1, state.pos);
|
|
||||||
|
|
||||||
// don't allow unescaped spaces/newlines inside
|
|
||||||
if (content.match(/(^|[^\\])(\\\\)*\s/)) {
|
|
||||||
state.pos = start;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// found!
|
|
||||||
state.posMax = state.pos;
|
|
||||||
state.pos = start + 1;
|
|
||||||
|
|
||||||
// Earlier we checked !silent, but this implementation does not need it
|
|
||||||
const token_so: Token = state.push('sup_open', 'sup', 1);
|
|
||||||
token_so.markup = '^';
|
|
||||||
|
|
||||||
const token_t: Token = state.push('text', '', 0);
|
|
||||||
token_t.content = content.replace(UNESCAPE_RE, '$1');
|
|
||||||
|
|
||||||
const token_sc: Token = state.push('sup_close', 'sup', -1);
|
|
||||||
token_sc.markup = '^';
|
|
||||||
|
|
||||||
state.pos = state.posMax + 1;
|
|
||||||
state.posMax = max;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* markdown-it-sup 插件
|
|
||||||
* 用于支持上标语法 ^text^
|
|
||||||
*/
|
|
||||||
export default function sup_plugin(md: MarkdownIt): void {
|
|
||||||
md.inline.ruler.after('emphasis', 'sup', superscript);
|
|
||||||
}
|
|
||||||
@@ -23,7 +23,7 @@ const languages = [
|
|||||||
{
|
{
|
||||||
name: 'C',
|
name: 'C',
|
||||||
aliases: ['c'],
|
aliases: ['c'],
|
||||||
parsers: ['c'],
|
parsers: [parserName],
|
||||||
extensions: ['.c', '.h'],
|
extensions: ['.c', '.h'],
|
||||||
filenames: ['*.c', '*.h'],
|
filenames: ['*.c', '*.h'],
|
||||||
aceMode: 'c_cpp',
|
aceMode: 'c_cpp',
|
||||||
@@ -34,7 +34,7 @@ const languages = [
|
|||||||
{
|
{
|
||||||
name: 'C++',
|
name: 'C++',
|
||||||
aliases: ['cpp', 'cxx', 'cc'],
|
aliases: ['cpp', 'cxx', 'cc'],
|
||||||
parsers: ['cpp'],
|
parsers: [parserName],
|
||||||
extensions: ['.cpp', '.cxx', '.cc', '.hpp', '.hxx', '.hh', '.C', '.H'],
|
extensions: ['.cpp', '.cxx', '.cc', '.hpp', '.hxx', '.hh', '.C', '.H'],
|
||||||
filenames: ['*.cpp', '*.cxx', '*.cc', '*.hpp', '*.hxx', '*.hh', '*.C', '*.H'],
|
filenames: ['*.cpp', '*.cxx', '*.cc', '*.hpp', '*.hxx', '*.hh', '*.C', '*.H'],
|
||||||
aceMode: 'c_cpp',
|
aceMode: 'c_cpp',
|
||||||
@@ -45,7 +45,7 @@ const languages = [
|
|||||||
{
|
{
|
||||||
name: 'Objective-C',
|
name: 'Objective-C',
|
||||||
aliases: ['objc', 'objectivec'],
|
aliases: ['objc', 'objectivec'],
|
||||||
parsers: ['objective-c'],
|
parsers: [parserName],
|
||||||
extensions: ['.m'],
|
extensions: ['.m'],
|
||||||
filenames: ['*.m'],
|
filenames: ['*.m'],
|
||||||
aceMode: 'objectivec',
|
aceMode: 'objectivec',
|
||||||
@@ -56,7 +56,7 @@ const languages = [
|
|||||||
{
|
{
|
||||||
name: 'Objective-C++',
|
name: 'Objective-C++',
|
||||||
aliases: ['objcpp', 'objectivecpp'],
|
aliases: ['objcpp', 'objectivecpp'],
|
||||||
parsers: ['objective-cpp'],
|
parsers: [parserName],
|
||||||
extensions: ['.mm'],
|
extensions: ['.mm'],
|
||||||
filenames: ['*.mm'],
|
filenames: ['*.mm'],
|
||||||
aceMode: 'objectivec',
|
aceMode: 'objectivec',
|
||||||
@@ -67,7 +67,7 @@ const languages = [
|
|||||||
{
|
{
|
||||||
name: 'C#',
|
name: 'C#',
|
||||||
aliases: ['csharp', 'cs'],
|
aliases: ['csharp', 'cs'],
|
||||||
parsers: ['cs'],
|
parsers: [parserName],
|
||||||
extensions: ['.cs'],
|
extensions: ['.cs'],
|
||||||
filenames: ['*.cs'],
|
filenames: ['*.cs'],
|
||||||
aceMode: 'csharp',
|
aceMode: 'csharp',
|
||||||
@@ -78,7 +78,7 @@ const languages = [
|
|||||||
{
|
{
|
||||||
name: 'Java',
|
name: 'Java',
|
||||||
aliases: ['java'],
|
aliases: ['java'],
|
||||||
parsers: ['java'],
|
parsers: [parserName],
|
||||||
extensions: ['.java'],
|
extensions: ['.java'],
|
||||||
filenames: ['*.java'],
|
filenames: ['*.java'],
|
||||||
aceMode: 'java',
|
aceMode: 'java',
|
||||||
@@ -89,7 +89,7 @@ const languages = [
|
|||||||
{
|
{
|
||||||
name: 'Protocol Buffer',
|
name: 'Protocol Buffer',
|
||||||
aliases: ['protobuf', 'proto'],
|
aliases: ['protobuf', 'proto'],
|
||||||
parsers: ['proto'],
|
parsers: [parserName],
|
||||||
extensions: ['.proto'],
|
extensions: ['.proto'],
|
||||||
filenames: ['*.proto'],
|
filenames: ['*.proto'],
|
||||||
aceMode: 'protobuf',
|
aceMode: 'protobuf',
|
||||||
@@ -158,17 +158,7 @@ const clangPrinter: Printer<string> = {
|
|||||||
|
|
||||||
// Helper function to determine clang-format style
|
// Helper function to determine clang-format style
|
||||||
function getClangStyle(options: any): string {
|
function getClangStyle(options: any): string {
|
||||||
// You can extend this to support more options
|
return options.clangStyle || 'LLVM';
|
||||||
const style = options.clangStyle || 'LLVM';
|
|
||||||
|
|
||||||
// Support common styles
|
|
||||||
const validStyles = ['LLVM', 'Google', 'Chromium', 'Mozilla', 'WebKit', 'Microsoft', 'GNU'];
|
|
||||||
if (validStyles.includes(style)) {
|
|
||||||
return style;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Default to LLVM style
|
|
||||||
return 'LLVM';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Plugin options
|
// Plugin options
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
module docker_fmt
|
module docker_fmt
|
||||||
|
|
||||||
go 1.25.0
|
go 1.25.5
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
|
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
|
||||||
github.com/moby/buildkit v0.24.0
|
github.com/moby/buildkit v0.28.1
|
||||||
mvdan.cc/sh/v3 v3.12.0
|
mvdan.cc/sh/v3 v3.12.0
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -13,5 +13,5 @@ require (
|
|||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
|
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
|
||||||
google.golang.org/protobuf v1.36.9 // indirect
|
google.golang.org/protobuf v1.36.11 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -16,22 +16,18 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
|||||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
github.com/moby/buildkit v0.20.2 h1:qIeR47eQ1tzI1rwz0on3Xx2enRw/1CKjFhoONVcTlMA=
|
github.com/moby/buildkit v0.28.1 h1:Tq6H6gOMU2JyEQ5rA0pa7Ey3VGNR3qpw90liSIpMQoo=
|
||||||
github.com/moby/buildkit v0.20.2/go.mod h1:DhaF82FjwOElTftl0JUAJpH/SUIUx4UvcFncLeOtlDI=
|
github.com/moby/buildkit v0.28.1/go.mod h1:xO6wb9VBXszkIBxaGTLXc1rQORVQFIJRt3GSX7KzCFc=
|
||||||
github.com/moby/buildkit v0.24.0 h1:qYfTl7W1SIJzWDIDCcPT8FboHIZCYfi++wvySi3eyFE=
|
|
||||||
github.com/moby/buildkit v0.24.0/go.mod h1:4qovICAdR2H4C7+EGMRva5zgHW1gyhT4/flHI7F5F9k=
|
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
|
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
|
||||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
|
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/reteps/dockerfmt v0.3.7 h1:GChhICBoy6oiTuoLTLFtGnfyBi2qY9dvHBhrcWrN8Zk=
|
|
||||||
github.com/reteps/dockerfmt v0.3.7/go.mod h1:5lpbp1KzLWaRhL7qB6IEutHoQK3ZcT2Lb5MWPmFts74=
|
|
||||||
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
||||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
||||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
@@ -59,13 +55,9 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
|
|||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
|
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
|
||||||
google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
||||||
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
|
|
||||||
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
mvdan.cc/sh/v3 v3.11.0 h1:q5h+XMDRfUGUedCqFFsjoFjrhwf2Mvtt1rkMvVz0blw=
|
|
||||||
mvdan.cc/sh/v3 v3.11.0/go.mod h1:LRM+1NjoYCzuq/WZ6y44x14YNAI0NK7FLPeQSaFagGg=
|
|
||||||
mvdan.cc/sh/v3 v3.12.0 h1:ejKUR7ONP5bb+UGHGEG/k9V5+pRVIyD+LsZz7o8KHrI=
|
mvdan.cc/sh/v3 v3.12.0 h1:ejKUR7ONP5bb+UGHGEG/k9V5+pRVIyD+LsZz7o8KHrI=
|
||||||
mvdan.cc/sh/v3 v3.12.0/go.mod h1:Se6Cj17eYSn+sNooLZiEUnNNmNxg0imoYlTu4CyaGyg=
|
mvdan.cc/sh/v3 v3.12.0/go.mod h1:Se6Cj17eYSn+sNooLZiEUnNNmNxg0imoYlTu4CyaGyg=
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
import type { IToken } from "java-parser";
|
|
||||||
import { type AstPath } from "prettier";
|
|
||||||
import { type JavaNode, type JavaNonTerminal, type JavaParserOptions } from "./printers/helpers.js";
|
|
||||||
export declare function determineFormatterOffOnRanges(cst: JavaNonTerminal): void;
|
|
||||||
export declare function isFullyBetweenFormatterOffOn(path: AstPath<JavaNode>): boolean;
|
|
||||||
export declare function canAttachComment(node: JavaNode): boolean;
|
|
||||||
export declare function handleLineComment(commentNode: JavaComment, _: string, options: JavaParserOptions): boolean;
|
|
||||||
export declare function handleRemainingComment(commentNode: JavaComment): boolean;
|
|
||||||
export type JavaComment = IToken & {
|
|
||||||
value: string;
|
|
||||||
leading: boolean;
|
|
||||||
trailing: boolean;
|
|
||||||
printed: boolean;
|
|
||||||
enclosingNode?: JavaNonTerminal;
|
|
||||||
precedingNode?: JavaNonTerminal;
|
|
||||||
followingNode?: JavaNonTerminal;
|
|
||||||
};
|
|
||||||
@@ -1,199 +0,0 @@
|
|||||||
import { util } from "prettier";
|
|
||||||
import parser from "./parser.js";
|
|
||||||
import { isEmptyStatement, isNonTerminal, isTerminal } from "./printers/helpers.js";
|
|
||||||
const formatterOffOnRangesByCst = new WeakMap();
|
|
||||||
export function determineFormatterOffOnRanges(cst) {
|
|
||||||
const { comments } = cst;
|
|
||||||
if (!comments) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const ranges = comments
|
|
||||||
.filter(({ image }) => /^(\/\/\s*@formatter:(off|on)\s*|\/\*\s*@formatter:(off|on)\s*\*\/)$/.test(image))
|
|
||||||
.reduce((ranges, { image, startOffset }) => {
|
|
||||||
const previous = ranges.at(-1);
|
|
||||||
if (image.endsWith("off")) {
|
|
||||||
if ((previous === null || previous === void 0 ? void 0 : previous.on) !== Infinity) {
|
|
||||||
ranges.push({ off: startOffset, on: Infinity });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((previous === null || previous === void 0 ? void 0 : previous.on) === Infinity) {
|
|
||||||
previous.on = startOffset;
|
|
||||||
}
|
|
||||||
return ranges;
|
|
||||||
}, new Array());
|
|
||||||
formatterOffOnRangesByCst.set(cst, ranges);
|
|
||||||
}
|
|
||||||
export function isFullyBetweenFormatterOffOn(path) {
|
|
||||||
var _a;
|
|
||||||
const { node, root } = path;
|
|
||||||
const start = parser.locStart(node);
|
|
||||||
const end = parser.locEnd(node);
|
|
||||||
return (((_a = formatterOffOnRangesByCst
|
|
||||||
.get(root)) === null || _a === void 0 ? void 0 : _a.some(range => range.off < start && end < range.on)) === true);
|
|
||||||
}
|
|
||||||
export function canAttachComment(node) {
|
|
||||||
var _a, _b, _c;
|
|
||||||
if (isTerminal(node)) {
|
|
||||||
const { name, CATEGORIES } = node.tokenType;
|
|
||||||
return (name === "Identifier" ||
|
|
||||||
(CATEGORIES === null || CATEGORIES === void 0 ? void 0 : CATEGORIES.find(({ name }) => name === "BinaryOperator")) !== undefined);
|
|
||||||
}
|
|
||||||
const { children, name } = node;
|
|
||||||
switch (name) {
|
|
||||||
case "argumentList":
|
|
||||||
case "blockStatements":
|
|
||||||
case "emptyStatement":
|
|
||||||
case "enumBodyDeclarations":
|
|
||||||
return false;
|
|
||||||
case "annotationInterfaceMemberDeclaration":
|
|
||||||
case "classMemberDeclaration":
|
|
||||||
case "interfaceMemberDeclaration":
|
|
||||||
case "methodBody":
|
|
||||||
return !children.Semicolon;
|
|
||||||
case "blockStatement":
|
|
||||||
return !children.statement || !isEmptyStatement(children.statement[0]);
|
|
||||||
case "classBodyDeclaration":
|
|
||||||
return !((_a = children.classMemberDeclaration) === null || _a === void 0 ? void 0 : _a[0].children.Semicolon);
|
|
||||||
case "recordBodyDeclaration":
|
|
||||||
return !((_c = (_b = children.classBodyDeclaration) === null || _b === void 0 ? void 0 : _b[0].children.classMemberDeclaration) === null || _c === void 0 ? void 0 : _c[0].children.Semicolon);
|
|
||||||
case "statement":
|
|
||||||
return !isEmptyStatement(node);
|
|
||||||
case "statementWithoutTrailingSubstatement":
|
|
||||||
return !children.emptyStatement;
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export function handleLineComment(commentNode, _, options) {
|
|
||||||
return [
|
|
||||||
handleBinaryExpressionComments,
|
|
||||||
handleFqnOrRefTypeComments,
|
|
||||||
handleIfStatementComments,
|
|
||||||
handleJumpStatementComments,
|
|
||||||
handleLabeledStatementComments,
|
|
||||||
handleNameComments
|
|
||||||
].some(fn => fn(commentNode, options));
|
|
||||||
}
|
|
||||||
export function handleRemainingComment(commentNode) {
|
|
||||||
return [
|
|
||||||
handleFqnOrRefTypeComments,
|
|
||||||
handleMethodDeclaratorComments,
|
|
||||||
handleNameComments,
|
|
||||||
handleJumpStatementComments
|
|
||||||
].some(fn => fn(commentNode));
|
|
||||||
}
|
|
||||||
function handleBinaryExpressionComments(commentNode, options) {
|
|
||||||
const { enclosingNode, precedingNode, followingNode } = commentNode;
|
|
||||||
if (enclosingNode &&
|
|
||||||
isNonTerminal(enclosingNode) &&
|
|
||||||
enclosingNode.name === "binaryExpression") {
|
|
||||||
if (isBinaryOperator(followingNode)) {
|
|
||||||
if (options.experimentalOperatorPosition === "start") {
|
|
||||||
util.addLeadingComment(followingNode, commentNode);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
util.addTrailingComment(followingNode, commentNode);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (options.experimentalOperatorPosition === "start" &&
|
|
||||||
isBinaryOperator(precedingNode)) {
|
|
||||||
util.addLeadingComment(precedingNode, commentNode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function handleFqnOrRefTypeComments(commentNode) {
|
|
||||||
const { enclosingNode, followingNode } = commentNode;
|
|
||||||
if (enclosingNode &&
|
|
||||||
isNonTerminal(enclosingNode) &&
|
|
||||||
enclosingNode.name === "fqnOrRefType" &&
|
|
||||||
followingNode) {
|
|
||||||
util.addLeadingComment(followingNode, commentNode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function handleIfStatementComments(commentNode) {
|
|
||||||
const { enclosingNode, precedingNode } = commentNode;
|
|
||||||
if (enclosingNode &&
|
|
||||||
isNonTerminal(enclosingNode) &&
|
|
||||||
enclosingNode.name === "ifStatement" &&
|
|
||||||
precedingNode &&
|
|
||||||
isNonTerminal(precedingNode) &&
|
|
||||||
precedingNode.name === "statement") {
|
|
||||||
util.addDanglingComment(enclosingNode, commentNode, undefined);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function handleJumpStatementComments(commentNode) {
|
|
||||||
const { enclosingNode, precedingNode, followingNode } = commentNode;
|
|
||||||
if (enclosingNode &&
|
|
||||||
!precedingNode &&
|
|
||||||
!followingNode &&
|
|
||||||
isNonTerminal(enclosingNode) &&
|
|
||||||
["breakStatement", "continueStatement", "returnStatement"].includes(enclosingNode.name)) {
|
|
||||||
util.addTrailingComment(enclosingNode, commentNode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function handleLabeledStatementComments(commentNode) {
|
|
||||||
const { enclosingNode, precedingNode } = commentNode;
|
|
||||||
if (enclosingNode &&
|
|
||||||
precedingNode &&
|
|
||||||
isNonTerminal(enclosingNode) &&
|
|
||||||
enclosingNode.name === "labeledStatement" &&
|
|
||||||
isTerminal(precedingNode) &&
|
|
||||||
precedingNode.tokenType.name === "Identifier") {
|
|
||||||
util.addLeadingComment(precedingNode, commentNode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function handleMethodDeclaratorComments(commentNode) {
|
|
||||||
const { enclosingNode } = commentNode;
|
|
||||||
if (enclosingNode &&
|
|
||||||
isNonTerminal(enclosingNode) &&
|
|
||||||
enclosingNode.name === "methodDeclarator" &&
|
|
||||||
!enclosingNode.children.receiverParameter &&
|
|
||||||
!enclosingNode.children.formalParameterList &&
|
|
||||||
enclosingNode.children.LBrace[0].startOffset < commentNode.startOffset &&
|
|
||||||
commentNode.startOffset < enclosingNode.children.RBrace[0].startOffset) {
|
|
||||||
util.addDanglingComment(enclosingNode, commentNode, undefined);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function handleNameComments(commentNode) {
|
|
||||||
const { enclosingNode, precedingNode } = commentNode;
|
|
||||||
if (enclosingNode &&
|
|
||||||
precedingNode &&
|
|
||||||
isNonTerminal(enclosingNode) &&
|
|
||||||
isTerminal(precedingNode) &&
|
|
||||||
precedingNode.tokenType.name === "Identifier" &&
|
|
||||||
[
|
|
||||||
"ambiguousName",
|
|
||||||
"classOrInterfaceTypeToInstantiate",
|
|
||||||
"expressionName",
|
|
||||||
"moduleDeclaration",
|
|
||||||
"moduleName",
|
|
||||||
"packageDeclaration",
|
|
||||||
"packageName",
|
|
||||||
"packageOrTypeName",
|
|
||||||
"typeName"
|
|
||||||
].includes(enclosingNode.name)) {
|
|
||||||
util.addTrailingComment(precedingNode, commentNode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
function isBinaryOperator(node) {
|
|
||||||
var _a;
|
|
||||||
return (node !== undefined &&
|
|
||||||
(isNonTerminal(node)
|
|
||||||
? node.name === "shiftOperator"
|
|
||||||
: (_a = node.tokenType.CATEGORIES) === null || _a === void 0 ? void 0 : _a.some(({ name }) => name === "BinaryOperator")));
|
|
||||||
}
|
|
||||||
563
frontend/src/common/prettier/plugins/java/index.d.ts
vendored
@@ -1,563 +0,0 @@
|
|||||||
import type { JavaNode } from "./printers/helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
languages: {
|
|
||||||
name: string;
|
|
||||||
parsers: "java"[];
|
|
||||||
group: string;
|
|
||||||
tmScope: string;
|
|
||||||
aceMode: string;
|
|
||||||
codemirrorMode: string;
|
|
||||||
codemirrorMimeType: string;
|
|
||||||
extensions: string[];
|
|
||||||
linguistLanguageId: number;
|
|
||||||
vscodeLanguageIds: string[];
|
|
||||||
}[];
|
|
||||||
parsers: {
|
|
||||||
java: {
|
|
||||||
parse(text: string, options: import("./printers/helpers.js").JavaParserOptions): import("./printers/helpers.js").JavaNonTerminal;
|
|
||||||
astFormat: string;
|
|
||||||
hasPragma(text: string): boolean;
|
|
||||||
locStart(node: JavaNode): number;
|
|
||||||
locEnd(node: JavaNode): number;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
printers: {
|
|
||||||
java: {
|
|
||||||
print(path: import("prettier").AstPath<import("java-parser").ArrayInitializerCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableInitializerListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").BlockCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").BlockStatementsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LocalVariableDeclarationStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LocalVariableDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LabeledStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ExpressionStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").IfStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AssertStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").SwitchStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").SwitchBlockCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").SwitchBlockStatementGroupCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").SwitchLabelCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").SwitchRuleCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").WhileStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").DoStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").BasicForStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").StatementExpressionListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EnhancedForStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").BreakStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ContinueStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ReturnStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ThrowStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").SynchronizedStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TryStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CatchesCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CatchClauseCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CatchFormalParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CatchTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FinallyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TryWithResourcesStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ResourceSpecificationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ResourceListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").YieldStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ForInitCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ForUpdateCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").StatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").StatementWithoutTrailingSubstatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ForStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").BlockStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CaseConstantCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CasePatternCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EmptyStatementCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").StatementExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LocalVariableTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ResourceCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableAccessCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").NormalClassDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeParametersCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeParameterListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassExtendsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassImplementsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceTypeListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassMemberDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FieldDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableDeclaratorListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableDeclaratorCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableDeclaratorIdCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannPrimitiveTypeWithOptionalDimsSuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannReferenceTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodHeaderCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodDeclaratorCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ReceiverParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FormalParameterListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableParaRegularParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableArityParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ThrowsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ExceptionTypeListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").StaticInitializerCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConstructorDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConstructorDeclaratorCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConstructorBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnqualifiedExplicitConstructorInvocationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").QualifiedExplicitConstructorInvocationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EnumDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EnumBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EnumConstantListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EnumConstantCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EnumBodyDeclarationsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordHeaderCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordComponentListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordComponentCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableArityRecordComponentCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CompactConstructorDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableInitializerCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").VariableModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannClassTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassBodyDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InstanceInitializerCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassPermitsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FieldModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConstructorModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").SimpleTypeNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ExplicitConstructorInvocationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EnumConstantModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ExceptionTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FormalParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ResultCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordBodyDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordComponentModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannClassOrInterfaceTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannInterfaceTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannPrimitiveTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnannTypeVariableCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LambdaExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LambdaParametersCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LambdaParametersWithBracesCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConciseLambdaParameterListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").NormalLambdaParameterListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RegularLambdaParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConditionalExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").BinaryExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnaryExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnaryExpressionNotPlusMinusCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PrimaryCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PrimarySuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FqnOrRefTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FqnOrRefTypePartFirstCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FqnOrRefTypePartRestCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FqnOrRefTypePartCommonCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ParenthesisExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PrimitiveCastExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ReferenceTypeCastExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UnqualifiedClassInstanceCreationExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassOrInterfaceTypeToInstantiateCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodInvocationSuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ArgumentListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ArrayCreationExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ArrayCreationExpressionWithoutInitializerSuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ArrayCreationWithInitializerSuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").DimExprsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").DimExprCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassLiteralSuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ArrayAccessSuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodReferenceSuffixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").StringTemplateCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TextBlockTemplateCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RecordPatternCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ComponentPatternListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").GuardCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TemplateCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PatternCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypePatternCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CastExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeArgumentsOrDiamondCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").DiamondCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ComponentPatternCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MatchAllPatternCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConciseLambdaParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").EmbeddedExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LambdaBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LambdaParameterListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").NormalLambdaParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LambdaParameterTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").NewExpressionCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PrimaryPrefixCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TemplateArgumentCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").NormalInterfaceDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceExtendsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceMemberDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConstantDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceMethodDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AnnotationInterfaceDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AnnotationInterfaceBodyCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AnnotationInterfaceMemberDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AnnotationInterfaceElementDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").DefaultValueCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AnnotationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ElementValuePairListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ElementValuePairCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ElementValueArrayInitializerCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ElementValueListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ElementValueCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AnnotationInterfaceElementModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ConstantModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfacePermitsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceMethodModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").LiteralCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ShiftOperatorCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").BooleanLiteralCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FloatingPointLiteralCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").IntegerLiteralCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").MethodNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AmbiguousNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeIdentifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ExpressionNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PackageNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ModuleNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PackageOrTypeNameCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").CompilationUnitCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").OrdinaryCompilationUnitCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ModularCompilationUnitCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PackageDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ImportDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ModuleDeclarationCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RequiresModuleDirectiveCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ExportsModuleDirectiveCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").OpensModuleDirectiveCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").UsesModuleDirectiveCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ProvidesModuleDirectiveCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ModuleDirectiveCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").RequiresModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PackageModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").PrimitiveTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ReferenceTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeVariableCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").DimsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeParameterCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeBoundCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").AdditionalBoundCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeArgumentsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeArgumentListCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").WildcardCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").WildcardBoundsCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").InterfaceTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").NumericTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").ClassOrInterfaceTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").FloatingPointTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").IntegralTypeCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeArgumentCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").TypeParameterModifierCstNode & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}> | import("prettier").AstPath<import("java-parser").IToken & {
|
|
||||||
comments?: import("./comments.js").JavaComment[];
|
|
||||||
}>, options: import("prettier").ParserOptions<JavaNode>, print: (path: import("prettier").AstPath<JavaNode>) => import("prettier").Doc, args: unknown): import("prettier/doc.js").builders.Doc;
|
|
||||||
hasPrettierIgnore(path: import("prettier").AstPath<JavaNode>): boolean;
|
|
||||||
canAttachComment: typeof import("./comments.js").canAttachComment;
|
|
||||||
isBlockComment(node: JavaNode): boolean;
|
|
||||||
printComment(commentPath: import("prettier").AstPath<JavaNode>): string | import("prettier/doc.js").builders.Doc[];
|
|
||||||
getCommentChildNodes(node: JavaNode): any[];
|
|
||||||
handleComments: {
|
|
||||||
ownLine: typeof import("./comments.js").handleLineComment;
|
|
||||||
endOfLine: typeof import("./comments.js").handleLineComment;
|
|
||||||
remaining: typeof import("./comments.js").handleRemainingComment;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
options: {
|
|
||||||
entrypoint: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
arrowParens: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
trailingComma: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
experimentalOperatorPosition: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
defaultOptions: {
|
|
||||||
arrowParens: "avoid";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
import options from "./options.js";
|
|
||||||
import parser from "./parser.js";
|
|
||||||
import printer from "./printer.js";
|
|
||||||
export default {
|
|
||||||
languages: [
|
|
||||||
{
|
|
||||||
name: "Java",
|
|
||||||
parsers: ["java"],
|
|
||||||
group: "Java",
|
|
||||||
tmScope: "source.java",
|
|
||||||
aceMode: "java",
|
|
||||||
codemirrorMode: "clike",
|
|
||||||
codemirrorMimeType: "text/x-java",
|
|
||||||
extensions: [".java"],
|
|
||||||
linguistLanguageId: 181,
|
|
||||||
vscodeLanguageIds: ["java"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
parsers: {
|
|
||||||
java: parser
|
|
||||||
},
|
|
||||||
printers: {
|
|
||||||
java: printer
|
|
||||||
},
|
|
||||||
options,
|
|
||||||
defaultOptions: {
|
|
||||||
arrowParens: "avoid"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
declare const _default: {
|
|
||||||
entrypoint: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
arrowParens: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
trailingComma: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
experimentalOperatorPosition: {
|
|
||||||
type: "choice";
|
|
||||||
category: string;
|
|
||||||
default: string;
|
|
||||||
choices: {
|
|
||||||
value: string;
|
|
||||||
description: string;
|
|
||||||
}[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,284 +0,0 @@
|
|||||||
export default {
|
|
||||||
entrypoint: {
|
|
||||||
type: "choice",
|
|
||||||
category: "Global",
|
|
||||||
default: "compilationUnit",
|
|
||||||
// sed -nr 's/.*\.RULE\(([^,]+),.*/\1/p' $(ls path/to/java-parser/rules/folder/*)
|
|
||||||
choices: [
|
|
||||||
{ value: "arrayInitializer", description: "" },
|
|
||||||
{ value: "variableInitializerList", description: "" },
|
|
||||||
{ value: "block", description: "" },
|
|
||||||
{ value: "blockStatements", description: "" },
|
|
||||||
{ value: "blockStatement", description: "" },
|
|
||||||
{ value: "localVariableDeclarationStatement", description: "" },
|
|
||||||
{ value: "localVariableDeclaration", description: "" },
|
|
||||||
{ value: "localVariableType", description: "" },
|
|
||||||
{ value: "statement", description: "" },
|
|
||||||
{ value: "statementWithoutTrailingSubstatement", description: "" },
|
|
||||||
{ value: "emptyStatement", description: "" },
|
|
||||||
{ value: "labeledStatement", description: "" },
|
|
||||||
{ value: "expressionStatement", description: "" },
|
|
||||||
{ value: "statementExpression", description: "" },
|
|
||||||
{ value: "ifStatement", description: "" },
|
|
||||||
{ value: "assertStatement", description: "" },
|
|
||||||
{ value: "switchStatement", description: "" },
|
|
||||||
{ value: "switchBlock", description: "" },
|
|
||||||
{ value: "switchBlockStatementGroup", description: "" },
|
|
||||||
{ value: "switchLabel", description: "" },
|
|
||||||
{ value: "switchRule", description: "" },
|
|
||||||
{ value: "caseConstant", description: "" },
|
|
||||||
{ value: "casePattern", description: "" },
|
|
||||||
{ value: "whileStatement", description: "" },
|
|
||||||
{ value: "doStatement", description: "" },
|
|
||||||
{ value: "forStatement", description: "" },
|
|
||||||
{ value: "basicForStatement", description: "" },
|
|
||||||
{ value: "forInit", description: "" },
|
|
||||||
{ value: "forUpdate", description: "" },
|
|
||||||
{ value: "statementExpressionList", description: "" },
|
|
||||||
{ value: "enhancedForStatement", description: "" },
|
|
||||||
{ value: "breakStatement", description: "" },
|
|
||||||
{ value: "continueStatement", description: "" },
|
|
||||||
{ value: "returnStatement", description: "" },
|
|
||||||
{ value: "throwStatement", description: "" },
|
|
||||||
{ value: "synchronizedStatement", description: "" },
|
|
||||||
{ value: "tryStatement", description: "" },
|
|
||||||
{ value: "catches", description: "" },
|
|
||||||
{ value: "catchClause", description: "" },
|
|
||||||
{ value: "catchFormalParameter", description: "" },
|
|
||||||
{ value: "catchType", description: "" },
|
|
||||||
{ value: "finally", description: "" },
|
|
||||||
{ value: "tryWithResourcesStatement", description: "" },
|
|
||||||
{ value: "resourceSpecification", description: "" },
|
|
||||||
{ value: "resourceList", description: "" },
|
|
||||||
{ value: "resource", description: "" },
|
|
||||||
{ value: "yieldStatement", description: "" },
|
|
||||||
{ value: "variableAccess", description: "" },
|
|
||||||
{ value: "classDeclaration", description: "" },
|
|
||||||
{ value: "normalClassDeclaration", description: "" },
|
|
||||||
{ value: "classModifier", description: "" },
|
|
||||||
{ value: "typeParameters", description: "" },
|
|
||||||
{ value: "typeParameterList", description: "" },
|
|
||||||
{ value: "classExtends", description: "" },
|
|
||||||
{ value: "classImplements", description: "" },
|
|
||||||
{ value: "interfaceTypeList", description: "" },
|
|
||||||
{ value: "classPermits", description: "" },
|
|
||||||
{ value: "classBody", description: "" },
|
|
||||||
{ value: "classBodyDeclaration", description: "" },
|
|
||||||
{ value: "classMemberDeclaration", description: "" },
|
|
||||||
{ value: "fieldDeclaration", description: "" },
|
|
||||||
{ value: "fieldModifier", description: "" },
|
|
||||||
{ value: "variableDeclaratorList", description: "" },
|
|
||||||
{ value: "variableDeclarator", description: "" },
|
|
||||||
{ value: "variableDeclaratorId", description: "" },
|
|
||||||
{ value: "variableInitializer", description: "" },
|
|
||||||
{ value: "unannType", description: "" },
|
|
||||||
{ value: "unannPrimitiveTypeWithOptionalDimsSuffix", description: "" },
|
|
||||||
{ value: "unannPrimitiveType", description: "" },
|
|
||||||
{ value: "unannReferenceType", description: "" },
|
|
||||||
{ value: "unannClassOrInterfaceType", description: "" },
|
|
||||||
{ value: "unannClassType", description: "" },
|
|
||||||
{ value: "unannInterfaceType", description: "" },
|
|
||||||
{ value: "unannTypeVariable", description: "" },
|
|
||||||
{ value: "methodDeclaration", description: "" },
|
|
||||||
{ value: "methodModifier", description: "" },
|
|
||||||
{ value: "methodHeader", description: "" },
|
|
||||||
{ value: "result", description: "" },
|
|
||||||
{ value: "methodDeclarator", description: "" },
|
|
||||||
{ value: "receiverParameter", description: "" },
|
|
||||||
{ value: "formalParameterList", description: "" },
|
|
||||||
{ value: "formalParameter", description: "" },
|
|
||||||
{ value: "variableParaRegularParameter", description: "" },
|
|
||||||
{ value: "variableArityParameter", description: "" },
|
|
||||||
{ value: "variableModifier", description: "" },
|
|
||||||
{ value: "throws", description: "" },
|
|
||||||
{ value: "exceptionTypeList", description: "" },
|
|
||||||
{ value: "exceptionType", description: "" },
|
|
||||||
{ value: "methodBody", description: "" },
|
|
||||||
{ value: "instanceInitializer", description: "" },
|
|
||||||
{ value: "staticInitializer", description: "" },
|
|
||||||
{ value: "constructorDeclaration", description: "" },
|
|
||||||
{ value: "constructorModifier", description: "" },
|
|
||||||
{ value: "constructorDeclarator", description: "" },
|
|
||||||
{ value: "simpleTypeName", description: "" },
|
|
||||||
{ value: "constructorBody", description: "" },
|
|
||||||
{ value: "explicitConstructorInvocation", description: "" },
|
|
||||||
{ value: "unqualifiedExplicitConstructorInvocation", description: "" },
|
|
||||||
{ value: "qualifiedExplicitConstructorInvocation", description: "" },
|
|
||||||
{ value: "enumDeclaration", description: "" },
|
|
||||||
{ value: "enumBody", description: "" },
|
|
||||||
{ value: "enumConstantList", description: "" },
|
|
||||||
{ value: "enumConstant", description: "" },
|
|
||||||
{ value: "enumConstantModifier", description: "" },
|
|
||||||
{ value: "enumBodyDeclarations", description: "" },
|
|
||||||
{ value: "recordDeclaration", description: "" },
|
|
||||||
{ value: "recordHeader", description: "" },
|
|
||||||
{ value: "recordComponentList", description: "" },
|
|
||||||
{ value: "recordComponent", description: "" },
|
|
||||||
{ value: "variableArityRecordComponent", description: "" },
|
|
||||||
{ value: "recordComponentModifier", description: "" },
|
|
||||||
{ value: "recordBody", description: "" },
|
|
||||||
{ value: "recordBodyDeclaration", description: "" },
|
|
||||||
{ value: "compactConstructorDeclaration", description: "" },
|
|
||||||
{ value: "isDims", description: "" },
|
|
||||||
{ value: "expression", description: "" },
|
|
||||||
{ value: "lambdaExpression", description: "" },
|
|
||||||
{ value: "lambdaParameters", description: "" },
|
|
||||||
{ value: "lambdaParametersWithBraces", description: "" },
|
|
||||||
{ value: "lambdaParameterList", description: "" },
|
|
||||||
{ value: "conciseLambdaParameterList", description: "" },
|
|
||||||
{ value: "normalLambdaParameterList", description: "" },
|
|
||||||
{ value: "normalLambdaParameter", description: "" },
|
|
||||||
{ value: "regularLambdaParameter", description: "" },
|
|
||||||
{ value: "lambdaParameterType", description: "" },
|
|
||||||
{ value: "conciseLambdaParameter", description: "" },
|
|
||||||
{ value: "lambdaBody", description: "" },
|
|
||||||
{ value: "conditionalExpression", description: "" },
|
|
||||||
{ value: "binaryExpression", description: "" },
|
|
||||||
{ value: "unaryExpression", description: "" },
|
|
||||||
{ value: "unaryExpressionNotPlusMinus", description: "" },
|
|
||||||
{ value: "primary", description: "" },
|
|
||||||
{ value: "primaryPrefix", description: "" },
|
|
||||||
{ value: "primarySuffix", description: "" },
|
|
||||||
{ value: "fqnOrRefType", description: "" },
|
|
||||||
{ value: "fqnOrRefTypePartRest", description: "" },
|
|
||||||
{ value: "fqnOrRefTypePartCommon", description: "" },
|
|
||||||
{ value: "fqnOrRefTypePartFirst", description: "" },
|
|
||||||
{ value: "parenthesisExpression", description: "" },
|
|
||||||
{ value: "castExpression", description: "" },
|
|
||||||
{ value: "primitiveCastExpression", description: "" },
|
|
||||||
{ value: "referenceTypeCastExpression", description: "" },
|
|
||||||
{ value: "newExpression", description: "" },
|
|
||||||
{ value: "unqualifiedClassInstanceCreationExpression", description: "" },
|
|
||||||
{ value: "classOrInterfaceTypeToInstantiate", description: "" },
|
|
||||||
{ value: "typeArgumentsOrDiamond", description: "" },
|
|
||||||
{ value: "diamond", description: "" },
|
|
||||||
{ value: "methodInvocationSuffix", description: "" },
|
|
||||||
{ value: "argumentList", description: "" },
|
|
||||||
{ value: "arrayCreationExpression", description: "" },
|
|
||||||
{
|
|
||||||
value: "arrayCreationExpressionWithoutInitializerSuffix",
|
|
||||||
description: ""
|
|
||||||
},
|
|
||||||
{ value: "arrayCreationWithInitializerSuffix", description: "" },
|
|
||||||
{ value: "dimExprs", description: "" },
|
|
||||||
{ value: "dimExpr", description: "" },
|
|
||||||
{ value: "classLiteralSuffix", description: "" },
|
|
||||||
{ value: "arrayAccessSuffix", description: "" },
|
|
||||||
{ value: "methodReferenceSuffix", description: "" },
|
|
||||||
{ value: "templateArgument", description: "" },
|
|
||||||
{ value: "template", description: "" },
|
|
||||||
{ value: "stringTemplate", description: "" },
|
|
||||||
{ value: "textBlockTemplate", description: "" },
|
|
||||||
{ value: "embeddedExpression", description: "" },
|
|
||||||
{ value: "pattern", description: "" },
|
|
||||||
{ value: "typePattern", description: "" },
|
|
||||||
{ value: "recordPattern", description: "" },
|
|
||||||
{ value: "componentPatternList", description: "" },
|
|
||||||
{ value: "componentPattern", description: "" },
|
|
||||||
{ value: "matchAllPattern", description: "" },
|
|
||||||
{ value: "guard", description: "" },
|
|
||||||
{ value: "isRefTypeInMethodRef", description: "" },
|
|
||||||
{ value: "interfaceDeclaration", description: "" },
|
|
||||||
{ value: "normalInterfaceDeclaration", description: "" },
|
|
||||||
{ value: "interfaceModifier", description: "" },
|
|
||||||
{ value: "interfaceExtends", description: "" },
|
|
||||||
{ value: "interfacePermits", description: "" },
|
|
||||||
{ value: "interfaceBody", description: "" },
|
|
||||||
{ value: "interfaceMemberDeclaration", description: "" },
|
|
||||||
{ value: "constantDeclaration", description: "" },
|
|
||||||
{ value: "constantModifier", description: "" },
|
|
||||||
{ value: "interfaceMethodDeclaration", description: "" },
|
|
||||||
{ value: "interfaceMethodModifier", description: "" },
|
|
||||||
{ value: "annotationInterfaceDeclaration", description: "" },
|
|
||||||
{ value: "annotationInterfaceBody", description: "" },
|
|
||||||
{ value: "annotationInterfaceMemberDeclaration", description: "" },
|
|
||||||
{ value: "annotationInterfaceElementDeclaration", description: "" },
|
|
||||||
{ value: "annotationInterfaceElementModifier", description: "" },
|
|
||||||
{ value: "defaultValue", description: "" },
|
|
||||||
{ value: "annotation", description: "" },
|
|
||||||
{ value: "elementValuePairList", description: "" },
|
|
||||||
{ value: "elementValuePair", description: "" },
|
|
||||||
{ value: "elementValue", description: "" },
|
|
||||||
{ value: "elementValueArrayInitializer", description: "" },
|
|
||||||
{ value: "elementValueList", description: "" },
|
|
||||||
{ value: "literal", description: "" },
|
|
||||||
{ value: "integerLiteral", description: "" },
|
|
||||||
{ value: "floatingPointLiteral", description: "" },
|
|
||||||
{ value: "booleanLiteral", description: "" },
|
|
||||||
{ value: "shiftOperator", description: "" },
|
|
||||||
{ value: "moduleName", description: "" },
|
|
||||||
{ value: "packageName", description: "" },
|
|
||||||
{ value: "typeName", description: "" },
|
|
||||||
{ value: "expressionName", description: "" },
|
|
||||||
{ value: "methodName", description: "" },
|
|
||||||
{ value: "packageOrTypeName", description: "" },
|
|
||||||
{ value: "ambiguousName", description: "" },
|
|
||||||
{ value: "compilationUnit", description: "" },
|
|
||||||
{ value: "ordinaryCompilationUnit", description: "" },
|
|
||||||
{ value: "modularCompilationUnit", description: "" },
|
|
||||||
{ value: "packageDeclaration", description: "" },
|
|
||||||
{ value: "packageModifier", description: "" },
|
|
||||||
{ value: "importDeclaration", description: "" },
|
|
||||||
{ value: "typeDeclaration", description: "" },
|
|
||||||
{ value: "moduleDeclaration", description: "" },
|
|
||||||
{ value: "moduleDirective", description: "" },
|
|
||||||
{ value: "requiresModuleDirective", description: "" },
|
|
||||||
{ value: "exportsModuleDirective", description: "" },
|
|
||||||
{ value: "opensModuleDirective", description: "" },
|
|
||||||
{ value: "usesModuleDirective", description: "" },
|
|
||||||
{ value: "providesModuleDirective", description: "" },
|
|
||||||
{ value: "requiresModifier", description: "" },
|
|
||||||
{ value: "primitiveType", description: "" },
|
|
||||||
{ value: "numericType", description: "" },
|
|
||||||
{ value: "integralType", description: "" },
|
|
||||||
{ value: "floatingPointType", description: "" },
|
|
||||||
{ value: "referenceType", description: "" },
|
|
||||||
{ value: "classOrInterfaceType", description: "" },
|
|
||||||
{ value: "classType", description: "" },
|
|
||||||
{ value: "interfaceType", description: "" },
|
|
||||||
{ value: "typeVariable", description: "" },
|
|
||||||
{ value: "dims", description: "" },
|
|
||||||
{ value: "typeParameter", description: "" },
|
|
||||||
{ value: "typeParameterModifier", description: "" },
|
|
||||||
{ value: "typeBound", description: "" },
|
|
||||||
{ value: "additionalBound", description: "" },
|
|
||||||
{ value: "typeArguments", description: "" },
|
|
||||||
{ value: "typeArgumentList", description: "" },
|
|
||||||
{ value: "typeArgument", description: "" },
|
|
||||||
{ value: "wildcard", description: "" },
|
|
||||||
{ value: "wildcardBounds", description: "" }
|
|
||||||
],
|
|
||||||
description: "Prettify from the entrypoint, allowing to use prettier on snippet."
|
|
||||||
},
|
|
||||||
arrowParens: {
|
|
||||||
type: "choice",
|
|
||||||
category: "Java",
|
|
||||||
default: "always",
|
|
||||||
choices: [
|
|
||||||
{ value: "always", description: "" },
|
|
||||||
{ value: "avoid", description: "" }
|
|
||||||
],
|
|
||||||
description: "Include parentheses around a sole arrow function parameter."
|
|
||||||
},
|
|
||||||
trailingComma: {
|
|
||||||
type: "choice",
|
|
||||||
category: "Java",
|
|
||||||
default: "all",
|
|
||||||
choices: [
|
|
||||||
{ value: "all", description: "" },
|
|
||||||
{ value: "es5", description: "" },
|
|
||||||
{ value: "none", description: "" }
|
|
||||||
],
|
|
||||||
description: "Print trailing commas wherever possible when multi-line."
|
|
||||||
},
|
|
||||||
experimentalOperatorPosition: {
|
|
||||||
type: "choice",
|
|
||||||
category: "Java",
|
|
||||||
default: "end",
|
|
||||||
choices: [
|
|
||||||
{ value: "start", description: "" },
|
|
||||||
{ value: "end", description: "" }
|
|
||||||
],
|
|
||||||
description: "Where to print operators when binary expressions wrap lines."
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import { type JavaNode, type JavaNonTerminal, type JavaParserOptions } from "./printers/helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
parse(text: string, options: JavaParserOptions): JavaNonTerminal;
|
|
||||||
astFormat: string;
|
|
||||||
hasPragma(text: string): boolean;
|
|
||||||
locStart(node: JavaNode): number;
|
|
||||||
locEnd(node: JavaNode): number;
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { parse } from "java-parser";
|
|
||||||
import { determineFormatterOffOnRanges } from "./comments.js";
|
|
||||||
import { isTerminal } from "./printers/helpers.js";
|
|
||||||
export default {
|
|
||||||
parse(text, options) {
|
|
||||||
var _a;
|
|
||||||
const cst = parse(text, options.entrypoint);
|
|
||||||
(_a = cst.comments) === null || _a === void 0 ? void 0 : _a.forEach(comment => {
|
|
||||||
comment.value = comment.image;
|
|
||||||
});
|
|
||||||
determineFormatterOffOnRanges(cst);
|
|
||||||
return cst;
|
|
||||||
},
|
|
||||||
astFormat: "java",
|
|
||||||
hasPragma(text) {
|
|
||||||
return /^\/\*\*\n\s+\*\s@(format|prettier)\n\s+\*\//.test(text);
|
|
||||||
},
|
|
||||||
locStart(node) {
|
|
||||||
return isTerminal(node) ? node.startOffset : node.location.startOffset;
|
|
||||||
},
|
|
||||||
locEnd(node) {
|
|
||||||
return (isTerminal(node) ? node.endOffset : node.location.endOffset) + 1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import type { AstPath } from "prettier";
|
|
||||||
import { canAttachComment, handleLineComment, handleRemainingComment } from "./comments.js";
|
|
||||||
import { type JavaNode } from "./printers/helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
print(path: DistributedAstPath<JavaNode>, options: import("prettier").ParserOptions<JavaNode>, print: (path: AstPath<JavaNode>) => import("prettier").Doc, args: unknown): import("prettier/doc.js").builders.Doc;
|
|
||||||
hasPrettierIgnore(path: AstPath<JavaNode>): boolean;
|
|
||||||
canAttachComment: typeof canAttachComment;
|
|
||||||
isBlockComment(node: JavaNode): boolean;
|
|
||||||
printComment(commentPath: AstPath<JavaNode>): string | import("prettier/doc.js").builders.Doc[];
|
|
||||||
getCommentChildNodes(node: JavaNode): any[];
|
|
||||||
handleComments: {
|
|
||||||
ownLine: typeof handleLineComment;
|
|
||||||
endOfLine: typeof handleLineComment;
|
|
||||||
remaining: typeof handleRemainingComment;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
type DistributedAstPath<T> = T extends any ? AstPath<T> : never;
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
import { canAttachComment, handleLineComment, handleRemainingComment, isFullyBetweenFormatterOffOn } from "./comments.js";
|
|
||||||
import { isNonTerminal, isTerminal, printComment } from "./printers/helpers.js";
|
|
||||||
import { printerForNodeType } from "./printers/index.js";
|
|
||||||
export default {
|
|
||||||
print(path, options, print, args) {
|
|
||||||
return hasTerminal(path)
|
|
||||||
? path.node.image
|
|
||||||
: printerForNodeType(path.node.name)(path, print, options, args);
|
|
||||||
},
|
|
||||||
hasPrettierIgnore(path) {
|
|
||||||
var _a;
|
|
||||||
const { node } = path;
|
|
||||||
return (((_a = node.comments) === null || _a === void 0 ? void 0 : _a.some(({ image }) => /^(\/\/\s*prettier-ignore|\/\*\s*prettier-ignore\s*\*\/)$/.test(image))) === true ||
|
|
||||||
(canAttachComment(node) && isFullyBetweenFormatterOffOn(path)));
|
|
||||||
},
|
|
||||||
canAttachComment,
|
|
||||||
isBlockComment(node) {
|
|
||||||
return isTerminal(node) && node.tokenType.name === "TraditionalComment";
|
|
||||||
},
|
|
||||||
printComment(commentPath) {
|
|
||||||
const { node } = commentPath;
|
|
||||||
if (isNonTerminal(node) || node.tokenType.GROUP !== "comments") {
|
|
||||||
throw new Error(`Not a comment: ${JSON.stringify(node)}`);
|
|
||||||
}
|
|
||||||
return printComment(node);
|
|
||||||
},
|
|
||||||
getCommentChildNodes(node) {
|
|
||||||
return isNonTerminal(node)
|
|
||||||
? Object.values(node.children).flatMap(child => child)
|
|
||||||
: [];
|
|
||||||
},
|
|
||||||
handleComments: {
|
|
||||||
ownLine: handleLineComment,
|
|
||||||
endOfLine: handleLineComment,
|
|
||||||
remaining: handleRemainingComment
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function hasTerminal(path) {
|
|
||||||
return isTerminal(path.node);
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
declare const _default: {
|
|
||||||
arrayInitializer(path: import("prettier").AstPath<import("java-parser").ArrayInitializerCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn, options: import("./helpers.js").JavaParserOptions): import("prettier/doc.js").builders.Group | "{}";
|
|
||||||
variableInitializerList(path: import("prettier").AstPath<import("java-parser").VariableInitializerListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): import("prettier/doc.js").builders.Doc[];
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import { printArrayInitializer, printList } from "./helpers.js";
|
|
||||||
export default {
|
|
||||||
arrayInitializer(path, print, options) {
|
|
||||||
return printArrayInitializer(path, print, options, "variableInitializerList");
|
|
||||||
},
|
|
||||||
variableInitializerList(path, print) {
|
|
||||||
return printList(path, print, "variableInitializer");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import { printSingle } from "./helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
block(path: import("prettier").AstPath<import("java-parser").BlockCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
blockStatements(path: import("prettier").AstPath<import("java-parser").BlockStatementsCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
blockStatement: typeof printSingle;
|
|
||||||
localVariableDeclarationStatement(path: import("prettier").AstPath<import("java-parser").LocalVariableDeclarationStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
localVariableDeclaration(path: import("prettier").AstPath<import("java-parser").LocalVariableDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
localVariableType: typeof printSingle;
|
|
||||||
statement: typeof printSingle;
|
|
||||||
statementWithoutTrailingSubstatement: typeof printSingle;
|
|
||||||
emptyStatement(): string;
|
|
||||||
labeledStatement(path: import("prettier").AstPath<import("java-parser").LabeledStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
expressionStatement(path: import("prettier").AstPath<import("java-parser").ExpressionStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
statementExpression: typeof printSingle;
|
|
||||||
ifStatement(path: import("prettier").AstPath<import("java-parser").IfStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
assertStatement(path: import("prettier").AstPath<import("java-parser").AssertStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
switchStatement(path: import("prettier").AstPath<import("java-parser").SwitchStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
switchBlock(path: import("prettier").AstPath<import("java-parser").SwitchBlockCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
switchBlockStatementGroup(path: import("prettier").AstPath<import("java-parser").SwitchBlockStatementGroupCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
switchLabel(path: import("prettier").AstPath<import("java-parser").SwitchLabelCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): "default" | builders.Group | builders.Doc[];
|
|
||||||
switchRule(path: import("prettier").AstPath<import("java-parser").SwitchRuleCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
caseConstant: typeof printSingle;
|
|
||||||
casePattern: typeof printSingle;
|
|
||||||
whileStatement(path: import("prettier").AstPath<import("java-parser").WhileStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
doStatement(path: import("prettier").AstPath<import("java-parser").DoStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): (string | builders.Group | builders.Doc[])[];
|
|
||||||
forStatement: typeof printSingle;
|
|
||||||
basicForStatement(path: import("prettier").AstPath<import("java-parser").BasicForStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
forInit: typeof printSingle;
|
|
||||||
forUpdate: typeof printSingle;
|
|
||||||
statementExpressionList(path: import("prettier").AstPath<import("java-parser").StatementExpressionListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group;
|
|
||||||
enhancedForStatement(path: import("prettier").AstPath<import("java-parser").EnhancedForStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group;
|
|
||||||
breakStatement(path: import("prettier").AstPath<import("java-parser").BreakStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[] | "break;";
|
|
||||||
continueStatement(path: import("prettier").AstPath<import("java-parser").ContinueStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[] | "continue;";
|
|
||||||
returnStatement(path: import("prettier").AstPath<import("java-parser").ReturnStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
throwStatement(path: import("prettier").AstPath<import("java-parser").ThrowStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
synchronizedStatement(path: import("prettier").AstPath<import("java-parser").SynchronizedStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
tryStatement(path: import("prettier").AstPath<import("java-parser").TryStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc;
|
|
||||||
catches(path: import("prettier").AstPath<import("java-parser").CatchesCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
catchClause(path: import("prettier").AstPath<import("java-parser").CatchClauseCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
catchFormalParameter(path: import("prettier").AstPath<import("java-parser").CatchFormalParameterCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
catchType(path: import("prettier").AstPath<import("java-parser").CatchTypeCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
finally(path: import("prettier").AstPath<import("java-parser").FinallyCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
tryWithResourcesStatement(path: import("prettier").AstPath<import("java-parser").TryWithResourcesStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
resourceSpecification(path: import("prettier").AstPath<import("java-parser").ResourceSpecificationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group | "()";
|
|
||||||
resourceList(path: import("prettier").AstPath<import("java-parser").ResourceListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
resource: typeof printSingle;
|
|
||||||
yieldStatement(path: import("prettier").AstPath<import("java-parser").YieldStatementCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
variableAccess: typeof printSingle;
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,337 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import { call, definedKeys, indentInParentheses, isBinaryExpression, isEmptyStatement, lineEndWithComments, lineStartWithComments, map, onlyDefinedKey, printBlock, printDanglingComments, printSingle, printWithModifiers } from "./helpers.js";
|
|
||||||
const { group, hardline, ifBreak, indent, join, line, softline } = builders;
|
|
||||||
export default {
|
|
||||||
block(path, print) {
|
|
||||||
const statements = path.node.children.blockStatements
|
|
||||||
? call(path, print, "blockStatements")
|
|
||||||
: [];
|
|
||||||
return printBlock(path, statements.length ? [statements] : []);
|
|
||||||
},
|
|
||||||
blockStatements(path, print) {
|
|
||||||
return join(hardline, map(path, statementPath => {
|
|
||||||
const { node, previous } = statementPath;
|
|
||||||
const statement = print(statementPath);
|
|
||||||
return previous &&
|
|
||||||
lineStartWithComments(node) > lineEndWithComments(previous) + 1
|
|
||||||
? [hardline, statement]
|
|
||||||
: statement;
|
|
||||||
}, "blockStatement").filter(doc => doc !== ""));
|
|
||||||
},
|
|
||||||
blockStatement: printSingle,
|
|
||||||
localVariableDeclarationStatement(path, print) {
|
|
||||||
return [call(path, print, "localVariableDeclaration"), ";"];
|
|
||||||
},
|
|
||||||
localVariableDeclaration(path, print) {
|
|
||||||
const declaration = join(" ", [
|
|
||||||
call(path, print, "localVariableType"),
|
|
||||||
call(path, print, "variableDeclaratorList")
|
|
||||||
]);
|
|
||||||
return printWithModifiers(path, print, "variableModifier", declaration);
|
|
||||||
},
|
|
||||||
localVariableType: printSingle,
|
|
||||||
statement: printSingle,
|
|
||||||
statementWithoutTrailingSubstatement: printSingle,
|
|
||||||
emptyStatement() {
|
|
||||||
return "";
|
|
||||||
},
|
|
||||||
labeledStatement(path, print) {
|
|
||||||
return [
|
|
||||||
call(path, print, "Identifier"),
|
|
||||||
": ",
|
|
||||||
call(path, print, "statement")
|
|
||||||
];
|
|
||||||
},
|
|
||||||
expressionStatement(path, print) {
|
|
||||||
return [call(path, print, "statementExpression"), ";"];
|
|
||||||
},
|
|
||||||
statementExpression: printSingle,
|
|
||||||
ifStatement(path, print) {
|
|
||||||
var _a;
|
|
||||||
const { children } = path.node;
|
|
||||||
const hasEmptyStatement = isEmptyStatement(children.statement[0]);
|
|
||||||
const statements = map(path, print, "statement");
|
|
||||||
const statement = [
|
|
||||||
"if ",
|
|
||||||
indentInParentheses(call(path, print, "expression")),
|
|
||||||
hasEmptyStatement ? ";" : [" ", statements[0]]
|
|
||||||
];
|
|
||||||
if (children.Else) {
|
|
||||||
const danglingComments = printDanglingComments(path);
|
|
||||||
if (danglingComments.length) {
|
|
||||||
statement.push(hardline, ...danglingComments, hardline);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const elseHasBlock = ((_a = children.statement[0].children
|
|
||||||
.statementWithoutTrailingSubstatement) === null || _a === void 0 ? void 0 : _a[0].children.block) !==
|
|
||||||
undefined;
|
|
||||||
statement.push(elseHasBlock ? " " : hardline);
|
|
||||||
}
|
|
||||||
const elseHasEmptyStatement = isEmptyStatement(children.statement[1]);
|
|
||||||
statement.push("else", elseHasEmptyStatement ? ";" : [" ", statements[1]]);
|
|
||||||
}
|
|
||||||
return statement;
|
|
||||||
},
|
|
||||||
assertStatement(path, print) {
|
|
||||||
return ["assert ", ...join([" : "], map(path, print, "expression")), ";"];
|
|
||||||
},
|
|
||||||
switchStatement(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
"switch",
|
|
||||||
indentInParentheses(call(path, print, "expression")),
|
|
||||||
call(path, print, "switchBlock")
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
switchBlock(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const caseKeys = definedKeys(children, [
|
|
||||||
"switchBlockStatementGroup",
|
|
||||||
"switchRule"
|
|
||||||
]);
|
|
||||||
const cases = caseKeys.length === 1 ? map(path, print, caseKeys[0]) : [];
|
|
||||||
return printBlock(path, cases);
|
|
||||||
},
|
|
||||||
switchBlockStatementGroup(path, print) {
|
|
||||||
var _a, _b;
|
|
||||||
const { children } = path.node;
|
|
||||||
const switchLabel = call(path, print, "switchLabel");
|
|
||||||
if (!children.blockStatements) {
|
|
||||||
return [switchLabel, ":"];
|
|
||||||
}
|
|
||||||
const blockStatements = call(path, print, "blockStatements");
|
|
||||||
const statements = children.blockStatements[0].children.blockStatement;
|
|
||||||
const onlyStatementIsBlock = statements.length === 1 &&
|
|
||||||
((_b = (_a = statements[0].children.statement) === null || _a === void 0 ? void 0 : _a[0].children.statementWithoutTrailingSubstatement) === null || _b === void 0 ? void 0 : _b[0].children.block) !== undefined;
|
|
||||||
return [
|
|
||||||
switchLabel,
|
|
||||||
":",
|
|
||||||
onlyStatementIsBlock
|
|
||||||
? [" ", blockStatements]
|
|
||||||
: indent([hardline, blockStatements])
|
|
||||||
];
|
|
||||||
},
|
|
||||||
switchLabel(path, print) {
|
|
||||||
var _a, _b;
|
|
||||||
const { children } = path.node;
|
|
||||||
if (!((_b = (_a = children.caseConstant) !== null && _a !== void 0 ? _a : children.casePattern) !== null && _b !== void 0 ? _b : children.Null)) {
|
|
||||||
return "default";
|
|
||||||
}
|
|
||||||
const values = [];
|
|
||||||
if (children.Null) {
|
|
||||||
values.push("null");
|
|
||||||
if (children.Default) {
|
|
||||||
values.push("default");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const valuesKey = onlyDefinedKey(children, [
|
|
||||||
"caseConstant",
|
|
||||||
"casePattern"
|
|
||||||
]);
|
|
||||||
values.push(...map(path, print, valuesKey));
|
|
||||||
}
|
|
||||||
const hasMultipleValues = values.length > 1;
|
|
||||||
const label = hasMultipleValues
|
|
||||||
? ["case", indent([line, ...join([",", line], values)])]
|
|
||||||
: ["case ", values[0]];
|
|
||||||
return children.guard
|
|
||||||
? [
|
|
||||||
group([...label, hasMultipleValues ? line : " "]),
|
|
||||||
call(path, print, "guard")
|
|
||||||
]
|
|
||||||
: group(label);
|
|
||||||
},
|
|
||||||
switchRule(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const bodyKey = onlyDefinedKey(children, [
|
|
||||||
"block",
|
|
||||||
"expression",
|
|
||||||
"throwStatement"
|
|
||||||
]);
|
|
||||||
const parts = [
|
|
||||||
call(path, print, "switchLabel"),
|
|
||||||
" -> ",
|
|
||||||
call(path, print, bodyKey)
|
|
||||||
];
|
|
||||||
if (children.Semicolon) {
|
|
||||||
parts.push(";");
|
|
||||||
}
|
|
||||||
return parts;
|
|
||||||
},
|
|
||||||
caseConstant: printSingle,
|
|
||||||
casePattern: printSingle,
|
|
||||||
whileStatement(path, print) {
|
|
||||||
const statement = call(path, print, "statement");
|
|
||||||
const hasEmptyStatement = isEmptyStatement(path.node.children.statement[0]);
|
|
||||||
return [
|
|
||||||
"while ",
|
|
||||||
indentInParentheses(call(path, print, "expression")),
|
|
||||||
...[hasEmptyStatement ? ";" : " ", statement]
|
|
||||||
];
|
|
||||||
},
|
|
||||||
doStatement(path, print) {
|
|
||||||
const hasEmptyStatement = isEmptyStatement(path.node.children.statement[0]);
|
|
||||||
return [
|
|
||||||
"do",
|
|
||||||
hasEmptyStatement ? ";" : [" ", call(path, print, "statement")],
|
|
||||||
" while ",
|
|
||||||
indentInParentheses(call(path, print, "expression")),
|
|
||||||
";"
|
|
||||||
];
|
|
||||||
},
|
|
||||||
forStatement: printSingle,
|
|
||||||
basicForStatement(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const danglingComments = printDanglingComments(path);
|
|
||||||
if (danglingComments.length) {
|
|
||||||
danglingComments.push(hardline);
|
|
||||||
}
|
|
||||||
const expressions = ["forInit", "expression", "forUpdate"].map(expressionKey => expressionKey in children ? call(path, print, expressionKey) : "");
|
|
||||||
const hasEmptyStatement = isEmptyStatement(children.statement[0]);
|
|
||||||
return [
|
|
||||||
...danglingComments,
|
|
||||||
"for ",
|
|
||||||
expressions.some(expression => expression !== "")
|
|
||||||
? indentInParentheses(join([";", line], expressions))
|
|
||||||
: "(;;)",
|
|
||||||
hasEmptyStatement ? ";" : [" ", call(path, print, "statement")]
|
|
||||||
];
|
|
||||||
},
|
|
||||||
forInit: printSingle,
|
|
||||||
forUpdate: printSingle,
|
|
||||||
statementExpressionList(path, print) {
|
|
||||||
return group(map(path, print, "statementExpression").map((expression, index) => index === 0 ? expression : [",", indent([line, expression])]));
|
|
||||||
},
|
|
||||||
enhancedForStatement(path, print) {
|
|
||||||
var _a;
|
|
||||||
const statementNode = path.node.children.statement[0];
|
|
||||||
const forStatement = [
|
|
||||||
printDanglingComments(path),
|
|
||||||
"for ",
|
|
||||||
"(",
|
|
||||||
call(path, print, "localVariableDeclaration"),
|
|
||||||
" : ",
|
|
||||||
call(path, print, "expression"),
|
|
||||||
")"
|
|
||||||
];
|
|
||||||
if (isEmptyStatement(statementNode)) {
|
|
||||||
forStatement.push(";");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const hasStatementBlock = ((_a = statementNode.children.statementWithoutTrailingSubstatement) === null || _a === void 0 ? void 0 : _a[0].children.block) !== undefined;
|
|
||||||
const statement = call(path, print, "statement");
|
|
||||||
forStatement.push(hasStatementBlock ? [" ", statement] : indent([line, statement]));
|
|
||||||
}
|
|
||||||
return group(forStatement);
|
|
||||||
},
|
|
||||||
breakStatement(path, print) {
|
|
||||||
return path.node.children.Identifier
|
|
||||||
? ["break ", call(path, print, "Identifier"), ";"]
|
|
||||||
: "break;";
|
|
||||||
},
|
|
||||||
continueStatement(path, print) {
|
|
||||||
return path.node.children.Identifier
|
|
||||||
? ["continue ", call(path, print, "Identifier"), ";"]
|
|
||||||
: "continue;";
|
|
||||||
},
|
|
||||||
returnStatement(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const statement = ["return"];
|
|
||||||
if (children.expression) {
|
|
||||||
statement.push(" ");
|
|
||||||
const expression = call(path, print, "expression");
|
|
||||||
if (isBinaryExpression(children.expression[0])) {
|
|
||||||
statement.push(group([
|
|
||||||
ifBreak("("),
|
|
||||||
indent([softline, expression]),
|
|
||||||
softline,
|
|
||||||
ifBreak(")")
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
statement.push(expression);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
statement.push(";");
|
|
||||||
return statement;
|
|
||||||
},
|
|
||||||
throwStatement(path, print) {
|
|
||||||
return ["throw ", call(path, print, "expression"), ";"];
|
|
||||||
},
|
|
||||||
synchronizedStatement(path, print) {
|
|
||||||
return [
|
|
||||||
"synchronized ",
|
|
||||||
indentInParentheses(call(path, print, "expression")),
|
|
||||||
" ",
|
|
||||||
call(path, print, "block")
|
|
||||||
];
|
|
||||||
},
|
|
||||||
tryStatement(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
if (children.tryWithResourcesStatement) {
|
|
||||||
return call(path, print, "tryWithResourcesStatement");
|
|
||||||
}
|
|
||||||
const blocks = ["try", call(path, print, "block")];
|
|
||||||
if (children.catches) {
|
|
||||||
blocks.push(call(path, print, "catches"));
|
|
||||||
}
|
|
||||||
if (children.finally) {
|
|
||||||
blocks.push(call(path, print, "finally"));
|
|
||||||
}
|
|
||||||
return join(" ", blocks);
|
|
||||||
},
|
|
||||||
catches(path, print) {
|
|
||||||
return join(" ", map(path, print, "catchClause"));
|
|
||||||
},
|
|
||||||
catchClause(path, print) {
|
|
||||||
return [
|
|
||||||
"catch ",
|
|
||||||
indentInParentheses(call(path, print, "catchFormalParameter")),
|
|
||||||
" ",
|
|
||||||
call(path, print, "block")
|
|
||||||
];
|
|
||||||
},
|
|
||||||
catchFormalParameter(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
...map(path, print, "variableModifier"),
|
|
||||||
call(path, print, "catchType"),
|
|
||||||
call(path, print, "variableDeclaratorId")
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
catchType(path, print) {
|
|
||||||
return join([line, "| "], [call(path, print, "unannClassType"), ...map(path, print, "classType")]);
|
|
||||||
},
|
|
||||||
finally(path, print) {
|
|
||||||
return ["finally ", call(path, print, "block")];
|
|
||||||
},
|
|
||||||
tryWithResourcesStatement(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const blocks = [
|
|
||||||
"try",
|
|
||||||
call(path, print, "resourceSpecification"),
|
|
||||||
call(path, print, "block")
|
|
||||||
];
|
|
||||||
if (children.catches) {
|
|
||||||
blocks.push(call(path, print, "catches"));
|
|
||||||
}
|
|
||||||
if (children.finally) {
|
|
||||||
blocks.push(call(path, print, "finally"));
|
|
||||||
}
|
|
||||||
return join(" ", blocks);
|
|
||||||
},
|
|
||||||
resourceSpecification(path, print) {
|
|
||||||
const resources = [call(path, print, "resourceList")];
|
|
||||||
if (path.node.children.Semicolon) {
|
|
||||||
resources.push(ifBreak(";"));
|
|
||||||
}
|
|
||||||
return indentInParentheses(resources);
|
|
||||||
},
|
|
||||||
resourceList(path, print) {
|
|
||||||
return join([";", line], map(path, print, "resource"));
|
|
||||||
},
|
|
||||||
resource: printSingle,
|
|
||||||
yieldStatement(path, print) {
|
|
||||||
return ["yield ", call(path, print, "expression"), ";"];
|
|
||||||
},
|
|
||||||
variableAccess: printSingle
|
|
||||||
};
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
import type { ClassBodyCstNode, EnumBodyDeclarationsCstNode } from "java-parser";
|
|
||||||
import type { AstPath } from "prettier";
|
|
||||||
import { builders } from "prettier/doc";
|
|
||||||
import { printClassPermits, printClassType, printSingle, type JavaPrintFn } from "./helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
classDeclaration(path: AstPath<import("java-parser").ClassDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
normalClassDeclaration(path: AstPath<import("java-parser").NormalClassDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
classModifier: typeof printSingle;
|
|
||||||
typeParameters(path: AstPath<import("java-parser").TypeParametersCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group;
|
|
||||||
typeParameterList(path: AstPath<import("java-parser").TypeParameterListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
classExtends(path: AstPath<import("java-parser").ClassExtendsCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
classImplements(path: AstPath<import("java-parser").ClassImplementsCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group;
|
|
||||||
classPermits: typeof printClassPermits;
|
|
||||||
interfaceTypeList(path: AstPath<import("java-parser").InterfaceTypeListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group;
|
|
||||||
classBody(path: AstPath<ClassBodyCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
classBodyDeclaration: typeof printSingle;
|
|
||||||
classMemberDeclaration(path: AstPath<import("java-parser").ClassMemberDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
fieldDeclaration(path: AstPath<import("java-parser").FieldDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
fieldModifier: typeof printSingle;
|
|
||||||
variableDeclaratorList(path: AstPath<import("java-parser").VariableDeclaratorListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | builders.Doc[];
|
|
||||||
variableDeclarator(path: AstPath<import("java-parser").VariableDeclaratorCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
variableDeclaratorId(path: AstPath<import("java-parser").VariableDeclaratorIdCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
variableInitializer: typeof printSingle;
|
|
||||||
unannType: typeof printSingle;
|
|
||||||
unannPrimitiveTypeWithOptionalDimsSuffix(path: AstPath<import("java-parser").UnannPrimitiveTypeWithOptionalDimsSuffixCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
unannPrimitiveType: typeof printSingle;
|
|
||||||
unannReferenceType(path: AstPath<import("java-parser").UnannReferenceTypeCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
unannClassOrInterfaceType: typeof printSingle;
|
|
||||||
unannClassType: typeof printClassType;
|
|
||||||
unannInterfaceType: typeof printSingle;
|
|
||||||
unannTypeVariable: typeof printSingle;
|
|
||||||
methodDeclaration(path: AstPath<import("java-parser").MethodDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
methodModifier: typeof printSingle;
|
|
||||||
methodHeader(path: AstPath<import("java-parser").MethodHeaderCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group;
|
|
||||||
result: typeof printSingle;
|
|
||||||
methodDeclarator(path: AstPath<import("java-parser").MethodDeclaratorCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
receiverParameter(path: AstPath<import("java-parser").ReceiverParameterCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
formalParameterList(path: AstPath<import("java-parser").FormalParameterListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
formalParameter: typeof printSingle;
|
|
||||||
variableParaRegularParameter(path: AstPath<import("java-parser").VariableParaRegularParameterCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
variableArityParameter(path: AstPath<import("java-parser").VariableArityParameterCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
variableModifier: typeof printSingle;
|
|
||||||
throws(path: AstPath<import("java-parser").ThrowsCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
exceptionTypeList(path: AstPath<import("java-parser").ExceptionTypeListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
exceptionType: typeof printSingle;
|
|
||||||
methodBody: typeof printSingle;
|
|
||||||
instanceInitializer: typeof printSingle;
|
|
||||||
staticInitializer(path: AstPath<import("java-parser").StaticInitializerCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
constructorDeclaration(path: AstPath<import("java-parser").ConstructorDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
constructorModifier: typeof printSingle;
|
|
||||||
constructorDeclarator(path: AstPath<import("java-parser").ConstructorDeclaratorCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
simpleTypeName: typeof printSingle;
|
|
||||||
constructorBody(path: AstPath<import("java-parser").ConstructorBodyCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
explicitConstructorInvocation: typeof printSingle;
|
|
||||||
unqualifiedExplicitConstructorInvocation(path: AstPath<import("java-parser").UnqualifiedExplicitConstructorInvocationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
qualifiedExplicitConstructorInvocation(path: AstPath<import("java-parser").QualifiedExplicitConstructorInvocationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
enumDeclaration(path: AstPath<import("java-parser").EnumDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
enumBody(path: AstPath<import("java-parser").EnumBodyCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn, options: import("./helpers.js").JavaParserOptions): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
enumConstantList(path: AstPath<import("java-parser").EnumConstantListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
enumConstant(path: AstPath<import("java-parser").EnumConstantCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
enumConstantModifier: typeof printSingle;
|
|
||||||
enumBodyDeclarations(path: AstPath<EnumBodyDeclarationsCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
recordDeclaration(path: AstPath<import("java-parser").RecordDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
recordHeader(path: AstPath<import("java-parser").RecordHeaderCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | "()";
|
|
||||||
recordComponentList(path: AstPath<import("java-parser").RecordComponentListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
recordComponent(path: AstPath<import("java-parser").RecordComponentCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group;
|
|
||||||
variableArityRecordComponent(path: AstPath<import("java-parser").VariableArityRecordComponentCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
recordComponentModifier: typeof printSingle;
|
|
||||||
recordBody(path: AstPath<import("java-parser").RecordBodyCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
recordBodyDeclaration: typeof printSingle;
|
|
||||||
compactConstructorDeclaration(path: AstPath<import("java-parser").CompactConstructorDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,446 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import { call, each, hasDeclarationAnnotations, hasLeadingComments, indentInParentheses, isBinaryExpression, lineEndWithComments, lineStartWithComments, map, onlyDefinedKey, printBlock, printClassPermits, printClassType, printDanglingComments, printList, printSingle, printWithModifiers } from "./helpers.js";
|
|
||||||
const { group, hardline, indent, indentIfBreak, join, line, softline } = builders;
|
|
||||||
export default {
|
|
||||||
classDeclaration(path, print) {
|
|
||||||
const declarationKey = onlyDefinedKey(path.node.children, [
|
|
||||||
"enumDeclaration",
|
|
||||||
"normalClassDeclaration",
|
|
||||||
"recordDeclaration"
|
|
||||||
]);
|
|
||||||
const declaration = call(path, print, declarationKey);
|
|
||||||
return printWithModifiers(path, print, "classModifier", declaration, true);
|
|
||||||
},
|
|
||||||
normalClassDeclaration(path, print) {
|
|
||||||
const { classExtends, classImplements, classPermits, typeParameters } = path.node.children;
|
|
||||||
const header = ["class ", call(path, print, "typeIdentifier")];
|
|
||||||
if (typeParameters) {
|
|
||||||
header.push(call(path, print, "typeParameters"));
|
|
||||||
}
|
|
||||||
if (classExtends) {
|
|
||||||
header.push(indent([line, call(path, print, "classExtends")]));
|
|
||||||
}
|
|
||||||
if (classImplements) {
|
|
||||||
header.push(indent([line, call(path, print, "classImplements")]));
|
|
||||||
}
|
|
||||||
if (classPermits) {
|
|
||||||
header.push(indent([line, call(path, print, "classPermits")]));
|
|
||||||
}
|
|
||||||
return [group(header), " ", call(path, print, "classBody")];
|
|
||||||
},
|
|
||||||
classModifier: printSingle,
|
|
||||||
typeParameters(path, print) {
|
|
||||||
return group([
|
|
||||||
"<",
|
|
||||||
indent([softline, call(path, print, "typeParameterList")]),
|
|
||||||
softline,
|
|
||||||
">"
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
typeParameterList(path, print) {
|
|
||||||
return printList(path, print, "typeParameter");
|
|
||||||
},
|
|
||||||
classExtends(path, print) {
|
|
||||||
return ["extends ", call(path, print, "classType")];
|
|
||||||
},
|
|
||||||
classImplements(path, print) {
|
|
||||||
return group([
|
|
||||||
"implements",
|
|
||||||
indent([line, call(path, print, "interfaceTypeList")])
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
classPermits: printClassPermits,
|
|
||||||
interfaceTypeList(path, print) {
|
|
||||||
return group(printList(path, print, "interfaceType"));
|
|
||||||
},
|
|
||||||
classBody(path, print) {
|
|
||||||
return printBlock(path, printClassBodyDeclarations(path, print));
|
|
||||||
},
|
|
||||||
classBodyDeclaration: printSingle,
|
|
||||||
classMemberDeclaration(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
return children.Semicolon
|
|
||||||
? ""
|
|
||||||
: call(path, print, onlyDefinedKey(children));
|
|
||||||
},
|
|
||||||
fieldDeclaration(path, print) {
|
|
||||||
const declaration = [
|
|
||||||
call(path, print, "unannType"),
|
|
||||||
" ",
|
|
||||||
call(path, print, "variableDeclaratorList"),
|
|
||||||
";"
|
|
||||||
];
|
|
||||||
return printWithModifiers(path, print, "fieldModifier", declaration);
|
|
||||||
},
|
|
||||||
fieldModifier: printSingle,
|
|
||||||
variableDeclaratorList(path, print) {
|
|
||||||
var _a;
|
|
||||||
const declarators = map(path, print, "variableDeclarator");
|
|
||||||
return declarators.length > 1 &&
|
|
||||||
path.node.children.variableDeclarator.some(({ children }) => children.Equals)
|
|
||||||
? group(indent(join([",", line], declarators)), {
|
|
||||||
shouldBreak: ((_a = path.getNode(4)) === null || _a === void 0 ? void 0 : _a.name) !== "forInit"
|
|
||||||
})
|
|
||||||
: join(", ", declarators);
|
|
||||||
},
|
|
||||||
variableDeclarator(path, print) {
|
|
||||||
var _a, _b;
|
|
||||||
const { children } = path.node;
|
|
||||||
const variableInitializer = (_a = children.variableInitializer) === null || _a === void 0 ? void 0 : _a[0];
|
|
||||||
const declaratorId = call(path, print, "variableDeclaratorId");
|
|
||||||
if (!variableInitializer) {
|
|
||||||
return declaratorId;
|
|
||||||
}
|
|
||||||
const expression = (_b = variableInitializer.children.expression) === null || _b === void 0 ? void 0 : _b[0];
|
|
||||||
const declarator = [declaratorId, " ", call(path, print, "Equals")];
|
|
||||||
const initializer = call(path, print, "variableInitializer");
|
|
||||||
if (hasLeadingComments(variableInitializer) ||
|
|
||||||
(expression && isBinaryExpression(expression))) {
|
|
||||||
declarator.push(group(indent([line, initializer])));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const groupId = Symbol("assignment");
|
|
||||||
declarator.push(group(indent(line), { id: groupId }), indentIfBreak(initializer, { groupId }));
|
|
||||||
}
|
|
||||||
return group(declarator);
|
|
||||||
},
|
|
||||||
variableDeclaratorId(path, print) {
|
|
||||||
const { dims, Underscore } = path.node.children;
|
|
||||||
if (Underscore) {
|
|
||||||
return "_";
|
|
||||||
}
|
|
||||||
const identifier = call(path, print, "Identifier");
|
|
||||||
return dims ? [identifier, call(path, print, "dims")] : identifier;
|
|
||||||
},
|
|
||||||
variableInitializer: printSingle,
|
|
||||||
unannType: printSingle,
|
|
||||||
unannPrimitiveTypeWithOptionalDimsSuffix(path, print) {
|
|
||||||
const type = call(path, print, "unannPrimitiveType");
|
|
||||||
return path.node.children.dims ? [type, call(path, print, "dims")] : type;
|
|
||||||
},
|
|
||||||
unannPrimitiveType: printSingle,
|
|
||||||
unannReferenceType(path, print) {
|
|
||||||
const type = call(path, print, "unannClassOrInterfaceType");
|
|
||||||
return path.node.children.dims ? [type, call(path, print, "dims")] : type;
|
|
||||||
},
|
|
||||||
unannClassOrInterfaceType: printSingle,
|
|
||||||
unannClassType: printClassType,
|
|
||||||
unannInterfaceType: printSingle,
|
|
||||||
unannTypeVariable: printSingle,
|
|
||||||
methodDeclaration(path, print) {
|
|
||||||
const declaration = [
|
|
||||||
call(path, print, "methodHeader"),
|
|
||||||
path.node.children.methodBody[0].children.Semicolon ? "" : " ",
|
|
||||||
call(path, print, "methodBody")
|
|
||||||
];
|
|
||||||
return printWithModifiers(path, print, "methodModifier", declaration);
|
|
||||||
},
|
|
||||||
methodModifier: printSingle,
|
|
||||||
methodHeader(path, print) {
|
|
||||||
const { typeParameters, annotation, throws } = path.node.children;
|
|
||||||
const header = [];
|
|
||||||
if (typeParameters) {
|
|
||||||
header.push(call(path, print, "typeParameters"));
|
|
||||||
}
|
|
||||||
if (annotation) {
|
|
||||||
header.push(join(line, map(path, print, "annotation")));
|
|
||||||
}
|
|
||||||
header.push(call(path, print, "result"), call(path, print, "methodDeclarator"));
|
|
||||||
return throws
|
|
||||||
? group([
|
|
||||||
...join(" ", header),
|
|
||||||
group(indent([line, call(path, print, "throws")]))
|
|
||||||
])
|
|
||||||
: group(join(" ", header));
|
|
||||||
},
|
|
||||||
result: printSingle,
|
|
||||||
methodDeclarator(path, print) {
|
|
||||||
const { dims, formalParameterList, receiverParameter } = path.node.children;
|
|
||||||
const declarator = [call(path, print, "Identifier")];
|
|
||||||
const parameters = [];
|
|
||||||
if (receiverParameter) {
|
|
||||||
parameters.push(call(path, print, "receiverParameter"));
|
|
||||||
}
|
|
||||||
if (formalParameterList) {
|
|
||||||
parameters.push(call(path, print, "formalParameterList"));
|
|
||||||
}
|
|
||||||
const items = parameters.length
|
|
||||||
? join([",", line], parameters)
|
|
||||||
: printDanglingComments(path);
|
|
||||||
declarator.push(items.length ? indentInParentheses(items) : "()");
|
|
||||||
if (dims) {
|
|
||||||
declarator.push(call(path, print, "dims"));
|
|
||||||
}
|
|
||||||
return declarator;
|
|
||||||
},
|
|
||||||
receiverParameter(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
...map(path, print, "annotation"),
|
|
||||||
call(path, print, "unannType"),
|
|
||||||
path.node.children.Identifier
|
|
||||||
? [call(path, print, "Identifier"), ".this"]
|
|
||||||
: "this"
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
formalParameterList(path, print) {
|
|
||||||
return printList(path, print, "formalParameter");
|
|
||||||
},
|
|
||||||
formalParameter: printSingle,
|
|
||||||
variableParaRegularParameter(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
...map(path, print, "variableModifier"),
|
|
||||||
call(path, print, "unannType"),
|
|
||||||
call(path, print, "variableDeclaratorId")
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
variableArityParameter(path, print) {
|
|
||||||
const type = join(" ", [
|
|
||||||
...map(path, print, "variableModifier"),
|
|
||||||
call(path, print, "unannType"),
|
|
||||||
...map(path, print, "annotation")
|
|
||||||
]);
|
|
||||||
return [type, "... ", call(path, print, "Identifier")];
|
|
||||||
},
|
|
||||||
variableModifier: printSingle,
|
|
||||||
throws(path, print) {
|
|
||||||
return ["throws ", call(path, print, "exceptionTypeList")];
|
|
||||||
},
|
|
||||||
exceptionTypeList(path, print) {
|
|
||||||
return join(", ", map(path, print, "exceptionType"));
|
|
||||||
},
|
|
||||||
exceptionType: printSingle,
|
|
||||||
methodBody: printSingle,
|
|
||||||
instanceInitializer: printSingle,
|
|
||||||
staticInitializer(path, print) {
|
|
||||||
return ["static ", call(path, print, "block")];
|
|
||||||
},
|
|
||||||
constructorDeclaration(path, print) {
|
|
||||||
const declaration = [call(path, print, "constructorDeclarator")];
|
|
||||||
if (path.node.children.throws) {
|
|
||||||
declaration.push(group(indent([line, call(path, print, "throws")])));
|
|
||||||
}
|
|
||||||
declaration.push(" ", call(path, print, "constructorBody"));
|
|
||||||
return printWithModifiers(path, print, "constructorModifier", declaration, true);
|
|
||||||
},
|
|
||||||
constructorModifier: printSingle,
|
|
||||||
constructorDeclarator(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const parameters = [];
|
|
||||||
if (children.receiverParameter) {
|
|
||||||
parameters.push(call(path, print, "receiverParameter"));
|
|
||||||
}
|
|
||||||
if (children.formalParameterList) {
|
|
||||||
parameters.push(call(path, print, "formalParameterList"));
|
|
||||||
}
|
|
||||||
const header = [call(path, print, "simpleTypeName")];
|
|
||||||
header.push(parameters.length
|
|
||||||
? indentInParentheses(join([",", line], parameters))
|
|
||||||
: "()");
|
|
||||||
return children.typeParameters
|
|
||||||
? [call(path, print, "typeParameters"), " ", ...header]
|
|
||||||
: header;
|
|
||||||
},
|
|
||||||
simpleTypeName: printSingle,
|
|
||||||
constructorBody(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const statements = [];
|
|
||||||
if (children.explicitConstructorInvocation) {
|
|
||||||
statements.push(call(path, print, "explicitConstructorInvocation"));
|
|
||||||
}
|
|
||||||
if (children.blockStatements) {
|
|
||||||
statements.push(call(path, print, "blockStatements"));
|
|
||||||
}
|
|
||||||
return printBlock(path, statements);
|
|
||||||
},
|
|
||||||
explicitConstructorInvocation: printSingle,
|
|
||||||
unqualifiedExplicitConstructorInvocation(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const invocation = [];
|
|
||||||
if (children.typeArguments) {
|
|
||||||
invocation.push(call(path, print, "typeArguments"));
|
|
||||||
}
|
|
||||||
invocation.push(children.Super ? "super" : "this");
|
|
||||||
if (children.argumentList) {
|
|
||||||
invocation.push(group(["(", call(path, print, "argumentList"), ")"]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
invocation.push(indentInParentheses(printDanglingComments(path), { shouldBreak: true }));
|
|
||||||
}
|
|
||||||
invocation.push(";");
|
|
||||||
return invocation;
|
|
||||||
},
|
|
||||||
qualifiedExplicitConstructorInvocation(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const invocation = [call(path, print, "expressionName"), "."];
|
|
||||||
if (children.typeArguments) {
|
|
||||||
invocation.push(call(path, print, "typeArguments"));
|
|
||||||
}
|
|
||||||
invocation.push("super");
|
|
||||||
if (children.argumentList) {
|
|
||||||
invocation.push(group(["(", call(path, print, "argumentList"), ")"]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
invocation.push(indentInParentheses(printDanglingComments(path), { shouldBreak: true }));
|
|
||||||
}
|
|
||||||
invocation.push(";");
|
|
||||||
return invocation;
|
|
||||||
},
|
|
||||||
enumDeclaration(path, print) {
|
|
||||||
const header = ["enum", call(path, print, "typeIdentifier")];
|
|
||||||
if (path.node.children.classImplements) {
|
|
||||||
header.push(call(path, print, "classImplements"));
|
|
||||||
}
|
|
||||||
return join(" ", [...header, call(path, print, "enumBody")]);
|
|
||||||
},
|
|
||||||
enumBody(path, print, options) {
|
|
||||||
var _a;
|
|
||||||
const { children } = path.node;
|
|
||||||
const contents = [];
|
|
||||||
const hasNonEmptyDeclaration = ((_a = children.enumBodyDeclarations) !== null && _a !== void 0 ? _a : [])
|
|
||||||
.flatMap(({ children }) => { var _a; return (_a = children.classBodyDeclaration) !== null && _a !== void 0 ? _a : []; })
|
|
||||||
.some(({ children }) => { var _a; return !((_a = children.classMemberDeclaration) === null || _a === void 0 ? void 0 : _a[0].children.Semicolon); });
|
|
||||||
if (children.enumConstantList) {
|
|
||||||
contents.push(call(path, print, "enumConstantList"));
|
|
||||||
if (!hasNonEmptyDeclaration && options.trailingComma !== "none") {
|
|
||||||
contents.push(",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (hasNonEmptyDeclaration) {
|
|
||||||
contents.push(";", hardline, call(path, print, "enumBodyDeclarations"));
|
|
||||||
}
|
|
||||||
return printBlock(path, contents.length ? [contents] : []);
|
|
||||||
},
|
|
||||||
enumConstantList(path, print) {
|
|
||||||
return join([",", hardline], map(path, constantPath => {
|
|
||||||
const constant = print(constantPath);
|
|
||||||
const { node, previous } = constantPath;
|
|
||||||
return !previous ||
|
|
||||||
lineStartWithComments(node) <= lineEndWithComments(previous) + 1
|
|
||||||
? constant
|
|
||||||
: [hardline, constant];
|
|
||||||
}, "enumConstant"));
|
|
||||||
},
|
|
||||||
enumConstant(path, print) {
|
|
||||||
const { argumentList, classBody } = path.node.children;
|
|
||||||
const initializer = [call(path, print, "Identifier")];
|
|
||||||
if (argumentList) {
|
|
||||||
initializer.push(group(["(", call(path, print, "argumentList"), ")"]));
|
|
||||||
}
|
|
||||||
if (classBody) {
|
|
||||||
initializer.push(" ", call(path, print, "classBody"));
|
|
||||||
}
|
|
||||||
return printWithModifiers(path, print, "enumConstantModifier", initializer);
|
|
||||||
},
|
|
||||||
enumConstantModifier: printSingle,
|
|
||||||
enumBodyDeclarations(path, print) {
|
|
||||||
return join(hardline, printClassBodyDeclarations(path, print));
|
|
||||||
},
|
|
||||||
recordDeclaration(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const header = ["record ", call(path, print, "typeIdentifier")];
|
|
||||||
if (children.typeParameters) {
|
|
||||||
header.push(call(path, print, "typeParameters"));
|
|
||||||
}
|
|
||||||
header.push(call(path, print, "recordHeader"));
|
|
||||||
if (children.classImplements) {
|
|
||||||
header.push(" ", call(path, print, "classImplements"));
|
|
||||||
}
|
|
||||||
return [group(header), " ", call(path, print, "recordBody")];
|
|
||||||
},
|
|
||||||
recordHeader(path, print) {
|
|
||||||
return path.node.children.recordComponentList
|
|
||||||
? indentInParentheses(call(path, print, "recordComponentList"))
|
|
||||||
: indentInParentheses(printDanglingComments(path), { shouldBreak: true });
|
|
||||||
},
|
|
||||||
recordComponentList(path, print) {
|
|
||||||
return join([",", line], map(path, componentPath => {
|
|
||||||
const { node, previous } = componentPath;
|
|
||||||
const blankLine = previous &&
|
|
||||||
lineStartWithComments(node) > lineEndWithComments(previous) + 1;
|
|
||||||
const component = print(componentPath);
|
|
||||||
return blankLine ? [softline, component] : component;
|
|
||||||
}, "recordComponent"));
|
|
||||||
},
|
|
||||||
recordComponent(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const component = [call(path, print, "unannType")];
|
|
||||||
if (children.Identifier ||
|
|
||||||
children.variableArityRecordComponent[0].children.annotation) {
|
|
||||||
component.push(" ");
|
|
||||||
}
|
|
||||||
const suffixKey = onlyDefinedKey(children, [
|
|
||||||
"Identifier",
|
|
||||||
"variableArityRecordComponent"
|
|
||||||
]);
|
|
||||||
component.push(call(path, print, suffixKey));
|
|
||||||
return group(join(line, [...map(path, print, "recordComponentModifier"), component]));
|
|
||||||
},
|
|
||||||
variableArityRecordComponent(path, print) {
|
|
||||||
return [
|
|
||||||
...join(" ", map(path, print, "annotation")),
|
|
||||||
"... ",
|
|
||||||
call(path, print, "Identifier")
|
|
||||||
];
|
|
||||||
},
|
|
||||||
recordComponentModifier: printSingle,
|
|
||||||
recordBody(path, print) {
|
|
||||||
const declarations = [];
|
|
||||||
let previousRequiresPadding = false;
|
|
||||||
each(path, declarationPath => {
|
|
||||||
var _a, _b, _c, _d;
|
|
||||||
const declaration = print(declarationPath);
|
|
||||||
if (declaration === "") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const { node, previous } = declarationPath;
|
|
||||||
const fieldDeclaration = (_c = (_b = (_a = node.children.classBodyDeclaration) === null || _a === void 0 ? void 0 : _a[0].children.classMemberDeclaration) === null || _b === void 0 ? void 0 : _b[0].children.fieldDeclaration) === null || _c === void 0 ? void 0 : _c[0].children;
|
|
||||||
const currentRequiresPadding = !fieldDeclaration ||
|
|
||||||
hasDeclarationAnnotations((_d = fieldDeclaration.fieldModifier) !== null && _d !== void 0 ? _d : []);
|
|
||||||
const blankLine = declarations.length > 0 &&
|
|
||||||
(previousRequiresPadding ||
|
|
||||||
currentRequiresPadding ||
|
|
||||||
lineStartWithComments(node) > lineEndWithComments(previous) + 1);
|
|
||||||
declarations.push(blankLine ? [hardline, declaration] : declaration);
|
|
||||||
previousRequiresPadding = currentRequiresPadding;
|
|
||||||
}, "recordBodyDeclaration");
|
|
||||||
return printBlock(path, declarations);
|
|
||||||
},
|
|
||||||
recordBodyDeclaration: printSingle,
|
|
||||||
compactConstructorDeclaration(path, print) {
|
|
||||||
const declaration = [
|
|
||||||
call(path, print, "simpleTypeName"),
|
|
||||||
" ",
|
|
||||||
call(path, print, "constructorBody")
|
|
||||||
];
|
|
||||||
return printWithModifiers(path, print, "constructorModifier", declaration, true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function printClassBodyDeclarations(path, print) {
|
|
||||||
var _a;
|
|
||||||
if (!path.node.children.classBodyDeclaration) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
const declarations = [];
|
|
||||||
let previousRequiresPadding = path.node.name === "enumBodyDeclarations" ||
|
|
||||||
((_a = path.grandparent) === null || _a === void 0 ? void 0 : _a.name) ===
|
|
||||||
"normalClassDeclaration";
|
|
||||||
each(path, declarationPath => {
|
|
||||||
var _a, _b, _c;
|
|
||||||
const declaration = print(declarationPath);
|
|
||||||
if (declaration === "") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const { node, previous } = declarationPath;
|
|
||||||
const fieldDeclaration = (_b = (_a = node.children.classMemberDeclaration) === null || _a === void 0 ? void 0 : _a[0].children.fieldDeclaration) === null || _b === void 0 ? void 0 : _b[0].children;
|
|
||||||
const currentRequiresPadding = fieldDeclaration
|
|
||||||
? hasDeclarationAnnotations((_c = fieldDeclaration.fieldModifier) !== null && _c !== void 0 ? _c : [])
|
|
||||||
: true;
|
|
||||||
const blankLine = previousRequiresPadding ||
|
|
||||||
(declarations.length > 0 &&
|
|
||||||
(currentRequiresPadding ||
|
|
||||||
lineStartWithComments(node) > lineEndWithComments(previous) + 1));
|
|
||||||
declarations.push(blankLine ? [hardline, declaration] : declaration);
|
|
||||||
previousRequiresPadding = currentRequiresPadding;
|
|
||||||
}, "classBodyDeclaration");
|
|
||||||
return declarations;
|
|
||||||
}
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
import type { StringTemplateCstNode, TextBlockTemplateCstNode } from "java-parser";
|
|
||||||
import type { AstPath } from "prettier";
|
|
||||||
import { builders } from "prettier/doc";
|
|
||||||
import type { JavaComment } from "../comments.js";
|
|
||||||
import { printSingle, type JavaPrintFn } from "./helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
expression: typeof printSingle;
|
|
||||||
lambdaExpression(path: AstPath<import("java-parser").LambdaExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn, _: import("./helpers.js").JavaParserOptions, args?: unknown): builders.Doc[];
|
|
||||||
lambdaParameters(path: AstPath<import("java-parser").LambdaParametersCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn, options: import("./helpers.js").JavaParserOptions): builders.Doc;
|
|
||||||
lambdaParametersWithBraces(path: AstPath<import("java-parser").LambdaParametersWithBracesCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn, options: import("./helpers.js").JavaParserOptions): builders.Doc;
|
|
||||||
lambdaParameterList: typeof printSingle;
|
|
||||||
conciseLambdaParameterList(path: AstPath<import("java-parser").ConciseLambdaParameterListCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
normalLambdaParameterList(path: AstPath<import("java-parser").NormalLambdaParameterListCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
normalLambdaParameter: typeof printSingle;
|
|
||||||
regularLambdaParameter(path: AstPath<import("java-parser").RegularLambdaParameterCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
lambdaParameterType: typeof printSingle;
|
|
||||||
conciseLambdaParameter: typeof printSingle;
|
|
||||||
lambdaBody: typeof printSingle;
|
|
||||||
conditionalExpression(path: AstPath<import("java-parser").ConditionalExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
binaryExpression(path: AstPath<import("java-parser").BinaryExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn, options: import("./helpers.js").JavaParserOptions): builders.Doc;
|
|
||||||
unaryExpression(path: AstPath<import("java-parser").UnaryExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
unaryExpressionNotPlusMinus(path: AstPath<import("java-parser").UnaryExpressionNotPlusMinusCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
primary(path: AstPath<import("java-parser").PrimaryCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
primaryPrefix: typeof printSingle;
|
|
||||||
primarySuffix(path: AstPath<import("java-parser").PrimarySuffixCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
fqnOrRefType(path: AstPath<import("java-parser").FqnOrRefTypeCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn, _: import("./helpers.js").JavaParserOptions, args: unknown): builders.Doc[];
|
|
||||||
fqnOrRefTypePartFirst(path: AstPath<import("java-parser").FqnOrRefTypePartFirstCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
fqnOrRefTypePartRest(path: AstPath<import("java-parser").FqnOrRefTypePartRestCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
fqnOrRefTypePartCommon(path: AstPath<import("java-parser").FqnOrRefTypePartCommonCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
parenthesisExpression(path: AstPath<import("java-parser").ParenthesisExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | "()" | (string | builders.Indent)[];
|
|
||||||
castExpression: typeof printSingle;
|
|
||||||
primitiveCastExpression(path: AstPath<import("java-parser").PrimitiveCastExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
referenceTypeCastExpression(path: AstPath<import("java-parser").ReferenceTypeCastExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
newExpression: typeof printSingle;
|
|
||||||
unqualifiedClassInstanceCreationExpression(path: AstPath<import("java-parser").UnqualifiedClassInstanceCreationExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
classOrInterfaceTypeToInstantiate(path: AstPath<import("java-parser").ClassOrInterfaceTypeToInstantiateCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
typeArgumentsOrDiamond: typeof printSingle;
|
|
||||||
diamond(): string;
|
|
||||||
methodInvocationSuffix(path: AstPath<import("java-parser").MethodInvocationSuffixCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | "()";
|
|
||||||
argumentList(path: AstPath<import("java-parser").ArgumentListCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Group | (builders.Indent | builders.Softline)[] | (builders.BreakParent | builders.Group)[];
|
|
||||||
arrayCreationExpression(path: AstPath<import("java-parser").ArrayCreationExpressionCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
arrayCreationExpressionWithoutInitializerSuffix(path: AstPath<import("java-parser").ArrayCreationExpressionWithoutInitializerSuffixCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc;
|
|
||||||
arrayCreationWithInitializerSuffix(path: AstPath<import("java-parser").ArrayCreationWithInitializerSuffixCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
dimExprs(path: AstPath<import("java-parser").DimExprsCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
dimExpr(path: AstPath<import("java-parser").DimExprCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
classLiteralSuffix(path: AstPath<import("java-parser").ClassLiteralSuffixCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
arrayAccessSuffix(path: AstPath<import("java-parser").ArrayAccessSuffixCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
methodReferenceSuffix(path: AstPath<import("java-parser").MethodReferenceSuffixCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
templateArgument: typeof printSingle;
|
|
||||||
template: typeof printSingle;
|
|
||||||
stringTemplate(path: AstPath<StringTemplateCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Indent;
|
|
||||||
textBlockTemplate(path: AstPath<TextBlockTemplateCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Indent;
|
|
||||||
embeddedExpression: typeof printSingle;
|
|
||||||
pattern: typeof printSingle;
|
|
||||||
typePattern: typeof printSingle;
|
|
||||||
recordPattern(path: AstPath<import("java-parser").RecordPatternCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
componentPatternList(path: AstPath<import("java-parser").ComponentPatternListCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
componentPattern: typeof printSingle;
|
|
||||||
matchAllPattern: typeof printSingle;
|
|
||||||
guard(path: AstPath<import("java-parser").GuardCstNode & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,598 +0,0 @@
|
|||||||
import { builders, utils } from "prettier/doc";
|
|
||||||
import { call, definedKeys, each, findBaseIndent, flatMap, hasLeadingComments, indentInParentheses, isBinaryExpression, isNonTerminal, isTerminal, map, onlyDefinedKey, printDanglingComments, printList, printName, printSingle } from "./helpers.js";
|
|
||||||
const { breakParent, conditionalGroup, group, hardline, ifBreak, indent, indentIfBreak, join, line, lineSuffixBoundary, softline } = builders;
|
|
||||||
const { removeLines, willBreak } = utils;
|
|
||||||
export default {
|
|
||||||
expression: printSingle,
|
|
||||||
lambdaExpression(path, print, _, args = {}) {
|
|
||||||
var _a;
|
|
||||||
const hug = (_a = args.hug) !== null && _a !== void 0 ? _a : false;
|
|
||||||
const parameters = call(path, print, "lambdaParameters");
|
|
||||||
const expression = [hug ? removeLines(parameters) : parameters, " ->"];
|
|
||||||
const lambdaExpression = path.node.children.lambdaBody[0].children.expression;
|
|
||||||
const body = call(path, print, "lambdaBody");
|
|
||||||
if (lambdaExpression) {
|
|
||||||
const suffix = indent([line, body]);
|
|
||||||
expression.push(group(hug ? [suffix, softline] : suffix));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
expression.push(" ", body);
|
|
||||||
}
|
|
||||||
return expression;
|
|
||||||
},
|
|
||||||
lambdaParameters(path, print, options) {
|
|
||||||
const parameters = printSingle(path, print);
|
|
||||||
return !path.node.children.lambdaParametersWithBraces &&
|
|
||||||
options.arrowParens === "always"
|
|
||||||
? ["(", parameters, ")"]
|
|
||||||
: parameters;
|
|
||||||
},
|
|
||||||
lambdaParametersWithBraces(path, print, options) {
|
|
||||||
var _a;
|
|
||||||
const { lambdaParameterList } = path.node.children;
|
|
||||||
if (!lambdaParameterList) {
|
|
||||||
return "()";
|
|
||||||
}
|
|
||||||
const { conciseLambdaParameterList, normalLambdaParameterList } = lambdaParameterList[0].children;
|
|
||||||
const parameterCount = ((_a = conciseLambdaParameterList === null || conciseLambdaParameterList === void 0 ? void 0 : conciseLambdaParameterList[0].children.conciseLambdaParameter) !== null && _a !== void 0 ? _a : normalLambdaParameterList === null || normalLambdaParameterList === void 0 ? void 0 : normalLambdaParameterList[0].children.normalLambdaParameter).length;
|
|
||||||
const parameters = call(path, print, "lambdaParameterList");
|
|
||||||
if (parameterCount > 1) {
|
|
||||||
return indentInParentheses(parameters);
|
|
||||||
}
|
|
||||||
return conciseLambdaParameterList && options.arrowParens === "avoid"
|
|
||||||
? parameters
|
|
||||||
: ["(", parameters, ")"];
|
|
||||||
},
|
|
||||||
lambdaParameterList: printSingle,
|
|
||||||
conciseLambdaParameterList(path, print) {
|
|
||||||
return printList(path, print, "conciseLambdaParameter");
|
|
||||||
},
|
|
||||||
normalLambdaParameterList(path, print) {
|
|
||||||
return printList(path, print, "normalLambdaParameter");
|
|
||||||
},
|
|
||||||
normalLambdaParameter: printSingle,
|
|
||||||
regularLambdaParameter(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
...map(path, print, "variableModifier"),
|
|
||||||
call(path, print, "lambdaParameterType"),
|
|
||||||
call(path, print, "variableDeclaratorId")
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
lambdaParameterType: printSingle,
|
|
||||||
conciseLambdaParameter: printSingle,
|
|
||||||
lambdaBody: printSingle,
|
|
||||||
conditionalExpression(path, print) {
|
|
||||||
var _a;
|
|
||||||
const binaryExpression = call(path, print, "binaryExpression");
|
|
||||||
if (!path.node.children.QuestionMark) {
|
|
||||||
return binaryExpression;
|
|
||||||
}
|
|
||||||
const expressions = map(path, print, "expression");
|
|
||||||
const contents = indent(join(line, [
|
|
||||||
binaryExpression,
|
|
||||||
["? ", expressions[0]],
|
|
||||||
[": ", expressions[1]]
|
|
||||||
]));
|
|
||||||
const isNestedTernary = ((_a = path.getNode(4)) === null || _a === void 0 ? void 0 : _a.name) ===
|
|
||||||
"conditionalExpression";
|
|
||||||
return isNestedTernary ? contents : group(contents);
|
|
||||||
},
|
|
||||||
binaryExpression(path, print, options) {
|
|
||||||
var _a, _b;
|
|
||||||
const { children } = path.node;
|
|
||||||
const operands = flatMap(path, print, definedKeys(children, [
|
|
||||||
"expression",
|
|
||||||
"pattern",
|
|
||||||
"referenceType",
|
|
||||||
"unaryExpression"
|
|
||||||
]));
|
|
||||||
const operators = flatMap(path, operatorPath => {
|
|
||||||
const { node } = operatorPath;
|
|
||||||
let image;
|
|
||||||
if (isTerminal(node)) {
|
|
||||||
image = node.image;
|
|
||||||
}
|
|
||||||
else if (node.children.Less) {
|
|
||||||
image = "<<";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
image = node.children.Greater.length === 2 ? ">>" : ">>>";
|
|
||||||
}
|
|
||||||
return { image, doc: print(operatorPath) };
|
|
||||||
}, definedKeys(children, [
|
|
||||||
"AssignmentOperator",
|
|
||||||
"BinaryOperator",
|
|
||||||
"Instanceof",
|
|
||||||
"shiftOperator"
|
|
||||||
]));
|
|
||||||
const hasNonAssignmentOperators = (operators.length > 0 && !children.AssignmentOperator) ||
|
|
||||||
(children.expression !== undefined &&
|
|
||||||
isBinaryExpression(children.expression[0]));
|
|
||||||
const isInList = ((_a = path.getNode(4)) === null || _a === void 0 ? void 0 : _a.name) === "elementValue" ||
|
|
||||||
((_b = path.getNode(6)) === null || _b === void 0 ? void 0 : _b.name) === "argumentList";
|
|
||||||
return binary(operands, operators, {
|
|
||||||
hasNonAssignmentOperators,
|
|
||||||
isInList,
|
|
||||||
isRoot: true,
|
|
||||||
operatorPosition: options.experimentalOperatorPosition
|
|
||||||
});
|
|
||||||
},
|
|
||||||
unaryExpression(path, print) {
|
|
||||||
return [
|
|
||||||
...map(path, print, "UnaryPrefixOperator"),
|
|
||||||
call(path, print, "primary"),
|
|
||||||
...map(path, print, "UnarySuffixOperator")
|
|
||||||
];
|
|
||||||
},
|
|
||||||
unaryExpressionNotPlusMinus(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const expression = [];
|
|
||||||
if (children.UnaryPrefixOperatorNotPlusMinus) {
|
|
||||||
expression.push(...map(path, print, "UnaryPrefixOperatorNotPlusMinus"));
|
|
||||||
}
|
|
||||||
expression.push(call(path, print, "primary"));
|
|
||||||
if (children.UnarySuffixOperator) {
|
|
||||||
expression.push(...map(path, print, "UnarySuffixOperator"));
|
|
||||||
}
|
|
||||||
return join(" ", expression);
|
|
||||||
},
|
|
||||||
primary(path, print) {
|
|
||||||
var _a, _b;
|
|
||||||
const { children } = path.node;
|
|
||||||
if (!children.primarySuffix) {
|
|
||||||
return call(path, print, "primaryPrefix");
|
|
||||||
}
|
|
||||||
const methodInvocations = children.primarySuffix
|
|
||||||
.filter(({ children }) => children.methodInvocationSuffix)
|
|
||||||
.map(({ children }) => children.methodInvocationSuffix[0].children);
|
|
||||||
const hasLambdaMethodParameter = methodInvocations.some(({ argumentList }) => argumentList === null || argumentList === void 0 ? void 0 : argumentList[0].children.expression.some(({ children }) => children.lambdaExpression));
|
|
||||||
const prefixIsCallExpression = children.primaryPrefix[0].children.newExpression;
|
|
||||||
const callExpressionCount = methodInvocations.length +
|
|
||||||
(prefixIsCallExpression ? 1 : 0) +
|
|
||||||
children.primarySuffix.filter(({ children }) => children.unqualifiedClassInstanceCreationExpression).length;
|
|
||||||
const fqnOrRefType = (_a = children.primaryPrefix[0].children.fqnOrRefType) === null || _a === void 0 ? void 0 : _a[0].children;
|
|
||||||
const prefixIsMethodInvocation = (fqnOrRefType === null || fqnOrRefType === void 0 ? void 0 : fqnOrRefType.fqnOrRefTypePartRest) !== undefined &&
|
|
||||||
((_b = children.primarySuffix) === null || _b === void 0 ? void 0 : _b[0].children.methodInvocationSuffix) !== undefined;
|
|
||||||
const prefixIsStaticMethodInvocation = prefixIsMethodInvocation && isCapitalizedIdentifier(fqnOrRefType);
|
|
||||||
const prefixIsInstanceMethodInvocation = prefixIsMethodInvocation && !prefixIsStaticMethodInvocation;
|
|
||||||
const mustBreakForCallExpressions = methodInvocations.length > 2 && hasLambdaMethodParameter;
|
|
||||||
const separator = mustBreakForCallExpressions ? hardline : softline;
|
|
||||||
const prefix = [
|
|
||||||
call(path, prefixPath => print(prefixPath, {
|
|
||||||
lastSeparator: prefixIsStaticMethodInvocation ||
|
|
||||||
(prefixIsInstanceMethodInvocation && callExpressionCount === 1)
|
|
||||||
? ""
|
|
||||||
: separator
|
|
||||||
}), "primaryPrefix")
|
|
||||||
];
|
|
||||||
const canBreakForCallExpressions = callExpressionCount > 2 ||
|
|
||||||
(callExpressionCount === 2 && prefixIsInstanceMethodInvocation) ||
|
|
||||||
willBreak(prefix);
|
|
||||||
const suffixes = [];
|
|
||||||
each(path, suffixPath => {
|
|
||||||
const { node, previous } = suffixPath;
|
|
||||||
const suffix = print(suffixPath);
|
|
||||||
if (node.children.Dot) {
|
|
||||||
if ((canBreakForCallExpressions &&
|
|
||||||
((!previous && prefixIsCallExpression) ||
|
|
||||||
(previous === null || previous === void 0 ? void 0 : previous.children.methodInvocationSuffix) ||
|
|
||||||
(previous === null || previous === void 0 ? void 0 : previous.children.unqualifiedClassInstanceCreationExpression))) ||
|
|
||||||
(!node.children.templateArgument && willBreak(suffix))) {
|
|
||||||
suffixes.push(separator);
|
|
||||||
}
|
|
||||||
suffixes.push(suffix);
|
|
||||||
}
|
|
||||||
else if (previous) {
|
|
||||||
suffixes.push(suffix);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
prefix.push(prefixIsInstanceMethodInvocation && callExpressionCount >= 2
|
|
||||||
? indent(suffix)
|
|
||||||
: suffix);
|
|
||||||
}
|
|
||||||
}, "primarySuffix");
|
|
||||||
const hasSuffixComments = children.primarySuffix.some(suffix => hasLeadingComments(suffix));
|
|
||||||
return group(canBreakForCallExpressions || hasSuffixComments
|
|
||||||
? [prefix, indent(suffixes)]
|
|
||||||
: [prefix, ...suffixes]);
|
|
||||||
},
|
|
||||||
primaryPrefix: printSingle,
|
|
||||||
primarySuffix(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
if (!children.Dot) {
|
|
||||||
return printSingle(path, print);
|
|
||||||
}
|
|
||||||
const suffix = ["."];
|
|
||||||
if (children.This) {
|
|
||||||
suffix.push("this");
|
|
||||||
}
|
|
||||||
else if (children.Identifier) {
|
|
||||||
if (children.typeArguments) {
|
|
||||||
suffix.push(call(path, print, "typeArguments"));
|
|
||||||
}
|
|
||||||
suffix.push(call(path, print, "Identifier"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const suffixKey = onlyDefinedKey(children, [
|
|
||||||
"templateArgument",
|
|
||||||
"unqualifiedClassInstanceCreationExpression"
|
|
||||||
]);
|
|
||||||
suffix.push(call(path, print, suffixKey));
|
|
||||||
}
|
|
||||||
return suffix;
|
|
||||||
},
|
|
||||||
fqnOrRefType(path, print, _, args) {
|
|
||||||
var _a;
|
|
||||||
const lastSeparator = (_a = args.lastSeparator) !== null && _a !== void 0 ? _a : "";
|
|
||||||
const fqnOrRefType = [
|
|
||||||
call(path, print, "fqnOrRefTypePartFirst"),
|
|
||||||
...map(path, partPath => {
|
|
||||||
const part = print(partPath);
|
|
||||||
return partPath.isLast
|
|
||||||
? [willBreak(part) ? hardline : lastSeparator, part]
|
|
||||||
: part;
|
|
||||||
}, "fqnOrRefTypePartRest")
|
|
||||||
];
|
|
||||||
fqnOrRefType.push(indent(fqnOrRefType.pop()));
|
|
||||||
return path.node.children.dims
|
|
||||||
? [fqnOrRefType, call(path, print, "dims")]
|
|
||||||
: fqnOrRefType;
|
|
||||||
},
|
|
||||||
fqnOrRefTypePartFirst(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
...map(path, print, "annotation"),
|
|
||||||
call(path, print, "fqnOrRefTypePartCommon")
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
fqnOrRefTypePartRest(path, print) {
|
|
||||||
const common = call(path, print, "fqnOrRefTypePartCommon");
|
|
||||||
const type = path.node.children.typeArguments
|
|
||||||
? [call(path, print, "typeArguments"), common]
|
|
||||||
: common;
|
|
||||||
return [".", ...join(" ", [...map(path, print, "annotation"), type])];
|
|
||||||
},
|
|
||||||
fqnOrRefTypePartCommon(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const keywordKey = onlyDefinedKey(children, ["Identifier", "Super"]);
|
|
||||||
const keyword = call(path, print, keywordKey);
|
|
||||||
return children.typeArguments
|
|
||||||
? [keyword, call(path, print, "typeArguments")]
|
|
||||||
: keyword;
|
|
||||||
},
|
|
||||||
parenthesisExpression(path, print) {
|
|
||||||
var _a;
|
|
||||||
const expression = call(path, print, "expression");
|
|
||||||
const ancestorName = (_a = path.getNode(14)) === null || _a === void 0 ? void 0 : _a.name;
|
|
||||||
const binaryExpression = path.getNode(8);
|
|
||||||
return ancestorName &&
|
|
||||||
["guard", "returnStatement"].includes(ancestorName) &&
|
|
||||||
binaryExpression &&
|
|
||||||
binaryExpression.name === "binaryExpression" &&
|
|
||||||
Object.keys(binaryExpression.children).length === 1
|
|
||||||
? indentInParentheses(expression)
|
|
||||||
: ["(", indent(expression), ")"];
|
|
||||||
},
|
|
||||||
castExpression: printSingle,
|
|
||||||
primitiveCastExpression(path, print) {
|
|
||||||
return [
|
|
||||||
"(",
|
|
||||||
call(path, print, "primitiveType"),
|
|
||||||
") ",
|
|
||||||
call(path, print, "unaryExpression")
|
|
||||||
];
|
|
||||||
},
|
|
||||||
referenceTypeCastExpression(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const type = call(path, print, "referenceType");
|
|
||||||
const cast = children.additionalBound
|
|
||||||
? indentInParentheses(join(line, [type, ...map(path, print, "additionalBound")]))
|
|
||||||
: ["(", type, ")"];
|
|
||||||
const expressionKey = onlyDefinedKey(children, [
|
|
||||||
"lambdaExpression",
|
|
||||||
"unaryExpressionNotPlusMinus"
|
|
||||||
]);
|
|
||||||
return [cast, " ", call(path, print, expressionKey)];
|
|
||||||
},
|
|
||||||
newExpression: printSingle,
|
|
||||||
unqualifiedClassInstanceCreationExpression(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const expression = ["new "];
|
|
||||||
if (children.typeArguments) {
|
|
||||||
expression.push(call(path, print, "typeArguments"));
|
|
||||||
}
|
|
||||||
expression.push(call(path, print, "classOrInterfaceTypeToInstantiate"), children.argumentList
|
|
||||||
? group(["(", call(path, print, "argumentList"), ")"])
|
|
||||||
: "()");
|
|
||||||
if (children.classBody) {
|
|
||||||
expression.push(" ", call(path, print, "classBody"));
|
|
||||||
}
|
|
||||||
return expression;
|
|
||||||
},
|
|
||||||
classOrInterfaceTypeToInstantiate(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const type = children.annotation
|
|
||||||
? flatMap(path, childPath => [
|
|
||||||
print(childPath),
|
|
||||||
isNonTerminal(childPath.node) ? " " : "."
|
|
||||||
], ["annotation", "Identifier"])
|
|
||||||
: printName(path, print);
|
|
||||||
if (children.typeArgumentsOrDiamond) {
|
|
||||||
type.push(call(path, print, "typeArgumentsOrDiamond"));
|
|
||||||
}
|
|
||||||
return type;
|
|
||||||
},
|
|
||||||
typeArgumentsOrDiamond: printSingle,
|
|
||||||
diamond() {
|
|
||||||
return "<>";
|
|
||||||
},
|
|
||||||
methodInvocationSuffix(path, print) {
|
|
||||||
return path.node.children.argumentList
|
|
||||||
? group(["(", call(path, print, "argumentList"), ")"])
|
|
||||||
: indentInParentheses(printDanglingComments(path), { shouldBreak: true });
|
|
||||||
},
|
|
||||||
argumentList(path, print) {
|
|
||||||
var _a, _b, _c, _d;
|
|
||||||
const expressions = path.node.children.expression;
|
|
||||||
const lastExpression = expressions.at(-1);
|
|
||||||
const lastExpressionLambdaBodyExpression = (_b = (_a = lastExpression.children.lambdaExpression) === null || _a === void 0 ? void 0 : _a[0].children.lambdaBody[0].children.expression) === null || _b === void 0 ? void 0 : _b[0].children;
|
|
||||||
const lastExpressionLambdaBodyTernaryExpression = (_c = lastExpressionLambdaBodyExpression === null || lastExpressionLambdaBodyExpression === void 0 ? void 0 : lastExpressionLambdaBodyExpression.conditionalExpression) === null || _c === void 0 ? void 0 : _c[0].children;
|
|
||||||
const isHuggable = !lastExpression.comments &&
|
|
||||||
(!lastExpressionLambdaBodyExpression ||
|
|
||||||
(lastExpressionLambdaBodyTernaryExpression === null || lastExpressionLambdaBodyTernaryExpression === void 0 ? void 0 : lastExpressionLambdaBodyTernaryExpression.QuestionMark) !== undefined ||
|
|
||||||
((_d = lastExpressionLambdaBodyTernaryExpression === null || lastExpressionLambdaBodyTernaryExpression === void 0 ? void 0 : lastExpressionLambdaBodyTernaryExpression.binaryExpression) === null || _d === void 0 ? void 0 : _d[0].children.unaryExpression.length) === 1) &&
|
|
||||||
expressions.findIndex(({ children }) => children.lambdaExpression) ===
|
|
||||||
expressions.length - 1;
|
|
||||||
const args = map(path, print, "expression");
|
|
||||||
const allArgsExpandable = [
|
|
||||||
indent([softline, ...join([",", line], args)]),
|
|
||||||
softline
|
|
||||||
];
|
|
||||||
if (!isHuggable || willBreak(args.at(-1)[0])) {
|
|
||||||
return allArgsExpandable;
|
|
||||||
}
|
|
||||||
const headArgs = args.slice(0, -1);
|
|
||||||
const huggedLastArg = path.call(argPath => print(argPath, { hug: true }), "children", "expression", args.length - 1);
|
|
||||||
const lastArgExpanded = join(", ", [
|
|
||||||
...headArgs,
|
|
||||||
group(huggedLastArg, { shouldBreak: true })
|
|
||||||
]);
|
|
||||||
if (willBreak(huggedLastArg)) {
|
|
||||||
return [
|
|
||||||
breakParent,
|
|
||||||
conditionalGroup([lastArgExpanded, allArgsExpandable])
|
|
||||||
];
|
|
||||||
}
|
|
||||||
return conditionalGroup([
|
|
||||||
join(", ", [...headArgs, huggedLastArg]),
|
|
||||||
lastArgExpanded,
|
|
||||||
allArgsExpandable
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
arrayCreationExpression(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const typeKey = onlyDefinedKey(children, [
|
|
||||||
"classOrInterfaceType",
|
|
||||||
"primitiveType"
|
|
||||||
]);
|
|
||||||
const suffixKey = onlyDefinedKey(children, [
|
|
||||||
"arrayCreationExpressionWithoutInitializerSuffix",
|
|
||||||
"arrayCreationWithInitializerSuffix"
|
|
||||||
]);
|
|
||||||
return ["new ", call(path, print, typeKey), call(path, print, suffixKey)];
|
|
||||||
},
|
|
||||||
arrayCreationExpressionWithoutInitializerSuffix(path, print) {
|
|
||||||
const expressions = call(path, print, "dimExprs");
|
|
||||||
return path.node.children.dims
|
|
||||||
? [expressions, call(path, print, "dims")]
|
|
||||||
: expressions;
|
|
||||||
},
|
|
||||||
arrayCreationWithInitializerSuffix(path, print) {
|
|
||||||
return [
|
|
||||||
call(path, print, "dims"),
|
|
||||||
" ",
|
|
||||||
call(path, print, "arrayInitializer")
|
|
||||||
];
|
|
||||||
},
|
|
||||||
dimExprs(path, print) {
|
|
||||||
return map(path, print, "dimExpr");
|
|
||||||
},
|
|
||||||
dimExpr(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
...map(path, print, "annotation"),
|
|
||||||
["[", call(path, print, "expression"), "]"]
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
classLiteralSuffix(path, print) {
|
|
||||||
const lSquares = map(path, print, "LSquare");
|
|
||||||
const rSquares = map(path, print, "RSquare");
|
|
||||||
return [
|
|
||||||
...lSquares.flatMap((lSquare, index) => [lSquare, rSquares[index]]),
|
|
||||||
".class"
|
|
||||||
];
|
|
||||||
},
|
|
||||||
arrayAccessSuffix(path, print) {
|
|
||||||
return ["[", call(path, print, "expression"), "]"];
|
|
||||||
},
|
|
||||||
methodReferenceSuffix(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const reference = ["::"];
|
|
||||||
if (children.typeArguments) {
|
|
||||||
reference.push(call(path, print, "typeArguments"));
|
|
||||||
}
|
|
||||||
reference.push(call(path, print, onlyDefinedKey(children, ["Identifier", "New"])));
|
|
||||||
return reference;
|
|
||||||
},
|
|
||||||
templateArgument: printSingle,
|
|
||||||
template: printSingle,
|
|
||||||
stringTemplate(path, print) {
|
|
||||||
return printTemplate(path, print, "StringTemplateBegin", "StringTemplateMid", "StringTemplateEnd");
|
|
||||||
},
|
|
||||||
textBlockTemplate(path, print) {
|
|
||||||
return printTemplate(path, print, "TextBlockTemplateBegin", "TextBlockTemplateMid", "TextBlockTemplateEnd");
|
|
||||||
},
|
|
||||||
embeddedExpression: printSingle,
|
|
||||||
pattern: printSingle,
|
|
||||||
typePattern: printSingle,
|
|
||||||
recordPattern(path, print) {
|
|
||||||
const patterns = path.node.children.componentPatternList
|
|
||||||
? indentInParentheses(call(path, print, "componentPatternList"))
|
|
||||||
: "()";
|
|
||||||
return [call(path, print, "referenceType"), patterns];
|
|
||||||
},
|
|
||||||
componentPatternList(path, print) {
|
|
||||||
return printList(path, print, "componentPattern");
|
|
||||||
},
|
|
||||||
componentPattern: printSingle,
|
|
||||||
matchAllPattern: printSingle,
|
|
||||||
guard(path, print) {
|
|
||||||
var _a;
|
|
||||||
const expression = call(path, print, "expression");
|
|
||||||
const hasParentheses = ((_a = path.node.children.expression[0].children.conditionalExpression) === null || _a === void 0 ? void 0 : _a[0].children.binaryExpression[0].children.unaryExpression[0].children.primary[0].children.primaryPrefix[0].children.parenthesisExpression) !==
|
|
||||||
undefined;
|
|
||||||
return [
|
|
||||||
"when ",
|
|
||||||
hasParentheses
|
|
||||||
? expression
|
|
||||||
: group([
|
|
||||||
ifBreak("("),
|
|
||||||
indent([softline, expression]),
|
|
||||||
softline,
|
|
||||||
ifBreak(")")
|
|
||||||
])
|
|
||||||
];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function binary(operands, operators, { hasNonAssignmentOperators = false, isInList = false, isRoot = false, operatorPosition }) {
|
|
||||||
let levelOperator;
|
|
||||||
let levelPrecedence;
|
|
||||||
let level = [];
|
|
||||||
while (operators.length) {
|
|
||||||
const nextOperator = operators[0].image;
|
|
||||||
const nextPrecedence = getOperatorPrecedence(nextOperator);
|
|
||||||
if (levelPrecedence === undefined || nextPrecedence === levelPrecedence) {
|
|
||||||
const { image: operator, doc: operatorDoc } = operators.shift();
|
|
||||||
level.push(operands.shift());
|
|
||||||
if (levelOperator !== undefined &&
|
|
||||||
needsParentheses(levelOperator, operator)) {
|
|
||||||
level = [["(", group(indent(level)), ")"]];
|
|
||||||
}
|
|
||||||
const parts = [" ", operatorDoc, line];
|
|
||||||
if (operatorPosition === "start" && !isAssignmentOperator(operator)) {
|
|
||||||
parts.reverse();
|
|
||||||
}
|
|
||||||
level.push(parts);
|
|
||||||
levelOperator = operator;
|
|
||||||
levelPrecedence = nextPrecedence;
|
|
||||||
}
|
|
||||||
else if (nextPrecedence < levelPrecedence) {
|
|
||||||
if (!isRoot) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
level.push(operands.shift());
|
|
||||||
const content = group(indent(level));
|
|
||||||
operands.unshift(levelOperator !== undefined &&
|
|
||||||
needsParentheses(levelOperator, nextOperator)
|
|
||||||
? ["(", content, ")"]
|
|
||||||
: content);
|
|
||||||
level = [];
|
|
||||||
levelOperator = undefined;
|
|
||||||
levelPrecedence = undefined;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const content = binary(operands, operators, { operatorPosition });
|
|
||||||
operands.unshift(levelOperator !== undefined &&
|
|
||||||
needsParentheses(nextOperator, levelOperator)
|
|
||||||
? ["(", indent(content), ")"]
|
|
||||||
: content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
level.push(operands.shift());
|
|
||||||
if (!levelOperator ||
|
|
||||||
(!isInList &&
|
|
||||||
!isAssignmentOperator(levelOperator) &&
|
|
||||||
levelOperator !== "instanceof")) {
|
|
||||||
return group(level);
|
|
||||||
}
|
|
||||||
if (!isRoot || hasNonAssignmentOperators) {
|
|
||||||
return group(indent(level));
|
|
||||||
}
|
|
||||||
const groupId = Symbol("assignment");
|
|
||||||
return group([
|
|
||||||
level[0],
|
|
||||||
group(indent(level[1]), { id: groupId }),
|
|
||||||
indentIfBreak(level[2], { groupId })
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
const precedencesByOperator = new Map([
|
|
||||||
["||"],
|
|
||||||
["&&"],
|
|
||||||
["|"],
|
|
||||||
["^"],
|
|
||||||
["&"],
|
|
||||||
["==", "!="],
|
|
||||||
["<", ">", "<=", ">=", "instanceof"],
|
|
||||||
["<<", ">>", ">>>"],
|
|
||||||
["+", "-"],
|
|
||||||
["*", "/", "%"]
|
|
||||||
].flatMap((operators, index) => operators.map(operator => [operator, index])));
|
|
||||||
function getOperatorPrecedence(operator) {
|
|
||||||
var _a;
|
|
||||||
return (_a = precedencesByOperator.get(operator)) !== null && _a !== void 0 ? _a : -1;
|
|
||||||
}
|
|
||||||
function needsParentheses(operator, parentOperator) {
|
|
||||||
return ((operator === "&&" && parentOperator === "||") ||
|
|
||||||
(["|", "^", "&", "<<", ">>", ">>>"].includes(parentOperator) &&
|
|
||||||
getOperatorPrecedence(operator) >
|
|
||||||
getOperatorPrecedence(parentOperator)) ||
|
|
||||||
[operator, parentOperator].every(o => ["==", "!="].includes(o)) ||
|
|
||||||
[operator, parentOperator].every(o => ["<<", ">>", ">>>"].includes(o)) ||
|
|
||||||
(operator === "*" && parentOperator === "/") ||
|
|
||||||
(operator === "/" && parentOperator === "*") ||
|
|
||||||
(operator === "%" && ["+", "-", "*", "/"].includes(parentOperator)) ||
|
|
||||||
(["*", "/"].includes(operator) && parentOperator === "%"));
|
|
||||||
}
|
|
||||||
const assignmentOperators = new Set([
|
|
||||||
"=",
|
|
||||||
"*=",
|
|
||||||
"/=",
|
|
||||||
"%=",
|
|
||||||
"+=",
|
|
||||||
"-=",
|
|
||||||
"<<=",
|
|
||||||
">>=",
|
|
||||||
">>>=",
|
|
||||||
"&=",
|
|
||||||
"^=",
|
|
||||||
"|="
|
|
||||||
]);
|
|
||||||
function isAssignmentOperator(operator) {
|
|
||||||
return assignmentOperators.has(operator);
|
|
||||||
}
|
|
||||||
function isCapitalizedIdentifier(fqnOrRefType) {
|
|
||||||
var _a, _b, _c;
|
|
||||||
const nextToLastIdentifier = (_c = (_b = [
|
|
||||||
fqnOrRefType.fqnOrRefTypePartFirst[0],
|
|
||||||
...((_a = fqnOrRefType.fqnOrRefTypePartRest) !== null && _a !== void 0 ? _a : [])
|
|
||||||
].at(-2)) === null || _b === void 0 ? void 0 : _b.children.fqnOrRefTypePartCommon[0].children.Identifier) === null || _c === void 0 ? void 0 : _c[0].image;
|
|
||||||
return /^\p{Uppercase_Letter}/u.test(nextToLastIdentifier !== null && nextToLastIdentifier !== void 0 ? nextToLastIdentifier : "");
|
|
||||||
}
|
|
||||||
function printTemplate(path, print, beginKey, midKey, endKey) {
|
|
||||||
const begin = call(path, ({ node }) => node.image, beginKey);
|
|
||||||
const mids = map(path, ({ node }) => node.image, midKey);
|
|
||||||
const end = call(path, ({ node }) => node.image, endKey);
|
|
||||||
const lines = [begin, ...mids, end].join("").split("\n").slice(1);
|
|
||||||
const baseIndent = findBaseIndent(lines);
|
|
||||||
const prefix = "\n" + " ".repeat(baseIndent);
|
|
||||||
const parts = [begin, ...mids, end].map(image => join(hardline, image.split(prefix)));
|
|
||||||
return indent([
|
|
||||||
parts[0],
|
|
||||||
...map(path, (expressionPath, index) => {
|
|
||||||
const expression = group([
|
|
||||||
indent([softline, print(expressionPath), lineSuffixBoundary]),
|
|
||||||
softline
|
|
||||||
]);
|
|
||||||
return index === 0 ? expression : [parts[index], expression];
|
|
||||||
}, "embeddedExpression"),
|
|
||||||
parts.at(-1)
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
import type { AnnotationCstNode, ClassPermitsCstNode, ClassTypeCtx, CstElement, CstNode, ExpressionCstNode, InterfacePermitsCstNode, IToken, StatementCstNode } from "java-parser";
|
|
||||||
import type { AstPath, Doc, ParserOptions } from "prettier";
|
|
||||||
import { builders } from "prettier/doc";
|
|
||||||
import type { JavaComment } from "../comments.js";
|
|
||||||
export declare function onlyDefinedKey<T extends Record<string, any>, K extends Key<T> & string>(obj: T, options?: K[]): K;
|
|
||||||
export declare function definedKeys<T extends Record<string, any>, K extends Key<T> & string>(obj: T, options?: K[]): K[];
|
|
||||||
export declare function printWithModifiers<T extends CstNode, P extends IterProperties<T["children"]>>(path: AstPath<T>, print: JavaPrintFn, modifierChild: P, contents: Doc, noTypeAnnotations?: boolean): builders.Doc[];
|
|
||||||
export declare function hasDeclarationAnnotations(modifiers: ModifierNode[]): boolean;
|
|
||||||
export declare function call<T extends CstNode, U, P extends IterProperties<T["children"]>>(path: AstPath<T>, callback: MapCallback<IndexValue<IndexValue<T, "children">, P>, U>, child: P): U;
|
|
||||||
export declare function each<T extends CstNode, P extends IterProperties<T["children"]>>(path: AstPath<T>, callback: MapCallback<IndexValue<IndexValue<T, "children">, P>, void>, child: P): void;
|
|
||||||
export declare function map<T extends CstNode, U, P extends IterProperties<T["children"]>>(path: AstPath<T>, callback: MapCallback<IndexValue<IndexValue<T, "children">, P>, U>, child: P): U[];
|
|
||||||
export declare function flatMap<T extends CstNode, U, P extends IterProperties<T["children"]>>(path: AstPath<T>, callback: MapCallback<IndexValue<IndexValue<T, "children">, P>, U>, children: P[]): U[];
|
|
||||||
export declare function printSingle(path: AstPath<JavaNonTerminal>, print: JavaPrintFn, _?: JavaParserOptions, args?: unknown): builders.Doc;
|
|
||||||
export declare function lineStartWithComments(node: JavaNonTerminal): number;
|
|
||||||
export declare function lineEndWithComments(node: JavaNonTerminal): number;
|
|
||||||
export declare function printDanglingComments(path: AstPath<JavaNonTerminal>): builders.Doc[];
|
|
||||||
export declare function printComment(node: JavaTerminal): string | builders.Doc[];
|
|
||||||
export declare function hasLeadingComments(node: JavaNode): boolean | undefined;
|
|
||||||
export declare function indentInParentheses(contents: Doc, opts?: {
|
|
||||||
shouldBreak?: boolean;
|
|
||||||
}): builders.Group | "()";
|
|
||||||
export declare function printArrayInitializer<T extends JavaNonTerminal, P extends IterProperties<T["children"]>>(path: AstPath<T>, print: JavaPrintFn, options: JavaParserOptions, child: P): builders.Group | "{}";
|
|
||||||
export declare function printBlock(path: AstPath<JavaNonTerminal>, contents: Doc[]): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
export declare function printName(path: AstPath<JavaNonTerminal & {
|
|
||||||
children: {
|
|
||||||
Identifier: IToken[];
|
|
||||||
};
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
export declare function printList<T extends JavaNonTerminal, P extends IterProperties<T["children"]>>(path: AstPath<T>, print: JavaPrintFn, child: P): builders.Doc[];
|
|
||||||
export declare function printClassPermits(path: AstPath<ClassPermitsCstNode | InterfacePermitsCstNode>, print: JavaPrintFn): builders.Group;
|
|
||||||
export declare function printClassType(path: AstPath<JavaNonTerminal & {
|
|
||||||
children: ClassTypeCtx;
|
|
||||||
}>, print: JavaPrintFn): builders.Doc[];
|
|
||||||
export declare function isBinaryExpression(expression: ExpressionCstNode): boolean;
|
|
||||||
export declare function findBaseIndent(lines: string[]): number;
|
|
||||||
export declare function isEmptyStatement(statement: StatementCstNode): boolean;
|
|
||||||
export declare function isNonTerminal(node: CstElement): node is JavaNonTerminal;
|
|
||||||
export declare function isTerminal(node: CstElement): node is IToken;
|
|
||||||
export type JavaNode = CstElement & {
|
|
||||||
comments?: JavaComment[];
|
|
||||||
};
|
|
||||||
export type JavaNonTerminal = Exclude<JavaNode, IToken>;
|
|
||||||
export type JavaTerminal = Exclude<JavaNode, CstNode>;
|
|
||||||
export type JavaNodePrinters = {
|
|
||||||
[T in JavaNonTerminal["name"]]: JavaNodePrinter<T>;
|
|
||||||
};
|
|
||||||
export type JavaNodePrinter<T> = (path: AstPath<Extract<JavaNonTerminal, {
|
|
||||||
name: T;
|
|
||||||
}>>, print: JavaPrintFn, options: JavaParserOptions, args?: unknown) => Doc;
|
|
||||||
export type JavaPrintFn = (path: AstPath<JavaNode>, args?: unknown) => Doc;
|
|
||||||
export type JavaParserOptions = ParserOptions<JavaNode> & {
|
|
||||||
entrypoint?: string;
|
|
||||||
};
|
|
||||||
export type IterProperties<T> = T extends any[] ? IndexProperties<T> : ArrayProperties<T>;
|
|
||||||
type Key<T> = T extends T ? keyof T : never;
|
|
||||||
type ModifierNode = JavaNonTerminal & {
|
|
||||||
children: {
|
|
||||||
annotation?: AnnotationCstNode[];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
type IsTuple<T> = T extends [] ? true : T extends [infer _First, ...infer Remain] ? IsTuple<Remain> : false;
|
|
||||||
type IndexProperties<T extends {
|
|
||||||
length: number;
|
|
||||||
}> = IsTuple<T> extends true ? Exclude<Partial<T>["length"], T["length"]> : number;
|
|
||||||
type ArrayProperties<T> = {
|
|
||||||
[K in keyof T]: NonNullable<T[K]> extends readonly any[] ? K : never;
|
|
||||||
}[keyof T];
|
|
||||||
type ArrayElement<T> = T extends Array<infer E> ? E : never;
|
|
||||||
type MapCallback<T, U> = (path: AstPath<ArrayElement<T>>, index: number, value: any) => U;
|
|
||||||
type IndexValue<T, P> = T extends any[] ? P extends number ? T[P] : never : P extends keyof T ? T[P] : never;
|
|
||||||
export {};
|
|
||||||
@@ -1,239 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import parser from "../parser.js";
|
|
||||||
const { group, hardline, ifBreak, indent, join, line, softline } = builders;
|
|
||||||
export function onlyDefinedKey(obj, options) {
|
|
||||||
const keys = definedKeys(obj, options);
|
|
||||||
if (keys.length === 1) {
|
|
||||||
return keys[0];
|
|
||||||
}
|
|
||||||
throw new Error(keys.length > 1
|
|
||||||
? `More than one defined key found: ${keys}`
|
|
||||||
: "No defined keys found");
|
|
||||||
}
|
|
||||||
export function definedKeys(obj, options) {
|
|
||||||
return (options !== null && options !== void 0 ? options : Object.keys(obj)).filter(key => obj[key] !== undefined);
|
|
||||||
}
|
|
||||||
const indexByModifier = [
|
|
||||||
"public",
|
|
||||||
"protected",
|
|
||||||
"private",
|
|
||||||
"abstract",
|
|
||||||
"default",
|
|
||||||
"static",
|
|
||||||
"final",
|
|
||||||
"transient",
|
|
||||||
"volatile",
|
|
||||||
"synchronized",
|
|
||||||
"native",
|
|
||||||
"sealed",
|
|
||||||
"non-sealed",
|
|
||||||
"strictfp"
|
|
||||||
].reduce((map, name, index) => map.set(name, index), new Map());
|
|
||||||
export function printWithModifiers(path, print, modifierChild, contents, noTypeAnnotations = false) {
|
|
||||||
const declarationAnnotations = [];
|
|
||||||
const otherModifiers = [];
|
|
||||||
const typeAnnotations = [];
|
|
||||||
each(path, modifierPath => {
|
|
||||||
const { children } = modifierPath.node;
|
|
||||||
const modifier = print(modifierPath);
|
|
||||||
if (children.annotation) {
|
|
||||||
(otherModifiers.length ? typeAnnotations : declarationAnnotations).push(modifier);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
otherModifiers.push(modifier);
|
|
||||||
declarationAnnotations.push(...typeAnnotations);
|
|
||||||
typeAnnotations.length = 0;
|
|
||||||
}
|
|
||||||
}, modifierChild);
|
|
||||||
if (noTypeAnnotations) {
|
|
||||||
declarationAnnotations.push(...typeAnnotations);
|
|
||||||
typeAnnotations.length = 0;
|
|
||||||
}
|
|
||||||
otherModifiers.sort((a, b) => indexByModifier.get(a) - indexByModifier.get(b));
|
|
||||||
return join(hardline, [
|
|
||||||
...declarationAnnotations,
|
|
||||||
join(" ", [...otherModifiers, ...typeAnnotations, contents])
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
export function hasDeclarationAnnotations(modifiers) {
|
|
||||||
let hasAnnotation = false;
|
|
||||||
let hasNonAnnotation = false;
|
|
||||||
for (const modifier of modifiers) {
|
|
||||||
if (modifier.children.annotation) {
|
|
||||||
hasAnnotation = true;
|
|
||||||
}
|
|
||||||
else if (hasAnnotation) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
hasNonAnnotation = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return hasAnnotation && !hasNonAnnotation;
|
|
||||||
}
|
|
||||||
export function call(path, callback, child) {
|
|
||||||
return path.map(callback, "children", child)[0];
|
|
||||||
}
|
|
||||||
export function each(path, callback, child) {
|
|
||||||
if (path.node.children[child]) {
|
|
||||||
path.each(callback, "children", child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export function map(path, callback, child) {
|
|
||||||
return path.node.children[child] ? path.map(callback, "children", child) : [];
|
|
||||||
}
|
|
||||||
export function flatMap(path, callback, children) {
|
|
||||||
return children
|
|
||||||
.flatMap(child => map(path, callback, child).map((doc, index) => {
|
|
||||||
const node = path.node.children[child][index];
|
|
||||||
return {
|
|
||||||
doc,
|
|
||||||
startOffset: parser.locStart(node)
|
|
||||||
};
|
|
||||||
}))
|
|
||||||
.sort((a, b) => a.startOffset - b.startOffset)
|
|
||||||
.map(({ doc }) => doc);
|
|
||||||
}
|
|
||||||
export function printSingle(path, print, _, args) {
|
|
||||||
return call(path, childPath => print(childPath, args), onlyDefinedKey(path.node.children));
|
|
||||||
}
|
|
||||||
export function lineStartWithComments(node) {
|
|
||||||
const { comments, location } = node;
|
|
||||||
return comments
|
|
||||||
? Math.min(location.startLine, comments[0].startLine)
|
|
||||||
: location.startLine;
|
|
||||||
}
|
|
||||||
export function lineEndWithComments(node) {
|
|
||||||
const { comments, location } = node;
|
|
||||||
return comments
|
|
||||||
? Math.max(location.endLine, comments.at(-1).endLine)
|
|
||||||
: location.endLine;
|
|
||||||
}
|
|
||||||
export function printDanglingComments(path) {
|
|
||||||
if (!path.node.comments) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
const comments = [];
|
|
||||||
path.each(commentPath => {
|
|
||||||
const comment = commentPath.node;
|
|
||||||
if (comment.leading || comment.trailing) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
comment.printed = true;
|
|
||||||
comments.push(printComment(comment));
|
|
||||||
}, "comments");
|
|
||||||
return join(hardline, comments);
|
|
||||||
}
|
|
||||||
export function printComment(node) {
|
|
||||||
const { image } = node;
|
|
||||||
const lines = image.split("\n").map(line => line.trim());
|
|
||||||
return lines.length > 1 &&
|
|
||||||
lines[0].startsWith("/*") &&
|
|
||||||
lines.slice(1).every(line => line.startsWith("*")) &&
|
|
||||||
lines.at(-1).endsWith("*/")
|
|
||||||
? join(hardline, lines.map((line, index) => (index === 0 ? line : ` ${line}`)))
|
|
||||||
: image;
|
|
||||||
}
|
|
||||||
export function hasLeadingComments(node) {
|
|
||||||
var _a;
|
|
||||||
return (_a = node.comments) === null || _a === void 0 ? void 0 : _a.some(({ leading }) => leading);
|
|
||||||
}
|
|
||||||
export function indentInParentheses(contents, opts) {
|
|
||||||
return !Array.isArray(contents) || contents.length
|
|
||||||
? group(["(", indent([softline, contents]), softline, ")"], opts)
|
|
||||||
: "()";
|
|
||||||
}
|
|
||||||
export function printArrayInitializer(path, print, options, child) {
|
|
||||||
const list = [];
|
|
||||||
if (child && child in path.node.children) {
|
|
||||||
list.push(call(path, print, child));
|
|
||||||
if (options.trailingComma !== "none") {
|
|
||||||
list.push(ifBreak(","));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
list.push(...printDanglingComments(path));
|
|
||||||
return list.length ? group(["{", indent([line, ...list]), line, "}"]) : "{}";
|
|
||||||
}
|
|
||||||
export function printBlock(path, contents) {
|
|
||||||
if (!contents.length) {
|
|
||||||
const danglingComments = printDanglingComments(path);
|
|
||||||
return danglingComments.length
|
|
||||||
? ["{", indent([hardline, ...danglingComments]), hardline, "}"]
|
|
||||||
: "{}";
|
|
||||||
}
|
|
||||||
return group([
|
|
||||||
"{",
|
|
||||||
indent([hardline, ...join(hardline, contents)]),
|
|
||||||
hardline,
|
|
||||||
"}"
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
export function printName(path, print) {
|
|
||||||
return join(".", map(path, print, "Identifier"));
|
|
||||||
}
|
|
||||||
export function printList(path, print, child) {
|
|
||||||
return join([",", line], map(path, print, child));
|
|
||||||
}
|
|
||||||
export function printClassPermits(path, print) {
|
|
||||||
return group([
|
|
||||||
"permits",
|
|
||||||
indent([line, group(printList(path, print, "typeName"))])
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
export function printClassType(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
return definedKeys(children, ["annotation", "Identifier", "typeArguments"])
|
|
||||||
.flatMap(child => children[child].map((node, index) => ({
|
|
||||||
child,
|
|
||||||
index,
|
|
||||||
startOffset: parser.locStart(node)
|
|
||||||
})))
|
|
||||||
.sort((a, b) => a.startOffset - b.startOffset)
|
|
||||||
.flatMap(({ child, index: childIndex }, index, array) => {
|
|
||||||
const node = children[child][childIndex];
|
|
||||||
const next = array.at(index + 1);
|
|
||||||
const nextNode = next && children[next.child][next.index];
|
|
||||||
const docs = [path.call(print, "children", child, childIndex)];
|
|
||||||
if (nextNode) {
|
|
||||||
if (isNonTerminal(node)) {
|
|
||||||
docs.push(node.name === "annotation" ? " " : ".");
|
|
||||||
}
|
|
||||||
else if (isTerminal(nextNode) || nextNode.name === "annotation") {
|
|
||||||
docs.push(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return docs;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function isBinaryExpression(expression) {
|
|
||||||
var _a;
|
|
||||||
const conditionalExpression = (_a = expression.children.conditionalExpression) === null || _a === void 0 ? void 0 : _a[0].children;
|
|
||||||
if (!conditionalExpression) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const isTernary = conditionalExpression.QuestionMark !== undefined;
|
|
||||||
if (isTernary) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const hasNonAssignmentOperators = Object.values(conditionalExpression.binaryExpression[0].children).some(child => {
|
|
||||||
var _a;
|
|
||||||
return isTerminal(child[0]) &&
|
|
||||||
!((_a = child[0].tokenType.CATEGORIES) === null || _a === void 0 ? void 0 : _a.some(category => category.name === "AssignmentOperator"));
|
|
||||||
});
|
|
||||||
return hasNonAssignmentOperators;
|
|
||||||
}
|
|
||||||
export function findBaseIndent(lines) {
|
|
||||||
return lines.length
|
|
||||||
? Math.min(...lines.map(line => line.search(/\S/)).filter(indent => indent >= 0))
|
|
||||||
: 0;
|
|
||||||
}
|
|
||||||
export function isEmptyStatement(statement) {
|
|
||||||
var _a;
|
|
||||||
return (((_a = statement.children.statementWithoutTrailingSubstatement) === null || _a === void 0 ? void 0 : _a[0].children.emptyStatement) !== undefined);
|
|
||||||
}
|
|
||||||
export function isNonTerminal(node) {
|
|
||||||
return !isTerminal(node);
|
|
||||||
}
|
|
||||||
export function isTerminal(node) {
|
|
||||||
return "tokenType" in node;
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
import type { JavaNodePrinter, JavaNodePrinters } from "./helpers.js";
|
|
||||||
export declare function printerForNodeType<T extends keyof JavaNodePrinters>(type: T): JavaNodePrinter<T>;
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import arrays from "./arrays.js";
|
|
||||||
import blocksAndStatements from "./blocks-and-statements.js";
|
|
||||||
import classes from "./classes.js";
|
|
||||||
import expressions from "./expressions.js";
|
|
||||||
import interfaces from "./interfaces.js";
|
|
||||||
import lexicalStructure from "./lexical-structure.js";
|
|
||||||
import names from "./names.js";
|
|
||||||
import packagesAndModules from "./packages-and-modules.js";
|
|
||||||
import typesValuesAndVariables from "./types-values-and-variables.js";
|
|
||||||
const printersByNodeType = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, arrays), blocksAndStatements), classes), expressions), interfaces), lexicalStructure), names), packagesAndModules), typesValuesAndVariables);
|
|
||||||
export function printerForNodeType(type) {
|
|
||||||
return printersByNodeType[type];
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import { printClassPermits, printSingle } from "./helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
interfaceDeclaration(path: import("prettier").AstPath<import("java-parser").InterfaceDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
normalInterfaceDeclaration(path: import("prettier").AstPath<import("java-parser").NormalInterfaceDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
interfaceModifier: typeof printSingle;
|
|
||||||
interfaceExtends(path: import("prettier").AstPath<import("java-parser").InterfaceExtendsCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group;
|
|
||||||
interfacePermits: typeof printClassPermits;
|
|
||||||
interfaceBody(path: import("prettier").AstPath<import("java-parser").InterfaceBodyCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
interfaceMemberDeclaration(path: import("prettier").AstPath<import("java-parser").InterfaceMemberDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc;
|
|
||||||
constantDeclaration(path: import("prettier").AstPath<import("java-parser").ConstantDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
constantModifier: typeof printSingle;
|
|
||||||
interfaceMethodDeclaration(path: import("prettier").AstPath<import("java-parser").InterfaceMethodDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
interfaceMethodModifier: typeof printSingle;
|
|
||||||
annotationInterfaceDeclaration(path: import("prettier").AstPath<import("java-parser").AnnotationInterfaceDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
annotationInterfaceBody(path: import("prettier").AstPath<import("java-parser").AnnotationInterfaceBodyCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group | "{}" | (string | builders.Indent | builders.Hardline)[];
|
|
||||||
annotationInterfaceMemberDeclaration(path: import("prettier").AstPath<import("java-parser").AnnotationInterfaceMemberDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc;
|
|
||||||
annotationInterfaceElementDeclaration(path: import("prettier").AstPath<import("java-parser").AnnotationInterfaceElementDeclarationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
annotationInterfaceElementModifier: typeof printSingle;
|
|
||||||
defaultValue(path: import("prettier").AstPath<import("java-parser").DefaultValueCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
annotation(path: import("prettier").AstPath<import("java-parser").AnnotationCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
elementValuePairList(path: import("prettier").AstPath<import("java-parser").ElementValuePairListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
elementValuePair(path: import("prettier").AstPath<import("java-parser").ElementValuePairCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
elementValue: typeof printSingle;
|
|
||||||
elementValueArrayInitializer(path: import("prettier").AstPath<import("java-parser").ElementValueArrayInitializerCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn, options: import("./helpers.js").JavaParserOptions): builders.Group | "{}";
|
|
||||||
elementValueList(path: import("prettier").AstPath<import("java-parser").ElementValueListCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Group;
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import { call, each, hasDeclarationAnnotations, indentInParentheses, lineEndWithComments, lineStartWithComments, onlyDefinedKey, printArrayInitializer, printBlock, printClassPermits, printList, printSingle, printWithModifiers } from "./helpers.js";
|
|
||||||
const { group, hardline, indent, join, line } = builders;
|
|
||||||
export default {
|
|
||||||
interfaceDeclaration(path, print) {
|
|
||||||
const declarationKey = onlyDefinedKey(path.node.children, [
|
|
||||||
"annotationInterfaceDeclaration",
|
|
||||||
"normalInterfaceDeclaration"
|
|
||||||
]);
|
|
||||||
return printWithModifiers(path, print, "interfaceModifier", call(path, print, declarationKey), true);
|
|
||||||
},
|
|
||||||
normalInterfaceDeclaration(path, print) {
|
|
||||||
const { interfaceExtends, interfacePermits, typeParameters } = path.node.children;
|
|
||||||
const header = ["interface ", call(path, print, "typeIdentifier")];
|
|
||||||
if (typeParameters) {
|
|
||||||
header.push(call(path, print, "typeParameters"));
|
|
||||||
}
|
|
||||||
if (interfaceExtends) {
|
|
||||||
header.push(indent([line, call(path, print, "interfaceExtends")]));
|
|
||||||
}
|
|
||||||
if (interfacePermits) {
|
|
||||||
header.push(indent([line, call(path, print, "interfacePermits")]));
|
|
||||||
}
|
|
||||||
return [group(header), " ", call(path, print, "interfaceBody")];
|
|
||||||
},
|
|
||||||
interfaceModifier: printSingle,
|
|
||||||
interfaceExtends(path, print) {
|
|
||||||
return group([
|
|
||||||
"extends",
|
|
||||||
indent([line, call(path, print, "interfaceTypeList")])
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
interfacePermits: printClassPermits,
|
|
||||||
interfaceBody(path, print) {
|
|
||||||
const declarations = [];
|
|
||||||
let previousRequiresPadding = false;
|
|
||||||
each(path, declarationPath => {
|
|
||||||
var _a, _b, _c, _d;
|
|
||||||
const declaration = print(declarationPath);
|
|
||||||
if (declaration === "") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const { node, previous } = declarationPath;
|
|
||||||
const constantDeclaration = (_a = node.children.constantDeclaration) === null || _a === void 0 ? void 0 : _a[0].children;
|
|
||||||
const methodDeclaration = (_b = node.children.interfaceMethodDeclaration) === null || _b === void 0 ? void 0 : _b[0].children;
|
|
||||||
const currentRequiresPadding = (!constantDeclaration && !methodDeclaration) ||
|
|
||||||
(methodDeclaration === null || methodDeclaration === void 0 ? void 0 : methodDeclaration.methodBody[0].children.block) !== undefined ||
|
|
||||||
hasDeclarationAnnotations((_d = (_c = constantDeclaration === null || constantDeclaration === void 0 ? void 0 : constantDeclaration.constantModifier) !== null && _c !== void 0 ? _c : methodDeclaration === null || methodDeclaration === void 0 ? void 0 : methodDeclaration.interfaceMethodModifier) !== null && _d !== void 0 ? _d : []);
|
|
||||||
const blankLine = declarations.length > 0 &&
|
|
||||||
(previousRequiresPadding ||
|
|
||||||
currentRequiresPadding ||
|
|
||||||
lineStartWithComments(node) > lineEndWithComments(previous) + 1);
|
|
||||||
declarations.push(blankLine ? [hardline, declaration] : declaration);
|
|
||||||
previousRequiresPadding = currentRequiresPadding;
|
|
||||||
}, "interfaceMemberDeclaration");
|
|
||||||
return printBlock(path, declarations);
|
|
||||||
},
|
|
||||||
interfaceMemberDeclaration(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
return children.Semicolon
|
|
||||||
? ""
|
|
||||||
: call(path, print, onlyDefinedKey(children));
|
|
||||||
},
|
|
||||||
constantDeclaration(path, print) {
|
|
||||||
const declaration = [
|
|
||||||
call(path, print, "unannType"),
|
|
||||||
" ",
|
|
||||||
call(path, print, "variableDeclaratorList"),
|
|
||||||
";"
|
|
||||||
];
|
|
||||||
return printWithModifiers(path, print, "constantModifier", declaration);
|
|
||||||
},
|
|
||||||
constantModifier: printSingle,
|
|
||||||
interfaceMethodDeclaration(path, print) {
|
|
||||||
const declaration = [
|
|
||||||
call(path, print, "methodHeader"),
|
|
||||||
path.node.children.methodBody[0].children.Semicolon ? "" : " ",
|
|
||||||
call(path, print, "methodBody")
|
|
||||||
];
|
|
||||||
return printWithModifiers(path, print, "interfaceMethodModifier", declaration);
|
|
||||||
},
|
|
||||||
interfaceMethodModifier: printSingle,
|
|
||||||
annotationInterfaceDeclaration(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
"@interface",
|
|
||||||
call(path, print, "typeIdentifier"),
|
|
||||||
call(path, print, "annotationInterfaceBody")
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
annotationInterfaceBody(path, print) {
|
|
||||||
const declarations = [];
|
|
||||||
each(path, declarationPath => {
|
|
||||||
const declaration = print(declarationPath);
|
|
||||||
if (declaration === "") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
declarations.push(declarationPath.isFirst ? declaration : [hardline, declaration]);
|
|
||||||
}, "annotationInterfaceMemberDeclaration");
|
|
||||||
return printBlock(path, declarations);
|
|
||||||
},
|
|
||||||
annotationInterfaceMemberDeclaration(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
return children.Semicolon
|
|
||||||
? ""
|
|
||||||
: call(path, print, onlyDefinedKey(children));
|
|
||||||
},
|
|
||||||
annotationInterfaceElementDeclaration(path, print) {
|
|
||||||
const { dims, defaultValue } = path.node.children;
|
|
||||||
const declaration = [
|
|
||||||
call(path, print, "unannType"),
|
|
||||||
" ",
|
|
||||||
call(path, print, "Identifier"),
|
|
||||||
"()"
|
|
||||||
];
|
|
||||||
if (dims) {
|
|
||||||
declaration.push(call(path, print, "dims"));
|
|
||||||
}
|
|
||||||
if (defaultValue) {
|
|
||||||
declaration.push(" ", call(path, print, "defaultValue"));
|
|
||||||
}
|
|
||||||
declaration.push(";");
|
|
||||||
return printWithModifiers(path, print, "annotationInterfaceElementModifier", declaration);
|
|
||||||
},
|
|
||||||
annotationInterfaceElementModifier: printSingle,
|
|
||||||
defaultValue(path, print) {
|
|
||||||
return ["default ", call(path, print, "elementValue")];
|
|
||||||
},
|
|
||||||
annotation(path, print) {
|
|
||||||
const { children } = path.node;
|
|
||||||
const annotation = ["@", call(path, print, "typeName")];
|
|
||||||
if (children.elementValue || children.elementValuePairList) {
|
|
||||||
const valuesKey = onlyDefinedKey(children, [
|
|
||||||
"elementValue",
|
|
||||||
"elementValuePairList"
|
|
||||||
]);
|
|
||||||
annotation.push(indentInParentheses(call(path, print, valuesKey)));
|
|
||||||
}
|
|
||||||
return annotation;
|
|
||||||
},
|
|
||||||
elementValuePairList(path, print) {
|
|
||||||
return printList(path, print, "elementValuePair");
|
|
||||||
},
|
|
||||||
elementValuePair(path, print) {
|
|
||||||
return join(" ", [
|
|
||||||
call(path, print, "Identifier"),
|
|
||||||
call(path, print, "Equals"),
|
|
||||||
call(path, print, "elementValue")
|
|
||||||
]);
|
|
||||||
},
|
|
||||||
elementValue: printSingle,
|
|
||||||
elementValueArrayInitializer(path, print, options) {
|
|
||||||
return printArrayInitializer(path, print, options, "elementValueList");
|
|
||||||
},
|
|
||||||
elementValueList(path, print) {
|
|
||||||
return group(printList(path, print, "elementValue"));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import { printSingle } from "./helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
literal(path: import("prettier").AstPath<import("java-parser").LiteralCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc;
|
|
||||||
integerLiteral: typeof printSingle;
|
|
||||||
floatingPointLiteral: typeof printSingle;
|
|
||||||
booleanLiteral: typeof printSingle;
|
|
||||||
shiftOperator(path: import("prettier").AstPath<import("java-parser").ShiftOperatorCstNode & {
|
|
||||||
comments?: import("../comments.js").JavaComment[];
|
|
||||||
}>, print: import("./helpers.js").JavaPrintFn): builders.Doc[];
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
import { builders } from "prettier/doc";
|
|
||||||
import { findBaseIndent, map, onlyDefinedKey, printSingle } from "./helpers.js";
|
|
||||||
const { hardline, indent, join } = builders;
|
|
||||||
export default {
|
|
||||||
literal(path, print) {
|
|
||||||
const { TextBlock } = path.node.children;
|
|
||||||
if (!TextBlock) {
|
|
||||||
return printSingle(path, print);
|
|
||||||
}
|
|
||||||
const [open, ...lines] = TextBlock[0].image.split("\n");
|
|
||||||
const baseIndent = findBaseIndent(lines);
|
|
||||||
const textBlock = join(hardline, [
|
|
||||||
open,
|
|
||||||
...lines.map(line => line.slice(baseIndent))
|
|
||||||
]);
|
|
||||||
const ancestor = path.getNode(14);
|
|
||||||
return (ancestor === null || ancestor === void 0 ? void 0 : ancestor.name) === "variableInitializer" ||
|
|
||||||
((ancestor === null || ancestor === void 0 ? void 0 : ancestor.name) === "binaryExpression" &&
|
|
||||||
ancestor.children.AssignmentOperator)
|
|
||||||
? indent(textBlock)
|
|
||||||
: textBlock;
|
|
||||||
},
|
|
||||||
integerLiteral: printSingle,
|
|
||||||
floatingPointLiteral: printSingle,
|
|
||||||
booleanLiteral: printSingle,
|
|
||||||
shiftOperator(path, print) {
|
|
||||||
return map(path, print, onlyDefinedKey(path.node.children));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
import { printName, printSingle } from "./helpers.js";
|
|
||||||
declare const _default: {
|
|
||||||
typeIdentifier: typeof printSingle;
|
|
||||||
moduleName: typeof printName;
|
|
||||||
packageName: typeof printName;
|
|
||||||
typeName: typeof printName;
|
|
||||||
expressionName: typeof printName;
|
|
||||||
methodName: typeof printSingle;
|
|
||||||
packageOrTypeName: typeof printName;
|
|
||||||
ambiguousName: typeof printName;
|
|
||||||
};
|
|
||||||
export default _default;
|
|
||||||