quasar

Форк
0
/
app-extension.d.ts 
132 строки · 4.1 Кб
1
import { IResolve } from "./app-paths";
2
import { QuasarConf } from "./configuration/conf";
3
import { QuasarContext } from "./configuration/context";
4
import { DeepRequired, DeepNonNullable } from "ts-essentials";
5
import { BuildOptions as EsbuildConfiguration } from "esbuild";
6

7
type QuasarConfProxy = DeepRequired<DeepNonNullable<QuasarConf>>;
8
type ExtractQuasarConfParameters<
9
  FirstLevelKey extends keyof QuasarConfProxy,
10
  SecondLevelKey extends keyof QuasarConfProxy[FirstLevelKey],
11
  MaybeFunction = QuasarConfProxy[FirstLevelKey][SecondLevelKey]
12
> = MaybeFunction extends (...args: any) => any
13
  ? Parameters<MaybeFunction>
14
  : never;
15

16
type chainWebpack = (
17
  fn: (
18
    ...args: [...ExtractQuasarConfParameters<"build", "chainWebpack">, IndexAPI]
19
  ) => void
20
) => void;
21
type extendWebpack = (
22
  fn: (
23
    ...args: [
24
      ...ExtractQuasarConfParameters<"build", "extendWebpack">,
25
      IndexAPI
26
    ]
27
  ) => void
28
) => void;
29

30
type getPersistentConf = () => Record<string, unknown>;
31
type hasExtension = (extId: string) => boolean;
32

33
interface BaseAPI {
34
  engine: '@quasar/app-webpack';
35

36
  ctx: QuasarContext;
37
  extId: string;
38
  resolve: IResolve;
39
  appDir: string;
40

41
  hasVite: false;
42
  hasWebpack: true;
43

44
  hasTypescript: () => Promise<boolean>;
45
  hasLint: () => Promise<boolean>;
46
  getStorePackageName: () => 'pinia' | 'vuex' | undefined;
47
  getNodePackagerName: () => Promise<'npm' | 'yarn' | 'pnpm' | 'bun'>;
48
}
49

50
interface SharedIndexInstallAPI {
51
  getPersistentConf: getPersistentConf;
52
  setPersistentConf: (cfg: Record<string, unknown>) => void;
53
  mergePersistentConf: (cfg: Record<string, unknown>) => void;
54
  compatibleWith: (packageName: string, semverCondition?: string) => void;
55
  hasPackage: (packageName: string, semverCondition?: string) => boolean;
56
  hasExtension: hasExtension;
57
  getPackageVersion: (packageName: string) => string | undefined;
58
}
59

60
export interface IndexAPI extends BaseAPI, SharedIndexInstallAPI {
61
  prompts: Record<string, unknown>;
62

63
  extendQuasarConf: (cfg: QuasarConf, api: IndexAPI) => void;
64

65
  chainWebpack: chainWebpack;
66
  extendWebpack: extendWebpack;
67

68
  extendBexScriptsConf: (cfg: EsbuildConfiguration, api: IndexAPI) => void;
69
  extendElectronMainConf: (cfg: EsbuildConfiguration, api: IndexAPI) => void;
70
  extendElectronPreloadConf: (cfg: EsbuildConfiguration, api: IndexAPI) => void;
71
  extendPWACustomSWConf: (cfg: EsbuildConfiguration, api: IndexAPI) => void;
72
  extendSSRWebserverConf: (cfg: EsbuildConfiguration, api: IndexAPI) => void;
73

74
  registerCommand: (
75
    commandName: string,
76
    fn: { args: string[]; params: Record<string, any> }
77
  ) => void;
78

79
  registerDescribeApi: (name: string, relativePath: string) => void;
80

81
  beforeDev: (
82
    api: IndexAPI,
83
    payload: { quasarConf: QuasarConf }
84
  ) => Promise<void> | void;
85
  afterDev: (
86
    api: IndexAPI,
87
    payload: { quasarConf: QuasarConf }
88
  ) => Promise<void> | void;
89
  beforeBuild: (
90
    api: IndexAPI,
91
    payload: { quasarConf: QuasarConf }
92
  ) => Promise<void> | void;
93
  afterBuild: (
94
    api: IndexAPI,
95
    payload: { quasarConf: QuasarConf }
96
  ) => Promise<void> | void;
97
  onPublish: (
98
    api: IndexAPI,
99
    opts: { arg: string; distDir: string }
100
  ) => Promise<void> | void;
101
}
102

103
type onExitLog = (msg: string) => void;
104
export interface InstallAPI extends BaseAPI, SharedIndexInstallAPI {
105
  prompts: Record<string, unknown>;
106

107
  extendPackageJson: (extPkg: object | string) => void;
108
  extendJsonFile: (file: string, newData: object) => void;
109
  render: (templatePath: string, scope?: object) => void;
110
  renderFile: (
111
    relativeSourcePath: string,
112
    relativeTargetPath: string,
113
    scope?: object
114
  ) => void;
115
  onExitLog: onExitLog;
116
}
117

118
export interface UninstallAPI extends BaseAPI {
119
  prompts: Record<string, unknown>;
120

121
  getPersistentConf: getPersistentConf;
122
  hasExtension: hasExtension;
123
  removePath: (__path: string) => void;
124
  onExitLog: onExitLog;
125
}
126

127
export interface PromptsAPI extends BaseAPI {
128
  compatibleWith: (packageName: string, semverCondition?: string) => void;
129
  hasPackage: (packageName: string, semverCondition?: string) => boolean;
130
  hasExtension: hasExtension;
131
  getPackageVersion: (packageName: string) => string | undefined;
132
}
133

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.