@inpageedit/core 0.14.5 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/{BasePlugin-DD7l-5Xw.js → BasePlugin-BCVSn9QJ.js} +2 -2
  2. package/dist/{BasePlugin-DD7l-5Xw.js.map → BasePlugin-BCVSn9QJ.js.map} +1 -1
  3. package/dist/InputBox-CZ1v4_l3.js +50 -0
  4. package/dist/InputBox-CZ1v4_l3.js.map +1 -0
  5. package/dist/PluginImagesUsed-Bq_C_rgg.js +90 -0
  6. package/dist/PluginImagesUsed-Bq_C_rgg.js.map +1 -0
  7. package/dist/{PluginPrefSync-CbFuuC19.js → PluginPrefSync-DP5NyPnI.js} +4 -4
  8. package/dist/{PluginPrefSync-CbFuuC19.js.map → PluginPrefSync-DP5NyPnI.js.map} +1 -1
  9. package/dist/{PluginStoreApp-MbC3G9tu.js → PluginStoreApp-_YWpLgfs.js} +2 -2
  10. package/dist/{PluginStoreApp-MbC3G9tu.js.map → PluginStoreApp-_YWpLgfs.js.map} +1 -1
  11. package/dist/PluginTemplatesUsed-DS_rHctR.js +76 -0
  12. package/dist/PluginTemplatesUsed-DS_rHctR.js.map +1 -0
  13. package/dist/Preferences-DqtjY7XU.js +1541 -0
  14. package/dist/Preferences-DqtjY7XU.js.map +1 -0
  15. package/dist/browser-DR-yCqVg.js +1160 -0
  16. package/dist/browser-DR-yCqVg.js.map +1 -0
  17. package/dist/components/index.js +1 -1
  18. package/dist/{index-BpQ6VGMz.js → index-B9VO3swL.js} +108 -63
  19. package/dist/index-B9VO3swL.js.map +1 -0
  20. package/dist/{index-BanevHQ2.js → index-C3t-Xj3e.js} +85 -82
  21. package/dist/index-C3t-Xj3e.js.map +1 -0
  22. package/dist/{index-WfXtYVMt.js → index-CS1kidKF.js} +149 -117
  23. package/dist/index-CS1kidKF.js.map +1 -0
  24. package/dist/index-Cb2_vqBl.js +44 -0
  25. package/dist/index-Cb2_vqBl.js.map +1 -0
  26. package/dist/{index-B3jld2sl.js → index-CbdkXGs7.js} +4 -4
  27. package/dist/{index-B3jld2sl.js.map → index-CbdkXGs7.js.map} +1 -1
  28. package/dist/{index-DxaqNWv4.js → index-CcAmmXbb.js} +904 -704
  29. package/dist/index-CcAmmXbb.js.map +1 -0
  30. package/dist/index-Cq8xPcEY.js +170 -0
  31. package/dist/index-Cq8xPcEY.js.map +1 -0
  32. package/dist/{index-DensW9qt.js → index-DPA1ptYq.js} +5 -5
  33. package/dist/index-DPA1ptYq.js.map +1 -0
  34. package/dist/{index-BjDTD66_.js → index-DVvsTsLI.js} +29 -15
  35. package/dist/index-DVvsTsLI.js.map +1 -0
  36. package/dist/{index-CnR6CqkM.js → index-DjyjqpeO.js} +2 -2
  37. package/dist/{index-CnR6CqkM.js.map → index-DjyjqpeO.js.map} +1 -1
  38. package/dist/index-FvMu0Ka0.js +342 -0
  39. package/dist/index-FvMu0Ka0.js.map +1 -0
  40. package/dist/index-mFwJhDwE.js +168 -0
  41. package/dist/index-mFwJhDwE.js.map +1 -0
  42. package/dist/{index-De25v1_Q.js → index-n5KKWE9v.js} +6 -6
  43. package/dist/index-n5KKWE9v.js.map +1 -0
  44. package/dist/{index-DKCZDN-Q.js → index-rKL4D_7I.js} +5 -5
  45. package/dist/{index-DKCZDN-Q.js.map → index-rKL4D_7I.js.map} +1 -1
  46. package/dist/index.d.ts +334 -148
  47. package/dist/index.js +5 -5
  48. package/dist/models/index.js +1 -1
  49. package/dist/plugins/index.js +18 -14
  50. package/dist/plugins/index.js.map +1 -1
  51. package/dist/services/index.js +9 -8
  52. package/dist/style.css +1 -1
  53. package/lib/index.umd.js +14 -12
  54. package/lib/index.umd.js.map +1 -1
  55. package/lib/style.css +1 -1
  56. package/package.json +4 -2
  57. package/dist/InputBox-nQKtiWtZ.js +0 -30
  58. package/dist/InputBox-nQKtiWtZ.js.map +0 -1
  59. package/dist/Preferences-C10tZMl1.js +0 -2701
  60. package/dist/Preferences-C10tZMl1.js.map +0 -1
  61. package/dist/index-7R2LfhNn.js +0 -220
  62. package/dist/index-7R2LfhNn.js.map +0 -1
  63. package/dist/index-BXNyXvre.js +0 -116
  64. package/dist/index-BXNyXvre.js.map +0 -1
  65. package/dist/index-BanevHQ2.js.map +0 -1
  66. package/dist/index-BjDTD66_.js.map +0 -1
  67. package/dist/index-BpQ6VGMz.js.map +0 -1
  68. package/dist/index-De25v1_Q.js.map +0 -1
  69. package/dist/index-DensW9qt.js.map +0 -1
  70. package/dist/index-DxaqNWv4.js.map +0 -1
  71. package/dist/index-WfXtYVMt.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -9,12 +9,14 @@ import "@inpageedit/modal/style.css";
9
9
  import { IDBPlus } from "idb-plus";
10
10
  import "@/styles/index.scss";
11
11
  import Schema, { default as Schema$1 } from "schemastery";
12
- import * as jsx_dom0 from "jsx-dom";
12
+ import * as jsx_dom1 from "jsx-dom";
13
13
  import { JSX, ReactElement, ReactNode } from "jsx-dom";
14
14
  import { JSX as JSX$1 } from "jsx-dom/jsx-runtime";
15
15
  import { JSX as JSX$2 } from "vue/jsx-runtime";
16
16
  import * as vue0 from "vue";
17
17
  import { App } from "vue";
