Compare commits

..

No commits in common. "master" and "gh-pages" have entirely different histories.

221 changed files with 6632 additions and 3628 deletions

View file

@ -1,12 +0,0 @@
{
"version": 1,
"isRoot": true,
"tools": {
"docfx": {
"version": "2.77.0",
"commands": [
"docfx"
]
}
}
}

View file

@ -1,123 +0,0 @@
[*.{cs,vb}]
#### Naming styles ####
# Naming rules
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
# Naming styles
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_auto_properties = true:warning
dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 4
indent_size = 4
end_of_line = crlf
dotnet_style_object_initializer = true:suggestion
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_namespace_match_folder = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
dotnet_style_readonly_field = true:suggestion
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
dotnet_style_predefined_type_for_member_access = true:silent
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
dotnet_style_allow_multiple_blank_lines_experimental = false:silent
dotnet_style_allow_statement_immediately_after_block_experimental = false:silent
dotnet_code_quality_unused_parameters = all:warning
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
[*.cs]
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = when_multiline:silent
csharp_style_namespace_declarations = file_scoped:suggestion
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_top_level_statements = true:suggestion
csharp_style_expression_bodied_methods = when_on_single_line:silent
csharp_style_expression_bodied_constructors = when_on_single_line:silent
csharp_style_expression_bodied_operators = when_on_single_line:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = when_on_single_line:silent
csharp_indent_labels = one_less_than_current
csharp_style_throw_expression = true:suggestion
csharp_style_prefer_null_check_over_type_check = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_prefer_local_over_anonymous_function = true:suggestion
csharp_style_prefer_index_operator = true:suggestion
csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
csharp_style_prefer_range_operator = true:suggestion
csharp_style_prefer_tuple_swap = true:suggestion
csharp_style_prefer_utf8_string_literals = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
csharp_prefer_static_local_function = true:suggestion
csharp_style_prefer_readonly_struct = true:suggestion
csharp_style_prefer_readonly_struct_member = true:suggestion
csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false:silent
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false:silent
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true:silent
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:silent
csharp_style_conditional_delegate_call = true:suggestion
csharp_style_prefer_switch_expression = true:suggestion
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_prefer_pattern_matching = true:silent
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_prefer_not_pattern = true:suggestion
csharp_style_prefer_extended_property_pattern = true:suggestion

View file

