Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/extension/types.ts
6452 views
1
/*
2
* types.ts
3
*
4
* Copyright (C) 2020-2022 Posit Software, PBC
5
*/
6
7
import type SemVer from "semver/mod.ts";
8
import { type Range } from "semver/mod.ts";
9
10
import { kSelfContained } from "../config/constants.ts";
11
import { Metadata, QuartoFilter } from "../config/types.ts";
12
import { ExternalEngine } from "../resources/types/schema-types.ts";
13
import {
14
RevealPlugin,
15
RevealPluginBundle,
16
RevealPluginScript,
17
} from "../format/reveal/format-reveal-plugin-types.ts";
18
import { ProjectConfig } from "../project/types.ts";
19
20
import { kRevealJSPlugins } from "./constants.ts";
21
22
export type Contributes =
23
| "shortcodes"
24
| "filters"
25
| "formats"
26
| "project"
27
| "revealjs-plugins"
28
| "metadata"
29
| "engines";
30
31
export interface Extension extends Record<string, unknown> {
32
id: ExtensionId;
33
title: string;
34
author: string;
35
version?: SemVer;
36
quartoVersion?: Range;
37
path: string;
38
contributes: {
39
metadata?: Metadata;
40
project?: Record<string, unknown>;
41
shortcodes?: string[];
42
filters?: QuartoFilter[];
43
formats?: Record<string, unknown>;
44
[kRevealJSPlugins]?: Array<string | RevealPluginBundle | RevealPlugin>;
45
engines?: Array<string | ExternalEngine>;
46
};
47
}
48
49
export interface RevealPluginInline {
50
name: string;
51
register?: boolean;
52
script?: string | string[] | RevealPluginScript | RevealPluginScript[];
53
stylesheet?: string | string[];
54
config?: Metadata;
55
[kSelfContained]?: boolean;
56
}
57
58
export interface ExtensionOptions {
59
builtIn: boolean;
60
}
61
62
export interface ExtensionContext {
63
extensions(
64
input?: string,
65
config?: ProjectConfig,
66
projectDir?: string,
67
options?: ExtensionOptions,
68
): Promise<Extension[]>;
69
extension(
70
name: string,
71
input: string,
72
config?: ProjectConfig,
73
projectDir?: string,
74
): Promise<Extension | undefined>;
75
find(
76
name: string,
77
input: string,
78
contributes?:
79
| "shortcodes"
80
| "filters"
81
| "formats"
82
| "project"
83
| "revealjs-plugins"
84
| "metadata"
85
| "engines",
86
config?: ProjectConfig,
87
projectDir?: string,
88
options?: ExtensionOptions,
89
): Promise<Extension[]>;
90
}
91
92
export interface ExtensionId {
93
name: string;
94
organization?: string;
95
}
96
97
export interface ExtensionMetadata {
98
path: string;
99
metadata: Metadata;
100
}
101
102