18
+ import "./plugins/quick-preview/style.scss";
19
+ import "./plugins/quick-upload/style.scss";
18
20
  import "./plugins/toolbox/styles.scss";
19
21
  export * from "@inpageedit/logger";
20
22
  export * from "wiki-saikou/browser";
@@ -22,19 +24,6 @@ export * from "@inpageedit/modal";
22
24
 
23
25
  //#region rolldown:runtime
24
26
  //#endregion
25
- //#region src/services/ApiService.d.ts
26
- // ↓ '@/InPageEdit'
27
- declare module '.' {
28
- interface InPageEdit {
29
- api: MwApi;
30
- }
31
- }
32
- interface ApiServiceOptions extends Partial<FexiosConfigs> {}
33
- declare class ApiService {
34
- ctx: InPageEdit;
35
- constructor(ctx: InPageEdit, options?: Partial<ApiServiceOptions>);
36
- }
37
- //#endregion
38
27
  //#region src/types/WikiMetadata.d.ts
39
28
  interface WikiSiteInfo {
40
29
  general: WikiSiteGeneralInfo;
@@ -42,6 +31,7 @@ interface WikiSiteInfo {
42
31
  namespacealiases: WikiNameSpaceAlias[];
43
32
  magicwords: WikiMagicWord[];
44
33
  namespaces: Record<string, WikiNamespace>;
34
+ repos: WikiFileRepo[];
45
35
  }
46
36
  interface WikiSiteGeneralInfo {
47
37
  mainpage: string;
@@ -166,6 +156,35 @@ interface WikiUserOptions {
166
156
  language: string;
167
157
  [key: string]: unknown;
168
158
  }
159
+ interface WikiFileRepo {
160
+ name: string;
161
+ displayname: string;
162
+ rootUrl: string;
163
+ local: boolean;
164
+ url: string;
165
+ thumbUrl: string;
166
+ initialCapital: boolean;
167
+ scriptDirUrl: string;
168
+ canUpload: boolean;
169
+ }
170
+ //#endregion
171
+ //#region src/services/ApiService.d.ts
172
+ // ↓ '@/InPageEdit'
173
+ declare module '.' {
174
+ interface InPageEdit {
175
+ api: MwApi;
176
+ apiService: ApiService;
177
+ }
178
+ }
179
+ interface ApiServiceOptions extends Partial<FexiosConfigs> {}
180
+ declare class ApiService {
181
+ ctx: InPageEdit;
182
+ private options;
183
+ api: MwApi;
184
+ constructor(ctx: InPageEdit, options?: Partial<ApiServiceOptions>);
185
+ private _apiClients;
186
+ getClientByFileRepo(repo: WikiFileRepo): MwApi;
187
+ }
169
188
  //#endregion
170
189
  //#region src/models/WikiTitle/index.d.ts
171
190
  interface IWikiTitle {
@@ -332,102 +351,6 @@ declare class ModalService {
332
351
  notify: (...args: Parameters<typeof CustomIPEModal.notify>) => CustomIPEModal;
333
352
  }
334
353
  //#endregion
335
- //#region src/services/storage/managers/LocalStorageManager.d.ts
336
- declare class LocalStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {
337
- dbName?: string | undefined;
338
- readonly storeName?: string | undefined;
339
- ttl: number;
340
- version?: number | string | undefined;
341
- engine: 'localStorage' | 'sessionStorage' | 'memory';
342
- private db;
343
- constructor(dbName?: string | undefined, storeName?: string | undefined, ttl?: number, version?: number | string | undefined, engine?: 'localStorage' | 'sessionStorage' | 'memory');
344
- private makeKey;
345
- private load;
346
- private getRaw;
347
- private setRaw;
348
- private deleteSync;
349
- private isExpired;
350
- get(key: string, ttl?: number, setter?: () => Promise<T> | T): Promise<T | null>;
351
- set(key: string, value: null | undefined): Promise<void>;
352
- set(key: string, value: T): Promise<TypedStorageEntry<T>>;
353
- set(record: Record<string, T | null | undefined>): Promise<Record<string, TypedStorageEntry<T> | void>>;
354
- has(key: string, ttl?: number): Promise<boolean>;
355
- delete(key: string): Promise<void>;
356
- updatedAt(key: string): Promise<number>;
357
- clear(): Promise<this>;
358
- keys(): AsyncIterable<string>;
359
- values(): AsyncIterable<TypedStorageEntry<T>>;
360
- entries(): AsyncIterable<[string, TypedStorageEntry<T>]>;
361
- }
362
- //#endregion
363
- //#region src/services/storage/managers/IDBStorageManager.d.ts
364
- declare class IDBStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {
365
- readonly dbName: string;
366
- readonly storeName: string;
367
- ttl: number;
368
- version?: number | string | undefined;
369
- readonly db: IDBPlus<string, TypedStorageEntry<T>>;
370
- keys: () => AsyncIterable<string>;
371
- values: () => AsyncIterable<TypedStorageEntry<T>>;
372
- entries: () => AsyncIterable<[string, TypedStorageEntry<T>]>;
373
- constructor(dbName: string, storeName: string, ttl?: number, version?: number | string | undefined);
374
- private _clearExpiredEntries;
375
- get(key: string, ttl?: number, setter?: () => Promise<T> | T): Promise<T | null>;
376
- set(key: string, value: null | undefined): Promise<void>;
377
- set(key: string, value: T): Promise<TypedStorageEntry<T>>;
378
- set(record: Record<string, T | null | undefined>): Promise<Record<string, TypedStorageEntry<T> | void>>;
379
- has(key: string, ttl?: number): Promise<boolean>;
380
- delete(key: string): Promise<void>;
381
- updatedAt(key: string): Promise<number>;
382
- private loadFromDB;
383
- private checkIfExpired;
384
- /**
385
- * [DANGER] Use with caution!
386
- * Delete all data from the database.
387
- */
388
- clear(): Promise<this>;
389
- }
390
- //#endregion
391
- //#region src/services/storage/index.d.ts
392
- // ↓ '@/InPageEdit'
393
- declare module '.' {
394
- interface InPageEdit {
395
- storage: StorageService;
396
- }
397
- }
398
- interface StorageServiceConfig {
399
- dbName: string;
400
- }
401
- declare class StorageService extends Service<StorageServiceConfig> {
402
- config: StorageServiceConfig;
403
- readonly kv: IDBStorageManager<any>;
404
- readonly simpleKV: LocalStorageManager<any>;
405
- readonly memoryKV: LocalStorageManager<any>;
406
- constructor(ctx: InPageEdit, config: StorageServiceConfig);
407
- createDatabase<T = any>(storeName: string, ttl?: number, version?: number | string, engine?: 'indexedDB' | 'localStorage' | 'sessionStorage' | 'memory'): AbstractIPEStorageManager<T>;
408
- }
409
- interface TypedStorageEntry<T = any> {
410
- /** last update time */
411
- time: number;
412
- /** stored value */
413
- value: T;
414
- /** version */
415
- version?: number | string;
416
- }
417
- interface AbstractIPEStorageManager<T = unknown> {
418
- get(key: string, ttl?: number, setter?: () => Promise<any> | any): Promise<T | null>;
419
- set(key: string, value: null | undefined): Promise<void>;
420
- set(record: Record<string, T | null | undefined>): Promise<Record<string, TypedStorageEntry<T> | void>>;
421
- set(key: string, value: T): Promise<TypedStorageEntry<T>>;
422
- has(key: string, ttl?: number): Promise<boolean>;
423
- delete(key: string): Promise<void>;
424
- keys(): AsyncIterable<string>;
425
- values(): AsyncIterable<TypedStorageEntry<T>>;
426
- entries(): AsyncIterable<[string, TypedStorageEntry<T>]>;
427
- updatedAt(key: string): Promise<number>;
428
- clear(): Promise<this>;
429
- }
430
- //#endregion
431
354
  //#region src/services/WikiMetadataService.d.ts
432
355
  // ↓ '@/InPageEdit'
433
356
  declare module '.' {
@@ -469,7 +392,7 @@ declare class WikiMetadataService extends Service {
469
392
  private getCacheKey;
470
393
  fetchFromApi<T extends keyof WikiMetadataKindMap>(kind: T): Promise<WikiMetadataKindMap[T]>;
471
394
  fetchFromCache<T extends keyof WikiMetadataKindMap>(kind: T): Promise<WikiMetadataKindMap[T] | null>;
472
- saveToCache<T extends keyof WikiMetadataKindMap>(kind: T, data: WikiMetadataKindMap[T]): Promise<TypedStorageEntry<WikiUserInfo | WikiSiteInfo>>;
395
+ saveToCache<T extends keyof WikiMetadataKindMap>(kind: T, data: WikiMetadataKindMap[T]): Promise<TypedStorageEntry<WikiSiteInfo | WikiUserInfo>>;
473
396
  invalidateCache<T extends keyof WikiMetadataKindMap>(kind: T): Promise<void>;
474
397
  private onClearCache;
475
398
  get _raw(): WikiMetadataKindMap;
@@ -489,6 +412,7 @@ declare class WikiMetadataService extends Service {
489
412
  get isUserBlocked(): boolean | "" | undefined;
490
413
  get userGroups(): string[];
491
414
  get userRights(): string[];
415
+ get fileRepos(): WikiFileRepo[];
492
416
  /**
493
417
  * Base URL, without trailing slash
494
418
  * @example "https://mediawiki.org"
@@ -544,6 +468,102 @@ declare class WikiMetadataService extends Service {
544
468
  getBlockInfo(): WikiUserBlockInfo | null;
545
469
  }
546
470
  //#endregion
471
+ //#region src/services/storage/managers/LocalStorageManager.d.ts
472
+ declare class LocalStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {
473
+ dbName?: string | undefined;
474
+ readonly storeName?: string | undefined;
475
+ ttl: number;
476
+ version?: number | string | undefined;
477
+ engine: 'localStorage' | 'sessionStorage' | 'memory';
478
+ private db;
479
+ constructor(dbName?: string | undefined, storeName?: string | undefined, ttl?: number, version?: number | string | undefined, engine?: 'localStorage' | 'sessionStorage' | 'memory');
480
+ private makeKey;
481
+ private load;
482
+ private getRaw;
483
+ private setRaw;
484
+ private deleteSync;
485
+ private isExpired;
486
+ get(key: string, ttl?: number, setter?: () => Promise<T> | T): Promise<T | null>;
487
+ set(key: string, value: null | undefined): Promise<void>;
488
+ set(key: string, value: T): Promise<TypedStorageEntry<T>>;
489
+ set(record: Record<string, T | null | undefined>): Promise<Record<string, TypedStorageEntry<T> | void>>;
490
+ has(key: string, ttl?: number): Promise<boolean>;
491
+ delete(key: string): Promise<void>;
492
+ updatedAt(key: string): Promise<number>;
493
+ clear(): Promise<this>;
494
+ keys(): AsyncIterable<string>;
495
+ values(): AsyncIterable<TypedStorageEntry<T>>;
496
+ entries(): AsyncIterable<[string, TypedStorageEntry<T>]>;
497
+ }
498
+ //#endregion
499
+ //#region src/services/storage/managers/IDBStorageManager.d.ts
500
+ declare class IDBStorageManager<T = unknown> implements AbstractIPEStorageManager<T> {
501
+ readonly dbName: string;
502
+ readonly storeName: string;
503
+ ttl: number;
504
+ version?: number | string | undefined;
505
+ readonly db: IDBPlus<string, TypedStorageEntry<T>>;
506
+ keys: () => AsyncIterable<string>;
507
+ values: () => AsyncIterable<TypedStorageEntry<T>>;
508
+ entries: () => AsyncIterable<[string, TypedStorageEntry<T>]>;
509
+ constructor(dbName: string, storeName: string, ttl?: number, version?: number | string | undefined);
510
+ private _clearExpiredEntries;
511
+ get(key: string, ttl?: number, setter?: () => Promise<T> | T): Promise<T | null>;
512
+ set(key: string, value: null | undefined): Promise<void>;
513
+ set(key: string, value: T): Promise<TypedStorageEntry<T>>;
514
+ set(record: Record<string, T | null | undefined>): Promise<Record<string, TypedStorageEntry<T> | void>>;
515
+ has(key: string, ttl?: number): Promise<boolean>;
516
+ delete(key: string): Promise<void>;
517
+ updatedAt(key: string): Promise<number>;
518
+ private loadFromDB;
519
+ private checkIfExpired;
520
+ /**
521
+ * [DANGER] Use with caution!
522
+ * Delete all data from the database.
523
+ */
524
+ clear(): Promise<this>;
525
+ }
526
+ //#endregion
527
+ //#region src/services/storage/index.d.ts
528
+ // ↓ '@/InPageEdit'
529
+ declare module '.' {
530
+ interface InPageEdit {
531
+ storage: StorageService;
532
+ }
533
+ }
534
+ interface StorageServiceConfig {
535
+ dbName: string;
536
+ }
537
+ declare class StorageService extends Service<StorageServiceConfig> {
538
+ config: StorageServiceConfig;
539
+ readonly kv: IDBStorageManager<any>;
540
+ readonly simpleKV: LocalStorageManager<any>;
541
+ readonly memoryKV: LocalStorageManager<any>;
542
+ constructor(ctx: InPageEdit, config: StorageServiceConfig);
543
+ createDatabase<T = any>(storeName: string, ttl?: number, version?: number | string, engine?: 'indexedDB' | 'localStorage' | 'sessionStorage' | 'memory'): AbstractIPEStorageManager<T>;
544
+ }
545
+ interface TypedStorageEntry<T = any> {
546
+ /** last update time */
547
+ time: number;
548
+ /** stored value */
549
+ value: T;
550
+ /** version */
551
+ version?: number | string;
552
+ }
553
+ interface AbstractIPEStorageManager<T = unknown> {
554
+ get(key: string, ttl?: number, setter?: () => Promise<any> | any): Promise<T | null>;
555
+ set(key: string, value: null | undefined): Promise<void>;
556
+ set(record: Record<string, T | null | undefined>): Promise<Record<string, TypedStorageEntry<T> | void>>;
557
+ set(key: string, value: T): Promise<TypedStorageEntry<T>>;
558
+ has(key: string, ttl?: number): Promise<boolean>;
559
+ delete(key: string): Promise<void>;
560
+ keys(): AsyncIterable<string>;
561
+ values(): AsyncIterable<TypedStorageEntry<T>>;
562
+ entries(): AsyncIterable<[string, TypedStorageEntry<T>]>;
563
+ updatedAt(key: string): Promise<number>;
564
+ clear(): Promise<this>;
565
+ }
566
+ //#endregion
547
567
  //#region src/models/WikiPage/types/PageInfo.d.ts
548
568
  /**
549
569
  * @url https://www.mediawiki.org/wiki/Content_handlers
@@ -631,8 +651,12 @@ declare enum WatchlistAction {
631
651
  nochange = "nochange",
632
652
  }
633
653
  //#endregion
634
- //#region src/models/WikiPage/index.d.ts
635
- interface WikiPageEditPayload {
654
+ //#region src/models/WikiPage/types/WikiPageActionEdit.d.ts
655
+ /**
656
+ * Request body of MediaWiki edit action
657
+ * @see https://www.mediawiki.org/wiki/API:Edit
658
+ */
659
+ interface WikiPageActionEditRequest {
636
660
  text?: string;
637
661
  prependtext?: string;
638
662
  appendtext?: string;
@@ -644,6 +668,20 @@ interface WikiPageEditPayload {
644
668
  starttimestamp?: string;
645
669
  baserevid?: number;
646
670
  }
671
+ /**
672
+ * Result of MediaWiki edit action
673
+ * @see https://www.mediawiki.org/wiki/API:Edit
674
+ */
675
+ interface WikiPageActionEditResult {
676
+ result: 'Success' | 'Failure';
677
+ pageid: number;
678
+ title: string;
679
+ contentmodel: string;
680
+ nochange?: boolean;
681
+ watched?: boolean;
682
+ }
683
+ //#endregion
684
+ //#region src/models/WikiPage/index.d.ts
647
685
  interface IWikiPage {
648
686
  pageInfo: PageInfo;
649
687
  parse(params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
@@ -652,15 +690,15 @@ interface IWikiPage {
652
690
  preview(text: string, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
653
691
  parse: PageParseData;
654
692
  }>>>;
655
- edit(payload: WikiPageEditPayload & MwApiParams$1, /** @deprecated Append params in `payload` instead */
693
+ edit(payload: WikiPageActionEditRequest & MwApiParams$1, /** @deprecated Append params in `payload` instead */
656
694
  params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
657
- success: boolean;
695
+ edit: WikiPageActionEditResult;
658
696
  }>>>;
659
- createOnly(payload: Pick<WikiPageEditPayload, 'summary' | 'watchlist'> & {
697
+ createOnly(payload: Pick<WikiPageActionEditRequest, 'summary' | 'watchlist'> & {
660
698
  text: string;
661
699
  recreate?: boolean;
662
700
  }, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
663
- success: boolean;
701
+ edit: WikiPageActionEditResult;
664
702
  }>>>;
665
703
  delete(reason?: string, params?: MwApiParams$1): Promise<FexiosFinalContext<MwApiResponse<{
666
704
  delete: {
@@ -752,7 +790,7 @@ declare class WikiTitleService extends Service {
752
790
  readonly Title: WikiTitleConstructor;
753
791
  constructor(ctx: InPageEdit);
754
792
  private readonly logger;
755
- newTitle(title: string, namespace?: number): IWikiTitle;
793
+ newTitle(title: string | IWikiTitle, namespace?: number): IWikiTitle;
756
794
  newMainPageTitle(): IWikiTitle;
757
795
  newTitleFromUrl(url: string | URL): Promise<any>;
758
796
  private _cachedTitles;
@@ -1197,6 +1235,104 @@ declare class I18nService extends Service {
1197
1235
  private onClearCache;
1198
1236
  }
1199
1237
  //#endregion
1238
+ //#region src/models/MemoryStorage.d.ts
1239
+ declare class MemoryStorage implements Storage {
1240
+ private values;
1241
+ get length(): number;
1242
+ clear(): void;
1243
+ getItem(key: string): string | null;
1244
+ setItem(key: string, value: string): void;
1245
+ removeItem(key: string): void;
1246
+ key(index: number): string | null;
1247
+ }
1248
+ declare const useMemoryStorage: () => MemoryStorage;
1249
+ //#endregion
1250
+ //#region src/services/WikiFileService.d.ts
1251
+ // ↓ '@/InPageEdit.js'
1252
+ declare module '.' {
1253
+ interface InPageEdit {
1254
+ wikiFile: WikiFileService;
1255
+ }
1256
+ }
1257
+ /**
1258
+ * @see https://www.mediawiki.org/wiki/API:Upload
1259
+ */
1260
+ interface UploadFileParams {
1261
+ file: File;
1262
+ filekey: string;
1263
+ url: string;
1264
+ filename: string;
1265
+ comment: string;
1266
+ text: string;
1267
+ tags: string[] | string;
1268
+ watchlist: WatchlistAction;
1269
+ ignorewarnings: boolean;
1270
+ filesize: number;
1271
+ offset: number;
1272
+ chunk: File;
1273
+ stash: boolean;
1274
+ checkstatus: boolean;
1275
+ }
1276
+ type UploadFileResult = {
1277
+ result: 'Success';
1278
+ filename: string;
1279
+ imageinfo: WikiImageInfo;
1280
+ } | {
1281
+ result: 'Failure' | 'Warning' | 'Continue' | 'Poll';
1282
+ filekey: string;
1283
+ sessionkey?: string;
1284
+ warnings?: {
1285
+ /** file with this filekey already exists */
1286
+ exists?: string;
1287
+ /** uploaded file is the same as stored file with this timestamp */
1288
+ nochange?: {
1289
+ timestamp: string;
1290
+ };
1291
+ /** uploaded file is duplicated with these files */
1292
+ duplicate?: string[];
1293
+ };
1294
+ imageinfo: never;
1295
+ };
1296
+ interface WikiImageInfo {
1297
+ timestamp: string;
1298
+ user: string;
1299
+ userid: number;
1300
+ size: number;
1301
+ width: number;
1302
+ height: number;
1303
+ duration: number;
1304
+ parsedcomment: string;
1305
+ comment: string;
1306
+ html: string;
1307
+ canonicaltitle: string;
1308
+ url: string;
1309
+ descriptionurl: string;
1310
+ sha1: string;
1311
+ metadata: {
1312
+ name: string;
1313
+ value: any;
1314
+ }[];
1315
+ commonmetadata: unknown[];
1316
+ extmetadata: unknown;
1317
+ mime: string;
1318
+ mediatype: string;
1319
+ bitdepth: number;
1320
+ }
1321
+ declare class WikiFileService extends Service {
1322
+ ctx: InPageEdit;
1323
+ constructor(ctx: InPageEdit);
1324
+ get fileRepos(): WikiFileRepo[];
1325
+ get defaultFileRepo(): WikiFileRepo | undefined;
1326
+ get localFileRepo(): WikiFileRepo | undefined;
1327
+ get writableFileRepo(): WikiFileRepo | undefined;
1328
+ getFileName(title: string | IWikiTitle): string;
1329
+ getHashPath(title: string | IWikiTitle, hashLevel?: number): string;
1330
+ getFileUrl(title: string | IWikiTitle, repo?: WikiFileRepo): string;
1331
+ upload(params: Partial<UploadFileParams>, repo?: WikiFileRepo): Promise<wiki_saikou0.FexiosFinalContext<wiki_saikou0.MwApiResponse<{
1332
+ upload: UploadFileResult;
1333
+ }>>>;
1334
+ }
1335
+ //#endregion
1200
1336
  //#region src/InPageEdit.d.ts
1201
1337
  interface InPageEditCoreConfig {
1202
1338
  apiConfigs: Partial<FexiosConfigs>;
@@ -1338,21 +1474,21 @@ declare function TabView({
1338
1474
  content: ReactNode;
1339
1475
  })[];
1340
1476
  defaultActiveIndex?: number;
1341
- }): jsx_dom0.ReactElement;
1477
+ }): jsx_dom1.ReactElement;
1342
1478
  declare function TabLabel({
1343
1479
  name,
1344
1480
  children
1345
1481
  }: {
1346
1482
  name: string;
1347
1483
  children: ReactNode;
1348
- }): jsx_dom0.ReactElement;
1484
+ }): jsx_dom1.ReactElement;
1349
1485
  declare function TabContent({
1350
1486
  name,
1351
1487
  children
1352
1488
  }: {
1353
1489
  name: string;
1354
1490
  children: ReactNode;
1355
- }): jsx_dom0.ReactElement;
1491
+ }): jsx_dom1.ReactElement;
1356
1492
  //#endregion
1357
1493
  //#region src/components/TwinSwapInput/index.d.ts
1358
1494
  type TwinSwapInputProps = {
@@ -1397,7 +1533,7 @@ type CheckBoxProps = {
1397
1533
  inputProps?: JSX.IntrinsicElements['input'];
1398
1534
  labelProps?: JSX.IntrinsicElements['span'];
1399
1535
  } & JSX.IntrinsicElements['label'];
1400
- declare const CheckBox: (props: CheckBoxProps) => jsx_dom0.ReactElement;
1536
+ declare const CheckBox: (props: CheckBoxProps) => jsx_dom1.ReactElement;
1401
1537
  //#endregion
1402
1538
  //#region src/components/InputBox.d.ts
1403
1539
  type InputBoxProps = {
@@ -1405,11 +1541,13 @@ type InputBoxProps = {
1405
1541
  id?: string;
1406
1542
  name: string;
1407
1543
  value?: string;
1544
+ placeholder?: string;
1408
1545
  disabled?: boolean;
1546
+ required?: boolean;
1409
1547
  labelProps?: JSX.IntrinsicElements['label'];
1410
1548
  inputProps?: JSX.IntrinsicElements['input'];
1411
1549
  } & JSX.IntrinsicElements['div'];
1412
- declare const InputBox: (props: InputBoxProps) => jsx_dom0.ReactElement;
1550
+ declare const InputBox: (props: InputBoxProps) => jsx_dom1.ReactElement;
1413
1551
  //#endregion
1414
1552
  //#region src/components/RadioBox.d.ts
1415
1553
  type RadioBoxProps = {
@@ -1420,19 +1558,7 @@ type RadioBoxProps = {
1420
1558
  inputProps?: JSX.IntrinsicElements['input'];
1421
1559
  labelProps?: JSX.IntrinsicElements['span'];
1422
1560
  } & JSX.IntrinsicElements['label'];
1423
- declare const RadioBox: (props: RadioBoxProps) => jsx_dom0.ReactElement;
1424
- //#endregion
1425
- //#region src/models/MemoryStorage.d.ts
1426
- declare class MemoryStorage implements Storage {
1427
- private values;
1428
- get length(): number;
1429
- clear(): void;
1430
- getItem(key: string): string | null;
1431
- setItem(key: string, value: string): void;
1432
- removeItem(key: string): void;
1433
- key(index: number): string | null;
1434
- }
1435
- declare const useMemoryStorage: () => MemoryStorage;
1561
+ declare const RadioBox: (props: RadioBoxProps) => jsx_dom1.ReactElement;
1436
1562
  //#endregion
1437
1563
  //#region src/plugins/analytics/index.d.ts
1438
1564
  // ↓ '@/InPageEdit'
@@ -1440,6 +1566,13 @@ declare module '.' {
1440
1566
  interface InPageEdit {
1441
1567
  analytics: PluginAnalytics;
1442
1568
  }
1569
+ interface Events {
1570
+ 'analytics/event'(payload: {
1571
+ feature: string;
1572
+ subtype?: string;
1573
+ page?: string;
1574
+ }): void;
1575
+ }
1443
1576
  }
1444
1577
  interface IPEBeaconPayload {
1445
1578
  siteApi: string;
@@ -1469,7 +1602,7 @@ declare class PluginAnalytics extends BasePlugin {
1469
1602
  private _registerUnloadHandler;
1470
1603
  private _showConfirmNotify;
1471
1604
  private _initPluginListeners;
1472
- addEvent(feature: string, subtype?: string, page?: string): this;
1605
+ addEvent(feature: string, subtype?: string, page?: string): this | undefined;
1473
1606
  private sendBeacon;
1474
1607
  /**
1475
1608
  * 清理资源
@@ -1783,6 +1916,10 @@ declare class PluginQuickDiff extends BasePlugin {
1783
1916
  private injectQuickEdit;
1784
1917
  readonly COMPARE_API_DEFAULT_OPTIONS: Partial<CompareApiRequestOptions>;
1785
1918
  comparePages(options: Partial<CompareApiRequestOptions>, modal?: IPEModal, modalOptions?: Partial<IPEModalOptions>): IPEModal;
1919
+ createQuickDiffButton(payload: Partial<CompareApiRequestOptions>, options?: {
1920
+ label?: ReactNode;
1921
+ icon?: ReactNode;
1922
+ }): HTMLAnchorElement;
1786
1923
  }
1787
1924
  //#endregion
1788
1925
  //#region src/plugins/quick-edit/index.d.ts
@@ -1850,9 +1987,9 @@ declare class PluginQuickEdit extends BasePlugin {
1850
1987
  constructor(ctx: InPageEdit);
1851
1988
  protected start(): Promise<void> | void;
1852
1989
  showModal(payload?: string | Partial<QuickEditOptions>): Promise<void>;
1853
- handleSubmit(payload: QuickEditSubmitPayload): Promise<Required<wiki_saikou0.FexiosContext<wiki_saikou0.MwApiResponse<{
1854
- success: boolean;
1855
- }>>>>;
1990
+ handleSubmit(payload: QuickEditSubmitPayload): Promise<wiki_saikou0.FexiosFinalContext<wiki_saikou0.MwApiResponse<{
1991
+ edit: WikiPageActionEditResult;
1992
+ }>>>;
1856
1993
  static readonly BUILT_IN_FONT_OPTIONS: string[];
1857
1994
  getEditFontOptions(): Promise<{
1858
1995
  className: string;
@@ -1861,6 +1998,10 @@ declare class PluginQuickEdit extends BasePlugin {
1861
1998
  getWikiPageFromPayload(payload: Partial<QuickEditOptions>): Promise<IWikiPage>;
1862
1999
  private injectToolbox;
1863
2000
  protected removeToolbox(ctx: InPageEdit): void;
2001
+ createQuickEditButton(payload: Partial<QuickEditOptions>, options?: {
2002
+ icon?: ReactNode;
2003
+ label?: ReactNode;
2004
+ }): HTMLAnchorElement;
1864
2005
  }
1865
2006
  //#endregion
1866
2007
  //#region src/plugins/quick-move/index.d.ts
@@ -1906,9 +2047,9 @@ declare class PluginQuickMove extends BasePlugin {
1906
2047
  protected start(): Promise<void> | void;
1907
2048
  private injectToolbox;
1908
2049
  showModal(options?: Partial<QuickMoveOptions>): Promise<CustomIPEModal>;
1909
- movePage(options: MovePageOptions): Promise<Required<wiki_saikou0.FexiosContext<wiki_saikou0.MwApiResponse<{
2050
+ movePage(options: MovePageOptions): Promise<wiki_saikou0.FexiosFinalContext<wiki_saikou0.MwApiResponse<{
1910
2051
  success: boolean;
1911
- }>>>>;
2052
+ }>>>;
1912
2053
  }
1913
2054
  //#endregion
1914
2055
  //#region src/plugins/quick-preview/index.d.ts
@@ -1942,6 +2083,14 @@ declare class PluginQuickPreview extends BasePlugin {
1942
2083
  protected stop(): Promise<void> | void;
1943
2084
  previewWikitext(text: string, params?: MwApiParams, wikiPage?: IWikiPage, modal?: IPEModal, modalOptions?: Partial<IPEModalOptions>): IPEModal;
1944
2085
  private injectQuickEdit;
2086
+ private _contentTypeCache;
2087
+ private fetchContentType;
2088
+ getPreviewType(fileOrUrl: File | string): Promise<"unknown" | "image" | "video" | "audio" | "html" | "markdown" | "text" | "pdf">;
2089
+ previewFile(fileOrUrl: File | string, alt?: string): Promise<CustomIPEModal | undefined>;
2090
+ private _objectUrls;
2091
+ private getObjectUrl;
2092
+ getPreviewElement(fileOrUrl: File | string, alt?: string): Promise<jsx_dom1.ReactElement | null>;
2093
+ previewWikiPage(title: string): void;
1945
2094
  }
1946
2095
  //#endregion
1947
2096
  //#region src/plugins/quick-redirect/index.d.ts
@@ -1987,9 +2136,46 @@ declare class PluginQuickRedirect extends BasePlugin {
1987
2136
  protected start(): Promise<void> | void;
1988
2137
  protected stop(): Promise<void> | void;
1989
2138
  showModal(options?: Partial<QuickRedirectOptions>): Promise<CustomIPEModal>;
1990
- redirectPage(options: RedirectPageOptions): Promise<Required<wiki_saikou0.FexiosContext<wiki_saikou0.MwApiResponse<{
1991
- success: boolean;
1992
- }>>>>;
2139
+ redirectPage(options: RedirectPageOptions): Promise<wiki_saikou0.FexiosFinalContext<wiki_saikou0.MwApiResponse<{
2140
+ edit: WikiPageActionEditResult;
2141
+ }>>>;
2142
+ }
2143
+ //#endregion
2144
+ //#region src/plugins/quick-upload/index.d.ts
2145
+ // ↓ '@/InPageEdit'
2146
+ declare module '.' {
2147
+ interface InPageEdit {
2148
+ quickUpload: PluginQuickUpload;
2149
+ }
2150
+ interface Preferences {
2151
+ 'quickUpload.summary': string;
2152
+ }
2153
+ }
2154
+ declare class PluginQuickUpload extends BasePlugin {
2155
+ ctx: InPageEdit;
2156
+ constructor(ctx: InPageEdit);
2157
+ protected start(): Promise<void>;
2158
+ protected stop(): Promise<void>;
2159
+ private injectQuickEdit;
2160
+ private injectToolbox;
2161
+ private formatFileSize;
2162
+ private getDefaultPreviewPlaceholder;
2163
+ private isFileAccepted;
2164
+ showModal(): Promise<CustomIPEModal>;
2165
+ }
2166
+ //#endregion
2167
+ //#region src/plugins/quick-usage/index.d.ts
2168
+ // ↓ '@/InPageEdit'
2169
+ declare module '.' {
2170
+ interface InPageEdit {
2171
+ quickUsage: PluginQuickUsage;
2172
+ }
2173
+ }
2174
+ declare class PluginQuickUsage extends BasePlugin {
2175
+ ctx: InPageEdit;
2176
+ constructor(ctx: InPageEdit);
2177
+ protected start(): Promise<void>;
2178
+ getWrapperForQuickEdit(modal: IPEModal): Element | SVGElement;
1993
2179
  }
1994
2180
  //#endregion
1995
2181
  //#region src/plugins/toolbox/index.d.ts
@@ -2067,10 +2253,10 @@ declare class PluginToolbox extends Service {
2067
2253
  toggle(force?: boolean): void;
2068
2254
  }
2069
2255
  declare namespace index_d_exports$1 {
2070
- export { AbstractIPEStorageManager, ApiService, ApiServiceOptions, CurrentPageService, CustomIPEModal, InPageEditPreferenceUICategory, InPageEditPreferenceUIRegistryItem, ModalService, PreferencesService, ResourceLoaderService, StorageService, StorageServiceConfig, TypedStorageEntry, WikiLinkMetadata, WikiMetadataService, WikiPageService, WikiTitleService };
2256
+ export { AbstractIPEStorageManager, ApiService, ApiServiceOptions, CurrentPageService, CustomIPEModal, InPageEditPreferenceUICategory, InPageEditPreferenceUIRegistryItem, ModalService, PreferencesService, ResourceLoaderService, StorageService, StorageServiceConfig, TypedStorageEntry, UploadFileParams, UploadFileResult, WikiFileService, WikiImageInfo, WikiLinkMetadata, WikiMetadataService, WikiPageService, WikiTitleService };
2071
2257
  }
2072
2258
  declare namespace index_d_exports {
2073
- export { AbstractIPEStorageManager, ActionButton, ActionButtonProps, ApiService, ApiServiceOptions, BasePlugin, CheckBox, CheckBoxProps, CompareApiRequestOptions, CompareApiResponse, ContentModelMap, CordisError, CordisSymbols, CurrentPageService, CustomIPEModal, EffectScope, Endpoints, Events, ForkScope, IPEBeaconPayload, IPEBeaconUsage, IPEPlugin, IPERegistry, IWikiPage, IWikiTitle, InArticleWikiAnchorMetadata, InPageEdit, InPageEditCoreConfig, InPageEditPreferenceUICategory, InPageEditPreferenceUIRegistryItem, Inject, InputBox, InputBoxProps, Lifecycle, MBox, MBoxElement, MBoxProps, MainScope, MemoryStorage, ModalService, MovePageOptions, PageInfo, PageParseData, PluginAnalytics, PluginInArticleLinks, PluginPluginStore, PluginPreferencesUI, PluginQuickDiff, PluginQuickEdit, PluginQuickMove, PluginQuickPreview, PluginQuickRedirect, PluginStoreRegistrySource, PluginToolbox, PreferencesMap, PreferencesService, ProgressBar, QuickEditEventPayload, QuickEditOptions, QuickEditSubmitPayload, QuickMoveOptions, QuickRedirectOptions, RadioBox, RadioBoxProps, RedirectPageOptions, RegisterPreferences, ResourceLoaderService, Schema, ScopeStatus, Service, StorageService, StorageServiceConfig, TabContent, TabLabel, TabView, TabViewLabelOptions, TwinSwapElement, TwinSwapInput, TwinSwapInputInput, TwinSwapInputProps, TypedStorageEntry, WatchlistAction, WikiLinkMetadata, WikiMagicWord, WikiMetadataService, WikiNameSpaceAlias, WikiNamespace, WikiPageConstructor, WikiPageEditPayload, WikiPageService, WikiSiteGeneralInfo, WikiSiteInfo, WikiSpecialPageAlias, WikiTitleConstructor, WikiTitleService, WikiUserBlockInfo, WikiUserInfo, WikiUserOptions, createWikiPageModel, createWikiTitleModel, useMemoryStorage };
2259
+ export { AbstractIPEStorageManager, ActionButton, ActionButtonProps, ApiService, ApiServiceOptions, BasePlugin, CheckBox, CheckBoxProps, CompareApiRequestOptions, CompareApiResponse, ContentModelMap, CordisError, CordisSymbols, CurrentPageService, CustomIPEModal, EffectScope, Endpoints, Events, ForkScope, IPEBeaconPayload, IPEBeaconUsage, IPEPlugin, IPERegistry, IWikiPage, IWikiTitle, InArticleWikiAnchorMetadata, InPageEdit, InPageEditCoreConfig, InPageEditPreferenceUICategory, InPageEditPreferenceUIRegistryItem, Inject, InputBox, InputBoxProps, Lifecycle, MBox, MBoxElement, MBoxProps, MainScope, MemoryStorage, ModalService, MovePageOptions, PageInfo, PageParseData, PluginAnalytics, PluginInArticleLinks, PluginPluginStore, PluginPreferencesUI, PluginQuickDiff, PluginQuickEdit, PluginQuickMove, PluginQuickPreview, PluginQuickRedirect, PluginQuickUpload, PluginQuickUsage, PluginStoreRegistrySource, PluginToolbox, PreferencesMap, PreferencesService, ProgressBar, QuickEditEventPayload, QuickEditOptions, QuickEditSubmitPayload, QuickMoveOptions, QuickRedirectOptions, RadioBox, RadioBoxProps, RedirectPageOptions, RegisterPreferences, ResourceLoaderService, Schema, ScopeStatus, Service, StorageService, StorageServiceConfig, TabContent, TabLabel, TabView, TabViewLabelOptions, TwinSwapElement, TwinSwapInput, TwinSwapInputInput, TwinSwapInputProps, TypedStorageEntry, UploadFileParams, UploadFileResult, WatchlistAction, WikiFileRepo, WikiFileService, WikiImageInfo, WikiLinkMetadata, WikiMagicWord, WikiMetadataService, WikiNameSpaceAlias, WikiNamespace, WikiPageConstructor, WikiPageService, WikiSiteGeneralInfo, WikiSiteInfo, WikiSpecialPageAlias, WikiTitleConstructor, WikiTitleService, WikiUserBlockInfo, WikiUserInfo, WikiUserOptions, createWikiPageModel, createWikiTitleModel, useMemoryStorage };
2074
2260
  }
2075
2261
  declare global {
2076
2262
  const ipe: InPageEdit;
@@ -2106,4 +2292,4 @@ declare global {
2106
2292
  }
2107
2293
  }
2108
2294
  //#endregion
2109
- export { AbstractIPEStorageManager, ActionButton, ActionButtonProps, ApiService, ApiServiceOptions, BasePlugin, CheckBox, CheckBoxProps, CompareApiRequestOptions, CompareApiResponse, ContentModelMap, CordisError, CordisSymbols, CurrentPageService, CustomIPEModal, EffectScope, Endpoints, Events, ForkScope, IPEBeaconPayload, IPEBeaconUsage, IPEPlugin, IPERegistry, IWikiPage, IWikiTitle, InArticleWikiAnchorMetadata, InPageEdit, InPageEditCoreConfig, InPageEditPreferenceUICategory, InPageEditPreferenceUIRegistryItem, Inject, InputBox, InputBoxProps, Lifecycle, MBox, MBoxElement, MBoxProps, MainScope, MemoryStorage, ModalService, MovePageOptions, PageInfo, PageParseData, PluginAnalytics, PluginInArticleLinks, PluginPluginStore, PluginPreferencesUI, PluginQuickDiff, PluginQuickEdit, PluginQuickMove, PluginQuickPreview, PluginQuickRedirect, PluginStoreRegistrySource, PluginToolbox, PreferencesMap, PreferencesService, ProgressBar, QuickEditEventPayload, QuickEditOptions, QuickEditSubmitPayload, QuickMoveOptions, QuickRedirectOptions, RadioBox, RadioBoxProps, RedirectPageOptions, RegisterPreferences, ResourceLoaderService, Schema, ScopeStatus, Service, StorageService, StorageServiceConfig, TabContent, TabLabel, TabView, TabViewLabelOptions, TwinSwapElement, TwinSwapInput, TwinSwapInputInput, TwinSwapInputProps, TypedStorageEntry, WatchlistAction, WikiLinkMetadata, WikiMagicWord, WikiMetadataService, WikiNameSpaceAlias, WikiNamespace, WikiPageConstructor, WikiPageEditPayload, WikiPageService, WikiSiteGeneralInfo, WikiSiteInfo, WikiSpecialPageAlias, WikiTitleConstructor, WikiTitleService, WikiUserBlockInfo, WikiUserInfo, WikiUserOptions, createWikiPageModel, createWikiTitleModel, useMemoryStorage };
2295
+ export { AbstractIPEStorageManager, ActionButton, ActionButtonProps, ApiService, ApiServiceOptions, BasePlugin, CheckBox, CheckBoxProps, CompareApiRequestOptions, CompareApiResponse, ContentModelMap, CordisError, CordisSymbols, CurrentPageService, CustomIPEModal, EffectScope, Endpoints, Events, ForkScope, IPEBeaconPayload, IPEBeaconUsage, IPEPlugin, IPERegistry, IWikiPage, IWikiTitle, InArticleWikiAnchorMetadata, InPageEdit, InPageEditCoreConfig, InPageEditPreferenceUICategory, InPageEditPreferenceUIRegistryItem, Inject, InputBox, InputBoxProps, Lifecycle, MBox, MBoxElement, MBoxProps, MainScope, MemoryStorage, ModalService, MovePageOptions, PageInfo, PageParseData, PluginAnalytics, PluginInArticleLinks, PluginPluginStore, PluginPreferencesUI, PluginQuickDiff, PluginQuickEdit, PluginQuickMove, PluginQuickPreview, PluginQuickRedirect, PluginQuickUpload, PluginQuickUsage, PluginStoreRegistrySource, PluginToolbox, PreferencesMap, PreferencesService, ProgressBar, QuickEditEventPayload, QuickEditOptions, QuickEditSubmitPayload, QuickMoveOptions, QuickRedirectOptions, RadioBox, RadioBoxProps, RedirectPageOptions, RegisterPreferences, ResourceLoaderService, Schema, ScopeStatus, Service, StorageService, StorageServiceConfig, TabContent, TabLabel, TabView, TabViewLabelOptions, TwinSwapElement, TwinSwapInput, TwinSwapInputInput, TwinSwapInputProps, TypedStorageEntry, UploadFileParams, UploadFileResult, WatchlistAction, WikiFileRepo, WikiFileService, WikiImageInfo, WikiLinkMetadata, WikiMagicWord, WikiMetadataService, WikiNameSpaceAlias, WikiNamespace, WikiPageConstructor, WikiPageService, WikiSiteGeneralInfo, WikiSiteInfo, WikiSpecialPageAlias, WikiTitleConstructor, WikiTitleService, WikiUserBlockInfo, WikiUserInfo, WikiUserOptions, createWikiPageModel, createWikiTitleModel, useMemoryStorage };