@ -1,25 +0,0 @@
name: Public Preview Builds
on:
push:
branches:
- master
tags:
- '*'
jobs:
publish-preview:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Build
run: dotnet build -c Release -p:SymbolPackageFormat=symbols.nupkg -p:ContinuousIntegrationBuild=true
- name: Publish
run: dotnet nuget push src/Xdg.Directories/bin/Release/*.symbols.nupkg --api-key ${{ secrets.PUBLISH_GITEA_TOKEN }} --source https://git.froth.zone/api/packages/mirrors/nuget/index.json

63
.gitattributes vendored
View file

@ -1,63 +0,0 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain

View file

@ -1,15 +0,0 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "nuget" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

View file

@ -1,33 +0,0 @@
name: Benchmarks
on:
push:
branches:
- master
permissions:
contents: write
deployments: write
jobs:
benchmark:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Run Benchmarks
run: dotnet run -c Release --project src/Xdg.Benchmarks --exporters json --framework net8.0
- name: Store Benchmark Result
uses: benchmark-action/github-action-benchmark@v1
with:
name: Benchmark.Net Benchmark
tool: 'benchmarkdotnet'
output-file-path: 'BenchmarkDotNet.Artifacts/results/Program.Benchmarks-report-full.json'
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: true
alert-threshold: '200%'
comment-on-alert: true
fail-on-alert: true
alert-comment-cc-users: '@SamTherapy'

View file

@ -1,93 +0,0 @@
name: Build
on: [push, pull_request]
jobs:
build:
strategy:
matrix:
operating-system: ["windows", "macos", "ubuntu"]
dotnet-version: ["8.0.x"]
runs-on: ${{ matrix.operating-system }}-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET Core SDK ${{ matrix.dotnet-version }}
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ matrix.dotnet-version }}
- uses: actions/cache@v4
with:
path: ~/.nuget/packages
# Look to see if there is a cache hit for the corresponding requirements file
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget
- name: Install dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Test
run: dotnet test --no-restore --verbosity normal
publish-preview:
needs: build
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET Core SDK
uses: actions/setup-dotnet@v4
- uses: actions/cache@v4
with:
path: ~/.nuget/packages
# Look to see if there is a cache hit for the corresponding requirements file
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
- name: Install dependencies
run: dotnet restore
- name: Build the package
run: dotnet build --configuration Release --no-restore -p:SymbolPackageFormat=symbols.nupkg
- name: Publish the package
run: dotnet nuget push src/Xdg.Directories/bin/Release/*.symbols.nupkg -s https://nuget.pkg.github.com/xdg-net/index.json -k ${{ secrets.GITHUB_TOKEN }}
publish-release:
needs: build
if: ${{ github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
permissions:
packages: write
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup .NET Core SDK
uses: actions/setup-dotnet@v4
- uses: actions/cache@v4
with:
path: ~/.nuget/packages
# Look to see if there is a cache hit for the corresponding requirements file
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
- name: Install dependencies
run: dotnet restore
- name: Build the package
run: dotnet build --configuration Release --no-restore -p:SymbolPackageFormat=snupkg
- name: Publish the package
run: |
dotnet nuget push src/Xdg.Directories/bin/Release/*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_KEY }}
env:
NUGET_API_KEY: ${{ secrets.GITHUB_TOKEN }}
- name: Make a GitHub release
uses: softprops/action-gh-release@v2
with:
files: src/Xdg.Directories/bin/Release/*.nupkg
token: ${{ secrets.GITHUB_TOKEN }}
generate_release_notes: true

View file

@ -1,68 +0,0 @@
# CodeQL Code Scanning
# Analyses your code for security vulnerabilities and coding errors.
# 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.
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning
name: "CodeQL"
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
schedule:
- cron: "0 8 * * 4"
workflow_dispatch:
jobs:
analyze:
name: Analyze
permissions:
actions: read
contents: read
security-events: write
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ["csharp"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# 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.
# 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
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
# 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
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

View file

@ -1,41 +0,0 @@
name: Dependabot
on: pull_request_target
permissions:
pull-requests: write
contents: write
jobs:
review-dependabot-pr:
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
steps:
- name: Dependabot metadata
id: dependabot-metadata
uses: dependabot/fetch-metadata@v2.2.0
- name: Enable auto-merge for Dependabot PRs
run: gh pr merge --auto --rebase "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Approve patch and minor updates
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch' || steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}}
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a patch or minor update**"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Approve major updates of development dependencies
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:development'}}
run: gh pr review $PR_URL --approve -b "I'm **approving** this pull request because **it includes a major update of a dependency used only in development**"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: Comment on major updates of non-development dependencies
if: ${{steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:production'}}
run: |
gh pr comment $PR_URL --body "I'm **not approving** this PR because **it includes a major update of a dependency used in production**"
gh pr edit $PR_URL --add-label "requires-manual-qa"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

View file

@ -1,45 +0,0 @@
name: Deploy Documentation
on:
push:
branches:
- master
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
actions: read
contents: write
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
publish-docs:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Dotnet Setup
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- run: dotnet tool update -g docfx
- run: dotnet tool restore
- name: Build website
run: dotnet docfx docs/docfx.json
- name: Deploy
uses: peaceiris/actions-gh-pages@v4
if: github.ref == 'refs/heads/master'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_site
keep_files: true

View file

@ -1,19 +0,0 @@
name: Mirror Push
on:
push:
branches: [master]
jobs:
push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: mirror
uses: yesolutions/mirror-action@master
with:
REMOTE: 'https://git.froth.zone/sam/Xdg.Net.git'
GIT_USERNAME: oauth2
GIT_PASSWORD: ${{ secrets.GIT_PASSWORD }}

372
.gitignore vendored
View file

@ -1,372 +0,0 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
.mono
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Oo]ut/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Visual Studio Code files
.vscode/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# DocFX
_site
docs/api

0
.nojekyll Normal file
View file

View file

@ -1,18 +0,0 @@
DOTNET ?= dotnet
NETVERSION ?= net8.0
.PHONY: publish
publish:
make DOTNET=$(DOTNET) NETVERSION=$(NETVERSION) -C src/Xdg.Directories.FFI publish
.PHONY: install
install: publish
make DOTNET=$(DOTNET) NETVERSION=$(NETVERSION) -C src/Xdg.Directories.FFI install
.PHONY: uninstall
uninstall:
make -C src/Xdg.Directories.FFI uninstall
.PHONY: clean
clean:
make -C src/Xdg.Directories.FFI clean

21
LICENSE
View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 Xdg.Net Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,61 +0,0 @@
# Xdg.Directories
> A .NET Standard library for the XDG Base Directory Specification and XDG user directories.
[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/xdg-net/xdg.directories/build-test.yaml?style=for-the-badge&logo=github)](https://github.com/xdg-net/Xdg.Directories/actions/workflows/build-test.yaml)
[![NuGet Version](https://img.shields.io/nuget/v/xdg.directories?style=for-the-badge&logo=nuget)](https://www.nuget.org/packages/Xdg.Directories/)
[![Documentation](https://img.shields.io/badge/docfx-Docs-3391ff.svg?style=for-the-badge&logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMzguMDAwMDAwcHQiIGhlaWdodD0iMzguMDAwMDAwcHQiIHZpZXdCb3g9IjAgMCAxNzIuMDAwMDAwIDE3Mi4wMDAwMDAiCiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0Ij4KPG1ldGFkYXRhPgpDcmVhdGVkIGJ5IERvY2Z4CjwvbWV0YWRhdGE+CjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLDE3Mi4wMDAwMDApIHNjYWxlKDAuMTAwMDAwLC0wLjEwMDAwMCkiCmZpbGw9IiNkZGRkZGQiIHN0cm9rZT0ibm9uZSI+CjxwYXRoIGQ9Ik0yMzAgMTM1OSBjMCAtMTggMTEgLTMwIDQ0IC00OCA4MCAtNDIgODEgLTQ1IDgxIC00NDEgMCAtNDAwIC0xCi00MDQgLTc5IC00MzYgLTM2IC0xNSAtNDYgLTI0IC00NiAtNDMgMCAtMjMgMiAtMjQgNjEgLTE3IDM0IDMgODggNiAxMjAgNgpsNTkgMCAwIDQ5NSAwIDQ5NSAtODIgMCBjLTQ2IDAgLTEwMCAzIC0xMjAgNiAtMzUgNiAtMzggNSAtMzggLTE3eiIvPgo8cGF0aCBkPSJNNjE4IDEzNzMgbC0xMTggLTQgMCAtNDkzIDAgLTQ5NCAxNTQgLTcgYzE4MSAtOSAyMzUgLTMgMzEzIDM0IDY4CjMzIDE2OCAxMzAgMjA3IDIwMiA3NSAxMzYgNzUgMzg0IDEgNTM2IC03MSAxNDUgLTIzNCAyNDAgLTM5OSAyMzEgLTIzIC0xIC05NAotNCAtMTU4IC01eiBtMjg3IC0xMTkgYzY4IC0yNCAxNDQgLTEwMSAxNzYgLTE3OSAyMiAtNTQgMjQgLTc1IDI0IC0yMTAgMAotMTQxIC0yIC0xNTMgLTI2IC0yMDYgLTM2IC03NiAtODkgLTEzMiAtMTUyIC0xNjAgLTQ1IC0yMSAtNjggLTI0IC0xNjQgLTI0Ci03MSAwIC0xMTYgNCAtMTIzIDExIC0yMiAyMiAtMzEgMTc1IC0yOCA0NjMgMiAyMDggNiAyOTMgMTUgMzAyIDMyIDMyIDE4OCAzMwoyNzggM3oiLz4KPHBhdGggZD0iTTExNzAgMTIyOCBjNzUgLTEwNCAxMTAgLTMzNyA3NiAtNTA4IC0yMSAtMTAwIC01NiAtMTc4IC0xMDUgLTIzMwpsLTM2IC00MSAzNCAyMCBjNzUgNDMgMTYwIDEzMyAxOTggMjEyIDM3IDc1IDM4IDc4IDM4IDE5MSAtMSAxMjkgLTE4IDE5MSAtNzUKMjcwIC0yOCAzOCAtMTM2IDEzMSAtMTUzIDEzMSAtNCAwIDYgLTE5IDIzIC00MnoiLz4KPC9nPgo8L3N2Zz4K)](https://xdg-net.github.io/Xdg.Directories/)
[![MIT License](https://img.shields.io/github/license/xdg-net/xdg.directories?style=for-the-badge)](https://choosealicense.com/licenses/mit/)
Xdg.Directories is a ***small*** (the .dll is only 11 KB), [***fast***](https://xdg-net.github.io/Xdg.Directories/dev/bench/) and ***portable*** (Completely supports .NET Standard 2.0 and even NativeAOT!) .NET implementation of the [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) and XDG user directories for Windows, MacOS and Linux/FreeBSD.
Full documentation can be found at <https://xdg-net.github.io/Xdg.Directories>.
## Installation
Use [NuGet](http://docs.nuget.org/docs/start-here/installing-nuget) to install [Xdg.Directories](thttps://www.nuget.org/packages/Xdg.Directories).
From the .NET CLI:
```bash
dotnet add package Xdg.Directories
```
or from Visual Studio's package manager:
```pwsh
Install-Package Xdg.Directories
```
### Pre-releases
Preview releases are uploaded to both [GitHub packages](https://github.com/xdg-net/Xdg.Directories/pkgs/nuget/Xdg.Directories) (need GitHub account to download) and [Forgejo packages](https://git.froth.zone/mirrors/-/packages/nuget/xdg.directories) (no login required).
## Usage
### Base Directories, C\#
```cs
using System;
using Xdg.Directories;
// Prints /home/$USER/.local/share
Console.Writeline(BaseDirectory.DataHome);
// Prints /home/$USER/.cache
Console.Writeline(BaseDirectory.CacheHome)
```
### User Directories, F\#
```fsharp
open Xdg.Directories
// Prints /home/$USER/Documents
printfn "%s" UserDirectory.DesktopDir
```
## License
This project is licensed under the [MIT](https://choosealicense.com/licenses/mit/) license. \
Icon is made by Emoji One, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0), via [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Eo_circle_purple_white_letter-x.svg) an image.

View file

@ -1,48 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33627.172
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xdg.Directories", "src\Xdg.Directories\Xdg.Directories.csproj", "{D644CF8D-B8EB-4581-B075-9FD62BB5709A}"
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Xdg.Benchmarks", "src\Xdg.Benchmarks\Xdg.Benchmarks.fsproj", "{AEC4CC3D-E753-4D96-B8E8-B39B41EC0871}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xdg.Testing", "src\Xdg.Testing\Xdg.Testing.csproj", "{F5B4B166-F5F9-4D47-B426-CDA907C8B3E5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xdg.Directories.FFI", "src\Xdg.Directories.FFI\Xdg.Directories.FFI.csproj", "{7261AAFC-65AE-4456-BB9B-5AAC17B89B28}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5A43E4AC-06BD-4311-AF36-616FE7C938CD}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
GNUmakefile = GNUmakefile
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D644CF8D-B8EB-4581-B075-9FD62BB5709A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D644CF8D-B8EB-4581-B075-9FD62BB5709A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D644CF8D-B8EB-4581-B075-9FD62BB5709A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D644CF8D-B8EB-4581-B075-9FD62BB5709A}.Release|Any CPU.Build.0 = Release|Any CPU
{AEC4CC3D-E753-4D96-B8E8-B39B41EC0871}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AEC4CC3D-E753-4D96-B8E8-B39B41EC0871}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AEC4CC3D-E753-4D96-B8E8-B39B41EC0871}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AEC4CC3D-E753-4D96-B8E8-B39B41EC0871}.Release|Any CPU.Build.0 = Release|Any CPU
{F5B4B166-F5F9-4D47-B426-CDA907C8B3E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F5B4B166-F5F9-4D47-B426-CDA907C8B3E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F5B4B166-F5F9-4D47-B426-CDA907C8B3E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5B4B166-F5F9-4D47-B426-CDA907C8B3E5}.Release|Any CPU.Build.0 = Release|Any CPU
{7261AAFC-65AE-4456-BB9B-5AAC17B89B28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7261AAFC-65AE-4456-BB9B-5AAC17B89B28}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7261AAFC-65AE-4456-BB9B-5AAC17B89B28}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7261AAFC-65AE-4456-BB9B-5AAC17B89B28}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6625754A-B79C-48B3-9B84-B7CF536AF30C}
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,505 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Class BaseDirectory </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class BaseDirectory ">
<meta name="description" content="The XDG Base Directory specification is a standard created by freedesktop.org that standardizes the location of storing application files.">
<link rel="icon" href="../images/icon.png">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/xdg-net/Xdg.Directories/new/master/apiSpec/new?filename=Xdg_Directories_BaseDirectory.md&amp;value=---%0Auid%3A%20Xdg.Directories.BaseDirectory%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Xdg.Directories.BaseDirectory">
<h1 id="Xdg_Directories_BaseDirectory" data-uid="Xdg.Directories.BaseDirectory" class="text-break">
Class BaseDirectory <a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L4"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Xdg.html">Xdg</a>.<a class="xref" href="Xdg.Directories.html">Directories</a></dd></dl>
<dl><dt>Assembly</dt><dd>Xdg.Directories.dll</dd></dl>
</div>
<div class="markdown summary"><p>The XDG Base Directory specification is a standard created by freedesktop.org that standardizes the location of storing application files.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class BaseDirectory</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">BaseDirectory</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 id="Xdg_Directories_BaseDirectory_remarks">Remarks</h2>
<div class="markdown level0 remarks"> <p>
<br>
This allows users to have less clutter in their home directories, and allows programmers to not have to hard-code directories.
</p>
<br>
For all base directories, the directories are resolved as follows:
<ol><li><span class="term">
The respective <code>XDG_*</code> enivronment variable
</span>will always be used if specified</li><li><table><tbody><tr></tr><tr><td class="term">Windows</td><td class="description">
Use <a href="https://learn.microsoft.com/en-us/windows/win32/shell/known-folders">Known Folders</a>.
</td></tr><tr><td class="term">macOS</td><td class="description">
Follow the <a href="https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1">Apple documentation</a> on application-specific files.
</td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description">
Follow the <a href="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory</a> specification.
</td></tr></tbody></table></li></ol>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="Xdg_Directories_BaseDirectory_BinHome_" data-uid="Xdg.Directories.BaseDirectory.BinHome*"></a>
<h3 id="Xdg_Directories_BaseDirectory_BinHome" data-uid="Xdg.Directories.BaseDirectory.BinHome">
BinHome
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L55"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Base directory for executable files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string BinHome { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A single base directory relative to which user-specifc <strong>executable</strong> files should be written.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_BinHome_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_BIN_HOME</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>""</code><br>
Windows does not support this by default.
</td></tr><tr><td class="term">macOS</td><td class="description"><code>""</code><br>
macOS does not support this by default.
</td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/.local/bin</code></td></tr></tbody></table>
NOTE: This is not an XDG standard but a <em>de facto</em> standard.
</div>
<a id="Xdg_Directories_BaseDirectory_CacheHome_" data-uid="Xdg.Directories.BaseDirectory.CacheHome*"></a>
<h3 id="Xdg_Directories_BaseDirectory_CacheHome" data-uid="Xdg.Directories.BaseDirectory.CacheHome">
CacheHome
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L117"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Base directory for non-essential data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string CacheHome { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A single base directory relative to which user-specifc <strong>non-essential</strong> data should be written.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_CacheHome_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_CACHE_HOME</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%LOCALAPPDATA%\cache</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Library/Caches</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/.cache</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_BaseDirectory_ConfigDirs_" data-uid="Xdg.Directories.BaseDirectory.ConfigDirs*"></a>
<h3 id="Xdg_Directories_BaseDirectory_ConfigDirs" data-uid="Xdg.Directories.BaseDirectory.ConfigDirs">
ConfigDirs
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L90"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>A list of directories to look for configuration files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IList&lt;string&gt; ConfigDirs { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1">IList</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd><p>A set of preference-ordered base directories to which configuration files should be searched.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_ConfigDirs_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_CONFIG_DIRS</code> is set, a list of the directories specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%ProgramData%</code>,
<code>%APPADATA%</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>~/Library/Preferences</code>,
<code>/Library/Application Support</code>,
<code>/Library/Preferences</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>/etc/xdg</code></td></tr></tbody></table>
This is typically not used, for most use cases <a class="xref" href="Xdg.Directories.BaseDirectory.html#Xdg_Directories_BaseDirectory_ConfigHome">ConfigHome</a> should be used instead.
</div>
<a id="Xdg_Directories_BaseDirectory_ConfigHome_" data-uid="Xdg.Directories.BaseDirectory.ConfigHome*"></a>
<h3 id="Xdg_Directories_BaseDirectory_ConfigHome" data-uid="Xdg.Directories.BaseDirectory.ConfigHome">
ConfigHome
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L23"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Base directory for configuration files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string ConfigHome { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A single base directory relative to which user-specifc <strong>configuration</strong> files should be written.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_ConfigHome_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_CONFIG_HOME</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%LOCALAPPDATA%</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Library/Application Support</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/.config</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_BaseDirectory_DataDirs_" data-uid="Xdg.Directories.BaseDirectory.DataDirs*"></a>
<h3 id="Xdg_Directories_BaseDirectory_DataDirs" data-uid="Xdg.Directories.BaseDirectory.DataDirs">
DataDirs
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L69"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>A list of directories to search for data files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IList&lt;string&gt; DataDirs { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1">IList</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd><p>A set of preference-ordered base directories to which data files should be searched.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_DataDirs_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_DATA_DIRS</code> is set, a list of the directories specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%APPADATA%</code>,
<code>%ProgramData%</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>/Library/Application Support</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>/usr/local/share/</code>,
<code>/usr/share/</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_BaseDirectory_DataHome_" data-uid="Xdg.Directories.BaseDirectory.DataHome*"></a>
<h3 id="Xdg_Directories_BaseDirectory_DataHome" data-uid="Xdg.Directories.BaseDirectory.DataHome">
DataHome
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L7"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Base directory for data files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string DataHome { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A single base directory relative to which user-specifc <strong>data</strong> files should be written.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_DataHome_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_DATA_HOME</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%LOCALAPPDATA%</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Library/Application Support</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/.local/share</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_BaseDirectory_RuntimeDir_" data-uid="Xdg.Directories.BaseDirectory.RuntimeDir*"></a>
<h3 id="Xdg_Directories_BaseDirectory_RuntimeDir" data-uid="Xdg.Directories.BaseDirectory.RuntimeDir">
RuntimeDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L134"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Base directory for runtime-specific files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string RuntimeDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A single base directory relative to which user-specifc <strong>runtime files</strong> should be written.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_RuntimeDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_RUNTIME_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%LOCALAPPDATA%</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Library/Application Support</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>/run/user/$UID</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_BaseDirectory_StateHome_" data-uid="Xdg.Directories.BaseDirectory.StateHome*"></a>
<h3 id="Xdg_Directories_BaseDirectory_StateHome" data-uid="Xdg.Directories.BaseDirectory.StateHome">
StateHome
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L39"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Base directory for state data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string StateHome { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A single base directory relative to which user-specifc <strong>state data</strong> should be written.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_BaseDirectory_StateHome_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_STATE_HOME</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%LOCALAPPDATA%</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Library/Application Support</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/.local/state</code></td></tr></tbody></table>
</div>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/BaseDirectory.cs/#L4" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

View file

@ -0,0 +1,316 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Class Other </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class Other ">
<meta name="description" content="Other useful directories that aren&#39;t specified by XDG.">
<link rel="icon" href="../images/icon.png">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/xdg-net/Xdg.Directories/new/master/apiSpec/new?filename=Xdg_Directories_Other.md&amp;value=---%0Auid%3A%20Xdg.Directories.Other%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Xdg.Directories.Other">
<h1 id="Xdg_Directories_Other" data-uid="Xdg.Directories.Other" class="text-break">
Class Other <a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/Other.cs/#L4"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Xdg.html">Xdg</a>.<a class="xref" href="Xdg.Directories.html">Directories</a></dd></dl>
<dl><dt>Assembly</dt><dd>Xdg.Directories.dll</dd></dl>
</div>
<div class="markdown summary"><p>Other useful directories that aren't specified by XDG.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class Other</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">Other</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 id="Xdg_Directories_Other_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>These variables were graciously stolen from the excellent <a href="https://github.com/adrg/xdg">Go XDG implementation</a>.
That library largely inspired this one, absolutely recommended if you're working in Go.</p>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="Xdg_Directories_Other_Applications_" data-uid="Xdg.Directories.Other.Applications*"></a>
<h3 id="Xdg_Directories_Other_Applications" data-uid="Xdg.Directories.Other.Applications">
Applications
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/Other.cs/#L23"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Application directories</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IList&lt;string&gt; Applications { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1">IList</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd><p>Common application directories.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_Other_Applications_remarks">Remarks</h4>
<div class="markdown level1 remarks"><table><tbody><tr><td class="term">Windows</td><td class="description">
The <code>Programs</code> Special Folder,
the <code>Common Programs</code> Special Folder
</td></tr><tr><td class="term">macOS</td><td class="description">
<code>/Applications</code>
</td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description">
<code>$XDG_DATA_HOME/applications</code>,
<code>$HOME/.local/share/applications</code>,
<code>/usr/local/share/applications</code>,
<code>/usr/share/applications</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_Other_Fonts_" data-uid="Xdg.Directories.Other.Fonts*"></a>
<h3 id="Xdg_Directories_Other_Fonts" data-uid="Xdg.Directories.Other.Fonts">
Fonts
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/Other.cs/#L49"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Font directories</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IList&lt;string&gt; Fonts { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1">IList</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd><p>Common font directories.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_Other_Fonts_remarks">Remarks</h4>
<div class="markdown level1 remarks"><table><tbody><tr><td class="term">Windows</td><td class="description">
<code>%SYSTEMROOT%\Fonts</code>,
<code>%LOCALAPPDATA%\Microsoft\Windows\Fonts</code></td></tr><tr><td class="term">macOS</td><td class="description">
<code>$HOME/Library/Fonts</code>,
<code>/Library/Fonts</code>,
<code>/System/Library/Fonts</code>,
<code>/Network/Library/Fonts</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description">
<code>$XDG_DATA_HOME/fonts</code>,
<code>$HOME/.fonts</code>,
<code>$HOME/.local/share/fonts</code>,
<code>/usr/local/share/fonts</code><code>/usr/share/fonts</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_Other_Home_" data-uid="Xdg.Directories.Other.Home*"></a>
<h3 id="Xdg_Directories_Other_Home" data-uid="Xdg.Directories.Other.Home">
Home
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/Other.cs/#L7"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Home Directory</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string Home { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The current user's home directory.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_Other_Home_remarks">Remarks</h4>
<div class="markdown level1 remarks"><table><tbody><tr><td class="term">Windows</td><td class="description">
<code>%USERPROFILE%</code>
</td></tr><tr><td class="term">Unix (macOS/Linux/FreeBSD)</td><td class="description">
<code>$HOME</code>
</td></tr></tbody></table>
</div>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/Other.cs/#L4" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

View file

@ -0,0 +1,501 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Class UserDirectory </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class UserDirectory ">
<meta name="description" content="User directories are &amp;quot;well known&amp;quot; user directories, examples include the Desktop folder and the Documents folder.">
<link rel="icon" href="../images/icon.png">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/xdg-net/Xdg.Directories/new/master/apiSpec/new?filename=Xdg_Directories_UserDirectory.md&amp;value=---%0Auid%3A%20Xdg.Directories.UserDirectory%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Xdg.Directories.UserDirectory">
<h1 id="Xdg_Directories_UserDirectory" data-uid="Xdg.Directories.UserDirectory" class="text-break">
Class UserDirectory <a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L4"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Xdg.html">Xdg</a>.<a class="xref" href="Xdg.Directories.html">Directories</a></dd></dl>
<dl><dt>Assembly</dt><dd>Xdg.Directories.dll</dd></dl>
</div>
<div class="markdown summary"><p>User directories are &quot;well known&quot; user directories, examples include the Desktop folder and the Documents folder.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class UserDirectory</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">UserDirectory</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 id="Xdg_Directories_UserDirectory_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>For all user directories, the directories are resolved as follows:</p>
<ol><li><span class="term"> The respective <code>XDG_*</code> enivronment variable </span>will always be used if specified</li><li><table><tbody><tr></tr><tr><td class="term">Windows</td><td class="description">
Use <a href="https://learn.microsoft.com/en-us/windows/win32/shell/known-folders">Known Folders</a>.
</td></tr><tr><td class="term">macOS</td><td class="description">
Not sure where this is documented by Apple but it largely follows what Linux does.
</td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description">
Follow what <a href="https://freedesktop.org/wiki/Software/xdg-user-dirs">xdg-user-dirs</a> sets.
</td></tr></tbody></table></li></ol>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="Xdg_Directories_UserDirectory_DesktopDir_" data-uid="Xdg.Directories.UserDirectory.DesktopDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_DesktopDir" data-uid="Xdg.Directories.UserDirectory.DesktopDir">
DesktopDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L7"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Desktop folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string DesktopDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The user's desktop directory.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_DesktopDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_DESKTOP_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description">
The <code>Desktop</code> Special Folder
</td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Desktop</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Desktop</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_UserDirectory_DocumentsDir_" data-uid="Xdg.Directories.UserDirectory.DocumentsDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_DocumentsDir" data-uid="Xdg.Directories.UserDirectory.DocumentsDir">
DocumentsDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L36"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Document folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string DocumentsDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A location to store documents files.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_DocumentsDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_DOCUMENTS_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description">
The <code>Documents</code> Special Folder
</td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Documents</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Documents</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_UserDirectory_DownloadDir_" data-uid="Xdg.Directories.UserDirectory.DownloadDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_DownloadDir" data-uid="Xdg.Directories.UserDirectory.DownloadDir">
DownloadDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L21"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Download folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string DownloadDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A location to store downloaded files.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_DownloadDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_DOWNLOAD_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>null</code><br>
Windows does not specify the Downloads folder in its magic folder list.
</td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Downloads</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Downloads</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_UserDirectory_MusicDir_" data-uid="Xdg.Directories.UserDirectory.MusicDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_MusicDir" data-uid="Xdg.Directories.UserDirectory.MusicDir">
MusicDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L50"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Music folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string MusicDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A location to store music files.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_MusicDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_MUSIC_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description">
The <code>Music</code> Special Folder
</td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Music</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Music</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_UserDirectory_PicturesDir_" data-uid="Xdg.Directories.UserDirectory.PicturesDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_PicturesDir" data-uid="Xdg.Directories.UserDirectory.PicturesDir">
PicturesDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L64"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Image folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string PicturesDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A location to store image files.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_PicturesDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_PICTURES_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description">
The <code>Pictures</code> Special Folder
</td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Pictures</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Pictures</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_UserDirectory_PublicDir_" data-uid="Xdg.Directories.UserDirectory.PublicDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_PublicDir" data-uid="Xdg.Directories.UserDirectory.PublicDir">
PublicDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L106"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Public folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string PublicDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A location to store public / shared files.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_PublicDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_PUBLICSHARE_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description"><code>%PUBLIC%</code></td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Public</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Public</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_UserDirectory_TemplatesDir_" data-uid="Xdg.Directories.UserDirectory.TemplatesDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_TemplatesDir" data-uid="Xdg.Directories.UserDirectory.TemplatesDir">
TemplatesDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L92"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Template folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string TemplatesDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A location to store template files.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_TemplatesDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_TEMPLATES_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description">
The <code>Templates</code> Special Folder
</td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Templates</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Templatess</code></td></tr></tbody></table>
</div>
<a id="Xdg_Directories_UserDirectory_VideosDir_" data-uid="Xdg.Directories.UserDirectory.VideosDir*"></a>
<h3 id="Xdg_Directories_UserDirectory_VideosDir" data-uid="Xdg.Directories.UserDirectory.VideosDir">
VideosDir
<a class="header-action link-secondary" title="View source" href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L78"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Video folder</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string VideosDir { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>A location to store video files.</p>
</dd>
</dl>
<h4 class="section" id="Xdg_Directories_UserDirectory_VideosDir_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>If <code>XDG_VIDEOS_DIR</code> is set, the directory specified.</p>
<table><tbody><tr><td class="term">Windows</td><td class="description">
The <code>Videos</code> Special Folder
</td></tr><tr><td class="term">macOS</td><td class="description"><code>$HOME/Movies</code></td></tr><tr><td class="term">Linux/FreeBSD</td><td class="description"><code>$HOME/Videos</code></td></tr></tbody></table>
</div>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/xdg-net/Xdg.Directories/blob/master/src/Xdg.Directories/UserDirectory.cs/#L4" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

137
api/Xdg.Directories.html Normal file
View file

@ -0,0 +1,137 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Namespace Xdg.Directories </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Namespace Xdg.Directories ">
<link rel="icon" href="../images/icon.png">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Xdg.Directories">
<h1 id="Xdg_Directories" data-uid="Xdg.Directories" class="text-break">Namespace Xdg.Directories</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Xdg.Directories.BaseDirectory.html">BaseDirectory</a></dt>
<dd><p>The XDG Base Directory specification is a standard created by freedesktop.org that standardizes the location of storing application files.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Xdg.Directories.Other.html">Other</a></dt>
<dd><p>Other useful directories that aren't specified by XDG.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Xdg.Directories.UserDirectory.html">UserDirectory</a></dt>
<dd><p>User directories are &quot;well known&quot; user directories, examples include the Desktop folder and the Documents folder.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

35
api/toc.html Normal file
View file

@ -0,0 +1,35 @@

<div id="sidetoggle">
<div>
<div class="sidefilter">
<form class="toc-filter">
<span class="glyphicon glyphicon-filter filter-icon"></span>
<span class="glyphicon glyphicon-remove clear-icon" id="toc_filter_clear"></span>
<input type="text" id="toc_filter_input" placeholder="Filter by title" onkeypress="if(event.keyCode==13) {return false;}">
</form>
</div>
<div class="sidetoc">
<div class="toc" id="toc">
<ul class="nav level1">
<li>
<span class="expand-stub"></span>
<a href="Xdg.Directories.html" name="" title="Xdg.Directories">Xdg.Directories</a>
<ul class="nav level2">
<li>
<a href="Xdg.Directories.BaseDirectory.html" name="" title="BaseDirectory">BaseDirectory</a>
</li>
<li>
<a href="Xdg.Directories.Other.html" name="" title="Other">Other</a>
</li>
<li>
<a href="Xdg.Directories.UserDirectory.html" name="" title="UserDirectory">UserDirectory</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>

2
api/toc.json Normal file
View file

@ -0,0 +1,2 @@
{"items":[{"name":"Xdg.Directories","href":"Xdg.Directories.html","topicHref":"Xdg.Directories.html","topicUid":"Xdg.Directories","items":[{"name":"BaseDirectory","href":"Xdg.Directories.BaseDirectory.html","topicHref":"Xdg.Directories.BaseDirectory.html","topicUid":"Xdg.Directories.BaseDirectory"},{"name":"Other","href":"Xdg.Directories.Other.html","topicHref":"Xdg.Directories.Other.html","topicUid":"Xdg.Directories.Other"},{"name":"UserDirectory","href":"Xdg.Directories.UserDirectory.html","topicHref":"Xdg.Directories.UserDirectory.html","topicUid":"Xdg.Directories.UserDirectory"}]}],"memberLayout":"SamePage","pdf":false}

80
dev/bench/data.js Normal file
View file

@ -0,0 +1,80 @@
window.BENCHMARK_DATA = {
"lastUpdate": 1720640564034,
"repoUrl": "https://github.com/xdg-net/Xdg.Directories",
"entries": {
"Benchmark.Net Benchmark": [
{
"commit": {
"author": {
"email": "49699333+dependabot[bot]@users.noreply.github.com",
"name": "dependabot[bot]",
"username": "dependabot[bot]"
},
"committer": {
"email": "sam@samtherapy.net",
"name": "Sam Therapy",
"username": "SamTherapy"
},
"distinct": true,
"id": "221ffd300784e5d6b05cac29b55a07cafd9f3598",
"message": "build(deps): Bump MSTest.TestFramework from 3.3.1 to 3.4.3\n\nBumps [MSTest.TestFramework](https://github.com/microsoft/testfx) from 3.3.1 to 3.4.3.\n- [Release notes](https://github.com/microsoft/testfx/releases)\n- [Changelog](https://github.com/microsoft/testfx/blob/main/docs/Changelog.md)\n- [Commits](https://github.com/microsoft/testfx/compare/v3.3.1...v3.4.3)\n\n---\nupdated-dependencies:\n- dependency-name: MSTest.TestFramework\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"timestamp": "2024-07-10T19:38:43Z",
"tree_id": "461261f9ed3b03823258611cd3adf34be19485a5",
"url": "https://github.com/xdg-net/Xdg.Directories/commit/221ffd300784e5d6b05cac29b55a07cafd9f3598"
},
"date": 1720640558019,
"tool": "benchmarkdotnet",
"benches": [
{
"name": "Program+Benchmarks.DataHome",
"value": 178.93958886464438,
"unit": "ns",
"range": "± 0.4360373567304985"
},
{
"name": "Program+Benchmarks.DataDirs",
"value": 280.2542209625244,
"unit": "ns",
"range": "± 0.8448185578412167"
},
{
"name": "Program+Benchmarks.DesktopDir",
"value": 745.8337306976318,
"unit": "ns",
"range": "± 1.3973230765515197"
},
{
"name": "Program+Benchmarks.Home",
"value": 86.66456937789917,
"unit": "ns",
"range": "± 0.2234866358133085"
},
{
"name": "Program+Benchmarks.DataHome",
"value": 618.3884107149564,
"unit": "ns",
"range": "± 1.068183162078533"
},
{
"name": "Program+Benchmarks.DataDirs",
"value": 916.116544178554,
"unit": "ns",
"range": "± 7.65743424283359"
},
{
"name": "Program+Benchmarks.DesktopDir",
"value": 2723.96733210637,
"unit": "ns",
"range": "± 25.479934917979545"
},
{
"name": "Program+Benchmarks.Home",
"value": 310.68222182137623,
"unit": "ns",
"range": "± 0.9788624167024504"
}
]
}
]
}
}

281
dev/bench/index.html Normal file
View file

@ -0,0 +1,281 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes" />
<style>
html {
font-family: BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
-webkit-font-smoothing: antialiased;
background-color: #fff;
font-size: 16px;
}
body {
color: #4a4a4a;
margin: 8px;
font-size: 1em;
font-weight: 400;
}
header {
margin-bottom: 8px;
display: flex;
flex-direction: column;
}
main {
width: 100%;
display: flex;
flex-direction: column;
}
a {
color: #3273dc;
cursor: pointer;
text-decoration: none;
}
a:hover {
color: #000;
}
button {
color: #fff;
background-color: #3298dc;
border-color: transparent;
cursor: pointer;
text-align: center;
}
button:hover {
background-color: #2793da;
flex: none;
}
.spacer {
flex: auto;
}
.small {
font-size: 0.75rem;
}
footer {
margin-top: 16px;
display: flex;
align-items: center;
}
.header-label {
margin-right: 4px;
}
.benchmark-set {
margin: 8px 0;
width: 100%;
display: flex;
flex-direction: column;
}
.benchmark-title {
font-size: 3rem;
font-weight: 600;
word-break: break-word;
text-align: center;
}
.benchmark-graphs {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
flex-wrap: wrap;
width: 100%;
}
.benchmark-chart {
max-width: 1000px;
}
</style>
<title>Benchmarks</title>
</head>
<body>
<header id="header">
<div class="header-item">
<strong class="header-label">Last Update:</strong>
<span id="last-update"></span>
</div>
<div class="header-item">
<strong class="header-label">Repository:</strong>
<a id="repository-link" rel="noopener"></a>
</div>
</header>
<main id="main"></main>
<footer>
<button id="dl-button">Download data as JSON</button>
<div class="spacer"></div>
<div class="small">Powered by <a rel="noopener" href="https://github.com/marketplace/actions/continuous-benchmark">github-action-benchmark</a></div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.2/dist/Chart.min.js"></script>
<script src="data.js"></script>
<script id="main-script">
'use strict';
(function() {
// Colors from https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
const toolColors = {
cargo: '#dea584',
go: '#00add8',
benchmarkjs: '#f1e05a',
benchmarkluau: '#000080',
pytest: '#3572a5',
googlecpp: '#f34b7d',
catch2: '#f34b7d',
julia: '#a270ba',
jmh: '#b07219',
benchmarkdotnet: '#178600',
customBiggerIsBetter: '#38ff38',
customSmallerIsBetter: '#ff3838',
_: '#333333'
};
function init() {
function collectBenchesPerTestCase(entries) {
const map = new Map();
for (const entry of entries) {
const {commit, date, tool, benches} = entry;
for (const bench of benches) {
const result = { commit, date, tool, bench };
const arr = map.get(bench.name);
if (arr === undefined) {
map.set(bench.name, [result]);
} else {
arr.push(result);
}
}
}
return map;
}
const data = window.BENCHMARK_DATA;
// Render header
document.getElementById('last-update').textContent = new Date(data.lastUpdate).toString();
const repoLink = document.getElementById('repository-link');
repoLink.href = data.repoUrl;
repoLink.textContent = data.repoUrl;
// Render footer
document.getElementById('dl-button').onclick = () => {
const dataUrl = 'data:,' + JSON.stringify(data, null, 2);
const a = document.createElement('a');
a.href = dataUrl;
a.download = 'benchmark_data.json';
a.click();
};
// Prepare data points for charts
return Object.keys(data.entries).map(name => ({
name,
dataSet: collectBenchesPerTestCase(data.entries[name]),
}));
}
function renderAllChars(dataSets) {
function renderGraph(parent, name, dataset) {
const canvas = document.createElement('canvas');
canvas.className = 'benchmark-chart';
parent.appendChild(canvas);
const color = toolColors[dataset.length > 0 ? dataset[0].tool : '_'];
const data = {
labels: dataset.map(d => d.commit.id.slice(0, 7)),
datasets: [
{
label: name,
data: dataset.map(d => d.bench.value),
borderColor: color,
backgroundColor: color + '60', // Add alpha for #rrggbbaa
}
],
};
const options = {
scales: {
xAxes: [
{
scaleLabel: {
display: true,
labelString: 'commit',
},
}
],
yAxes: [
{
scaleLabel: {
display: true,
labelString: dataset.length > 0 ? dataset[0].bench.unit : '',
},
ticks: {
beginAtZero: true,
}
}
],
},
tooltips: {
callbacks: {
afterTitle: items => {
const {index} = items[0];
const data = dataset[index];
return '\n' + data.commit.message + '\n\n' + data.commit.timestamp + ' committed by @' + data.commit.committer.username + '\n';
},
label: item => {
let label = item.value;
const { range, unit } = dataset[item.index].bench;
label += ' ' + unit;
if (range) {
label += ' (' + range + ')';
}
return label;
},
afterLabel: item => {
const { extra } = dataset[item.index].bench;
return extra ? '\n' + extra : '';
}
}
},
onClick: (_mouseEvent, activeElems) => {
if (activeElems.length === 0) {
return;
}
// XXX: Undocumented. How can we know the index?
const index = activeElems[0]._index;
const url = dataset[index].commit.url;
window.open(url, '_blank');
},
};
new Chart(canvas, {
type: 'line',
data,
options,
});
}
function renderBenchSet(name, benchSet, main) {
const setElem = document.createElement('div');
setElem.className = 'benchmark-set';
main.appendChild(setElem);
const nameElem = document.createElement('h1');
nameElem.className = 'benchmark-title';
nameElem.textContent = name;
setElem.appendChild(nameElem);
const graphsElem = document.createElement('div');
graphsElem.className = 'benchmark-graphs';
setElem.appendChild(graphsElem);
for (const [benchName, benches] of benchSet.entries()) {
renderGraph(graphsElem, benchName, benches)
}
}
const main = document.getElementById('main');
for (const {name, dataSet} of dataSets) {
renderBenchSet(name, dataSet, main);
}
}
renderAllChars(init()); // Start
})();
</script>
</body>
</html>

279
docs/defaults.html Normal file
View file

@ -0,0 +1,279 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Default Locations </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Default Locations ">
<link rel="icon" href="../images/icon.png">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/docs/defaults.md/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="default-locations">Default Locations</h1>
<p>If any of the respective XDG environment are specified, the variable will always be returned.
Otherwise, the value depends on the operating system.</p>
<p>Inspiration is taken from the <a href="https://github.com/adrg/xdg">Go implementation</a> for Windows and MacOS directories.</p>
<details open="">
<summary>Base Directory</summary>
<table>
<thead>
<tr>
<th>Environment Variable</th>
<th>Windows</th>
<th>macOS</th>
<th>Linux/FreeBSD</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>XDG_DATA_HOME</code></td>
<td><code>%LOCALAPPDATA%</code></td>
<td><code>$HOME/Library/Application Support</code></td>
<td><code>$HOME/.local/share</code></td>
</tr>
<tr>
<td><code>XDG_CONFIG_HOME</code></td>
<td><code>%LOCALAPPDATA%</code></td>
<td><code>$HOME/Library/Application Support</code></td>
<td><code>$HOME/.config</code></td>
</tr>
<tr>
<td><code>XDG_STATE_HOME</code></td>
<td><code>%LOCALAPPDATA%</code></td>
<td><code>$HOME/Library/Application Support</code></td>
<td><code>$HOME/.local/state</code></td>
</tr>
<tr>
<td><code>XDG_BIN_HOME</code></td>
<td><code>null</code></td>
<td><code>null</code></td>
<td><code>$HOME/.local/bin</code></td>
</tr>
<tr>
<td><code>XDG_DATA_DIRS</code></td>
<td><code>%APPDATA%:%PROGRAMDATA%</code></td>
<td><code>/Library/Application Support</code></td>
<td><code>/usr/local/share:/usr/share</code></td>
</tr>
<tr>
<td><code>XDG_CONFIG_DIRS</code></td>
<td><code>%LOCALAPPDATA%</code></td>
<td><code>$HOME/Library/Preferences:/Library/Application Support:/Library/Preferences</code></td>
<td><code>/etc/xdg</code></td>
</tr>
<tr>
<td><code>XDG_CACHE_HOME</code></td>
<td><code>%LOCALAPPDATA%</code></td>
<td><code>$HOME/Library/Application Support</code></td>
<td><code>$HOME/.config</code></td>
</tr>
<tr>
<td><code>XDG_RUNTIME_HOME</code></td>
<td><code>%LOCALAPPDATA%</code></td>
<td><code>$HOME/Library/Application Support</code></td>
<td><code>/run/user/$UID</code></td>
</tr>
</tbody>
</table>
</details>
<details open="">
<summary>User Directory</summary>
<p>User directories on Windows use <a href="https://learn.microsoft.com/en-us/windows/win32/shell/known-folders">Known Folders</a>.</p>
<table>
<thead>
<tr>
<th>Environment Variable</th>
<th>Windows</th>
<th>macOS</th>
<th>Linux/FreeBSD</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>XDG_DESKTOP_DIR</code></td>
<td><code>Desktop</code></td>
<td><code>$HOME/Desktop</code></td>
<td><code>$HOME/Desktop</code></td>
</tr>
<tr>
<td><code>XDG_DOWNLOAD_DIR</code></td>
<td><code>null</code></td>
<td><code>$HOME/Downloads</code></td>
<td><code>$HOME/Downloads</code></td>
</tr>
<tr>
<td><code>XDG_DOCUMENTS_DIR</code></td>
<td><code>My Documents</code></td>
<td><code>$HOME/Documents</code></td>
<td><code>$HOME/Documents</code></td>
</tr>
<tr>
<td><code>XDG_MUSIC_DIR</code></td>
<td><code>My Music</code></td>
<td><code>$HOME/Music</code></td>
<td><code>$HOME/Music</code></td>
</tr>
<tr>
<td><code>XDG_PICTURES_DIRS</code></td>
<td><code>My Pictures</code></td>
<td><code>$HOME/Pictures</code></td>
<td><code>$HOME/Pictures</code></td>
</tr>
<tr>
<td><code>XDG_VIDEOS_DIR</code></td>
<td><code>My Videos</code></td>
<td><code>$HOME/Movies</code></td>
<td><code>$HOME/Videos</code></td>
</tr>
<tr>
<td><code>XDG_TEMPLATES_DIR</code></td>
<td><code>Templates</code></td>
<td><code>$HOME/Templates</code></td>
<td><code>$HOME/Templates</code></td>
</tr>
<tr>
<td><code>XDG_PUBLICSHARE_DIR</code></td>
<td><code>%PUBLIC%</code></td>
<td><code>$HOME/Public</code></td>
<td><code>$HOME/Public</code></td>
</tr>
</tbody>
</table>
</details>
<details open="">
<summary>Extra Directories</summary>
<table>
<thead>
<tr>
<th></th>
<th>Windows</th>
<th>macOS</th>
<th>Linux/FreeBSD</th>
</tr>
</thead>
<tbody>
<tr>
<td>Home</td>
<td><code>%USERPROFILE%</code></td>
<td><code>$HOME</code></td>
<td><code>$HOME</code></td>
</tr>
<tr>
<td>Applications</td>
<td><code>Programs</code>, <code>Common Programs</code></td>
<td><code>/Applications</code></td>
<td><code>$XDG_DATA_HOME/applications</code>, <code>$HOME/.local/share/applications</code>, <code>/usr/local/share/applications</code>, <code>/usr/share/applications</code></td>
</tr>
<tr>
<td>Fonts</td>
<td><code>%SYSTEMROOT%\Fonts</code>, <code>%LOCALAPPDATA%\Microsoft\Windows\Fonts</code></td>
<td><code>$HOME/Library/Fonts</code>, <code>/Library/Fonts</code>, <code>/System/Library/Fonts</code>, <code>/Network/Library/Fonts</code></td>
<td><code>$XDG_DATA_HOME/fonts</code>, <code>$HOME/.fonts</code>, <code>$HOME/.local/share/fonts</code>, <code>/usr/local/share/fonts</code>, <code>/usr/share/fonts</code></td>
</tr>
</tbody>
</table>
</details>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/docs/defaults.md/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

View file

@ -1,49 +0,0 @@
{
"metadata": [
{
"src": [
{
"src": "../src",
"files": [
"**/Xdg.Directories*.csproj"
]
}
],
"dest": "api"
}
],
"build": {
"content": [
{
"files": [
"**/*.{md,yml}"
],
"exclude": [
"_site/**"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"output": "_site",
"template": [
"default",
"modern",
"custom"
],
"globalMetadata": {
"_appName": "Xdg.Directories",
"_appTitle": "",
"_appFaviconPath": "images/icon.png",
"_appLogoPath": "images/icon.svg",
"_enableSearch": true,
"_lang": "en",
"pdf": false
}
}
}

View file

@ -1,48 +0,0 @@
# Default Locations
If any of the respective XDG environment are specified, the variable will always be returned.
Otherwise, the value depends on the operating system.
Inspiration is taken from the [Go implementation](https://github.com/adrg/xdg) for Windows and MacOS directories.
<details open>
<summary>Base Directory</summary>
| Environment Variable | Windows | macOS | Linux/FreeBSD |
| --- | --- | --- | --- |
| `XDG_DATA_HOME` | `%LOCALAPPDATA%` | `$HOME/Library/Application Support` | `$HOME/.local/share` |
| `XDG_CONFIG_HOME` | `%LOCALAPPDATA%` | `$HOME/Library/Application Support` | `$HOME/.config` |
| `XDG_STATE_HOME` | `%LOCALAPPDATA%` | `$HOME/Library/Application Support` | `$HOME/.local/state` |
| `XDG_BIN_HOME` | `null` | `null` | `$HOME/.local/bin` |
| `XDG_DATA_DIRS` | `%APPDATA%:%PROGRAMDATA%` | `/Library/Application Support` | `/usr/local/share:/usr/share` |
| `XDG_CONFIG_DIRS` | `%LOCALAPPDATA%` | `$HOME/Library/Preferences:/Library/Application Support:/Library/Preferences` | `/etc/xdg` |
| `XDG_CACHE_HOME` | `%LOCALAPPDATA%` | `$HOME/Library/Application Support` | `$HOME/.config` |
| `XDG_RUNTIME_HOME` | `%LOCALAPPDATA%` | `$HOME/Library/Application Support` | `/run/user/$UID` |
</details>
<details open>
<summary>User Directory</summary>
User directories on Windows use [Known Folders](https://learn.microsoft.com/en-us/windows/win32/shell/known-folders).
Environment Variable | Windows | macOS | Linux/FreeBSD |
| --- | --- | --- | --- |
| `XDG_DESKTOP_DIR` | `Desktop` | `$HOME/Desktop` | `$HOME/Desktop` |
| `XDG_DOWNLOAD_DIR` | `null` | `$HOME/Downloads` | `$HOME/Downloads` |
| `XDG_DOCUMENTS_DIR` | `My Documents` | `$HOME/Documents` | `$HOME/Documents` |
| `XDG_MUSIC_DIR` | `My Music` | `$HOME/Music` | `$HOME/Music` |
| `XDG_PICTURES_DIRS` | `My Pictures` | `$HOME/Pictures` | `$HOME/Pictures` |
| `XDG_VIDEOS_DIR` | `My Videos` | `$HOME/Movies` | `$HOME/Videos` |
| `XDG_TEMPLATES_DIR` | `Templates` | `$HOME/Templates` | `$HOME/Templates` |
| `XDG_PUBLICSHARE_DIR` | `%PUBLIC%` | `$HOME/Public` | `$HOME/Public` |
</details>
<details open>
<summary>Extra Directories</summary>
| | Windows | macOS | Linux/FreeBSD |
| --- | --- | --- | --- |
| Home | `%USERPROFILE%` | `$HOME` | `$HOME` |
| Applications | `Programs`, `Common Programs` | `/Applications` | `$XDG_DATA_HOME/applications`, `$HOME/.local/share/applications`, `/usr/local/share/applications`, `/usr/share/applications` |
| Fonts | `%SYSTEMROOT%\Fonts`, `%LOCALAPPDATA%\Microsoft\Windows\Fonts` | `$HOME/Library/Fonts`, `/Library/Fonts`, `/System/Library/Fonts`, `/Network/Library/Fonts` | `$XDG_DATA_HOME/fonts`, `$HOME/.fonts`, `$HOME/.local/share/fonts`, `/usr/local/share/fonts`, `/usr/share/fonts` |
</details>

View file

@ -1,28 +0,0 @@
# Installation
## Stable Releases
Use [NuGet](http://docs.nuget.org/docs/start-here/installing-nuget) to install [Xdg.Directories](https://www.nuget.org/packages/Xdg.Directories).
From the .NET CLI:
```bash
dotnet add package Xdg.Directories
```
or from Visual Studio's package manager:
```pwsh
Install-Package Xdg.Directories
```
## Pre-releases
For bleeding edge users, preview releases are available.
They are uploaded to two places automatically every commit:
- [GitHub packages](https://github.com/xdg-net/Xdg.Directories/pkgs/nuget/Xdg.Directories) - A GitHub account is needed to download.
- [Forgejo packages](https://git.froth.zone/mirrors/-/packages/nuget/xdg.directories) - No login required.
Follow the directions at the respective links to install the package.

View file

@ -1,22 +0,0 @@
# TL;DR
Add the Xdg.Directories package to your project:
```bash
dotnet add package Xdg.Directories
```
Then use the `BaseDirectory` and `UserDirectory` classes to access the XDG directories:
```csharp
using System;
using Xdg.Directories;
// Prints /home/$USER/.local/share
Console.Writeline(BaseDirectory.DataHome);
// Prints /home/$USER/Documents
Console.Writeline(UserDirectory.DocumentsDir);
```
For more information, see the [API documentation](/api/Xdg.Directories.html).

View file

@ -1,4 +0,0 @@
- name: Using the Library
- href: defaults.md
- href: quick-use.md
- href: installation.md

View file

@ -1 +0,0 @@
../../icon.png

View file

@ -1,18 +0,0 @@
---
_layout: landing
---
# Xdg.Directories
> *Want to get straight to the point? Check out the [quick start guide](docs/quick-use.md).*
Xdg.Directories is a library that simplifies using the XDG Base Directory Specification and XDG user directories in .NET applications.
## Features
- **Cross-platform**: Supports Windows, MacOS and Linux/FreeBSD.
- **Fast**: The .dll is only 11 KB.
- **Portable**: Completely supports .NET Standard 2.0 and even NativeAOT!
- **Simple**: Easy to use API.
- **Sane Defaults**: Provides default directories for when the XDG environment variables are not set.
- These defaults are documented in the code itself and are also available [here](docs/defaults.md).

132
docs/installation.html Normal file
View file

@ -0,0 +1,132 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Installation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Installation ">
<link rel="icon" href="../images/icon.png">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/docs/installation.md/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="installation">Installation</h1>
<h2 id="stable-releases">Stable Releases</h2>
<p>Use <a href="http://docs.nuget.org/docs/start-here/installing-nuget">NuGet</a> to install <a href="https://www.nuget.org/packages/Xdg.Directories">Xdg.Directories</a>.</p>
<p>From the .NET CLI:</p>
<pre><code class="lang-bash">dotnet add package Xdg.Directories
</code></pre>
<p>or from Visual Studio's package manager:</p>
<pre><code class="lang-pwsh">Install-Package Xdg.Directories
</code></pre>
<h2 id="pre-releases">Pre-releases</h2>
<p>For bleeding edge users, preview releases are available.</p>
<p>They are uploaded to two places automatically every commit:</p>
<ul>
<li><a href="https://github.com/xdg-net/Xdg.Directories/pkgs/nuget/Xdg.Directories">GitHub packages</a> - A GitHub account is needed to download.</li>
<li><a href="https://git.froth.zone/mirrors/-/packages/nuget/xdg.directories">Forgejo packages</a> - No login required.</li>
</ul>
<p>Follow the directions at the respective links to install the package.</p>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/docs/installation.md/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

130
docs/quick-use.html Normal file
View file

@ -0,0 +1,130 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>TL;DR </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="TL;DR ">
<link rel="icon" href="../images/icon.png">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/docs/quick-use.md/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="tldr">TL;DR</h1>
<p>Add the Xdg.Directories package to your project:</p>
<pre><code class="lang-bash">dotnet add package Xdg.Directories
</code></pre>
<p>Then use the <code>BaseDirectory</code> and <code>UserDirectory</code> classes to access the XDG directories:</p>
<pre><code class="lang-csharp">using System;
using Xdg.Directories;
// Prints /home/$USER/.local/share
Console.Writeline(BaseDirectory.DataHome);
// Prints /home/$USER/Documents
Console.Writeline(UserDirectory.DocumentsDir);
</code></pre>
<p>For more information, see the <a href="/api/Xdg.Directories.html">API documentation</a>.</p>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/docs/quick-use.md/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

31
docs/toc.html Normal file
View file

@ -0,0 +1,31 @@

<div id="sidetoggle">
<div>
<div class="sidefilter">
<form class="toc-filter">
<span class="glyphicon glyphicon-filter filter-icon"></span>
<span class="glyphicon glyphicon-remove clear-icon" id="toc_filter_clear"></span>
<input type="text" id="toc_filter_input" placeholder="Filter by title" onkeypress="if(event.keyCode==13) {return false;}">
</form>
</div>
<div class="sidetoc">
<div class="toc" id="toc">
<ul class="nav level1">
<li>
<a>Using the Library</a>
</li>
<li>
<a href="defaults.html" name="" title="Default Locations">Default Locations</a>
</li>
<li>
<a href="quick-use.html" name="" title="TL;DR">TL;DR</a>
</li>
<li>
<a href="installation.html" name="" title="Installation">Installation</a>
</li>
</ul>
</div>
</div>
</div>
</div>

2
docs/toc.json Normal file
View file

@ -0,0 +1,2 @@
{"items":[{"name":"Using the Library"},{"name":"Default Locations","href":"defaults.html","topicHref":"defaults.html"},{"name":"TL;DR","href":"quick-use.html","topicHref":"quick-use.html"},{"name":"Installation","href":"installation.html","topicHref":"installation.html"}],"pdf":false}

View file

@ -1,6 +0,0 @@
- name: Docs
href: docs/
- name: API
href: api/
- name: Benchmarks
href: dev/bench/

BIN
favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

118
index.html Normal file
View file

@ -0,0 +1,118 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Xdg.Directories </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Xdg.Directories ">
<link rel="icon" href="images/icon.png">
<link rel="stylesheet" href="public/docfx.min.css">
<link rel="stylesheet" href="public/main.css">
<meta name="docfx:navrel" content="toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="">
<meta name="docfx:docurl" content="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/index.md/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="landing" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="index.html">
<img id="logo" class="svg" src="images/icon.svg" alt="Xdg.Directories">
Xdg.Directories
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled="" placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="content">
<div class="actionbar">
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="xdgdirectories">Xdg.Directories</h1>
<blockquote>
<p><em>Want to get straight to the point? Check out the <a href="docs/quick-use.html">quick start guide</a>.</em></p>
</blockquote>
<p>Xdg.Directories is a library that simplifies using the XDG Base Directory Specification and XDG user directories in .NET applications.</p>
<h2 id="features">Features</h2>
<ul>
<li><strong>Cross-platform</strong>: Supports Windows, MacOS and Linux/FreeBSD.</li>
<li><strong>Fast</strong>: The .dll is only 11 KB.</li>
<li><strong>Portable</strong>: Completely supports .NET Standard 2.0 and even NativeAOT!</li>
<li><strong>Simple</strong>: Easy to use API.</li>
<li><strong>Sane Defaults</strong>: Provides default directories for when the XDG environment variables are not set.
<ul>
<li>These defaults are documented in the code itself and are also available <a href="docs/defaults.html">here</a>.</li>
</ul>
</li>
</ul>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/xdg-net/Xdg.Directories/blob/master/docs/index.md/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span>Made with <a href="https://dotnet.github.io/docfx">docfx</a></span>
</div>
</div>
</footer>
</body>
</html>

42
index.json Normal file
View file

@ -0,0 +1,42 @@
{
"api/Xdg.Directories.BaseDirectory.html": {
"href": "api/Xdg.Directories.BaseDirectory.html",
"title": "Class BaseDirectory",
"keywords": "Class BaseDirectory Namespace Xdg.Directories Assembly Xdg.Directories.dll The XDG Base Directory specification is a standard created by freedesktop.org that standardizes the location of storing application files. public static class BaseDirectory Inheritance object BaseDirectory Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks This allows users to have less clutter in their home directories, and allows programmers to not have to hard-code directories. For all base directories, the directories are resolved as follows: The respective XDG_* enivronment variable will always be used if specified Windows Use Known Folders. macOS Follow the Apple documentation on application-specific files. Linux/FreeBSD Follow the XDG Base Directory specification. Properties BinHome Base directory for executable files. public static string BinHome { get; } Property Value string A single base directory relative to which user-specifc executable files should be written. Remarks If XDG_BIN_HOME is set, the directory specified. Windows \"\" Windows does not support this by default. macOS \"\" macOS does not support this by default. Linux/FreeBSD $HOME/.local/bin NOTE: This is not an XDG standard but a de facto standard. CacheHome Base directory for non-essential data. public static string CacheHome { get; } Property Value string A single base directory relative to which user-specifc non-essential data should be written. Remarks If XDG_CACHE_HOME is set, the directory specified. Windows %LOCALAPPDATA%\\cache macOS $HOME/Library/Caches Linux/FreeBSD $HOME/.cache ConfigDirs A list of directories to look for configuration files. public static IList<string> ConfigDirs { get; } Property Value IList<string> A set of preference-ordered base directories to which configuration files should be searched. Remarks If XDG_CONFIG_DIRS is set, a list of the directories specified. Windows %ProgramData%, %APPADATA% macOS ~/Library/Preferences, /Library/Application Support, /Library/Preferences Linux/FreeBSD /etc/xdg This is typically not used, for most use cases ConfigHome should be used instead. ConfigHome Base directory for configuration files. public static string ConfigHome { get; } Property Value string A single base directory relative to which user-specifc configuration files should be written. Remarks If XDG_CONFIG_HOME is set, the directory specified. Windows %LOCALAPPDATA% macOS $HOME/Library/Application Support Linux/FreeBSD $HOME/.config DataDirs A list of directories to search for data files. public static IList<string> DataDirs { get; } Property Value IList<string> A set of preference-ordered base directories to which data files should be searched. Remarks If XDG_DATA_DIRS is set, a list of the directories specified. Windows %APPADATA%, %ProgramData% macOS /Library/Application Support Linux/FreeBSD /usr/local/share/, /usr/share/ DataHome Base directory for data files. public static string DataHome { get; } Property Value string A single base directory relative to which user-specifc data files should be written. Remarks If XDG_DATA_HOME is set, the directory specified. Windows %LOCALAPPDATA% macOS $HOME/Library/Application Support Linux/FreeBSD $HOME/.local/share RuntimeDir Base directory for runtime-specific files. public static string RuntimeDir { get; } Property Value string A single base directory relative to which user-specifc runtime files should be written. Remarks If XDG_RUNTIME_DIR is set, the directory specified. Windows %LOCALAPPDATA% macOS $HOME/Library/Application Support Linux/FreeBSD /run/user/$UID StateHome Base directory for state data. public static string StateHome { get; } Property Value string A single base directory relative to which user-specifc state data should be written. Remarks If XDG_STATE_HOME is set, the directory specified. Windows %LOCALAPPDATA% macOS $HOME/Library/Application Support Linux/FreeBSD $HOME/.local/state"
},
"api/Xdg.Directories.Other.html": {
"href": "api/Xdg.Directories.Other.html",
"title": "Class Other",
"keywords": "Class Other Namespace Xdg.Directories Assembly Xdg.Directories.dll Other useful directories that aren't specified by XDG. public static class Other Inheritance object Other Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks These variables were graciously stolen from the excellent Go XDG implementation. That library largely inspired this one, absolutely recommended if you're working in Go. Properties Applications Application directories public static IList<string> Applications { get; } Property Value IList<string> Common application directories. Remarks Windows The Programs Special Folder, the Common Programs Special Folder macOS /Applications Linux/FreeBSD $XDG_DATA_HOME/applications, $HOME/.local/share/applications, /usr/local/share/applications, /usr/share/applications Fonts Font directories public static IList<string> Fonts { get; } Property Value IList<string> Common font directories. Remarks Windows %SYSTEMROOT%\\Fonts, %LOCALAPPDATA%\\Microsoft\\Windows\\Fonts macOS $HOME/Library/Fonts, /Library/Fonts, /System/Library/Fonts, /Network/Library/Fonts Linux/FreeBSD $XDG_DATA_HOME/fonts, $HOME/.fonts, $HOME/.local/share/fonts, /usr/local/share/fonts/usr/share/fonts Home Home Directory public static string Home { get; } Property Value string The current user's home directory. Remarks Windows %USERPROFILE% Unix (macOS/Linux/FreeBSD) $HOME"
},
"api/Xdg.Directories.UserDirectory.html": {
"href": "api/Xdg.Directories.UserDirectory.html",
"title": "Class UserDirectory",
"keywords": "Class UserDirectory Namespace Xdg.Directories Assembly Xdg.Directories.dll User directories are \"well known\" user directories, examples include the Desktop folder and the Documents folder. public static class UserDirectory Inheritance object UserDirectory Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks For all user directories, the directories are resolved as follows: The respective XDG_* enivronment variable will always be used if specified Windows Use Known Folders. macOS Not sure where this is documented by Apple but it largely follows what Linux does. Linux/FreeBSD Follow what xdg-user-dirs sets. Properties DesktopDir Desktop folder public static string DesktopDir { get; } Property Value string The user's desktop directory. Remarks If XDG_DESKTOP_DIR is set, the directory specified. Windows The Desktop Special Folder macOS $HOME/Desktop Linux/FreeBSD $HOME/Desktop DocumentsDir Document folder public static string DocumentsDir { get; } Property Value string A location to store documents files. Remarks If XDG_DOCUMENTS_DIR is set, the directory specified. Windows The Documents Special Folder macOS $HOME/Documents Linux/FreeBSD $HOME/Documents DownloadDir Download folder public static string DownloadDir { get; } Property Value string A location to store downloaded files. Remarks If XDG_DOWNLOAD_DIR is set, the directory specified. Windows null Windows does not specify the Downloads folder in its magic folder list. macOS $HOME/Downloads Linux/FreeBSD $HOME/Downloads MusicDir Music folder public static string MusicDir { get; } Property Value string A location to store music files. Remarks If XDG_MUSIC_DIR is set, the directory specified. Windows The Music Special Folder macOS $HOME/Music Linux/FreeBSD $HOME/Music PicturesDir Image folder public static string PicturesDir { get; } Property Value string A location to store image files. Remarks If XDG_PICTURES_DIR is set, the directory specified. Windows The Pictures Special Folder macOS $HOME/Pictures Linux/FreeBSD $HOME/Pictures PublicDir Public folder public static string PublicDir { get; } Property Value string A location to store public / shared files. Remarks If XDG_PUBLICSHARE_DIR is set, the directory specified. Windows %PUBLIC% macOS $HOME/Public Linux/FreeBSD $HOME/Public TemplatesDir Template folder public static string TemplatesDir { get; } Property Value string A location to store template files. Remarks If XDG_TEMPLATES_DIR is set, the directory specified. Windows The Templates Special Folder macOS $HOME/Templates Linux/FreeBSD $HOME/Templatess VideosDir Video folder public static string VideosDir { get; } Property Value string A location to store video files. Remarks If XDG_VIDEOS_DIR is set, the directory specified. Windows The Videos Special Folder macOS $HOME/Movies Linux/FreeBSD $HOME/Videos"
},
"api/Xdg.Directories.html": {
"href": "api/Xdg.Directories.html",
"title": "Namespace Xdg.Directories",
"keywords": "Namespace Xdg.Directories Classes BaseDirectory The XDG Base Directory specification is a standard created by freedesktop.org that standardizes the location of storing application files. Other Other useful directories that aren't specified by XDG. UserDirectory User directories are \"well known\" user directories, examples include the Desktop folder and the Documents folder."
},
"docs/defaults.html": {
"href": "docs/defaults.html",
"title": "Default Locations",
"keywords": "Default Locations If any of the respective XDG environment are specified, the variable will always be returned. Otherwise, the value depends on the operating system. Inspiration is taken from the Go implementation for Windows and MacOS directories. Base Directory Environment Variable Windows macOS Linux/FreeBSD XDG_DATA_HOME %LOCALAPPDATA% $HOME/Library/Application Support $HOME/.local/share XDG_CONFIG_HOME %LOCALAPPDATA% $HOME/Library/Application Support $HOME/.config XDG_STATE_HOME %LOCALAPPDATA% $HOME/Library/Application Support $HOME/.local/state XDG_BIN_HOME null null $HOME/.local/bin XDG_DATA_DIRS %APPDATA%:%PROGRAMDATA% /Library/Application Support /usr/local/share:/usr/share XDG_CONFIG_DIRS %LOCALAPPDATA% $HOME/Library/Preferences:/Library/Application Support:/Library/Preferences /etc/xdg XDG_CACHE_HOME %LOCALAPPDATA% $HOME/Library/Application Support $HOME/.config XDG_RUNTIME_HOME %LOCALAPPDATA% $HOME/Library/Application Support /run/user/$UID User Directory User directories on Windows use Known Folders. Environment Variable Windows macOS Linux/FreeBSD XDG_DESKTOP_DIR Desktop $HOME/Desktop $HOME/Desktop XDG_DOWNLOAD_DIR null $HOME/Downloads $HOME/Downloads XDG_DOCUMENTS_DIR My Documents $HOME/Documents $HOME/Documents XDG_MUSIC_DIR My Music $HOME/Music $HOME/Music XDG_PICTURES_DIRS My Pictures $HOME/Pictures $HOME/Pictures XDG_VIDEOS_DIR My Videos $HOME/Movies $HOME/Videos XDG_TEMPLATES_DIR Templates $HOME/Templates $HOME/Templates XDG_PUBLICSHARE_DIR %PUBLIC% $HOME/Public $HOME/Public Extra Directories Windows macOS Linux/FreeBSD Home %USERPROFILE% $HOME $HOME Applications Programs, Common Programs /Applications $XDG_DATA_HOME/applications, $HOME/.local/share/applications, /usr/local/share/applications, /usr/share/applications Fonts %SYSTEMROOT%\\Fonts, %LOCALAPPDATA%\\Microsoft\\Windows\\Fonts $HOME/Library/Fonts, /Library/Fonts, /System/Library/Fonts, /Network/Library/Fonts $XDG_DATA_HOME/fonts, $HOME/.fonts, $HOME/.local/share/fonts, /usr/local/share/fonts, /usr/share/fonts"
},
"docs/installation.html": {
"href": "docs/installation.html",
"title": "Installation",
"keywords": "Installation Stable Releases Use NuGet to install Xdg.Directories. From the .NET CLI: dotnet add package Xdg.Directories or from Visual Studio's package manager: Install-Package Xdg.Directories Pre-releases For bleeding edge users, preview releases are available. They are uploaded to two places automatically every commit: GitHub packages - A GitHub account is needed to download. Forgejo packages - No login required. Follow the directions at the respective links to install the package."
},
"docs/quick-use.html": {
"href": "docs/quick-use.html",
"title": "TL;DR",
"keywords": "TL;DR Add the Xdg.Directories package to your project: dotnet add package Xdg.Directories Then use the BaseDirectory and UserDirectory classes to access the XDG directories: using System; using Xdg.Directories; // Prints /home/$USER/.local/share Console.Writeline(BaseDirectory.DataHome); // Prints /home/$USER/Documents Console.Writeline(UserDirectory.DocumentsDir); For more information, see the API documentation."
},
"index.html": {
"href": "index.html",
"title": "Xdg.Directories",
"keywords": "Xdg.Directories Want to get straight to the point? Check out the quick start guide. Xdg.Directories is a library that simplifies using the XDG Base Directory Specification and XDG user directories in .NET applications. Features Cross-platform: Supports Windows, MacOS and Linux/FreeBSD. Fast: The .dll is only 11 KB. Portable: Completely supports .NET Standard 2.0 and even NativeAOT! Simple: Easy to use API. Sane Defaults: Provides default directories for when the XDG environment variables are not set. These defaults are documented in the code itself and are also available here."
}
}

25
logo.svg Executable file
View file

@ -0,0 +1,25 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="38.000000pt" height="38.000000pt" viewBox="0 0 172.000000 172.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by Docfx
</metadata>
<g transform="translate(0.000000,172.000000) scale(0.100000,-0.100000)"
fill="#dddddd" stroke="none">
<path d="M230 1359 c0 -18 11 -30 44 -48 80 -42 81 -45 81 -441 0 -400 -1
-404 -79 -436 -36 -15 -46 -24 -46 -43 0 -23 2 -24 61 -17 34 3 88 6 120 6
l59 0 0 495 0 495 -82 0 c-46 0 -100 3 -120 6 -35 6 -38 5 -38 -17z"/>
<path d="M618 1373 l-118 -4 0 -493 0 -494 154 -7 c181 -9 235 -3 313 34 68
33 168 130 207 202 75 136 75 384 1 536 -71 145 -234 240 -399 231 -23 -1 -94
-4 -158 -5z m287 -119 c68 -24 144 -101 176 -179 22 -54 24 -75 24 -210 0
-141 -2 -153 -26 -206 -36 -76 -89 -132 -152 -160 -45 -21 -68 -24 -164 -24
-71 0 -116 4 -123 11 -22 22 -31 175 -28 463 2 208 6 293 15 302 32 32 188 33
278 3z"/>
<path d="M1170 1228 c75 -104 110 -337 76 -508 -21 -100 -56 -178 -105 -233
l-36 -41 34 20 c75 43 160 133 198 212 37 75 38 78 38 191 -1 129 -18 191 -75
270 -28 38 -136 131 -153 131 -4 0 6 -19 23 -42z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

158
manifest.json Normal file
View file

@ -0,0 +1,158 @@
{
"source_base_path": "/home/runner/work/Xdg.Directories/Xdg.Directories/docs",
"xrefmap": "xrefmap.yml",
"files": [
{
"type": "Resource",
"output": {
"resource": {
"relative_path": "index.json"
}
}
},
{
"type": "ManagedReference",
"source_relative_path": "api/Xdg.Directories.BaseDirectory.yml",
"output": {
".html": {
"relative_path": "api/Xdg.Directories.BaseDirectory.html"
}
},
"version": ""
},
{
"type": "ManagedReference",
"source_relative_path": "api/Xdg.Directories.Other.yml",
"output": {
".html": {
"relative_path": "api/Xdg.Directories.Other.html"
}
},
"version": ""
},
{
"type": "ManagedReference",
"source_relative_path": "api/Xdg.Directories.UserDirectory.yml",
"output": {
".html": {
"relative_path": "api/Xdg.Directories.UserDirectory.html"
}
},
"version": ""
},
{
"type": "ManagedReference",
"source_relative_path": "api/Xdg.Directories.yml",
"output": {
".html": {
"relative_path": "api/Xdg.Directories.html"
}
},
"version": ""
},
{
"type": "Toc",
"source_relative_path": "api/toc.yml",
"output": {
".html": {
"relative_path": "api/toc.html"
},
".json": {
"relative_path": "api/toc.json"
}
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "docs/defaults.md",
"output": {
".html": {
"relative_path": "docs/defaults.html"
}
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "docs/installation.md",
"output": {
".html": {
"relative_path": "docs/installation.html"
}
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "docs/quick-use.md",
"output": {
".html": {
"relative_path": "docs/quick-use.html"
}
},
"version": ""
},
{
"type": "Toc",
"source_relative_path": "docs/toc.yml",
"output": {
".html": {
"relative_path": "docs/toc.html"
},
".json": {
"relative_path": "docs/toc.json"
}
},
"version": ""
},
{
"type": "Resource",
"source_relative_path": "images/icon.png",
"output": {
"resource": {
"relative_path": "images/icon.png"
}
},
"version": ""
},
{
"type": "Resource",
"source_relative_path": "images/icon.svg",
"output": {
"resource": {
"relative_path": "images/icon.svg"
}
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "index.md",
"output": {
".html": {
"relative_path": "index.html"
}
},
"version": ""
},
{
"type": "Toc",
"source_relative_path": "toc.yml",
"output": {
".html": {
"relative_path": "toc.html"
},
".json": {
"relative_path": "toc.json"
}
},
"version": ""
}
],
"groups": [
{
"xrefmap": "xrefmap.yml"
}
]
}

119
public/blockDiagram-9f4a6865-KQGFBXS7.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

11
public/c4Diagram-ae766693-CZAYTAZR.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/chunk-5FWMXAFW.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

11
public/chunk-CA32PY7O.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

15
public/chunk-K2MRC2FE.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

208
public/chunk-K4EHOM77.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

117
public/chunk-LUX5WYVM.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
public/chunk-LXB37CFX.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/chunk-M7PQX5EB.min.js vendored Executable file
View file

@ -0,0 +1,2 @@
import{Ha as o,c}from"./chunk-YEACHCAA.min.js";import{d as l}from"./chunk-XUHMPXWX.min.js";var i=l(c(),1);var x=(s,t)=>{let r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx!==void 0&&r.attr("rx",t.rx),t.ry!==void 0&&r.attr("ry",t.ry),t.attrs!==void 0)for(let e in t.attrs)r.attr(e,t.attrs[e]);return t.class!==void 0&&r.attr("class",t.class),r},h=(s,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(s,r).lower()},y=(s,t)=>{let r=t.text.replace(o," "),e=s.append("text");e.attr("x",t.x),e.attr("y",t.y),e.attr("class","legend"),e.style("text-anchor",t.anchor),t.class!==void 0&&e.attr("class",t.class);let n=e.append("tspan");return n.attr("x",t.x+t.textMargin*2),n.text(r),e},m=(s,t,r,e)=>{let n=s.append("image");n.attr("x",t),n.attr("y",r);let a=(0,i.sanitizeUrl)(e);n.attr("xlink:href",a)},p=(s,t,r,e)=>{let n=s.append("use");n.attr("x",t),n.attr("y",r);let a=(0,i.sanitizeUrl)(e);n.attr("xlink:href",`#${a}`)},g=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),f=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0});export{x as a,h as b,y as c,m as d,p as e,g as f,f as g};
//# sourceMappingURL=chunk-M7PQX5EB.min.js.map

View file

@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../node_modules/mermaid/dist/svgDrawCommon-5e1cfd1d.js"],
"sourcesContent": ["import { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { J as lineBreakRegex } from \"./mermaid-6dc72991.js\";\nconst drawRect = (element, rectData) => {\n const rectElement = element.append(\"rect\");\n rectElement.attr(\"x\", rectData.x);\n rectElement.attr(\"y\", rectData.y);\n rectElement.attr(\"fill\", rectData.fill);\n rectElement.attr(\"stroke\", rectData.stroke);\n rectElement.attr(\"width\", rectData.width);\n rectElement.attr(\"height\", rectData.height);\n if (rectData.name) {\n rectElement.attr(\"name\", rectData.name);\n }\n rectData.rx !== void 0 && rectElement.attr(\"rx\", rectData.rx);\n rectData.ry !== void 0 && rectElement.attr(\"ry\", rectData.ry);\n if (rectData.attrs !== void 0) {\n for (const attrKey in rectData.attrs) {\n rectElement.attr(attrKey, rectData.attrs[attrKey]);\n }\n }\n rectData.class !== void 0 && rectElement.attr(\"class\", rectData.class);\n return rectElement;\n};\nconst drawBackgroundRect = (element, bounds) => {\n const rectData = {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n stroke: bounds.stroke,\n class: \"rect\"\n };\n const rectElement = drawRect(element, rectData);\n rectElement.lower();\n};\nconst drawText = (element, textData) => {\n const nText = textData.text.replace(lineBreakRegex, \" \");\n const textElem = element.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n textData.class !== void 0 && textElem.attr(\"class\", textData.class);\n const tspan = textElem.append(\"tspan\");\n tspan.attr(\"x\", textData.x + textData.textMargin * 2);\n tspan.text(nText);\n return textElem;\n};\nconst drawImage = (elem, x, y, link) => {\n const imageElement = elem.append(\"image\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawEmbeddedImage = (element, x, y, link) => {\n const imageElement = element.append(\"use\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", `#${sanitizedLink}`);\n};\nconst getNoteRect = () => {\n const noteRectData = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n anchor: \"start\",\n rx: 0,\n ry: 0\n };\n return noteRectData;\n};\nconst getTextObj = () => {\n const testObject = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n \"text-anchor\": \"start\",\n style: \"#666\",\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true\n };\n return testObject;\n};\nexport {\n drawBackgroundRect as a,\n drawEmbeddedImage as b,\n drawImage as c,\n drawRect as d,\n getTextObj as e,\n drawText as f,\n getNoteRect as g\n};\n"],
"mappings": "2FAAA,IAAAA,EAA4B,SAE5B,IAAMC,EAAW,CAACC,EAASC,IAAa,CACtC,IAAMC,EAAcF,EAAQ,OAAO,MAAM,EAYzC,GAXAE,EAAY,KAAK,IAAKD,EAAS,CAAC,EAChCC,EAAY,KAAK,IAAKD,EAAS,CAAC,EAChCC,EAAY,KAAK,OAAQD,EAAS,IAAI,EACtCC,EAAY,KAAK,SAAUD,EAAS,MAAM,EAC1CC,EAAY,KAAK,QAASD,EAAS,KAAK,EACxCC,EAAY,KAAK,SAAUD,EAAS,MAAM,EACtCA,EAAS,MACXC,EAAY,KAAK,OAAQD,EAAS,IAAI,EAExCA,EAAS,KAAO,QAAUC,EAAY,KAAK,KAAMD,EAAS,EAAE,EAC5DA,EAAS,KAAO,QAAUC,EAAY,KAAK,KAAMD,EAAS,EAAE,EACxDA,EAAS,QAAU,OACrB,QAAWE,KAAWF,EAAS,MAC7BC,EAAY,KAAKC,EAASF,EAAS,MAAME,CAAO,CAAC,EAGrD,OAAAF,EAAS,QAAU,QAAUC,EAAY,KAAK,QAASD,EAAS,KAAK,EAC9DC,CACT,EACME,EAAqB,CAACJ,EAASK,IAAW,CAC9C,IAAMJ,EAAW,CACf,EAAGI,EAAO,OACV,EAAGA,EAAO,OACV,MAAOA,EAAO,MAAQA,EAAO,OAC7B,OAAQA,EAAO,MAAQA,EAAO,OAC9B,KAAMA,EAAO,KACb,OAAQA,EAAO,OACf,MAAO,MACT,EACoBN,EAASC,EAASC,CAAQ,EAClC,MAAM,CACpB,EACMK,EAAW,CAACN,EAASO,IAAa,CACtC,IAAMC,EAAQD,EAAS,KAAK,QAAQE,EAAgB,GAAG,EACjDC,EAAWV,EAAQ,OAAO,MAAM,EACtCU,EAAS,KAAK,IAAKH,EAAS,CAAC,EAC7BG,EAAS,KAAK,IAAKH,EAAS,CAAC,EAC7BG,EAAS,KAAK,QAAS,QAAQ,EAC/BA,EAAS,MAAM,cAAeH,EAAS,MAAM,EAC7CA,EAAS,QAAU,QAAUG,EAAS,KAAK,QAASH,EAAS,KAAK,EAClE,IAAMI,EAAQD,EAAS,OAAO,OAAO,EACrC,OAAAC,EAAM,KAAK,IAAKJ,EAAS,EAAIA,EAAS,WAAa,CAAC,EACpDI,EAAM,KAAKH,CAAK,EACTE,CACT,EACME,EAAY,CAACC,EAAMC,EAAGC,EAAGC,IAAS,CACtC,IAAMC,EAAeJ,EAAK,OAAO,OAAO,EACxCI,EAAa,KAAK,IAAKH,CAAC,EACxBG,EAAa,KAAK,IAAKF,CAAC,EACxB,IAAMG,KAAgB,eAAYF,CAAI,EACtCC,EAAa,KAAK,aAAcC,CAAa,CAC/C,EACMC,EAAoB,CAACnB,EAASc,EAAGC,EAAGC,IAAS,CACjD,IAAMC,EAAejB,EAAQ,OAAO,KAAK,EACzCiB,EAAa,KAAK,IAAKH,CAAC,EACxBG,EAAa,KAAK,IAAKF,CAAC,EACxB,IAAMG,KAAgB,eAAYF,CAAI,EACtCC,EAAa,KAAK,aAAc,IAAIC,CAAa,EAAE,CACrD,EACME,EAAc,KACG,CACnB,EAAG,EACH,EAAG,EACH,MAAO,IACP,OAAQ,IACR,KAAM,UACN,OAAQ,OACR,OAAQ,QACR,GAAI,EACJ,GAAI,CACN,GAGIC,EAAa,KACE,CACjB,EAAG,EACH,EAAG,EACH,MAAO,IACP,OAAQ,IACR,cAAe,QACf,MAAO,OACP,WAAY,EACZ,GAAI,EACJ,GAAI,EACJ,MAAO,EACT",
"names": ["import_sanitize_url", "drawRect", "element", "rectData", "rectElement", "attrKey", "drawBackgroundRect", "bounds", "drawText", "textData", "nText", "lineBreakRegex", "textElem", "tspan", "drawImage", "elem", "x", "y", "link", "imageElement", "sanitizedLink", "drawEmbeddedImage", "getNoteRect", "getTextObj"]
}

5
public/chunk-N4EFGQ5G.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

22
public/chunk-NRE4YRK7.min.js vendored Executable file
View file

@ -0,0 +1,22 @@
import{b as k}from"./chunk-XUHMPXWX.min.js";var v=k((h,j)=>{(function(e,n){typeof define=="function"&&define.amd?define(n):typeof h=="object"?j.exports=n():n()(e.lunr)})(h,function(){return function(e){if(typeof e>"u")throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(typeof e.stemmerSupport>"u")throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var n=e.version[0]=="2";e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),n?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var F=new e.TinySegmenter;e.ja.tokenizer=function(s){var t,i,f,o,a,d,g,p,r,c;if(!arguments.length||s==null||s==null)return[];if(Array.isArray(s))return s.map(function(m){return n?new e.Token(m.toLowerCase()):m.toLowerCase()});for(i=s.toString().toLowerCase().replace(/^\s+/,""),t=i.length-1;t>=0;t--)if(/\S/.test(i.charAt(t))){i=i.substring(0,t+1);break}for(a=[],f=i.length,r=0,p=0;r<=f;r++)if(d=i.charAt(r),g=r-p,d.match(/\s/)||r==f){if(g>0)for(o=F.segment(i.slice(p,r)).filter(function(m){return!!m}),c=p,t=0;t<o.length;t++)n?a.push(new e.Token(o[t],{position:[c,o[t].length],index:a.length})):a.push(o[t]),c+=o[t].length;p=r+1}return a},e.ja.stemmer=function(){return function(s){return s}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u767E\u5343\u4E07\u5104\u5146\u4E00-\u9FA0\u3005\u3006\u30F5\u30F6\u3041-\u3093\u30A1-\u30F4\u30FC\uFF71-\uFF9D\uFF9Ea-zA-Z\uFF41-\uFF5A\uFF21-\uFF3A0-9\uFF10-\uFF19",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("\u3053\u308C \u305D\u308C \u3042\u308C \u3053\u306E \u305D\u306E \u3042\u306E \u3053\u3053 \u305D\u3053 \u3042\u305D\u3053 \u3053\u3061\u3089 \u3069\u3053 \u3060\u308C \u306A\u306B \u306A\u3093 \u4F55 \u79C1 \u8CB4\u65B9 \u8CB4\u65B9\u65B9 \u6211\u3005 \u79C1\u9054 \u3042\u306E\u4EBA \u3042\u306E\u304B\u305F \u5F7C\u5973 \u5F7C \u3067\u3059 \u3042\u308A\u307E\u3059 \u304A\u308A\u307E\u3059 \u3044\u307E\u3059 \u306F \u304C \u306E \u306B \u3092 \u3067 \u3048 \u304B\u3089 \u307E\u3067 \u3088\u308A \u3082 \u3069\u306E \u3068 \u3057 \u305D\u308C\u3067 \u3057\u304B\u3057".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}})});export{v as a};
/*! Bundled license information:
lunr-languages/lunr.ja.js:
(*!
* Lunr languages, `Japanese` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Chad Liu
* http://www.mozilla.org/MPL/
*)
(*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*)
*/
//# sourceMappingURL=chunk-NRE4YRK7.min.js.map

File diff suppressed because one or more lines are too long

161
public/chunk-QRBMAIWT.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/chunk-RNO6SWHZ.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/chunk-XUHMPXWX.min.js vendored Executable file
View file

@ -0,0 +1,2 @@
var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var n=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),o=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0})},l=(a,b,c,f)=>{if(b&&typeof b=="object"||typeof b=="function")for(let d of i(b))!k.call(a,d)&&d!==c&&e(a,d,{get:()=>b[d],enumerable:!(f=h(b,d))||f.enumerable});return a};var p=(a,b,c)=>(c=a!=null?g(j(a)):{},l(b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c,a));export{m as a,n as b,o as c,p as d};
//# sourceMappingURL=chunk-XUHMPXWX.min.js.map

View file

@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

101
public/chunk-YEACHCAA.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
import{a as G,b as S,c as I}from"./chunk-QRBMAIWT.min.js";import{a as W}from"./chunk-RNO6SWHZ.min.js";import{A}from"./chunk-K2MRC2FE.min.js";import{G as _,Ga as y,I as C,J as R,Ka as O,ab as T,b as J,c as Z,db as P,h as E,nb as v}from"./chunk-YEACHCAA.min.js";import{d as N}from"./chunk-XUHMPXWX.min.js";var at=N(J(),1),it=N(Z(),1),nt=N(R(),1);var X=0,F=function(i,r,t,o,p){let g=function(e){switch(e){case p.db.relationType.AGGREGATION:return"aggregation";case p.db.relationType.EXTENSION:return"extension";case p.db.relationType.COMPOSITION:return"composition";case p.db.relationType.DEPENDENCY:return"dependency";case p.db.relationType.LOLLIPOP:return"lollipop"}};r.points=r.points.filter(e=>!Number.isNaN(e.y));let s=r.points,c=_().x(function(e){return e.x}).y(function(e){return e.y}).curve(C),n=i.append("path").attr("d",c(s)).attr("id","edge"+X).attr("class","relation"),a="";o.arrowMarkerAbsolute&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replace(/\(/g,"\\("),a=a.replace(/\)/g,"\\)")),t.relation.lineType==1&&n.attr("class","relation dashed-line"),t.relation.lineType==10&&n.attr("class","relation dotted-line"),t.relation.type1!=="none"&&n.attr("marker-start","url("+a+"#"+g(t.relation.type1)+"Start)"),t.relation.type2!=="none"&&n.attr("marker-end","url("+a+"#"+g(t.relation.type2)+"End)");let f,h,x=r.points.length,b=T.calcLabelPosition(r.points);f=b.x,h=b.y;let u,m,w,k;if(x%2!==0&&x>1){let e=T.calcCardinalityPosition(t.relation.type1!=="none",r.points,r.points[0]),d=T.calcCardinalityPosition(t.relation.type2!=="none",r.points,r.points[x-1]);y.debug("cardinality_1_point "+JSON.stringify(e)),y.debug("cardinality_2_point "+JSON.stringify(d)),u=e.x,m=e.y,w=d.x,k=d.y}if(t.title!==void 0){let e=i.append("g").attr("class","classLabel"),d=e.append("text").attr("class","label").attr("x",f).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(t.title);window.label=d;let l=d.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",l.x-o.padding/2).attr("y",l.y-o.padding/2).attr("width",l.width+o.padding).attr("height",l.height+o.padding)}y.info("Rendering relation "+JSON.stringify(t)),t.relationTitle1!==void 0&&t.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",u).attr("y",m).attr("fill","black").attr("font-size","6").text(t.relationTitle1),t.relationTitle2!==void 0&&t.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",w).attr("y",k).attr("fill","black").attr("font-size","6").text(t.relationTitle2),X++},U=function(i,r,t,o){y.debug("Rendering class ",r,t);let p=r.id,g={id:p,label:r.id,width:0,height:0},s=i.append("g").attr("id",o.db.lookUpDomId(p)).attr("class","classGroup"),c;r.link?c=s.append("svg:a").attr("xlink:href",r.link).attr("target",r.linkTarget).append("text").attr("y",t.textHeight+t.padding).attr("x",0):c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);let n=!0;r.annotations.forEach(function(d){let l=c.append("tspan").text("\xAB"+d+"\xBB");n||l.attr("dy",t.textHeight),n=!1});let a=$(r),f=c.append("tspan").text(a).attr("class","title");n||f.attr("dy",t.textHeight);let h=c.node().getBBox().height,x,b,u;if(r.members.length>0){x=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin/2).attr("y2",t.padding+h+t.dividerMargin/2);let d=s.append("text").attr("x",t.padding).attr("y",h+t.dividerMargin+t.textHeight).attr("fill","white").attr("class","classText");n=!0,r.members.forEach(function(l){Y(d,l,n,t),n=!1}),b=d.node().getBBox()}if(r.methods.length>0){u=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin+b.height).attr("y2",t.padding+h+t.dividerMargin+b.height);let d=s.append("text").attr("x",t.padding).attr("y",h+2*t.dividerMargin+b.height+t.textHeight).attr("fill","white").attr("class","classText");n=!0,r.methods.forEach(function(l){Y(d,l,n,t),n=!1})}let m=s.node().getBBox();var w=" ";r.cssClasses.length>0&&(w=w+r.cssClasses.join(" "));let e=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*t.padding).attr("height",m.height+t.padding+.5*t.dividerMargin).attr("class",w).node().getBBox().width;return c.node().childNodes.forEach(function(d){d.setAttribute("x",(e-d.getBBox().width)/2)}),r.tooltip&&c.insert("title").text(r.tooltip),x&&x.attr("x2",e),u&&u.attr("x2",e),g.width=e,g.height=m.height+t.padding+.5*t.dividerMargin,g},$=function(i){let r=i.id;return i.type&&(r+="<"+O(i.type)+">"),r},z=function(i,r,t,o){y.debug("Rendering note ",r,t);let p=r.id,g={id:p,text:r.text,width:0,height:0},s=i.append("g").attr("id",p).attr("class","classGroup"),c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0),n=JSON.parse(`"${r.text}"`).split(`
`);n.forEach(function(x){y.debug(`Adding line: ${x}`),c.append("tspan").text(x).attr("class","title").attr("dy",t.textHeight)});let a=s.node().getBBox(),h=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",a.width+2*t.padding).attr("height",a.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin).node().getBBox().width;return c.node().childNodes.forEach(function(x){x.setAttribute("x",(h-x.getBBox().width)/2)}),g.width=h,g.height=a.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin,g},Y=function(i,r,t,o){let{displayText:p,cssStyle:g}=r.getDisplayDetails(),s=i.append("tspan").attr("x",o.padding).text(p);g!==""&&s.attr("style",r.cssStyle),t||s.attr("dy",o.textHeight)},H={getClassTitleString:$,drawClass:U,drawEdge:F,drawNote:z},M={},B=20,L=function(i){let r=Object.entries(M).find(t=>t[1].label===i);if(r)return r[0]},V=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},q=function(i,r,t,o){let p=v().class;M={},y.info("Rendering diagram "+i);let g=v().securityLevel,s;g==="sandbox"&&(s=E("#i"+r));let c=g==="sandbox"?E(s.nodes()[0].contentDocument.body):E("body"),n=c.select(`[id='${r}']`);V(n);let a=new A({multigraph:!0});a.setGraph({isMultiGraph:!0}),a.setDefaultEdgeLabel(function(){return{}});let f=o.db.getClasses(),h=Object.keys(f);for(let e of h){let d=f[e],l=H.drawClass(n,d,p,o);M[l.id]=l,a.setNode(l.id,l),y.info("Org height: "+l.height)}o.db.getRelations().forEach(function(e){y.info("tjoho"+L(e.id1)+L(e.id2)+JSON.stringify(e)),a.setEdge(L(e.id1),L(e.id2),{relation:e},e.title||"DEFAULT")}),o.db.getNotes().forEach(function(e){y.debug(`Adding note: ${JSON.stringify(e)}`);let d=H.drawNote(n,e,p,o);M[d.id]=d,a.setNode(d.id,d),e.class&&e.class in f&&a.setEdge(e.id,L(e.class),{relation:{id1:e.id,id2:e.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),W(a),a.nodes().forEach(function(e){e!==void 0&&a.node(e)!==void 0&&(y.debug("Node "+e+": "+JSON.stringify(a.node(e))),c.select("#"+(o.db.lookUpDomId(e)||e)).attr("transform","translate("+(a.node(e).x-a.node(e).width/2)+","+(a.node(e).y-a.node(e).height/2)+" )"))}),a.edges().forEach(function(e){e!==void 0&&a.edge(e)!==void 0&&(y.debug("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(a.edge(e))),H.drawEdge(n,a.edge(e),a.edge(e).relation,p,o))});let u=n.node().getBBox(),m=u.width+B*2,w=u.height+B*2;P(n,w,m,p.useMaxWidth);let k=`${u.x-B} ${u.y-B} ${m} ${w}`;y.debug(`viewBox ${k}`),n.attr("viewBox",k)},K={draw:q},dt={parser:G,db:S,renderer:K,styles:I,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,S.clear()}};export{dt as diagram};
//# sourceMappingURL=classDiagram-fb54d2a0-HROX7LLG.min.js.map

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
import{a as R,b as T,c as $}from"./chunk-QRBMAIWT.min.js";import{a as M}from"./chunk-5FWMXAFW.min.js";import"./chunk-N4EFGQ5G.min.js";import"./chunk-LXB37CFX.min.js";import"./chunk-RNO6SWHZ.min.js";import{A as I}from"./chunk-K2MRC2FE.min.js";import{F as S,Ga as d,J as V,Oa as L,Ta as _,Ua as N,ab as B,b as F,c as H,eb as G,h as g,nb as i}from"./chunk-YEACHCAA.min.js";import{d as k}from"./chunk-XUHMPXWX.min.js";var ot=k(F(),1),lt=k(H(),1),st=k(V(),1);var E=s=>L.sanitizeText(s,i()),D={dividerMargin:10,padding:5,textHeight:10,curve:void 0},W=function(s,e,y,a){let t=Object.keys(s);d.info("keys:",t),d.info(s),t.forEach(function(r){var o,c;let l=s[r],p={shape:"rect",id:l.id,domId:l.domId,labelText:E(l.id),labelStyle:"",style:"fill: none; stroke: black",padding:((o=i().flowchart)==null?void 0:o.padding)??((c=i().class)==null?void 0:c.padding)};e.setNode(l.id,p),P(l.classes,e,y,a,l.id),d.info("setNode",p)})},P=function(s,e,y,a,t){let r=Object.keys(s);d.info("keys:",r),d.info(s),r.filter(o=>s[o].parent==t).forEach(function(o){var c,l;let n=s[o],p=n.cssClasses.join(" "),f=N(n.styles),m=n.label??n.id,u=0,b={labelStyle:f.labelStyle,shape:"class_box",labelText:E(m),classData:n,rx:u,ry:u,class:p,style:f.style,id:n.id,domId:n.domId,tooltip:a.db.getTooltip(n.id,t)||"",haveCallback:n.haveCallback,link:n.link,width:n.type==="group"?500:void 0,type:n.type,padding:((c=i().flowchart)==null?void 0:c.padding)??((l=i().class)==null?void 0:l.padding)};e.setNode(n.id,b),t&&e.setParent(n.id,t),d.info("setNode",b)})},J=function(s,e,y,a){d.info(s),s.forEach(function(t,r){var o,c;let l=t,n="",p={labelStyle:"",style:""},f=l.text,m=0,h={labelStyle:p.labelStyle,shape:"note",labelText:E(f),noteData:l,rx:m,ry:m,class:n,style:p.style,id:l.id,domId:l.id,tooltip:"",type:"note",padding:((o=i().flowchart)==null?void 0:o.padding)??((c=i().class)==null?void 0:c.padding)};if(e.setNode(l.id,h),d.info("setNode",h),!l.class||!(l.class in a))return;let b=y+r,x={id:`edgeNote${b}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:_(D.curve,S)};e.setEdge(l.id,l.class,x,b)})},K=function(s,e){let y=i().flowchart,a=0;s.forEach(function(t){var r;a++;let o={classes:"relation",pattern:t.relation.lineType==1?"dashed":"solid",id:`id_${t.id1}_${t.id2}_${a}`,arrowhead:t.type==="arrow_open"?"none":"normal",startLabelRight:t.relationTitle1==="none"?"":t.relationTitle1,endLabelLeft:t.relationTitle2==="none"?"":t.relationTitle2,arrowTypeStart:z(t.relation.type1),arrowTypeEnd:z(t.relation.type2),style:"fill:none",labelStyle:"",curve:_(y?.curve,S)};if(d.info(o,t),t.style!==void 0){let c=N(t.style);o.style=c.style,o.labelStyle=c.labelStyle}t.text=t.title,t.text===void 0?t.style!==void 0&&(o.arrowheadStyle="fill: #333"):(o.arrowheadStyle="fill: #333",o.labelpos="c",((r=i().flowchart)==null?void 0:r.htmlLabels)??i().htmlLabels?(o.labelType="html",o.label='<span class="edgeLabel">'+t.text+"</span>"):(o.labelType="text",o.label=t.text.replace(L.lineBreakRegex,`
`),t.style===void 0&&(o.style=o.style||"stroke: #333; stroke-width: 1.5px;fill:none"),o.labelStyle=o.labelStyle.replace("color:","fill:"))),e.setEdge(t.id1,t.id2,o,a)})},Q=function(s){D={...D,...s}},U=async function(s,e,y,a){d.info("Drawing class - ",e);let t=i().flowchart??i().class,r=i().securityLevel;d.info("config:",t);let o=t?.nodeSpacing??50,c=t?.rankSpacing??50,l=new I({multigraph:!0,compound:!0}).setGraph({rankdir:a.db.getDirection(),nodesep:o,ranksep:c,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=a.db.getNamespaces(),p=a.db.getClasses(),f=a.db.getRelations(),m=a.db.getNotes();d.info(f),W(n,l,e,a),P(p,l,e,a),K(f,l),J(m,l,f.length+1,p);let u;r==="sandbox"&&(u=g("#i"+e));let h=r==="sandbox"?g(u.nodes()[0].contentDocument.body):g("body"),b=h.select(`[id="${e}"]`),x=h.select("#"+e+" g");if(await M(x,l,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",e),B.insertTitle(b,"classTitleText",t?.titleTopMargin??5,a.db.getDiagramTitle()),G(l,b,t?.diagramPadding,t?.useMaxWidth),!t?.htmlLabels){let C=r==="sandbox"?u.nodes()[0].contentDocument:document,q=C.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(let w of q){let A=w.getBBox(),v=C.createElementNS("http://www.w3.org/2000/svg","rect");v.setAttribute("rx",0),v.setAttribute("ry",0),v.setAttribute("width",A.width),v.setAttribute("height",A.height),w.insertBefore(v,w.firstChild)}}};function z(s){let e;switch(s){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}var X={setConf:Q,draw:U},it={parser:R,db:T,renderer:X,styles:$,init:s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,T.clear()}};export{it as diagram};
//# sourceMappingURL=classDiagram-v2-a2b738ad-P3OHMUUZ.min.js.map

File diff suppressed because one or more lines are too long

16
public/docfx.min.css vendored Executable file

File diff suppressed because one or more lines are too long

7
public/docfx.min.css.map Executable file

File diff suppressed because one or more lines are too long

102
public/docfx.min.js vendored Executable file

File diff suppressed because one or more lines are too long

7
public/docfx.min.js.map Executable file

File diff suppressed because one or more lines are too long

52
public/erDiagram-09d1c15f-DTEA6AXO.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10
public/es-NKDSMAKG.min.js vendored Executable file

File diff suppressed because one or more lines are too long

7
public/es-NKDSMAKG.min.js.map Executable file

File diff suppressed because one or more lines are too long

5
public/flowDiagram-b222e15a-KHGBC5KH.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
import{g as i,h as p}from"./chunk-LUX5WYVM.min.js";import"./chunk-5FWMXAFW.min.js";import{a as m,b as o}from"./chunk-CA32PY7O.min.js";import"./chunk-N4EFGQ5G.min.js";import"./chunk-LXB37CFX.min.js";import"./chunk-RNO6SWHZ.min.js";import"./chunk-K2MRC2FE.min.js";import{J as l,b as a,c as s,ob as e}from"./chunk-YEACHCAA.min.js";import{d as t}from"./chunk-XUHMPXWX.min.js";var g=t(a(),1),n=t(s(),1),c=t(l(),1);var y={parser:m,db:o,renderer:i,styles:p,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,e({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),i.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{y as diagram};
//# sourceMappingURL=flowDiagram-v2-13329dc7-7HQDDRUE.min.js.map

View file

@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../node_modules/mermaid/dist/flowDiagram-v2-13329dc7.js"],
"sourcesContent": ["import { p as parser, f as flowDb } from \"./flowDb-c1833063.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-483fbfea.js\";\nimport { p as setConfig } from \"./mermaid-6dc72991.js\";\nimport \"d3\";\nimport \"dagre-d3-es/src/graphlib/index.js\";\nimport \"./index-01f381cb.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-066a5561.js\";\nimport \"./createText-ca0c5216.js\";\nimport \"mdast-util-from-markdown\";\nimport \"ts-dedent\";\nimport \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport \"khroma\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n setConfig({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n flowRendererV2.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-2\");\n }\n};\nexport {\n diagram\n};\n"],
"mappings": "oXAcA,IAAAA,EAAO,SACPC,EAAO,SACPC,EAAO,SAKP,IAAMC,EAAU,CACd,OAAAC,EACA,GAAIC,EACJ,SAAUC,EACV,OAAQC,EACR,KAAOC,GAAQ,CACRA,EAAI,YACPA,EAAI,UAAY,CAAC,GAEnBA,EAAI,UAAU,oBAAsBA,EAAI,oBACxCC,EAAU,CAAE,UAAW,CAAE,oBAAqBD,EAAI,mBAAoB,CAAE,CAAC,EACzEF,EAAe,QAAQE,EAAI,SAAS,EACpCH,EAAO,MAAM,EACbA,EAAO,OAAO,OAAO,CACvB,CACF",
"names": ["import_dayjs", "import_sanitize_url", "import_dompurify", "diagram", "parser$1", "flowDb", "flowRendererV2", "flowStyles", "cnf", "setConfig"]
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

258
public/ganttDiagram-b62c793e-AG7E44IT.min.js vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
public/infoDiagram-94cd232f-QDJEABPW.min.js vendored Executable file
View file

@ -0,0 +1,8 @@
import{Ga as N,J as q,b as V,c as X,db as R,rb as z}from"./chunk-YEACHCAA.min.js";import{d as O}from"./chunk-XUHMPXWX.min.js";var et=O(V(),1),it=O(X(),1);var st=O(q(),1);var P=function(){var a=function(u,t,e,i){for(e=e||{},i=u.length;i--;e[u[i]]=t);return e},f=[6,9,10],_={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,i,s,r,n,d){switch(n.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var i=new Error(t);throw i.hash=e,i}},parse:function(t){var e=this,i=[0],s=[],r=[null],n=[],d=this.table,L="",v=0,T=0,Y=2,F=1,D=n.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;n.push(I);var M=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function B(){var y;return y=s.pop()||o.lex()||F,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,m={},b,c,j,S;;){if(g=i[i.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=B()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>Y&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`:
`+o.showPosition()+`
Expecting `+S.join(", ")+", got '"+(this.terminals_[l]||l)+"'":A="Parse error on line "+(v+1)+": Unexpected "+(l==F?"end of input":"'"+(this.terminals_[l]||l)+"'"),this.parseError(A,{text:o.match,token:this.terminals_[l]||l,line:o.yylineno,loc:I,expected:S})}if(h[0]instanceof Array&&h.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+l);switch(h[0]){case 1:i.push(l),r.push(o.yytext),n.push(o.yylloc),i.push(h[1]),l=null,T=o.yyleng,L=o.yytext,v=o.yylineno,I=o.yylloc;break;case 2:if(c=this.productions_[h[1]][1],m.$=r[r.length-c],m._$={first_line:n[n.length-(c||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(c||1)].first_column,last_column:n[n.length-1].last_column},M&&(m._$.range=[n[n.length-(c||1)].range[0],n[n.length-1].range[1]]),w=this.performAction.apply(m,[L,T,v,p.yy,h[1],r,n].concat(D)),typeof w<"u")return w;c&&(i=i.slice(0,-1*c*2),r=r.slice(0,-1*c),n=n.slice(0,-1*c)),i.push(this.productions_[h[1]][0]),r.push(m.$),n.push(m._$),j=d[i[i.length-2]][i[i.length-1]],i.push(j);break;case 3:return!0}}return!0}},k=function(){var u={EOF:1,parseError:function(e,i){if(this.yy.parser)this.yy.parser.parseError(e,i);else throw new Error(e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===s.length?this.yylloc.first_column:0)+s[s.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
`+e+"^"},test_match:function(t,e){var i,s,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),s=t[0].match(/(?:\r\n?|\n).*/g),s&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var n in r)this[n]=r[n];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,e,i,s;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),n=0;n<r.length;n++)if(i=this._input.match(this.rules[r[n]]),i&&(!e||i[0].length>e[0].length)){if(e=i,s=n,this.options.backtrack_lexer){if(t=this.test_match(i,r[n]),t!==!1)return t;if(this._backtrack){e=!1;continue}else return!1}else if(!this.options.flex)break}return e?(t=this.test_match(e,r[s]),t!==!1?t:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,i,s,r){switch(s){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return u}();_.lexer=k;function x(){this.yy={}}return x.prototype=_,_.Parser=x,new x}();P.parser=P;var C=P,U={info:!1},$=U.info,G=a=>{$=a},H=()=>$,J=()=>{$=U.info},K={clear:J,setInfo:G,getInfo:H},Q=(a,f,_)=>{N.debug(`rendering info diagram
`+a);let k=z(f);R(k,100,400,!0),k.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${_}`)},W={draw:Q},rt={parser:C,db:K,renderer:W};export{rt as diagram};
//# sourceMappingURL=infoDiagram-94cd232f-QDJEABPW.min.js.map

Some files were not shown because too many files have changed in this diff Show more