diff --git a/NEWS.md b/NEWS.md
index ad2d09b..7095d7b 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -4,9 +4,19 @@ is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## development
+### Added
+- Add navigation bar and sidebar links under *Reference* for exported package
+ functions and `S3` methods.
+- Enable automatic registration for `.vue` components in
+ `/docs/.vuepress/components/`.
+- Add component `Markdown.vue` for rendering reusable markdown.
+- Add content for functions `powerly`, `validate`, and `generate_model`.
+- Add content for `S3` methods `plot.Method`, `plot.Validation`, and `summary`.
+
### Changed
- Refactor styles and improve readability for narrow screens.
- Replace incorrect feature image for *Step 1*.
+- Update `CSS` breakpoints for mobile views.
## 1.8.3 - 2022-08-26
### Added
diff --git a/docs/.vuepress/components/Markdown.vue b/docs/.vuepress/components/Markdown.vue
new file mode 100644
index 0000000..9cc297d
--- /dev/null
+++ b/docs/.vuepress/components/Markdown.vue
@@ -0,0 +1,30 @@
+
diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts
index 031ccdd..be94b53 100644
--- a/docs/.vuepress/config.ts
+++ b/docs/.vuepress/config.ts
@@ -3,6 +3,11 @@ import { defaultTheme } from "vuepress";
import { sidebar, navbar, head } from "./configs";
import { shikiPlugin } from "@vuepress/plugin-shiki";
import { katexPlugin } from "@renovamen/vuepress-plugin-katex";
+import { getDirname, path } from "@vuepress/utils";
+import { registerComponentsPlugin } from "@vuepress/plugin-register-components";
+
+// Get directory name.
+const __dirname = getDirname(import.meta.url);
/**
* VuePress config.
@@ -33,6 +38,11 @@ export default defineUserConfig({
}),
// LaTeX plugin.
- katexPlugin()
+ katexPlugin(),
+
+ // Register components automatically.
+ registerComponentsPlugin({
+ componentsDir: path.resolve(__dirname, './components')
+ })
]
})
diff --git a/docs/.vuepress/configs/navbar.ts b/docs/.vuepress/configs/navbar.ts
index 105f688..d9441a7 100644
--- a/docs/.vuepress/configs/navbar.ts
+++ b/docs/.vuepress/configs/navbar.ts
@@ -7,11 +7,52 @@ import type { NavbarConfig } from '@vuepress/theme-default';
export const navbar: NavbarConfig = [
{
text: "Tutorials",
- link: "/tutorial/"
+ link: "/tutorial/",
},
{
text: "Reference",
- link: "/reference/"
+ children: [
+ {
+ text: "Functions",
+ children: [
+ {
+ text: "generate_model",
+ link: "/reference/function/generate-model.md",
+ activeMatch: 'function/generate-model.*$',
+ },
+ {
+ text: "powerly",
+ link: "/reference/function/powerly.md",
+ activeMatch: 'function/powerly.*$',
+ },
+ {
+ text: "validate",
+ link: "/reference/function/validate.md",
+ activeMatch: 'function/validate.*$',
+ }
+ ]
+ },
+ {
+ text: "Methods",
+ children: [
+ {
+ text: "plot.Method",
+ link: "/reference/method/plot-method.md",
+ activeMatch: 'method/plot-method.*$'
+ },
+ {
+ text: "plot.Validation",
+ link: "/reference/method/plot-validation.md",
+ activeMatch: 'method/plot-validation.*$'
+ },
+ {
+ text: "summary",
+ link: "/reference/method/summary.md",
+ activeMatch: 'method/summary.*$'
+ }
+ ]
+ }
+ ]
},
{
text: "Publications",
diff --git a/docs/.vuepress/configs/sidebar.ts b/docs/.vuepress/configs/sidebar.ts
index 56e73fe..e41874c 100644
--- a/docs/.vuepress/configs/sidebar.ts
+++ b/docs/.vuepress/configs/sidebar.ts
@@ -28,7 +28,46 @@ export const sidebar: SidebarConfig = {
},
],
"/reference/": [
- "/reference/index.md",
+ {
+ text: "Reference",
+ link: "/reference/index.md"
+ },
+ {
+ text: 'Functions',
+ collapsible: false,
+ children: [
+ {
+ text: "generate_model",
+ link: "/reference/function/generate-model.md"
+ },
+ {
+ text: "powerly",
+ link: "/reference/function/powerly.md"
+ },
+ {
+ text: "validate",
+ link: "/reference/function/validate.md"
+ }
+ ]
+ },
+ {
+ text: 'Methods',
+ collapsible: true,
+ children: [
+ {
+ text: "plot.Method",
+ link: "/reference/method/plot-method.md"
+ },
+ {
+ text: "plot.Validation",
+ link: "/reference/method/plot-validation.md"
+ },
+ {
+ text: "summary",
+ link: "/reference/method/summary.md"
+ }
+ ]
+ }
],
"/publication/": [
"/publication/index.md",
diff --git a/docs/.vuepress/styles/general.scss b/docs/.vuepress/styles/general.scss
index ca6350d..2fad7bb 100644
--- a/docs/.vuepress/styles/general.scss
+++ b/docs/.vuepress/styles/general.scss
@@ -8,6 +8,14 @@ table {
font-size: 0.875rem;
}
+// Code highlighting in lists.
+li {
+ a > code {
+ color: var(--c-text-accent);
+ font-weight: 600;
+ }
+}
+
// Image zooming overrides.
.medium-zoom-image, video {
border-radius: 0.5rem;
diff --git a/docs/.vuepress/styles/index.scss b/docs/.vuepress/styles/index.scss
index 76babc2..78ab482 100644
--- a/docs/.vuepress/styles/index.scss
+++ b/docs/.vuepress/styles/index.scss
@@ -5,3 +5,4 @@
// Imports specific to pages.
@import "pages/home";
@import "pages/tutorial";
+@import "pages/reference";
diff --git a/docs/.vuepress/styles/mixins.scss b/docs/.vuepress/styles/mixins.scss
index 88813ab..e2bc99d 100644
--- a/docs/.vuepress/styles/mixins.scss
+++ b/docs/.vuepress/styles/mixins.scss
@@ -10,3 +10,20 @@
@mixin material_shadow_lg {
box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}
+
+@mixin table_sm {
+ table {
+ td {
+ line-height: 1.7;
+
+ a > code {
+ color: var(--c-text-accent);
+ font-weight: 600;
+ }
+ }
+
+ @media only screen and (max-width: 419px), (max-width: 428px), (max-width: 517px) {
+ font-size: 0.8rem;
+ }
+ }
+}
diff --git a/docs/.vuepress/styles/pages/reference.scss b/docs/.vuepress/styles/pages/reference.scss
new file mode 100644
index 0000000..ba37d96
--- /dev/null
+++ b/docs/.vuepress/styles/pages/reference.scss
@@ -0,0 +1,23 @@
+// Tutorial page styles.
+
+// Imports.
+@import "../mixins";
+
+// Tutorial page container.
+.theme-container.page-reference {
+ @include table_sm;
+
+
+ .showcase-image {
+ p {
+ font-weight: bold;
+ }
+
+ // Adjustments for screens larger than 959px.
+ @media only screen and (min-width: 959px) {
+ img {
+ width: 90%;
+ }
+ }
+ }
+}
diff --git a/docs/.vuepress/styles/pages/tutorial.scss b/docs/.vuepress/styles/pages/tutorial.scss
index 05547d6..8ad2f3f 100644
--- a/docs/.vuepress/styles/pages/tutorial.scss
+++ b/docs/.vuepress/styles/pages/tutorial.scss
@@ -5,16 +5,7 @@
// Tutorial page container.
.theme-container.page-tutorial {
- table {
- td {
- line-height: 1.7;
-
- a > code {
- color: var(--c-text-accent);
- font-weight: 600;
- }
- }
- }
+ @include table_sm;
ol {
li {
@@ -43,8 +34,6 @@
// Adjustments for screens smaller than 419px.
// Additional break points are used based on the content.
@media only screen and (max-width: 419px), (max-width: 428px), (max-width: 517px) {
- font-size: 0.8rem;
-
td, th {
&:nth-child(3) {
display: none;
diff --git a/docs/reference/function/generate-model.md b/docs/reference/function/generate-model.md
new file mode 100644
index 0000000..51fdcaa
--- /dev/null
+++ b/docs/reference/function/generate-model.md
@@ -0,0 +1,103 @@
+---
+pageClass: page-reference
+---
+
+# Generate True Model Parameters
+
+## Description
+
+Generate matrices of true model parameters for the supported true models. These
+matrices are intended to passed to the `model_matrix` argument of the
+[`powerly`](/reference/function/powerly) function.
+
+## Usage
+
+```r:no-line-numbers
+generate_model(type, ...)
+```
+
+## Arguments
+
+| Name | Description |
+| :----: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `type` | Character string representing the type of true model. See the [**_True Models_**](/reference/function/generate-model.md#true-models) section for possible values. |
+| `...` | Required arguments used for the generation of the true model. See the [**_True Models_**](/reference/function/generate-model.md#true-models) section for the arguments required for each type of true model. |
+
+## Return
+
+A matrix containing the model parameters.
+
+## True Models
+
+### Gaussian Graphical Model
+
+**Type:** `ggm`
+
+**`...` arguments:**
+
+| Name | Description |
+| :--------: | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `nodes` | A single positive integer representing the number of nodes in the network (e.g., `10`). |
+| `density` | A single numerical value indicating the density of the network (e.g., `0.4`). |
+| `positive` | A single numerical value representing the proportion of positive edges in the network (e.g., `0.9` for $90\%$ positive edges). |
+| `range` | A length two numerical value indicating the uniform interval from where to sample values for the partial correlations coefficients (e.g., `c(0.5, 1)`). |
+| `constant` | A single numerical value representing the constant described by [Yin and Li (2011)](https://doi.org/10.1214%2F11-AOAS494). |
+
+_**Note.** For more information see the arguments of the
+[`genGGM`](https://rdrr.io/cran/bootnet/man/genGGM.html) function in the
+[`bootnet`](https://CRAN.R-project.org/package=bootnet) package._
+
+**Compatible performance measures:**
+
+- `sen` (sensitivity)
+- `spe` (specificity)
+- `mcc` (Matthews correlation)
+- `rho` (Pearson correlation)
+
+See the [**_Performance
+Measures_**](/reference/function/powerly.md#performance-measures) section for
+the [`powerly`](/reference/function/powerly) function for more information on
+the compatible performance measures.
+
+**Examples**
+
+The example below shows how to generate a true network model based on a random
+architecture ([Barabási & Albert,
+1999](https://doi.org/10.1126/science.286.5439.509)) with $10$ nodes, $90\%$
+positive edge weights, and an edge density of $0.4$.
+
+```r
+# Generate true model.
+true_model <- generate_model(
+ type = "ggm",
+ nodes = 10,
+ density = 0.4,
+ positive = 0.9
+)
+
+# Load the `qgraph` package.
+library(qgraph)
+
+# Plot the model.
+qgraph(true_model)
+```
+
+## See Also
+
+Functions [`powerly`](/reference/function/powerly) and
+[`validate`](/reference/function/validate).
+
+## References
+
+
+
+Barabási, A.-L., & Albert, R. (1999). Emergence of Scaling in Random Networks.
+*Science*, 286(5439), 509–512.
+[https://doi.org/10.1126/science.286.5439.509](https://doi.org/10.1126/science.286.5439.509)
+
+
+Yin, J., & Li, H. (2011). A sparse conditional Gaussian graphical model for
+analysis of genetical genomics data. *The Annals of Applied Statistics*, 5(4),
+2630–2650. [https://doi.org/10.1214/11-AOAS494](https://doi.org/10.1214/11-AOAS494)
+
+
diff --git a/docs/reference/function/powerly.md b/docs/reference/function/powerly.md
new file mode 100644
index 0000000..6033f54
--- /dev/null
+++ b/docs/reference/function/powerly.md
@@ -0,0 +1,230 @@
+---
+pageClass: page-reference
+---
+
+# Perform Sample Size Analysis
+
+## Description
+
+Run an iterative three-step Monte Carlo method and return the sample sizes
+required to obtain a certain value for a performance measure of interest (e.g.,
+sensitivity) given a set of hypothesized true model parameters (e.g., an edge
+weights matrix).
+
+## Usage
+
+```r:no-line-numbers
+powerly(
+ range_lower,
+ range_upper,
+ samples = 30,
+ replications = 30,
+ model = "ggm",
+ ...,
+ model_matrix = NULL,
+ measure = "sen",
+ statistic = "power",
+ measure_value = 0.6,
+ statistic_value = 0.8,
+ monotone = TRUE,
+ increasing = TRUE,
+ spline_df = NULL,
+ solver_type = "quadprog",
+ boots = 10000,
+ lower_ci = 0.025,
+ upper_ci = 0.975,
+ tolerance = 50,
+ iterations = 10,
+ cores = NULL,
+ backend_type = NULL,
+ save_memory = FALSE,
+ verbose = TRUE
+)
+```
+
+## Arguments
+
+| Name | Description |
+| :---------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `range_lower` | A single positive integer representing the lower bound of the candidate sample size range. |
+| `range_upper` | A single positive integer representing the upper bound of the candidate sample size range. |
+| `samples` | A single positive integer representing the number of sample sizes to select from the candidate sample size range. |
+| `replications` | A single positive integer representing the number of Monte Carlo replications to perform for each sample size selected from the candidate range. |
+| `model` | A character string representing the type of true model to find a sample size for. See the [**_True Models_**](/reference/function/generate-model.md#true-models) section for the function [`generate_model`](/reference/function/generate-model) for possible values. Defaults to `"ggm"`. |
+| `...` | Required arguments used for the generation of the true model. See the [**_True Models_**](/reference/function/generate-model.md#true-models) section for the function [`generate_model`](/reference/function/generate-model) for the arguments required for each true model. |
+| `model_matrix` | A square matrix representing the true model. See the [**_True Models_**](/reference/function/generate-model.md#true-models) section for the function [`generate_model`](/reference/function/generate-model) for what this matrix should look like depending on the true model selected. |
+| `measure` | A character string representing the type of performance measure of interest. Possible values are `"sen"` (i.e., sensitivity; the default), `"spe"` (i.e., specificity), `"mcc"` (i.e., Matthews correlation), and `"rho"` (i.e., Pearson correlation). See the [**_Performance Measures_**](/reference/function/powerly.md#performance-measures) section for the measures available for each type of true model supported. |
+| `statistic` | A character string representing the type of statistic to be computed on the values obtained for the performance measures. Possible values are `"power"` (the default). |
+| `measure_value` | A single numerical value representing the desired value for the performance measure of interest. The default is `0.6` (i.e., for the `measure = "sen"`). See the [**_Performance Measures_**](/reference/function/powerly.md#performance-measures) section for the range of values allowed for each performance measure. |
+| `statistic_value` | A single numerical value representing the desired value for the statistic of interest. The default is `0.8` (i.e., for the `statistic = "power"`). See the [**_Statistics_**](/reference/function/powerly.md#statistics) section for the range of values allowed for each statistic. |
+| `monotone` | A logical value indicating whether a monotonicity assumption should be placed on the values of the performance measure. The default is `TRUE` meaning that the performance measure changes as a function of sample size (i.e., either by increasing or decreasing as the sample size goes up). The alternative `FALSE` indicates that the performance measure it is not assumed to change as a function a sample size. |
+| `increasing` | A logical value indicating whether the performance measure is assumed to follow a non-increasing or non-decreasing trend. `TRUE` (the default) indicates a non-decreasing trend (i.e., the performance measure increases as the sample size goes up). `FALSE` indicates a non-increasing trend (i.e., the performance measure decreases as the sample size goes up). |
+| `spline_df` | A vector of positive integers representing the degrees of freedom considered for constructing the spline basis, or `NULL`. The best degree of freedom is selected based on Leave One Out Cross-Validation. If `NULL` (the default) is provided, a vector of degrees of freedom is automatically created with all integers between `3` and `20`. |
+| `solver_type` | A character string representing the type of the quadratic solver used for estimating the spline coefficients. Possible values are `"quadprog"` (the default) and `"osqp"`. Currently, the "`osqp`" solver does not play nicely with `R`'s [`parallel`](https://stat.ethz.ch/R-manual/R-devel/library/parallel/doc/parallel.pdf) package and cannot be used when the `powerly` function is ran in parallel. |
+| `boots` | A positive integer representing the number of bootstrap runs to perform on the matrix of performance measures in order to obtained bootstrapped values for the statistic of interest. The default is `10000`. |
+| `lower_ci` | A single numerical value indicating the lower bound for the confidence interval to be computed on the bootstrapped statistics. The default is `0.025` (i.e., $2.5\%$). |
+| `upper_ci` | A single numerical value indicating the upper bound for the confidence to be computed on the bootstrapped statistics. The default is `0.975` (i.e., $97.5\%$). |
+| `tolerance` | A single positive integer representing the width at the candidate sample size range at which the algorithm is considered to have converge. The default is `50`, meaning that the algorithm will stop running when the difference between the upper and the lower bound of the candidate range shrinks to $50$ sample sizes. |
+| `iterations` | A single positive integer representing the number of iterations the algorithm is allowed to run. The default is `10`. |
+| `cores` | A single positive positive integer representing the number of cores to use for running the algorithm in parallel, or `NULL`. If `NULL` (the default) the algorithm will run sequentially. |
+| `backend_type` | A character string indicating the type of cluster to create for running the algorithm in parallel, or `NULL`. Possible values are `"psock"` and `"fork"`. If `NULL` the backend is determined based on the computer architecture (i.e., `fork` for Unix and MacOS and `psock` for Windows). |
+| `save_memory` | A logical value indicating whether to save memory by only storing the results for the last iteration of the method. The default `TRUE` indicates that only the last iteration should be saved. |
+| `verbose` | A logical value indicating whether information about the status of the algorithm should be printed while running. The default is `TRUE`. |
+
+## Details
+
+This function represents the implementation of the method introduced by
+[Constantin et al. (2021)](https://psyarxiv.com/j5v7u) for performing a priori
+sample size analysis (i.e., currently in the context of network models). The
+method takes the form of a three-step recursive algorithm designed to find an
+optimal sample size value given a model specification and an outcome measure of
+interest (e.g., sensitivity). It starts with a Monte Carlo simulation step for
+computing the outcome of interest at various sample sizes. It continues with a
+monotone non-decreasing curve-fitting step for interpolating the outcome. The
+final step employs a stratified bootstrapping scheme to account for the
+uncertainty around the recommendation provided. The method runs the three steps
+iteratively until the candidate sample size range used for the search shrinks
+below a specified value.
+
+## Return
+
+An [`R6::R6Class`](https://adv-r.hadley.nz/r6.html) instance of `Method` class
+that contains the results for each step of the method for the last and previous
+iterations. Suppose that the output of the `powerly` function is stored in an
+`R` object called `results`. Specific fields of the `Method` class can be
+accessed from the instance `results` as `results$field`.
+
+The following main fields can be accessed:
+- `$duration`: The time in seconds elapsed during the method run.
+- `$iteration`: The number of iterations performed.
+- `$converged`: Whether the method converged.
+- `$previous`: The results during the previous iteration.
+- `$range`: The candidate sample size range.
+- `$step_1`: The results for *Step 1*.
+- `$step_2`: The results for *Step 2*.
+- `$step_3`: The results for *Step 3*.
+- `$recommendation`: The sample size recommendation(s).
+
+The `plot` [`S3` method](https://adv-r.hadley.nz/oo.html) can be called on the
+return value to visualize the results. See the method
+[`plot.Method`](/reference/method/plot-method) for more information on how to
+plot the method results. Briefly, the results for each individual step can be
+plotted as:
+
+```r:no-line-numbers
+# For Step 1.
+plot(results, step = 1)
+
+# For Step 2.
+plot(results, step = 2)
+
+# For Step 3.
+plot(results, step = 3)
+```
+
+## Performance Measures
+
+| Performance Measure | Symbol | Lower | Upper | Compatible Models |
+| :------------------- | :----: | ------: | -----: | :---------------: |
+| Sensitivity | `sen` | `0.00` | `1.00` | `ggm` |
+| Specificity | `spe` | `0.00` | `1.00` | `ggm` |
+| Matthews correlation | `mcc` | `-1.00` | `1.00` | `ggm` |
+| Pearson correlation | `rho` | `-1.00` | `1.00` | `ggm` |
+
+See the [**_True Models_**](/reference/function/generate-model.md#true-models)
+section for the [`generate_model`](/reference/function/generate-model) function
+for more information on the compatible true models.
+
+## Statistics
+
+| Statistic | Symbol | Lower | Upper |
+| :-------- | :-----: | -----: | -----: |
+| Power | `power` | `0.00` | `1.00` |
+
+## Examples
+
+```r
+# Suppose we want to find the sample size for observing a sensitivity of `0.6`
+# with a probability of `0.8`, for a GGM true model consisting of `10` nodes
+# with an edge density of `0.4`.
+
+# We can run the method for an arbitrarily generated true model that matches
+# those characteristics (i.e., number of nodes and edge density).
+results <- powerly(
+ range_lower = 300,
+ range_upper = 1000,
+ samples = 40,
+ replications = 40,
+ measure = "sen",
+ statistic = "power",
+ measure_value = .6,
+ statistic_value = .8,
+ model = "ggm",
+ nodes = 10,
+ density = .4,
+ cores = 4,
+ verbose = TRUE
+)
+
+# Or we omit the `nodes` and `density` arguments and specify directly the edge
+# weights matrix via the `model_matrix` argument.
+
+# To get a matrix of edge weights we can use the `generate_model()` function.
+true_model <- generate_model(type = "ggm", nodes = 10, density = .4)
+
+# Then, supply the true model to the algorithm directly.
+results <- powerly(
+ range_lower = 300,
+ range_upper = 1000,
+ samples = 40,
+ replications = 40,
+ measure = "sen",
+ statistic = "power",
+ measure_value = .6,
+ statistic_value = .8,
+ model = "ggm",
+ model_matrix = true_model, # Note the change.
+ cores = 4,
+ verbose = TRUE
+)
+
+# To visualize the results, we can use the `plot` S3 method and indicate the
+# step that we want to plot.
+plot(results, step = 1)
+plot(results, step = 2)
+plot(results, step = 3)
+
+# To see a summary of the results, we can use the `summary` S3 method.
+summary(results)
+```
+
+## See Also
+
+Functions [`generate_model`](/reference/function/generate-model) and
+[`validate`](/reference/function/validate).
+
+`S3` methods [`plot.Method`](/reference/method/plot-method) and
+[`summary`](/reference/method/summary).
+
+## Requests
+
+If you would like to support a new model, performance measure, or statistic,
+please open a pull request on GitHub at
+[github.com/mihaiconstantin/powerly/pulls](https://github.com/mihaiconstantin/powerly/pulls).
+
+To request a new model, performance measure, or statistic, please submit your
+request at
+[github.com/mihaiconstantin/powerly/issues](https://github.com/mihaiconstantin/powerly/issues).
+If possible, please also include references discussing the topics you are
+requesting. Alternatively, you can get in touch at `mihai at mihaiconstantin dot
+com`.
+
+## References
+
+
+
+Constantin, M., Schuurman, N. K., & Vermunt, J. (2021). A General Monte Carlo
+Method for Sample Size Analysis in the Context of Network Models.
+[https://doi.org/10.31234/osf.io/j5v7u](https://doi.org/10.31234/osf.io/j5v7u)
+
+
diff --git a/docs/reference/function/validate.md b/docs/reference/function/validate.md
new file mode 100644
index 0000000..506fe6a
--- /dev/null
+++ b/docs/reference/function/validate.md
@@ -0,0 +1,100 @@
+---
+pageClass: page-reference
+---
+
+# Validate a Sample Size Analysis
+
+## Description
+
+This function can be used to validate the recommendation obtained from a sample
+size analysis.
+
+## Usage
+
+```r:no-line-numbers
+validate(
+ method,
+ replications = 3000,
+ cores = NULL,
+ backend_type = NULL,
+ verbose = TRUE
+)
+```
+
+## Arguments
+
+| Name | Description |
+| :------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `method` | An object of class `Method` obtained by running the function [`powerly`](/reference/function/powerly). |
+| `replications` | A single positive integer representing the number of Monte Carlo simulations to perform for the recommended sample size. The default is `1000`. Whenever possible, a value of `10000` should be preferred for a higher accuracy of the validation results. |
+| `cores` | A single positive positive integer representing the number of cores to use for running the validation in parallel, or `NULL`. If `NULL` (the default) the validation will run sequentially. |
+| `backend_type` | A character string indicating the type of cluster to create for running the validation in parallel, or `NULL`. Possible values are `"psock"` and `"fork"`. If `NULL` the backend is determined based on the computer architecture (i.e., `fork` for Unix and MacOS and `psock` for Windows). |
+| `verbose` | A logical value indicating whether information about the status of the validation should be printed while running. The default is `TRUE`. |
+
+## Details
+
+The sample sizes used during the validation procedure is automatically extracted
+from the `method` argument.
+
+## Return
+
+An [`R6::R6Class`](https://adv-r.hadley.nz/r6.html) instance of `Validation`
+class that contains the results of the validation. Suppose the instance is
+stored in a variable named `validation`, then specific fields of the
+`Validation` class can be accessed as `validation$field`.
+
+The following main fields can be accessed:
+- `$sample`: The sample size used for the validation.
+- `$measures`: The performance measures observed during validation.
+- `$statistic`: The statistic computed on the performance measures.
+- `$percentile_value`: The performance measure value at the desired percentile.
+- `$validator`: An [`R6::R6Class`](https://adv-r.hadley.nz/r6.html) instance of
+ `StepOne` class.
+
+The `plot` [`S3` method](https://adv-r.hadley.nz/oo.html) can be called on the
+return value to visualize the validation results (i.e., see the
+[`plot.Validation`](/reference/method/plot-validation) method for more
+information on how to plot the validation results), e.g.:
+
+```r:no-line-numbers
+# Plot validation results.
+plot(validation)
+```
+
+## Examples
+
+```r
+# Perform a sample size analysis.
+results <- powerly(
+ range_lower = 300,
+ range_upper = 1000,
+ samples = 40,
+ replications = 40,
+ measure = "sen",
+ statistic = "power",
+ measure_value = .6,
+ statistic_value = .8,
+ model = "ggm",
+ nodes = 10,
+ density = .4,
+ cores = 4,
+ verbose = TRUE
+)
+
+# Validate the recommendation obtained during the analysis.
+validation <- validate(results, cores = 2)
+
+# Plot the validation results.
+plot(validation)
+
+# To see a summary of the validation, we can use the `summary` S3 method.
+summary(validation)
+```
+
+## See Also
+
+Functions [`generate_model`](/reference/function/generate-model) and
+[`powerly`](/reference/function/powerly).
+
+`S3` methods [`plot.Validation`](/reference/method/plot-validation) and
+[`summary`](/reference/method/summary).
diff --git a/docs/reference/index.md b/docs/reference/index.md
index 661bb46..65439dd 100644
--- a/docs/reference/index.md
+++ b/docs/reference/index.md
@@ -4,4 +4,33 @@ pageClass: page-reference
# Reference
-*Content to be added.*
+In this section you can find information about the functions and methods
+available in the `powerly` package. The information in this section is grouped
+in two categories, namely, *functions* and *methods*.
+
+## Functions
+
+This category refers to the user exported functions, i.e., the functions that
+encapsulate the functionality provided by `powerly` (e.g., running a sample size
+analysis). The following functions are currently available and documented:
+
+- [`generate_model`](/reference/function/generate-model): for generating true
+ model parameters
+- [`powerly`](/reference/function/powerly): for running a sample size analysis
+- [`validate`](/reference/function/validate): for validating the results of a
+ sample size analysis
+
+## Methods
+
+Methods (i.e., [`S3`](https://adv-r.hadley.nz/oo.html)) refer to built-in `R`
+functions that can operate on the output provided by the functions exported by
+the `powerly` package. Two types of [`S3`
+methods](https://adv-r.hadley.nz/oo.html) are currently implemented, i.e.,
+`plot` and `summary`:
+
+- [`plot.Method`](/reference/method/plot-method): for plotting the results of a
+ sample size analysis
+- [`plot.Validation`](/reference/method/plot-validation): for plotting the
+ results of a sample size analysis validation
+- [`summary`](/reference/method/summary): for summarizing the results of a
+ sample size analysis or validation
diff --git a/docs/reference/method/plot-method.md b/docs/reference/method/plot-method.md
new file mode 100644
index 0000000..30ef501
--- /dev/null
+++ b/docs/reference/method/plot-method.md
@@ -0,0 +1,72 @@
+---
+pageClass: page-reference
+---
+
+# Plot Method Results
+
+## Description
+
+The `plot.Method` [`S3` method](https://adv-r.hadley.nz/oo.html) plot the
+results for each step of the method.
+
+## Usage
+
+```r:no-line-numbers
+plot(
+ x,
+ step = 3,
+ last = TRUE,
+ save = FALSE,
+ path = NULL,
+ width = 14,
+ height = 10,
+ ...
+)
+```
+
+## Arguments
+
+| Name | Description |
+| :------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `x` | An object instance of class `Method` produced by the function [`powerly`](/reference/function/powerly). |
+| `step` | A single positive integer representing the method step that should be plotted. Possibles values are `1` for the first step, `2` for the second step, and `3` for the third step of the method. |
+| `last` | A logical value indicating whether the last iteration of the method should be plotted. The default is `TRUE`, indicating that the last iteration should be plotted. |
+| `save` | A logical value indicating whether the plot should be saved to a file on disk. |
+| `path` | A character string representing the path (i.e., including the filename and extension) where the plot should be saved on disk. If `NULL`, the plot will be saved in the current working directory with a filename generated based on the current system time and a `.pdf` extension. See [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html) for supported file types. |
+| `width` | A single numerical value representing the desired plot width. The default unit is inches (i.e., set by [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html)), unless overridden by providing the `units` argument via `...`. |
+| `height` | A single numerical value representing the desired plot height. The default unit is inches (i.e., set by [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html)), unless overridden by providing the `units` argument via `...`. |
+| `...` | Optional arguments to be passed to the [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html) function. |
+
+## Return
+
+An [`ggplot2::ggplot`](https://ggplot2.tidyverse.org/) object containing the
+plot for the requested step of the method. The plot object returned can be
+further modified and also contains the
+[`patchwork`](https://patchwork.data-imaginist.com/) class applied. Example
+plots for each step of the method are shown below.
+
+
+
+ Step 1: Monte Carlo Replications
+
+
+
+
+
+
+ Step 2: Curve Fitting
+
+
+
+
+
+
+ Step 3: Bootstrapping
+
+
+
+
+## See Also
+
+`S3` method [`summary`](/reference/method/summary) and function
+[`powerly`](/reference/function/powerly).
diff --git a/docs/reference/method/plot-validation.md b/docs/reference/method/plot-validation.md
new file mode 100644
index 0000000..48cc781
--- /dev/null
+++ b/docs/reference/method/plot-validation.md
@@ -0,0 +1,56 @@
+---
+pageClass: page-reference
+---
+
+# Plot Validation Results
+
+## Description
+
+The `plot.Validation` [`S3` method](https://adv-r.hadley.nz/oo.html) plots the
+results of a sample size analysis validation.
+
+## Usage
+
+```r:no-line-numbers
+plot(
+ x,
+ save = FALSE,
+ path = NULL,
+ width = 14,
+ height = 10,
+ bins = 20,
+ ...
+)
+```
+
+## Arguments
+
+| Name | Description |
+| :------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `x` | An object instance of class `Validation` produced by the function [`validate`](/reference/function/validate). |
+| `save` | A logical value indicating whether the plot should be saved to a file on disk. |
+| `path` | A character string representing the path (i.e., including the filename and extension) where the plot should be saved on disk. If `NULL`, the plot will be saved in the current working directory with a filename generated based on the current system time and a `.pdf` extension. See [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html) for supported file types. |
+| `width` | A single numerical value representing the desired plot width. The default unit is inches (i.e., set by [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html)), unless overridden by providing the `units` argument via `...`. |
+| `height` | A single numerical value representing the desired plot height. The default unit is inches (i.e., set by [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html)), unless overridden by providing the `units` argument via `...`. |
+| `bins` | A single positive integer passed to [`ggplot2::geom_histogram`](https://ggplot2.tidyverse.org/reference/geom_histogram.html) representing the number of bins to use for the histogram plot. The default value is `20`. |
+| `...` | Optional arguments to be passed to [`ggplot2::ggsave`](https://ggplot2.tidyverse.org/reference/ggsave.html). |
+
+## Return
+
+An [`ggplot2::ggplot`](https://ggplot2.tidyverse.org/) object containing the
+plot for the validation procedure. The plot object returned can be further
+modified and also contains the
+[`patchwork`](https://patchwork.data-imaginist.com/) class applied. An example
+of a validation plot is shown below.
+
+
+
+ Sample Size Analysis Validation
+
+
+
+
+## See Also
+
+`S3` method [`summary`](/reference/method/summary) and function
+[`validate`](/reference/function/validate).
diff --git a/docs/reference/method/summary.md b/docs/reference/method/summary.md
new file mode 100644
index 0000000..a4d5e74
--- /dev/null
+++ b/docs/reference/method/summary.md
@@ -0,0 +1,32 @@
+---
+pageClass: page-reference
+---
+
+# Summarize Results
+
+## Description
+
+This function summarizes objects of class `Method` and `Validation`, providing
+information about the method run and the sample size recommendation, as well as
+the validation procedure.
+
+## Usage
+
+```r:no-line-numbers
+summary(object, ...)
+```
+
+## Arguments
+
+| Name | Description |
+| :------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `object` | An object instance of class `Method` or `Validation` produced by the functions [`powerly`](/reference/function/powerly) or [`validate`](/reference/function/validate). |
+| `...` | Other optional arguments currently not in use. |
+
+## See Also
+
+Functions [`powerly`](/reference/function/powerly) and
+[`validate`](/reference/function/validate).
+
+`S3` methods [`plot.Method`](/reference/method/plot-method) and
+[`plot.Validation`](/reference/method/plot-validation).
diff --git a/docs/tutorial/index.md b/docs/tutorial/index.md
index 22e8580..cf04936 100644
--- a/docs/tutorial/index.md
+++ b/docs/tutorial/index.md
@@ -43,7 +43,9 @@ official `R` package repository) running the following command:
install.packages("powerly")
```
-Alternatively, you can install the latest development version from `GitHub` via:
+Alternatively, you can install the [latest development
+version](https://github.com/mihaiconstantin/powerly/releases/latest) from
+`GitHub` via:
::: details Click to expand optional step.
```r
@@ -68,16 +70,15 @@ overview of the latest changes in the development version.
`powerly` exports three functions available to researchers for conducting sample
size analysis.
-| Function Name | Description |
-| :-------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |
-| [`generate_model`](/reference/generate-model) | Used for generating true models parameters when manually specifying them is non-trivial. |
-| [`powerly`](/reference/powerly) | The *main* function of the package implementing the sample size calculation method described above. |
-| [`validate`](/reference/validate) | Used for assessing the quality of the sample size recommendation obtained after running the [`powerly`](/reference/powerly) function. |
+| Function Name | Description |
+| :----------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |
+| [`generate_model`](/reference/function/generate-model) | Used for generating true models parameters when manually specifying them is non-trivial. |
+| [`powerly`](/reference/function/powerly) | The *main* function of the package implementing the sample size calculation method described above. |
+| [`validate`](/reference/function/validate) | Used for assessing the quality of the sample size recommendation obtained after running the [`powerly`](/reference/function/powerly) function. |
::: tip
-Check out the [Reference Section](/reference/functions/) corresponding to each
-function for detailed information about the available arguments and the output
-provided.
+Check out the [Reference Section](/reference/) corresponding to each function
+for detailed information about the available arguments and the output provided.
:::
## Usage
@@ -95,7 +96,8 @@ $0.6$ with a probability of $0.8$ for an arbitrary Gaussian Graphical Model
We start by specifying the true model (i.e., in this case an edge weights matrix
encoding of partial correlation coefficients), or we can generate one using the
-`generate_model` function. For example, this can be achieved by running:
+[`generate_model`](/reference/function/generate-model) function. For example,
+this can be achieved by running:
::: details Click to see the seed used for reproducibility.
We may set a seed to ensure that we generate the same true model. While this
@@ -119,13 +121,15 @@ true_model <- generate_model(
)
```
-Then, we can supply the `true_model` object to the `powerly` function to start
-the search for the sample size. Alongside the `true_model` we may also specify a
-number of other arguments that constitute the method parameters.
+Then, we can supply the `true_model` object to the
+[`powerly`](/reference/function/powerly) function to start the search for the
+sample size. Alongside the `true_model` we may also specify a number of other
+arguments that constitute the method parameters.
::: tip
You may also run `?powerly` in `R` to bring up the documentation and learn more
-about the role of each argument in the `powerly` function.
+about the role of each argument in the [`powerly`](/reference/function/powerly)
+function.
:::
```r{12}
@@ -169,8 +173,9 @@ Which will produce a plot similar to the one below.
Optionally, we may also validate the sample size recommendation using the
-`validate` function by passing in the output obtained from the `powerly`
-function, followed by plotting the validation results.
+[`validate`](/reference/function/validate) function by passing in the output
+obtained from the [`powerly`](/reference/function/powerly) function, followed by
+plotting the validation results.
```r{3}
# Run validation.
@@ -197,7 +202,7 @@ get started with `powerly`. If you want to learn more about where the numbers
come from, I encourage you to check out the
[manuscript](https://psyarxiv.com/j5v7u), or read the [next
post](/tutorial/method) where I succinctly describe the terminology and the
-steps of the method. From there, you may continue with applications of the
+steps of the method. From there, you may continue with *applications* of the
methods to different models (e.g., psychological networks, structural equation
-models etc.), or by checking out the posts under the FAQ, where I discuss tips
+models etc.), or by checking out the posts under the *FAQ*, where I discuss tips
and tricks for how to efficiently use `powerly`.
diff --git a/docs/tutorial/method.md b/docs/tutorial/method.md
index 1b5666b..dfd4909 100644
--- a/docs/tutorial/method.md
+++ b/docs/tutorial/method.md
@@ -9,8 +9,8 @@ header-includes:
The goal of this post is to succinctly explain the main concepts used in the
sample size computation method that `powerly` is based on. In doing so, I aim to
help get you acquainted with terminology used throughout the rest of the posts
-in the tutorial section. You may regard this post as a summary of the key
-things discussed in [Constantin et al. (2021)](https://psyarxiv.com/j5v7u).
+in the tutorial section. You may regard this post as a summary of the key things
+discussed in [Constantin et al. (2021)](https://psyarxiv.com/j5v7u).
## Input
To start the search for the optimal sample size, `powerly` requires three
@@ -22,12 +22,12 @@ the effect size) used to generate data during the first step of the method.
These true parameter values are collected in a model matrix denoted
$\bm{\Theta}$. One may either manually specify $\bm{\Theta}$ or generate it
according to some hyperparameters via the
-[`generate_model`](/reference/generate-model) function. The meaning and function
-of $\bm{\Theta}$ changes depending on context in which it is used. For example,
-in the context of psychological networks, $\bm{\Theta}$ encodes the edge weights
-matrix, where the $\theta_{ij}$ entries may represent partial correlation
-coefficients. However, in the Structural Equation Modeling (SEM), for example,
-$\bm{\Theta}$ may encode the model implied covariance matrix.
+[`generate_model`](/reference/function/generate-model) function. The meaning and
+function of $\bm{\Theta}$ changes depending on context in which it is used. For
+example, in the context of psychological networks, $\bm{\Theta}$ encodes the
+edge weights matrix, where the $\theta_{ij}$ entries may represent partial
+correlation coefficients. However, in the Structural Equation Modeling (SEM),
+for example, $\bm{\Theta}$ may encode the model implied covariance matrix.
### Performance Measure
The **_performance measure_** can be regraded as a quality of the estimation
@@ -86,7 +86,7 @@ probability $\tau$ as defined by $g(\bm{\xi})$?
implementations for performance measures and statistics that best suit their
study goals. However, it also provides out of the box support for several models
and common related performance measures. Check out the [Reference
-Section](/reference/powerly) for the [`powerly`](/reference/powerly) function
+Section](/reference/) for the [`powerly`](/reference/function/powerly) function
for an overview of the currently supported models and performance measures.
::: tip
@@ -182,7 +182,7 @@ depicted in the plot below.
More information about the second step (i.e., basis functions, spline
coefficients, and information about the cross-validation) can be obtained by
running `plot(results, step = 2)`, where the `results` object represents the
-output provided by the `powerly` function).
+output provided by the [`powerly`](/reference/function/powerly) function).
:::
### Step 3
@@ -258,11 +258,11 @@ certain number of iterations has been elapsed.
## Implementation
As discussed in the introduction of the [Tutorial Section](/developer/), the
-main function [`powerly`](/reference/powerly) implements the sample size
-calculation method described above. When using the
-[`powerly`](/reference/powerly) function to run a sample size analysis, several
-arguments can be provided as input. For example, the function signature for
-consists of the following arguments:
+main function [`powerly`](/reference/function/powerly) implements the sample
+size calculation method described above. When using the
+[`powerly`](/reference/function/powerly) function to run a sample size analysis,
+several arguments can be provided as input. For example, the function signature
+for consists of the following arguments:
```r
# Arguments supported by `powerly`.
@@ -295,7 +295,7 @@ powerly(
```
::: warning
-Please note that the function signature of [`powerly`](/reference/powerly) will
+Please note that the function signature of [`powerly`](/reference/function/powerly) will
change (i.e., be simplified) with the release of the version `2.0.0`.
:::
@@ -341,7 +341,7 @@ method steps.
::: tip
For more information about the data types and default values for the arguments
listed above, consult the [Reference Section](/reference/) for the
-[`powerly`](/reference/powerly) function, or the documentation in `R` by via
+[`powerly`](/reference/function/powerly) function, or the documentation in `R` by via
`?powerly`.
:::
@@ -360,22 +360,31 @@ researcher.
::: tip
Check out the [Reference Section](/reference/) for the
-[`validate`](/reference/validate) function for more details on how validate a
-sample size recommendation.
+[`validate`](/reference/function/validate) function for more details on how
+validate a sample size recommendation.
:::
## References
-Constantin, M., Schuurman, N. K., & Vermunt, J. (2021). A General Monte Carlo Method for Sample Size Analysis in the Context of Network Models.
https://doi.org/10.31234/osf.io/j5v7u
+Constantin, M., Schuurman, N. K., & Vermunt, J. (2021). A General Monte Carlo
+Method for Sample Size Analysis in the Context of Network Models.
+[https://doi.org/10.31234/osf.io/j5v7u](https://doi.org/10.31234/osf.io/j5v7u)
-de Leeuw, J. (2017). Computing and Fitting Monotone Splines.
http://dx.doi.org/10.13140/RG.2.2.36758.96327
+de Leeuw, J. (2017). Computing and Fitting Monotone Splines.
+[http://dx.doi.org/10.13140/RG.2.2.36758.96327](http://dx.doi.org/10.13140/RG.2.2.36758.96327)
-Knuth, D. E. (1992). Two Notes on Notation.
The American Mathematical Monthly, 99(5), 403–422.
https://doi.org/10.1080/00029890.1992.11995869
+Knuth, D. E. (1992). Two Notes on Notation. *The American Mathematical Monthly*,
+99(5), 403–422.
+[https://doi.org/10.1080/00029890.1992.11995869](https://doi.org/10.1080/00029890.1992.11995869)
-Ramsay, J. O. (1988). Monotone Regression Splines in Action. Statistical Science, 3(4), 425–441.
https://doi.org/10.1214/ss/1177012761
+Ramsay, J. O. (1988). Monotone Regression Splines in Action. *Statistical
+Science*, 3(4), 425–441.
+[https://doi.org/10.1214/ss/1177012761](https://doi.org/10.1214/ss/1177012761)
-Wang, W., & Yan, J. (2021). Shape-restricted regression splines with R package splines2. *Journal of Data Science*, 19(3), 498–517.
https://doi.org/10.6339/21-JDS1020
+Wang, W., & Yan, J. (2021). Shape-restricted regression splines with R package
+splines2. *Journal of Data Science*, 19(3), 498–517.
+[https://doi.org/10.6339/21-JDS1020](https://doi.org/10.6339/21-JDS1020)
diff --git a/package.json b/package.json
index 91494d8..30f5616 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
"docs:build": "vuepress build docs"
},
"devDependencies": {
+ "@vuepress/plugin-register-components": "^2.0.0-beta.51",
"@vuepress/plugin-shiki": "^2.0.0-beta.50",
"vuepress": "^2.0.0-beta.50"
},
diff --git a/yarn.lock b/yarn.lock
index 854007b..07f0485 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -17,6 +17,14 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz#91aef76d332cdc7c8942b600fa2307f3387e6f82"
integrity sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==
+"@mdit-vue/plugin-component@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-component/-/plugin-component-0.10.0.tgz#9eb834771c7f0cce1cc03b2afa91564ef4f43eb4"
+ integrity sha512-cfxmPVcp6880TRUgpT3eUjem1gCkg3vsBHOcjOoiD2gAu3hWg48d3woz5+F9WVrAhv8P6wpDYBzFqt29D6D4MQ==
+ dependencies:
+ "@types/markdown-it" "^12.2.3"
+ markdown-it "^13.0.1"
+
"@mdit-vue/plugin-component@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-component/-/plugin-component-0.6.0.tgz#e2cb3b5b2145266b39111539615c04806df80872"
@@ -33,6 +41,16 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
+"@mdit-vue/plugin-frontmatter@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-0.10.0.tgz#0f8bbf819ac8501dedfa3ba3d74e12dcc7cc0445"
+ integrity sha512-rJa4QM04YKRH9Edpr07BZvOjzOH2BwkPkalIa8YFIsZkCXLmrPpLsQteXbRLTkLGHLXnniW4V4tn5Y7bf7J74g==
+ dependencies:
+ "@mdit-vue/types" "0.10.0"
+ "@types/markdown-it" "^12.2.3"
+ gray-matter "^4.0.3"
+ markdown-it "^13.0.1"
+
"@mdit-vue/plugin-frontmatter@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-0.6.0.tgz#a4aab5e9d124d384c5032ac7c2176632e8c7a2a3"
@@ -53,6 +71,16 @@
gray-matter "^4.0.3"
markdown-it "^13.0.1"
+"@mdit-vue/plugin-headers@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-headers/-/plugin-headers-0.10.0.tgz#832d3cde3e3bdfd15e92524535aa38cffb4b4b7c"
+ integrity sha512-DPrQyv83jVxX3FwmCnemVeBsSdtH4Hz+geDMwbzATtaqzaYDDpuAxoeiLGpTg41EpLe2SPDk94N3OOh0cdV0Lw==
+ dependencies:
+ "@mdit-vue/shared" "0.10.0"
+ "@mdit-vue/types" "0.10.0"
+ "@types/markdown-it" "^12.2.3"
+ markdown-it "^13.0.1"
+
"@mdit-vue/plugin-headers@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-headers/-/plugin-headers-0.6.0.tgz#55f40a0d42c0c4f48b09beb9a96759691422ed7a"
@@ -73,6 +101,15 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
+"@mdit-vue/plugin-sfc@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-sfc/-/plugin-sfc-0.10.0.tgz#ed2e0affc8b0ae6a6ee1fb7be88b11450526a6b7"
+ integrity sha512-MoKnA8rApIyNeiIXbEUbQ+LAYr51YOWnNzJnum/ttX7kHmfh0+iMDAM1MnvmgVZWqhAzwdkEFOPTb9EVUI1dng==
+ dependencies:
+ "@mdit-vue/types" "0.10.0"
+ "@types/markdown-it" "^12.2.3"
+ markdown-it "^13.0.1"
+
"@mdit-vue/plugin-sfc@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-sfc/-/plugin-sfc-0.6.0.tgz#bb031c8f39273ed2a986e9fab436e8d2b917b655"
@@ -91,6 +128,16 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
+"@mdit-vue/plugin-title@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-title/-/plugin-title-0.10.0.tgz#3fa7061d15be8052489e18991f0f34492ae3f5f1"
+ integrity sha512-odJ9vIazAHiomjCEEFwHNuPnmDtx/FGOYrf9xUfi3tjG9r/JZW+G++AABxvevTozwpGlpU+wkpJ7mTr+rNtBrw==
+ dependencies:
+ "@mdit-vue/shared" "0.10.0"
+ "@mdit-vue/types" "0.10.0"
+ "@types/markdown-it" "^12.2.3"
+ markdown-it "^13.0.1"
+
"@mdit-vue/plugin-title@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-title/-/plugin-title-0.6.0.tgz#59902ce0177bf23216f8519f8ff2600b4a175278"
@@ -111,6 +158,16 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
+"@mdit-vue/plugin-toc@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-toc/-/plugin-toc-0.10.0.tgz#86486988ce52bed1e9c139dcdeec8cdb5b8e9d9a"
+ integrity sha512-P9aNy4jtqfjI08wUYGT/HVd5x/IpTjgSnNdJ3lU52qAO5AeFsW3v4gt+NmW0lO8We0S2YDEONRHBuBN6r40y6A==
+ dependencies:
+ "@mdit-vue/shared" "0.10.0"
+ "@mdit-vue/types" "0.10.0"
+ "@types/markdown-it" "^12.2.3"
+ markdown-it "^13.0.1"
+
"@mdit-vue/plugin-toc@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-toc/-/plugin-toc-0.6.0.tgz#acc46fc26c71b3aee4c1387ca2bb8e1aa8c023a1"
@@ -131,6 +188,15 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
+"@mdit-vue/shared@0.10.0", "@mdit-vue/shared@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/shared/-/shared-0.10.0.tgz#09160e0c8ab37cf7edb3f829f5a244b4b22a3be9"
+ integrity sha512-rUyu0NVNbaEg4DUiQenh/fam1MLdkItdzEVScN7vP0UzDWOwmGaKwkhlMmkSTW80H63ZlKst0fPe9LaGHImSZg==
+ dependencies:
+ "@mdit-vue/types" "0.10.0"
+ "@types/markdown-it" "^12.2.3"
+ markdown-it "^13.0.1"
+
"@mdit-vue/shared@0.6.0", "@mdit-vue/shared@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/shared/-/shared-0.6.0.tgz#9de51c97d9bf8ee475e7326e0163ff7c8e7e5473"
@@ -149,6 +215,11 @@
"@types/markdown-it" "^12.2.3"
markdown-it "^13.0.1"
+"@mdit-vue/types@0.10.0", "@mdit-vue/types@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@mdit-vue/types/-/types-0.10.0.tgz#ce595129bb26183832343a7157a754287fae58d9"
+ integrity sha512-ROz5zVKt3COpuWUYFnpJh5kIXit9SQeMtimGBlwKJL1xEBNPG3QKD3VZzez5Ng/dBCApianCQhNVZGCza82Myw==
+
"@mdit-vue/types@0.6.0", "@mdit-vue/types@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@mdit-vue/types/-/types-0.6.0.tgz#ee22fe22961723c18f569d5d4fccd85680400470"
@@ -403,6 +474,16 @@
vue "^3.2.37"
vue-router "^4.1.4"
+"@vuepress/client@2.0.0-beta.51":
+ version "2.0.0-beta.51"
+ resolved "https://registry.yarnpkg.com/@vuepress/client/-/client-2.0.0-beta.51.tgz#3ec5a013eaf9308acde4ac8fb6c1f25ef75ee1e5"
+ integrity sha512-5iQV765kwR6/eIZPMlV5O34DUvHCMjF7zpr91x5i8BEAg7A0jfHvdrwNavAKWiQEU77f4dIBXtWy6nwX+lgmbw==
+ dependencies:
+ "@vue/devtools-api" "^6.2.1"
+ "@vuepress/shared" "2.0.0-beta.51"
+ vue "^3.2.37"
+ vue-router "^4.1.4"
+
"@vuepress/core@2.0.0-beta.49":
version "2.0.0-beta.49"
resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-2.0.0-beta.49.tgz#17c64bd2442eba91c9592d63f49eff337330c25d"
@@ -425,6 +506,17 @@
"@vuepress/utils" "2.0.0-beta.50"
vue "^3.2.37"
+"@vuepress/core@2.0.0-beta.51":
+ version "2.0.0-beta.51"
+ resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-2.0.0-beta.51.tgz#e400c38df23b37c9625a9f05232771a81d5b2eff"
+ integrity sha512-j0KI6PBsf0doMZPXa1H4Vi88NSTrpsnSVhMgcr9gw81atgKl+I13SykHpWZRRkugTRCgL1IOpyY68cond58eeA==
+ dependencies:
+ "@vuepress/client" "2.0.0-beta.51"
+ "@vuepress/markdown" "2.0.0-beta.51"
+ "@vuepress/shared" "2.0.0-beta.51"
+ "@vuepress/utils" "2.0.0-beta.51"
+ vue "^3.2.37"
+
"@vuepress/markdown@2.0.0-beta.49":
version "2.0.0-beta.49"
resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-2.0.0-beta.49.tgz#66c04ef88d94a6a940a83bdfeabf2b94fb861299"
@@ -469,6 +561,28 @@
markdown-it-emoji "^2.0.2"
mdurl "^1.0.1"
+"@vuepress/markdown@2.0.0-beta.51":
+ version "2.0.0-beta.51"
+ resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-2.0.0-beta.51.tgz#50e8e293e299c07d6929b13f22bf6d0e6be79a87"
+ integrity sha512-q11+6j3OAutuV0LkH7BGdhh4jKOMKMiiX8bKD366mzr7JkjHb34xd+WhM394B7zh410CtYYWvAWS+m9RJGQ/5w==
+ dependencies:
+ "@mdit-vue/plugin-component" "^0.10.0"
+ "@mdit-vue/plugin-frontmatter" "^0.10.0"
+ "@mdit-vue/plugin-headers" "^0.10.0"
+ "@mdit-vue/plugin-sfc" "^0.10.0"
+ "@mdit-vue/plugin-title" "^0.10.0"
+ "@mdit-vue/plugin-toc" "^0.10.0"
+ "@mdit-vue/shared" "^0.10.0"
+ "@mdit-vue/types" "^0.10.0"
+ "@types/markdown-it" "^12.2.3"
+ "@types/markdown-it-emoji" "^2.0.2"
+ "@vuepress/shared" "2.0.0-beta.51"
+ "@vuepress/utils" "2.0.0-beta.51"
+ markdown-it "^13.0.1"
+ markdown-it-anchor "^8.6.4"
+ markdown-it-emoji "^2.0.2"
+ mdurl "^1.0.1"
+
"@vuepress/plugin-active-header-links@2.0.0-beta.50":
version "2.0.0-beta.50"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.50.tgz#5f41d2977db1e9112ebc36e0fe9d3de959f5cebe"
@@ -565,6 +679,15 @@
"@vuepress/core" "2.0.0-beta.50"
prismjs "^1.28.0"
+"@vuepress/plugin-register-components@^2.0.0-beta.51":
+ version "2.0.0-beta.51"
+ resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-2.0.0-beta.51.tgz#038bb61bb124d771997b3ba2d7f096a9340723db"
+ integrity sha512-9zZgv37gdQlDwpZnif/CChJvKJVeHQ2LSbkw0ab6L5GIjrTegDBc3AHXjoNJBIG80Xo+/fAdR1dWjAlR7YfgKg==
+ dependencies:
+ "@vuepress/core" "2.0.0-beta.51"
+ "@vuepress/utils" "2.0.0-beta.51"
+ chokidar "^3.5.3"
+
"@vuepress/plugin-shiki@^2.0.0-beta.50":
version "2.0.0-beta.50"
resolved "https://registry.yarnpkg.com/@vuepress/plugin-shiki/-/plugin-shiki-2.0.0-beta.50.tgz#7f33eb319fba3539ef811df276bb38ebe7058464"
@@ -599,6 +722,14 @@
dependencies:
"@vue/shared" "^3.2.37"
+"@vuepress/shared@2.0.0-beta.51":
+ version "2.0.0-beta.51"
+ resolved "https://registry.yarnpkg.com/@vuepress/shared/-/shared-2.0.0-beta.51.tgz#e523b085e289163775cca593eead2c0d1934dcf2"
+ integrity sha512-0dbJp0M+d/schkD+xUI7MwwoyJRtFxH3QEYMcLTKhgkaNFjgzlIEG/coh1QywVIoQGX9cGQSa8PZk8BeMeePug==
+ dependencies:
+ "@mdit-vue/types" "^0.10.0"
+ "@vue/shared" "^3.2.37"
+
"@vuepress/theme-default@2.0.0-beta.50":
version "2.0.0-beta.50"
resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-2.0.0-beta.50.tgz#bab6e385678b942c4d916ad87f310860bc8659bc"
@@ -656,6 +787,23 @@
ora "^6.1.2"
upath "^2.0.1"
+"@vuepress/utils@2.0.0-beta.51":
+ version "2.0.0-beta.51"
+ resolved "https://registry.yarnpkg.com/@vuepress/utils/-/utils-2.0.0-beta.51.tgz#5df21d50e58c53631dfd58f6bf08b5e9d8dfe4f7"
+ integrity sha512-BtWK38047GNk3CnzAN9dxm8n7XplHqOU/DhW4BYO84Czl6XZh0NExPny3aPf7SL8roy03eAzF0dgPgmug6whIQ==
+ dependencies:
+ "@types/debug" "^4.1.7"
+ "@types/fs-extra" "^9.0.13"
+ "@types/hash-sum" "^1.0.0"
+ "@vuepress/shared" "2.0.0-beta.51"
+ chalk "^5.0.1"
+ debug "^4.3.4"
+ fs-extra "^10.1.0"
+ globby "^13.1.2"
+ hash-sum "^2.0.0"
+ ora "^6.1.2"
+ upath "^2.0.1"
+
"@vueuse/core@^9.1.0":
version "9.1.1"
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.1.1.tgz#a5c09c33ccee58cfd53bc3ec2d5a0d304155529e"