@inpageedit/core 0.7.0 → 0.8.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.
- package/LICENSE +20 -20
- package/README.md +55 -55
- package/dist/ActionButton-BgbTKTg7.js.map +1 -1
- package/dist/CheckBox-D3rHnX7I.js.map +1 -1
- package/dist/IconQuickEdit-YVn1ANbm.js.map +1 -1
- package/dist/InputBox-BV4m05Xs.js.map +1 -1
- package/dist/Preferences-Bg3J5Ur9.js.map +1 -1
- package/dist/RadioBox-nJqWsxW2.js.map +1 -1
- package/dist/__test__/utils/constants.d.ts +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/{index-1JtE4urY.js → index--xn9BebC.js} +5 -4
- package/dist/{index-1JtE4urY.js.map → index--xn9BebC.js.map} +1 -1
- package/dist/{index-CrWxZ0yl.js → index-BT1mN_St.js} +4 -4
- package/dist/{index-CrWxZ0yl.js.map → index-BT1mN_St.js.map} +1 -1
- package/dist/index-Bh70Udzi.js.map +1 -1
- package/dist/index-C0V2s48o.js +122 -0
- package/dist/index-C0V2s48o.js.map +1 -0
- package/dist/index-CvhkVj_L.js.map +1 -1
- package/dist/{index-BCMwmSfQ.js → index-DDWds9Jg.js} +77 -74
- package/dist/index-DDWds9Jg.js.map +1 -0
- package/dist/index-DDef1ojx.js +166 -0
- package/dist/index-DDef1ojx.js.map +1 -0
- package/dist/{index-B3Bsg_nE.js → index-DTA86mHU.js} +2 -2
- package/dist/index-DTA86mHU.js.map +1 -0
- package/dist/{index-2AEdgbUL.js → index-DlgTb4XY.js} +3 -3
- package/dist/index-DlgTb4XY.js.map +1 -0
- package/dist/{index-DqfQ7hp6.js → index-DpLwTw4C.js} +1507 -1326
- package/dist/index-DpLwTw4C.js.map +1 -0
- package/dist/{index-C0ci6Ll1.js → index-TzKe6Ebm.js} +7 -7
- package/dist/index-TzKe6Ebm.js.map +1 -0
- package/dist/index-VzP81S7B.js +139 -0
- package/dist/index-VzP81S7B.js.map +1 -0
- package/dist/index-lZkYoUca.js.map +1 -1
- package/dist/index-loWqosf7.js +331 -0
- package/dist/index-loWqosf7.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/makeCallable-LDU0xZMJ.js.map +1 -1
- package/dist/models/WikiPage/index.d.ts +42 -47
- package/dist/models/WikiTitle/index.d.ts +2 -2
- package/dist/noop-ClDc6zv4.js.map +1 -1
- package/dist/plugins/in-article-links/index.d.ts +4 -34
- package/dist/plugins/quick-delete/index.d.ts +7 -5
- package/dist/plugins/quick-edit/index.d.ts +12 -10
- package/dist/plugins/quick-move/index.d.ts +3 -1
- package/dist/plugins/quick-preview/index.d.ts +12 -15
- package/dist/plugins/quick-redirect/index.d.ts +3 -1
- package/dist/plugins/toolbox/index.d.ts +7 -2
- package/dist/services/{SiteMetadataService.d.ts → WikiMetadataService.d.ts} +36 -21
- package/dist/services/WikiPageService.d.ts +8 -7
- package/dist/services/WikiTitleService.d.ts +43 -3
- package/dist/style.css +1 -1
- package/dist/types/{SiteMetadata.d.ts → WikiMetadata.d.ts} +17 -17
- package/lib/index.umd.js +28 -28
- package/lib/index.umd.js.map +1 -1
- package/lib/style.css +1 -1
- package/package.json +2 -2
- package/dist/index-2AEdgbUL.js.map +0 -1
- package/dist/index-2kN4SKmT.js +0 -116
- package/dist/index-2kN4SKmT.js.map +0 -1
- package/dist/index-B3Bsg_nE.js.map +0 -1
- package/dist/index-BCMwmSfQ.js.map +0 -1
- package/dist/index-C0ci6Ll1.js.map +0 -1
- package/dist/index-CZnu6cRK.js +0 -319
- package/dist/index-CZnu6cRK.js.map +0 -1
- package/dist/index-CheNjwas.js +0 -128
- package/dist/index-CheNjwas.js.map +0 -1
- package/dist/index-DqfQ7hp6.js.map +0 -1
- package/dist/index-sfkutNHj.js +0 -201
- package/dist/index-sfkutNHj.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-loWqosf7.js","sources":["../src/utils/sleep.ts","../src/plugins/quick-edit/index.tsx"],"sourcesContent":["export const sleep = (ms: number = 0) =>\r\n new Promise((resolve) => setTimeout(resolve, ms))\r\n","import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { IWikiPage } from '@/models/WikiPage'\nimport { WatchlistAction } from '@/models/WikiPage/types/WatchlistAction'\nimport { IPEModal } from '@/services/ModalService/IPEModal'\nimport { ReactNode } from 'jsx-dom'\nimport { makeCallable } from '@/utils/makeCallable.js'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickEdit: PluginQuickEdit & {\n (...args: Parameters<PluginQuickEdit['showModal']>): ReturnType<PluginQuickEdit['showModal']>\n }\n }\n interface Events {\n 'quick-edit/init-options'(payload: Omit<QuickEditEventPayload, 'modal' | 'wikiPage'>): void\n 'quick-edit/show-modal'(payload: Omit<QuickEditEventPayload, 'wikiPage'>): void\n 'quick-edit/wiki-page'(payload: QuickEditEventPayload): void\n 'quick-edit/edit-notice'(payload: QuickEditEventPayload & { editNotices: ReactNode[] }): void\n }\n}\n\nexport interface QuickEditOptions {\n title: string\n pageId: number\n revision: number\n /**\n * - `undefined` for full article edit\n * - `0` for the first section\n * - `\"new\"` for a new section\n */\n section: number | 'new' | undefined\n editMinor: boolean\n editSummary: string\n createOnly: boolean\n reloadAfterSave: boolean\n}\n\nexport interface QuickEditEventPayload {\n ctx: InPageEdit\n options: QuickEditOptions\n modal: IPEModal\n wikiPage: IWikiPage\n}\n\nexport interface QuickEditSubmitPayload {\n wikiPage: IWikiPage\n text?: string\n summary?: string\n section?: number | 'new' | undefined\n minor?: boolean\n createonly?: boolean\n watchlist?: WatchlistAction\n}\n\n@Inject(['api', 'wikiPage', 'wikiTitle', 'wiki', 'modal', 'preferences'])\n@RegisterPreferences(\n Schema.object({\n 'quickEdit.editSummary': Schema.string()\n .description('Default edit summary for quick edits')\n .default('[IPE-NEXT] Quick edit'),\n 'quickEdit.editMinor': Schema.boolean()\n .description('Whether to mark the edit as minor')\n .default(false),\n 'quickEdit.outSideClose': Schema.boolean()\n .description('Whether to close the modal outside')\n .default(true),\n 'quickEdit.watchList': Schema.union([\n Schema.const(WatchlistAction.preferences).description('Follow my preferences'),\n Schema.const(WatchlistAction.nochange).description('Keep the current watchlist status'),\n Schema.const(WatchlistAction.watch).description('Add the page to watchlist'),\n Schema.const(WatchlistAction.unwatch).description('Remove the page from watchlist'),\n ])\n .description('Watchlist options')\n .default(WatchlistAction.preferences),\n 'quickEdit.keyshortcut.save': Schema.string()\n .default('ctrl-s')\n .description('save button key shortcut (blank to disable)'),\n })\n .description('Quick edit options')\n .extra('category', 'edit')\n)\nexport class PluginQuickEdit extends BasePlugin {\n private readonly DEFAULT_OPTIONS: QuickEditOptions = {\n title: '',\n pageId: 0,\n revision: 0,\n section: undefined,\n editMinor: false,\n editSummary: '',\n createOnly: false,\n reloadAfterSave: true,\n }\n\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-edit')\n this.ctx.root.set('quickEdit', makeCallable(this, 'showModal'))\n }\n\n protected start(): Promise<void> | void {\n this.ctx.inject(['toolbox'], (ctx) => {\n this.injectToolbox(ctx)\n ctx.on('dispose', () => {\n this.removeToolbox(ctx)\n })\n })\n }\n\n async showModal(payload?: string | Partial<QuickEditOptions>) {\n if (typeof payload === 'undefined') {\n payload = {}\n } else if (typeof payload === 'string') {\n payload = {\n title: payload,\n } as Partial<QuickEditOptions>\n }\n\n // @ts-expect-error legacy `page` option\n if (payload?.page) {\n // @ts-expect-error\n payload.title = payload.page\n // @ts-expect-error\n delete payload.page\n }\n\n if (!payload.title && !payload.pageId && !payload.revision) {\n this.logger.warn('None of the title, pageId or revision provided. Using defaults.')\n const searchParams = new URLSearchParams(window.location.search)\n payload = {\n ...payload,\n title: this.ctx.wikiTitle.currentTitle.getPrefixedDBKey(),\n revision: searchParams.has('oldid') ? Number(searchParams.get('oldid')) : undefined,\n pageId: searchParams.has('curid') ? Number(searchParams.get('curid')) : undefined,\n }\n }\n\n const outSideClose = (await this.ctx.preferences.get<boolean>('quickEdit.outSideClose'))!\n const watchList = (await this.ctx.preferences.get<WatchlistAction>('quickEdit.watchList'))!\n const editSummary =\n typeof payload.editSummary === 'string'\n ? payload.editSummary\n : (await this.ctx.preferences.get<string>('quickEdit.editSummary'))!\n const editMinor =\n typeof payload.editMinor === 'boolean'\n ? payload.editMinor\n : (await this.ctx.preferences.get<boolean>('quickEdit.editMinor'))!\n\n const options: QuickEditOptions = {\n ...this.DEFAULT_OPTIONS,\n editSummary,\n editMinor,\n ...payload,\n }\n if (!options.editSummary) {\n options.editSummary = (await this.ctx.preferences.get<string>('quickEdit.editSummary')) || ''\n }\n if (!options) this.ctx.emit('quick-edit/init-options', { ctx: this.ctx, options })\n\n const modal = this.ctx.modal\n .createObject({\n className: 'ipe-quickEdit',\n sizeClass: 'large',\n // backdrop: false,\n // draggable: true,\n center: false,\n outSideClose,\n })\n .init()\n modal.setTitle(\n (\n <>\n Loading: <u>{options.title}</u>\n </>\n ) as HTMLElement\n )\n modal.setContent(\n (\n <section\n className=\"ipe-quickEdit-loading\"\n style={{\n height: '70vh',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <ProgressBar />\n </section>\n ) as HTMLElement\n )\n modal.addButton({\n side: 'right',\n type: 'button',\n className: 'is-danger is-ghost',\n label: 'Cancel',\n method() {\n modal.close()\n },\n })\n modal.show()\n this.ctx.emit('quick-edit/show-modal', { ctx: this.ctx, modal, options })\n\n let wikiPage: IWikiPage\n try {\n wikiPage = await this.getWikiPageFromPayload(options)\n if (wikiPage.pageInfo.special) {\n throw new Error('Special page is not editable')\n }\n } catch (e) {\n modal.off(modal.Event.Close)\n modal.close()\n this.ctx.modal.notify('error', {\n content: e instanceof Error ? e.message : String(e),\n })\n return\n }\n modal.setTitle(\n (\n <>\n Quick {wikiPage.pageInfo.pageid === 0 ? 'Create' : 'Edit'}:{' '}\n <u>{wikiPage.pageInfo.title}</u>\n </>\n ) as HTMLElement\n )\n\n const editNotices = [] as ReactNode[]\n // Page not exists\n if (wikiPage.pageInfo.pageid === 0) {\n editNotices.push(\n <MBox title=\"Attention\" type=\"important\">\n <p>This page does not exist.</p>\n </MBox>\n )\n }\n // Edit based on old revision\n if (wikiPage.pageInfo.pageid && wikiPage.pageInfo.lastrevid !== wikiPage.revisions[0]?.revid) {\n editNotices.push(\n <MBox title=\"Attention\" type=\"warning\">\n <p>\n You are editing a <em>historical version</em>; the content is not the latest!\n </p>\n </MBox>\n )\n }\n this.ctx.emit('quick-edit/edit-notice', {\n ctx: this.ctx,\n options,\n modal,\n wikiPage,\n editNotices,\n })\n\n const editForm = (\n <form className=\"ipe-quickEdit__form\">\n <div className=\"ipe-quickEdit__notices\">{editNotices}</div>\n <div className=\"ipe-quickEdit__content\">\n <textarea className=\"ipe-quickEdit__textarea\" name=\"text\" id=\"wpTextbox1\">\n {wikiPage.revisions[0]?.content || ''}\n </textarea>\n </div>\n <div\n class=\"ipe-quickEdit__options\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n marginTop: '1rem',\n }}\n >\n <InputBox label=\"Summary\" id=\"summary\" name=\"summary\" value={options.editSummary} />\n <div className=\"ipe-input-box\">\n <label htmlFor=\"watchlist\" style={{ display: 'block' }}>\n Watchlist\n </label>\n <div style={{ display: 'flex', gap: '1rem' }}>\n {[\n WatchlistAction.preferences,\n WatchlistAction.nochange,\n WatchlistAction.watch,\n WatchlistAction.unwatch,\n ].map((action) => (\n <RadioBox\n key={action}\n name=\"watchlist\"\n value={action}\n inputProps={{ checked: watchList === action }}\n >\n {action}\n </RadioBox>\n ))}\n </div>\n </div>\n <div style={{ display: 'flex', gap: '1rem' }}>\n <CheckBox name=\"minor\" id=\"minor\" checked={options.editMinor}>\n Minor edit\n </CheckBox>\n <CheckBox name=\"reloadAfterSave\" id=\"reloadAfterSave\" checked={options.reloadAfterSave}>\n Reload after save\n </CheckBox>\n </div>\n </div>\n {/* Debug Info */}\n {import.meta.env.DEV && (\n <div className=\"debug\" style={{ marginTop: '1rem' }}>\n <details>\n <pre>{JSON.stringify(wikiPage.pageInfo, null, 2)}</pre>\n </details>\n </div>\n )}\n </form>\n ) as HTMLFormElement\n modal.setContent(editForm)\n // shamefully fix: make sure the submit button is always the first\n modal.addButton(\n {\n side: 'left',\n className: 'is-primary submit-btn',\n label: 'Submit',\n keyPress:\n (await this.ctx.preferences.get<string>('quickEdit.keyshortcut.save')) || undefined,\n method: () => {\n const formData = new FormData(editForm)\n console.info(wikiPage, editForm, {\n text: formData.get('text') as string,\n summary: formData.get('summary') as string,\n minor: formData.get('minor') === 'on',\n })\n modal.setLoadingState(true)\n this.handleSubmit({\n wikiPage,\n text: formData.get('text') as string,\n summary: formData.get('summary') as string,\n minor: formData.get('minor') === 'on',\n section: options.section,\n createonly: wikiPage.pageid === 0,\n watchlist: watchList,\n })\n .then(async () => {\n modal.setOptions({\n beforeClose: noop,\n })\n modal.close()\n this.ctx.modal.notify('success', {\n title: 'Submission Successful',\n content: 'Your changes have been saved.',\n })\n if (formData.get('reloadAfterSave')) {\n await sleep(500)\n location.reload()\n }\n })\n .catch((error) => {\n this.ctx.modal.notify('error', {\n title: 'Submission Error',\n content: error instanceof Error ? error.message : String(error),\n })\n modal.setLoadingState(false)\n })\n },\n },\n 0\n )\n modal.setOptions({\n beforeClose: () => {\n const oldStr = wikiPage.revisions[0]?.content || ''\n const newStr = editForm.querySelector('textarea')?.value || ''\n if (newStr === oldStr) {\n return true\n } else {\n this.ctx.modal.confirm(\n {\n className: 'is-primary',\n title: 'Unsaved Changes',\n content:\n 'All edit contents will be lost after closing the modal. Are you sure you want to close?',\n center: true,\n okBtn: {\n label: 'Give Up',\n className: 'is-danger is-ghost',\n },\n cancelBtn: {\n label: 'Continue Editing',\n className: 'is-primary is-ghost',\n },\n },\n (confirmed) => {\n if (confirmed) {\n modal.setOptions({\n beforeClose: noop,\n })\n modal.close()\n }\n return true\n }\n )\n return false\n }\n },\n })\n this.ctx.emit('quick-edit/wiki-page', {\n ctx: this.ctx,\n options,\n modal,\n wikiPage,\n })\n\n const beforeUnload = (e: BeforeUnloadEvent) => {\n if (editForm.querySelector('textarea')?.value === wikiPage.revisions[0]?.content) {\n return true\n }\n e.preventDefault()\n return 'You have unsaved changes. Are you sure you want to leave?'\n }\n window.addEventListener('beforeunload', beforeUnload)\n modal.on(modal.Event.Close, () => {\n window.removeEventListener('beforeunload', beforeUnload)\n })\n }\n\n async handleSubmit(payload: QuickEditSubmitPayload) {\n const wikiPage = payload.wikiPage\n const summary = payload.summary || ''\n const text = payload.text || ''\n const minor = payload.minor\n const createonly = payload.createonly\n const watchlist = payload.watchlist\n const section = payload.section\n\n return wikiPage.edit(\n {\n summary,\n text,\n watchlist,\n section,\n },\n {\n minor,\n createonly,\n }\n )\n }\n\n async getWikiPageFromPayload(payload: Partial<QuickEditOptions>) {\n if (payload.revision) {\n return this.ctx.wikiPage.newFromRevision(payload.revision, payload.section)\n } else if (payload.pageId) {\n return this.ctx.wikiPage.newFromPageId(payload.pageId, payload.section)\n } else if (payload.title) {\n return this.ctx.wikiPage.newFromTitle(payload.title, false, payload.section)\n }\n throw new Error('Invalid payload')\n }\n\n private injectToolbox(ctx: InPageEdit) {\n const title = this.ctx.wikiTitle.currentTitle\n const canEdit = this.ctx.wiki.hasRight('edit') && title.getNamespaceId() >= 0\n ctx.toolbox.addButton({\n id: 'quick-edit',\n group: 'group1',\n index: 0,\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-edit\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1\" />\n <path d=\"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z\" />\n <path d=\"M16 5l3 3\" />\n </svg>\n ) as HTMLElement,\n buttonProps: {\n disabled: !canEdit,\n },\n tooltip: canEdit ? 'Quick Edit' : 'Not editable',\n onClick: () => {\n const revision = new URLSearchParams(window.location.search).get('oldid')\n this.showModal({\n title: title.getPrefixedText(),\n revision: revision ? Number(revision) : undefined,\n })\n },\n })\n }\n\n protected removeToolbox(ctx: InPageEdit) {\n ctx.toolbox.removeButton('quick-edit')\n }\n}\n"],"names":["sleep","ms","resolve","_PluginQuickEdit_decorators","_init","_a","Inject","RegisterPreferences","Schema","WatchlistAction","PluginQuickEdit","BasePlugin","ctx","makeCallable","payload","searchParams","outSideClose","watchList","editSummary","editMinor","options","modal","jsxs","Fragment","jsx","ProgressBar","wikiPage","e","editNotices","MBox","editForm","InputBox","action","RadioBox","CheckBox","formData","noop","error","oldStr","confirmed","beforeUnload","summary","text","minor","createonly","watchlist","section","title","canEdit","revision","__decoratorStart","__decorateElement","__runInitializers"],"mappings":";;;;;;;;;AAAO,MAAMA,IAAQ,CAACC,IAAa,MACjC,IAAI,QAAQ,CAACC,MAAY,WAAWA,GAASD,CAAE,CAAC;;;;;;;;;;;;GCDlDE,GAAAC,GAAAC;AAsDAF,IAAA,CAACG,EAAO,CAAC,OAAO,YAAY,aAAa,QAAQ,SAAS,aAAa,CAAC,GACvEC;AAAA,EACCC,EAAO,OAAO;AAAA,IACZ,yBAAyBA,EAAO,OAAA,EAC7B,YAAY,sCAAsC,EAClD,QAAQ,uBAAuB;AAAA,IAClC,uBAAuBA,EAAO,QAAA,EAC3B,YAAY,mCAAmC,EAC/C,QAAQ,EAAK;AAAA,IAChB,0BAA0BA,EAAO,QAAA,EAC9B,YAAY,oCAAoC,EAChD,QAAQ,EAAI;AAAA,IACf,uBAAuBA,EAAO,MAAM;AAAA,MAClCA,EAAO,MAAMC,EAAgB,WAAW,EAAE,YAAY,uBAAuB;AAAA,MAC7ED,EAAO,MAAMC,EAAgB,QAAQ,EAAE,YAAY,mCAAmC;AAAA,MACtFD,EAAO,MAAMC,EAAgB,KAAK,EAAE,YAAY,2BAA2B;AAAA,MAC3ED,EAAO,MAAMC,EAAgB,OAAO,EAAE,YAAY,gCAAgC;AAAA,IAAA,CACnF,EACE,YAAY,mBAAmB,EAC/B,QAAQA,EAAgB,WAAW;AAAA,IACtC,8BAA8BD,EAAO,OAAA,EAClC,QAAQ,QAAQ,EAChB,YAAY,6CAA6C;AAAA,EAAA,CAC7D,EACE,YAAY,oBAAoB,EAChC,MAAM,YAAY,MAAM;AAC7B,CAAA;AACO,MAAME,WAAwBL,IAAAM,GAAW;AAAA,EAY9C,YAAmBC,GAAiB;AAClC,UAAMA,GAAK,CAAA,GAAI,YAAY,GADV,KAAA,MAAAA,GAXnB,KAAiB,kBAAoC;AAAA,MACnD,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,iBAAiB;AAAA,IAAA,GAKjB,KAAK,IAAI,KAAK,IAAI,aAAaC,EAAa,MAAM,WAAW,CAAC;AAAA,EAChE;AAAA,EAEU,QAA8B;AACtC,SAAK,IAAI,OAAO,CAAC,SAAS,GAAG,CAACD,MAAQ;AACpC,WAAK,cAAcA,CAAG,GACtBA,EAAI,GAAG,WAAW,MAAM;AACtB,aAAK,cAAcA,CAAG;AAAA,MACxB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,UAAUE,GAA8C;AAiB5D,QAhBI,OAAOA,IAAY,MACrBA,IAAU,CAAA,IACD,OAAOA,KAAY,aAC5BA,IAAU;AAAA,MACR,OAAOA;AAAA,IAAA,IAKPA,GAAS,SAEXA,EAAQ,QAAQA,EAAQ,MAExB,OAAOA,EAAQ,OAGb,CAACA,EAAQ,SAAS,CAACA,EAAQ,UAAU,CAACA,EAAQ,UAAU;AAC1D,WAAK,OAAO,KAAK,iEAAiE;AAClF,YAAMC,IAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC/D,MAAAD,IAAU;AAAA,QACR,GAAGA;AAAA,QACH,OAAO,KAAK,IAAI,UAAU,aAAa,iBAAA;AAAA,QACvC,UAAUC,EAAa,IAAI,OAAO,IAAI,OAAOA,EAAa,IAAI,OAAO,CAAC,IAAI;AAAA,QAC1E,QAAQA,EAAa,IAAI,OAAO,IAAI,OAAOA,EAAa,IAAI,OAAO,CAAC,IAAI;AAAA,MAAA;AAAA,IAE5E;AAEA,UAAMC,IAAgB,MAAM,KAAK,IAAI,YAAY,IAAa,wBAAwB,GAChFC,IAAa,MAAM,KAAK,IAAI,YAAY,IAAqB,qBAAqB,GAClFC,IACJ,OAAOJ,EAAQ,eAAgB,WAC3BA,EAAQ,cACP,MAAM,KAAK,IAAI,YAAY,IAAY,uBAAuB,GAC/DK,IACJ,OAAOL,EAAQ,aAAc,YACzBA,EAAQ,YACP,MAAM,KAAK,IAAI,YAAY,IAAa,qBAAqB,GAE9DM,IAA4B;AAAA,MAChC,GAAG,KAAK;AAAA,MACR,aAAAF;AAAA,MACA,WAAAC;AAAA,MACA,GAAGL;AAAA,IAAA;AAEL,IAAKM,EAAQ,gBACXA,EAAQ,cAAe,MAAM,KAAK,IAAI,YAAY,IAAY,uBAAuB,KAAM,KAExFA,KAAS,KAAK,IAAI,KAAK,2BAA2B,EAAE,KAAK,KAAK,KAAK,SAAAA,EAAA,CAAS;AAEjF,UAAMC,IAAQ,KAAK,IAAI,MACpB,aAAa;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA;AAAA;AAAA,MAGX,QAAQ;AAAA,MACR,cAAAL;AAAA,IAAA,CACD,EACA,KAAA;AACH,IAAAK,EAAM;AAAA,MAEFC,gBAAAA,EAAAC,GAAA,EAAE,UAAA;AAAA,QAAA;AAAA,0BACU,KAAA,EAAG,UAAAH,EAAQ,OAAM;AAAA,MAAA,GAC7B;AAAA,IAAA,GAGJC,EAAM;AAAA,MAEF,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,eAAe;AAAA,YACf,gBAAgB;AAAA,YAChB,YAAY;AAAA,UAAA;AAAA,UAGd,4BAACC,GAAA,CAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IACf,GAGJJ,EAAM,UAAU;AAAA,MACd,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AACP,QAAAA,EAAM,MAAA;AAAA,MACR;AAAA,IAAA,CACD,GACDA,EAAM,KAAA,GACN,KAAK,IAAI,KAAK,yBAAyB,EAAE,KAAK,KAAK,KAAK,OAAAA,GAAO,SAAAD,GAAS;AAExE,QAAIM;AACJ,QAAI;AAEF,UADAA,IAAW,MAAM,KAAK,uBAAuBN,CAAO,GAChDM,EAAS,SAAS;AACpB,cAAM,IAAI,MAAM,8BAA8B;AAAA,IAElD,SAASC,GAAG;AACV,MAAAN,EAAM,IAAIA,EAAM,MAAM,KAAK,GAC3BA,EAAM,MAAA,GACN,KAAK,IAAI,MAAM,OAAO,SAAS;AAAA,QAC7B,SAASM,aAAa,QAAQA,EAAE,UAAU,OAAOA,CAAC;AAAA,MAAA,CACnD;AACD;AAAA,IACF;AACA,IAAAN,EAAM;AAAA,MAEFC,gBAAAA,EAAAC,GAAA,EAAE,UAAA;AAAA,QAAA;AAAA,QACOG,EAAS,SAAS,WAAW,IAAI,WAAW;AAAA,QAAO;AAAA,QAAE;AAAA,0BAC3D,KAAA,EAAG,UAAAA,EAAS,SAAS,OAAM;AAAA,MAAA,GAC9B;AAAA,IAAA;AAIJ,UAAME,IAAc,CAAA;AAEpB,IAAIF,EAAS,SAAS,WAAW,KAC/BE,EAAY;AAAA,MACV,gBAAAJ,EAACK,KAAK,OAAM,aAAY,MAAK,aAC3B,UAAA,gBAAAL,EAAC,KAAA,EAAE,UAAA,4BAAA,CAAyB,GAC9B;AAAA,IAAA,GAIAE,EAAS,SAAS,UAAUA,EAAS,SAAS,cAAcA,EAAS,UAAU,CAAC,GAAG,SACrFE,EAAY;AAAA,wBACTC,GAAA,EAAK,OAAM,aAAY,MAAK,WAC3B,4BAAC,KAAA,EAAE,UAAA;AAAA,QAAA;AAAA,QACiB,gBAAAL,EAAC,QAAG,UAAA,sBAAkB;AAAA,QAAK;AAAA,MAAA,EAAA,CAC/C,EAAA,CACF;AAAA,IAAA,GAGJ,KAAK,IAAI,KAAK,0BAA0B;AAAA,MACtC,KAAK,KAAK;AAAA,MACV,SAAAJ;AAAA,MACA,OAAAC;AAAA,MACA,UAAAK;AAAA,MACA,aAAAE;AAAA,IAAA,CACD;AAED,UAAME,IACJR,gBAAAA,EAAC,QAAA,EAAK,WAAU,uBACd,UAAA;AAAA,wBAAC,OAAA,EAAI,WAAU,0BAA0B,UAAAM,GAAY;AAAA,wBACpD,OAAA,EAAI,WAAU,0BACb,UAAA,gBAAAJ,EAAC,YAAA,EAAS,WAAU,2BAA0B,MAAK,QAAO,IAAG,cAC1D,UAAAE,EAAS,UAAU,CAAC,GAAG,WAAW,GAAA,CACrC,GACF;AAAA,MACAJ,gBAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,OAAO;AAAA,YACL,SAAS;AAAA,YACT,eAAe;AAAA,YACf,KAAK;AAAA,YACL,WAAW;AAAA,UAAA;AAAA,UAGb,UAAA;AAAA,YAAA,gBAAAE,EAACO,GAAA,EAAS,OAAM,WAAU,IAAG,WAAU,MAAK,WAAU,OAAOX,EAAQ,YAAA,CAAa;AAAA,YAClFE,gBAAAA,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,cAAA,gBAAAE,EAAC,SAAA,EAAM,SAAQ,aAAY,OAAO,EAAE,SAAS,QAAA,GAAW,UAAA,YAAA,CAExD;AAAA,cACA,gBAAAA,EAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,OAAA,GACjC,UAAA;AAAA,gBACCf,EAAgB;AAAA,gBAChBA,EAAgB;AAAA,gBAChBA,EAAgB;AAAA,gBAChBA,EAAgB;AAAA,cAAA,EAChB,IAAI,CAACuB,MACL,gBAAAR;AAAA,gBAACS;AAAA,gBAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,OAAOD;AAAA,kBACP,YAAY,EAAE,SAASf,MAAce,EAAA;AAAA,kBAEpC,UAAAA;AAAA,gBAAA;AAAA,gBALIA;AAAA,cAAA,CAOR,GACH;AAAA,YAAA,GACF;AAAA,YACAV,gBAAAA,EAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,OAAA,GAClC,UAAA;AAAA,cAAA,gBAAAE,EAACU,GAAA,EAAS,MAAK,SAAQ,IAAG,SAAQ,SAASd,EAAQ,WAAW,UAAA,aAAA,CAE9D;AAAA,cACA,gBAAAI,EAACU,KAAS,MAAK,mBAAkB,IAAG,mBAAkB,SAASd,EAAQ,iBAAiB,UAAA,oBAAA,CAExF;AAAA,YAAA,GACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD;AAAA,IAAA,GAOH;AAEF,IAAAC,EAAM,WAAWS,CAAQ,GAEzBT,EAAM;AAAA,MACJ;AAAA,QACE,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,UACG,MAAM,KAAK,IAAI,YAAY,IAAY,4BAA4B,KAAM;AAAA,QAC5E,QAAQ,MAAM;AACZ,gBAAMc,IAAW,IAAI,SAASL,CAAQ;AAMtC,UAAAT,EAAM,gBAAgB,EAAI,GAC1B,KAAK,aAAa;AAAA,YAChB,UAAAK;AAAA,YACA,MAAMS,EAAS,IAAI,MAAM;AAAA,YACzB,SAASA,EAAS,IAAI,SAAS;AAAA,YAC/B,OAAOA,EAAS,IAAI,OAAO,MAAM;AAAA,YACjC,SAASf,EAAQ;AAAA,YACjB,YAAYM,EAAS,WAAW;AAAA,YAChC,WAAWT;AAAA,UAAA,CACZ,EACE,KAAK,YAAY;AAChB,YAAAI,EAAM,WAAW;AAAA,cACf,aAAae;AAAA,YAAA,CACd,GACDf,EAAM,MAAA,GACN,KAAK,IAAI,MAAM,OAAO,WAAW;AAAA,cAC/B,OAAO;AAAA,cACP,SAAS;AAAA,YAAA,CACV,GACGc,EAAS,IAAI,iBAAiB,MAChC,MAAMnC,EAAM,GAAG,GACf,SAAS,OAAA;AAAA,UAEb,CAAC,EACA,MAAM,CAACqC,MAAU;AAChB,iBAAK,IAAI,MAAM,OAAO,SAAS;AAAA,cAC7B,OAAO;AAAA,cACP,SAASA,aAAiB,QAAQA,EAAM,UAAU,OAAOA,CAAK;AAAA,YAAA,CAC/D,GACDhB,EAAM,gBAAgB,EAAK;AAAA,UAC7B,CAAC;AAAA,QACL;AAAA,MAAA;AAAA,MAEF;AAAA,IAAA,GAEFA,EAAM,WAAW;AAAA,MACf,aAAa,MAAM;AACjB,cAAMiB,IAASZ,EAAS,UAAU,CAAC,GAAG,WAAW;AAEjD,gBADeI,EAAS,cAAc,UAAU,GAAG,SAAS,QAC7CQ,IACN,MAEP,KAAK,IAAI,MAAM;AAAA,UACb;AAAA,YACE,WAAW;AAAA,YACX,OAAO;AAAA,YACP,SACE;AAAA,YACF,QAAQ;AAAA,YACR,OAAO;AAAA,cACL,OAAO;AAAA,cACP,WAAW;AAAA,YAAA;AAAA,YAEb,WAAW;AAAA,cACT,OAAO;AAAA,cACP,WAAW;AAAA,YAAA;AAAA,UACb;AAAA,UAEF,CAACC,OACKA,MACFlB,EAAM,WAAW;AAAA,YACf,aAAae;AAAA,UAAA,CACd,GACDf,EAAM,MAAA,IAED;AAAA,QACT,GAEK;AAAA,MAEX;AAAA,IAAA,CACD,GACD,KAAK,IAAI,KAAK,wBAAwB;AAAA,MACpC,KAAK,KAAK;AAAA,MACV,SAAAD;AAAA,MACA,OAAAC;AAAA,MACA,UAAAK;AAAA,IAAA,CACD;AAED,UAAMc,IAAe,CAACb,MAChBG,EAAS,cAAc,UAAU,GAAG,UAAUJ,EAAS,UAAU,CAAC,GAAG,UAChE,MAETC,EAAE,eAAA,GACK;AAET,WAAO,iBAAiB,gBAAgBa,CAAY,GACpDnB,EAAM,GAAGA,EAAM,MAAM,OAAO,MAAM;AAChC,aAAO,oBAAoB,gBAAgBmB,CAAY;AAAA,IACzD,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,aAAa1B,GAAiC;AAClD,UAAMY,IAAWZ,EAAQ,UACnB2B,IAAU3B,EAAQ,WAAW,IAC7B4B,IAAO5B,EAAQ,QAAQ,IACvB6B,IAAQ7B,EAAQ,OAChB8B,IAAa9B,EAAQ,YACrB+B,IAAY/B,EAAQ,WACpBgC,IAAUhC,EAAQ;AAExB,WAAOY,EAAS;AAAA,MACd;AAAA,QACE,SAAAe;AAAA,QACA,MAAAC;AAAA,QACA,WAAAG;AAAA,QACA,SAAAC;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,OAAAH;AAAA,QACA,YAAAC;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ;AAAA,EAEA,MAAM,uBAAuB9B,GAAoC;AAC/D,QAAIA,EAAQ;AACV,aAAO,KAAK,IAAI,SAAS,gBAAgBA,EAAQ,UAAUA,EAAQ,OAAO;AAC5E,QAAWA,EAAQ;AACjB,aAAO,KAAK,IAAI,SAAS,cAAcA,EAAQ,QAAQA,EAAQ,OAAO;AACxE,QAAWA,EAAQ;AACjB,aAAO,KAAK,IAAI,SAAS,aAAaA,EAAQ,OAAO,IAAOA,EAAQ,OAAO;AAE7E,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AAAA,EAEQ,cAAcF,GAAiB;AACrC,UAAMmC,IAAQ,KAAK,IAAI,UAAU,cAC3BC,IAAU,KAAK,IAAI,KAAK,SAAS,MAAM,KAAKD,EAAM,eAAA,KAAoB;AAC5E,IAAAnC,EAAI,QAAQ,UAAU;AAAA,MACpB,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MACEU,gBAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,UACP,gBAAa;AAAA,UACb,kBAAe;AAAA,UACf,mBAAgB;AAAA,UAChB,OAAM;AAAA,UAEN,UAAA;AAAA,YAAA,gBAAAE,EAAC,UAAK,QAAO,QAAO,GAAE,iBAAgB,MAAK,QAAO;AAAA,YAClD,gBAAAA,EAAC,QAAA,EAAK,GAAE,8DAA6D;AAAA,YACrE,gBAAAA,EAAC,QAAA,EAAK,GAAE,0EAAyE;AAAA,YACjF,gBAAAA,EAAC,QAAA,EAAK,GAAE,aAAY;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGxB,aAAa;AAAA,QACX,UAAU,CAACwB;AAAA,MAAA;AAAA,MAEb,SAASA,IAAU,eAAe;AAAA,MAClC,SAAS,MAAM;AACb,cAAMC,IAAW,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,OAAO;AACxE,aAAK,UAAU;AAAA,UACb,OAAOF,EAAM,gBAAA;AAAA,UACb,UAAUE,IAAW,OAAOA,CAAQ,IAAI;AAAA,QAAA,CACzC;AAAA,MACH;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAEU,cAAcrC,GAAiB;AACvC,IAAAA,EAAI,QAAQ,aAAa,YAAY;AAAA,EACvC;AACF;AA/ZOR,IAAA8C,EAAA7C,CAAA;AAAMK,IAANyC,2BA3BPhD,GA2BaO,CAAA;AAAN0C,EAAAhD,GAAA,GAAMM,CAAA;"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeCallable-LDU0xZMJ.js","sources":["../src/utils/makeCallable.ts"],"sourcesContent":["export const CALLABLE_APPLY_SYMBOL = Symbol('@@apply')\nexport const CALLABLE_CTOR_SYMBOL = Symbol('@@ctor')\nexport function makeCallable<C extends object, M extends keyof C>(\n instance: C,\n method: M\n): C &\n ((\n ...args: C[M] extends (...a: infer P) => any ? P : never\n ) => C[M] extends (...a: any[]) => infer R ? R : never) {\n if (typeof instance !== 'object' || instance === null || Array.isArray(instance)) {\n throw new TypeError('instance is not an object')\n }\n\n const apply: any = (...args: any[]) => {\n const fn = (instance as any)[method]\n if (typeof fn !== 'function') {\n throw new TypeError(`Property \"${String(method)}\" is not a function`)\n }\n return fn.apply(instance, args)\n }\n apply[CALLABLE_APPLY_SYMBOL] = apply\n apply[CALLABLE_CTOR_SYMBOL] = instance\n\n const ctorName = (instance as any)?.constructor?.name\n if (ctorName) (apply as any)[Symbol.toStringTag] = ctorName\n\n const proxy = new Proxy(apply, {\n get(_, p, receiver) {\n if (p === 'prototype') return Reflect.get(apply, p, receiver)\n return Reflect.get(instance as any, p, instance)\n },\n set(_, p, v) {\n return Reflect.set(instance as any, p, v)\n },\n has(_, p) {\n return Reflect.has(instance as any, p)\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(instance as any, p)\n },\n ownKeys() {\n return Reflect.ownKeys(instance as any)\n },\n getOwnPropertyDescriptor(_, p) {\n return Object.getOwnPropertyDescriptor(instance as any, p)\n },\n defineProperty(_, p, desc) {\n return Object.defineProperty(instance as any, p, desc)\n },\n })\n\n return proxy as unknown as any\n}\n"],"names":["CALLABLE_APPLY_SYMBOL","CALLABLE_CTOR_SYMBOL","makeCallable","instance","method","apply","args","fn","ctorName","_","p","receiver","v","desc"],"mappings":"AAAO,MAAMA,IAAwB,OAAO,SAAS,GACxCC,IAAuB,OAAO,QAAQ;AAC5C,SAASC,EACdC,GACAC,GAIwD;AACxD,MAAI,OAAOD,KAAa,YAAYA,MAAa,QAAQ,MAAM,QAAQA,CAAQ;AAC7E,UAAM,IAAI,UAAU,2BAA2B;AAGjD,QAAME,IAAa,IAAIC,MAAgB;AACrC,UAAMC,IAAMJ,EAAiBC,CAAM;AACnC,QAAI,OAAOG,KAAO;AAChB,YAAM,IAAI,UAAU,aAAa,OAAOH,CAAM,CAAC,qBAAqB;AAEtE,WAAOG,EAAG,MAAMJ,GAAUG,CAAI;AAAA,EAChC;AACA,EAAAD,EAAML,CAAqB,IAAIK,GAC/BA,EAAMJ,CAAoB,IAAIE;AAE9B,QAAMK,IAAYL,GAAkB,aAAa;AACjD,SAAIK,MAAWH,EAAc,OAAO,WAAW,IAAIG,IAErC,IAAI,MAAMH,GAAO;AAAA,IAC7B,IAAII,GAAGC,GAAGC,GAAU;AAClB,aAAID,MAAM,cAAoB,QAAQ,IAAIL,GAAOK,GAAGC,CAAQ,IACrD,QAAQ,IAAIR,GAAiBO,GAAGP,CAAQ;AAAA,IACjD;AAAA,IACA,IAAIM,GAAGC,GAAGE,GAAG;AACX,aAAO,QAAQ,IAAIT,GAAiBO,GAAGE,CAAC;AAAA,IAC1C;AAAA,IACA,IAAIH,GAAGC,GAAG;AACR,aAAO,QAAQ,IAAIP,GAAiBO,CAAC;AAAA,IACvC;AAAA,IACA,eAAeD,GAAGC,GAAG;AACnB,aAAO,QAAQ,eAAeP,GAAiBO,CAAC;AAAA,IAClD;AAAA,IACA,UAAU;AACR,aAAO,QAAQ,QAAQP,CAAe;AAAA,IACxC;AAAA,IACA,yBAAyBM,GAAGC,GAAG;AAC7B,aAAO,OAAO,yBAAyBP,GAAiBO,CAAC;AAAA,IAC3D;AAAA,IACA,eAAeD,GAAGC,GAAGG,GAAM;AACzB,aAAO,OAAO,eAAeV,GAAiBO,GAAGG,CAAI;AAAA,IACvD;AAAA,EAAA,CACD;AAGH;"}
|
|
1
|
+
{"version":3,"file":"makeCallable-LDU0xZMJ.js","sources":["../src/utils/makeCallable.ts"],"sourcesContent":["export const CALLABLE_APPLY_SYMBOL = Symbol('@@apply')\r\nexport const CALLABLE_CTOR_SYMBOL = Symbol('@@ctor')\r\nexport function makeCallable<C extends object, M extends keyof C>(\r\n instance: C,\r\n method: M\r\n): C &\r\n ((\r\n ...args: C[M] extends (...a: infer P) => any ? P : never\r\n ) => C[M] extends (...a: any[]) => infer R ? R : never) {\r\n if (typeof instance !== 'object' || instance === null || Array.isArray(instance)) {\r\n throw new TypeError('instance is not an object')\r\n }\r\n\r\n const apply: any = (...args: any[]) => {\r\n const fn = (instance as any)[method]\r\n if (typeof fn !== 'function') {\r\n throw new TypeError(`Property \"${String(method)}\" is not a function`)\r\n }\r\n return fn.apply(instance, args)\r\n }\r\n apply[CALLABLE_APPLY_SYMBOL] = apply\r\n apply[CALLABLE_CTOR_SYMBOL] = instance\r\n\r\n const ctorName = (instance as any)?.constructor?.name\r\n if (ctorName) (apply as any)[Symbol.toStringTag] = ctorName\r\n\r\n const proxy = new Proxy(apply, {\r\n get(_, p, receiver) {\r\n if (p === 'prototype') return Reflect.get(apply, p, receiver)\r\n return Reflect.get(instance as any, p, instance)\r\n },\r\n set(_, p, v) {\r\n return Reflect.set(instance as any, p, v)\r\n },\r\n has(_, p) {\r\n return Reflect.has(instance as any, p)\r\n },\r\n deleteProperty(_, p) {\r\n return Reflect.deleteProperty(instance as any, p)\r\n },\r\n ownKeys() {\r\n return Reflect.ownKeys(instance as any)\r\n },\r\n getOwnPropertyDescriptor(_, p) {\r\n return Object.getOwnPropertyDescriptor(instance as any, p)\r\n },\r\n defineProperty(_, p, desc) {\r\n return Object.defineProperty(instance as any, p, desc)\r\n },\r\n })\r\n\r\n return proxy as unknown as any\r\n}\r\n"],"names":["CALLABLE_APPLY_SYMBOL","CALLABLE_CTOR_SYMBOL","makeCallable","instance","method","apply","args","fn","ctorName","_","p","receiver","v","desc"],"mappings":"AAAO,MAAMA,IAAwB,OAAO,SAAS,GACxCC,IAAuB,OAAO,QAAQ;AAC5C,SAASC,EACdC,GACAC,GAIwD;AACxD,MAAI,OAAOD,KAAa,YAAYA,MAAa,QAAQ,MAAM,QAAQA,CAAQ;AAC7E,UAAM,IAAI,UAAU,2BAA2B;AAGjD,QAAME,IAAa,IAAIC,MAAgB;AACrC,UAAMC,IAAMJ,EAAiBC,CAAM;AACnC,QAAI,OAAOG,KAAO;AAChB,YAAM,IAAI,UAAU,aAAa,OAAOH,CAAM,CAAC,qBAAqB;AAEtE,WAAOG,EAAG,MAAMJ,GAAUG,CAAI;AAAA,EAChC;AACA,EAAAD,EAAML,CAAqB,IAAIK,GAC/BA,EAAMJ,CAAoB,IAAIE;AAE9B,QAAMK,IAAYL,GAAkB,aAAa;AACjD,SAAIK,MAAWH,EAAc,OAAO,WAAW,IAAIG,IAErC,IAAI,MAAMH,GAAO;AAAA,IAC7B,IAAII,GAAGC,GAAGC,GAAU;AAClB,aAAID,MAAM,cAAoB,QAAQ,IAAIL,GAAOK,GAAGC,CAAQ,IACrD,QAAQ,IAAIR,GAAiBO,GAAGP,CAAQ;AAAA,IACjD;AAAA,IACA,IAAIM,GAAGC,GAAGE,GAAG;AACX,aAAO,QAAQ,IAAIT,GAAiBO,GAAGE,CAAC;AAAA,IAC1C;AAAA,IACA,IAAIH,GAAGC,GAAG;AACR,aAAO,QAAQ,IAAIP,GAAiBO,CAAC;AAAA,IACvC;AAAA,IACA,eAAeD,GAAGC,GAAG;AACnB,aAAO,QAAQ,eAAeP,GAAiBO,CAAC;AAAA,IAClD;AAAA,IACA,UAAU;AACR,aAAO,QAAQ,QAAQP,CAAe;AAAA,IACxC;AAAA,IACA,yBAAyBM,GAAGC,GAAG;AAC7B,aAAO,OAAO,yBAAyBP,GAAiBO,CAAC;AAAA,IAC3D;AAAA,IACA,eAAeD,GAAGC,GAAGG,GAAM;AACzB,aAAO,OAAO,eAAeV,GAAiBO,GAAGG,CAAI;AAAA,IACvD;AAAA,EAAA,CACD;AAGH;"}
|
|
@@ -1,64 +1,59 @@
|
|
|
1
|
+
import { FexiosFinalContext } from 'fexios';
|
|
1
2
|
import { PageInfo } from './types/PageInfo';
|
|
2
3
|
import { PageParseData } from './types/PageParseData';
|
|
3
4
|
import { WatchlistAction } from './types/WatchlistAction';
|
|
4
|
-
import { MediaWikiApi, MwApiParams } from 'wiki-saikou/browser';
|
|
5
|
-
export
|
|
6
|
-
|
|
5
|
+
import { MediaWikiApi, MwApiParams, MwApiResponse } from 'wiki-saikou/browser';
|
|
6
|
+
export interface WikiPageEditPayload {
|
|
7
|
+
text?: string;
|
|
8
|
+
prependtext?: string;
|
|
9
|
+
appendtext?: string;
|
|
10
|
+
summary?: string;
|
|
11
|
+
watchlist?: WatchlistAction;
|
|
12
|
+
section?: number | 'new' | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface IWikiPage {
|
|
7
15
|
pageInfo: PageInfo;
|
|
8
|
-
|
|
9
|
-
constructor(pageInfo: Partial<PageInfo>, api?: MediaWikiApi);
|
|
10
|
-
fetchPageInfo(payload: MwApiParams): Promise<PageInfo>;
|
|
11
|
-
parse(params?: MwApiParams): Promise<import('fexios').FexiosFinalContext<import('wiki-saikou').MwApiResponse<{
|
|
16
|
+
parse(params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
|
|
12
17
|
parse: PageParseData;
|
|
13
18
|
}>>>;
|
|
14
|
-
preview(text: string, params?: MwApiParams): Promise<
|
|
19
|
+
preview(text: string, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
|
|
15
20
|
parse: PageParseData;
|
|
16
21
|
}>>>;
|
|
17
|
-
edit(payload: {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
appendtext?: string;
|
|
21
|
-
summary?: string;
|
|
22
|
-
watchlist?: WatchlistAction;
|
|
23
|
-
section?: number | 'new' | undefined;
|
|
24
|
-
}, params?: MwApiParams): Promise<import('fexios').FexiosFinalContext<any>>;
|
|
22
|
+
edit(payload: WikiPageEditPayload, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
|
|
23
|
+
success: boolean;
|
|
24
|
+
}>>>;
|
|
25
25
|
createOnly(payload: {
|
|
26
26
|
text: string;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
delete(reason?: string, params?: MwApiParams): Promise<
|
|
27
|
+
} & Pick<WikiPageEditPayload, 'summary' | 'watchlist'>, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
|
|
28
|
+
success: boolean;
|
|
29
|
+
}>>>;
|
|
30
|
+
delete(reason?: string, params?: MwApiParams): Promise<FexiosFinalContext<MwApiResponse<{
|
|
31
|
+
success: boolean;
|
|
32
|
+
}>>>;
|
|
31
33
|
moveTo(title: string, reason?: string, params?: Partial<MwApiParams & {
|
|
32
34
|
movetalk: boolean;
|
|
33
35
|
movesubpages: boolean;
|
|
34
|
-
}>): Promise<
|
|
36
|
+
}>): Promise<FexiosFinalContext<MwApiResponse<{
|
|
37
|
+
success: boolean;
|
|
38
|
+
}>>>;
|
|
35
39
|
userCan(action: keyof PageInfo['actions']): boolean;
|
|
36
40
|
userCanEdit(): boolean;
|
|
37
41
|
reloadSelfInfo(): Promise<this>;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
content: string;
|
|
55
|
-
}[];
|
|
56
|
-
get templates(): {
|
|
57
|
-
ns: number;
|
|
58
|
-
title: string;
|
|
59
|
-
}[];
|
|
60
|
-
get images(): {
|
|
61
|
-
ns: number;
|
|
62
|
-
title: string;
|
|
63
|
-
}[];
|
|
42
|
+
readonly pageid: PageInfo['pageid'];
|
|
43
|
+
readonly title: PageInfo['title'];
|
|
44
|
+
readonly ns: PageInfo['ns'];
|
|
45
|
+
readonly contentmodel: PageInfo['contentmodel'];
|
|
46
|
+
readonly fullurl: PageInfo['fullurl'];
|
|
47
|
+
readonly canonicalurl: PageInfo['canonicalurl'];
|
|
48
|
+
readonly editurl: PageInfo['editurl'];
|
|
49
|
+
readonly revisions: NonNullable<PageInfo['revisions']>;
|
|
50
|
+
readonly lastrevid: PageInfo['lastrevid'];
|
|
51
|
+
readonly templates: NonNullable<PageInfo['templates']>;
|
|
52
|
+
readonly images: NonNullable<PageInfo['images']>;
|
|
53
|
+
}
|
|
54
|
+
export interface WikiPageConstructor {
|
|
55
|
+
new (pageInfo: Partial<PageInfo>, loaded?: boolean): IWikiPage;
|
|
56
|
+
newFromApi(payload: MwApiParams): Promise<IWikiPage>;
|
|
57
|
+
newBlankPage(init?: Partial<PageInfo>): IWikiPage;
|
|
64
58
|
}
|
|
59
|
+
export declare function createWikiPageModel(api: MediaWikiApi): WikiPageConstructor;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WikiMetadata } from '../../types/WikiMetadata';
|
|
2
2
|
export interface IWikiTitle {
|
|
3
3
|
/**
|
|
4
4
|
* Get db key without namespace prefix
|
|
@@ -85,4 +85,4 @@ export interface IWikiTitle {
|
|
|
85
85
|
export interface WikiTitleConstructor {
|
|
86
86
|
new (title: string, namespace?: number): IWikiTitle;
|
|
87
87
|
}
|
|
88
|
-
export declare function createWikiTitleModel(metadata:
|
|
88
|
+
export declare function createWikiTitleModel(metadata: WikiMetadata): WikiTitleConstructor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noop-ClDc6zv4.js","sources":["../src/utils/noop.ts"],"sourcesContent":["export const noop = () => {}\n"],"names":["noop"],"mappings":"AAAO,MAAMA,IAAO,MAAM;AAAC;"}
|
|
1
|
+
{"version":3,"file":"noop-ClDc6zv4.js","sources":["../src/utils/noop.ts"],"sourcesContent":["export const noop = () => {}\r\n"],"names":["noop"],"mappings":"AAAO,MAAMA,IAAO,MAAM;AAAC;"}
|
|
@@ -1,55 +1,25 @@
|
|
|
1
1
|
import { InPageEdit } from '../../InPageEdit';
|
|
2
|
-
import {
|
|
2
|
+
import { WikiLinkMetadata } from '../../services/WikiTitleService.js';
|
|
3
3
|
declare module '../../InPageEdit' {
|
|
4
4
|
interface InPageEdit {
|
|
5
5
|
inArticleLinks: PluginInArticleLinks;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
9
|
-
title: IWikiTitle;
|
|
10
|
-
url: URL;
|
|
11
|
-
params: URLSearchParams;
|
|
12
|
-
hash: string;
|
|
13
|
-
action: 'view' | 'edit' | 'create' | 'diff' | string;
|
|
14
|
-
}
|
|
15
|
-
export interface InArticleWikiAnchorInfo extends InArticleWikiLinkInfo {
|
|
8
|
+
export interface InArticleWikiAnchorMetadata extends WikiLinkMetadata {
|
|
16
9
|
$el: HTMLAnchorElement;
|
|
17
10
|
kind: 'normal' | 'mw:File';
|
|
18
11
|
external: boolean;
|
|
19
12
|
redlink: boolean;
|
|
20
13
|
}
|
|
21
14
|
export declare class PluginInArticleLinks extends BasePlugin<{
|
|
22
|
-
/**
|
|
23
|
-
* @example "https://example.com"
|
|
24
|
-
*/
|
|
25
|
-
wikiBaseUrl: string;
|
|
26
|
-
/**
|
|
27
|
-
* Article path, with trailing slash
|
|
28
|
-
* @example "/wiki/" (if wgArticlePath is "/wiki/$1")
|
|
29
|
-
*/
|
|
30
|
-
wikiArticlePath: string;
|
|
31
|
-
/**
|
|
32
|
-
* Article base URL, with trailing slash
|
|
33
|
-
* @example "https://example.com/wiki/" (if wgArticlePath is "/wiki/$1")
|
|
34
|
-
*/
|
|
35
|
-
wikiArticleBaseUrl: string;
|
|
36
|
-
/**
|
|
37
|
-
* Script base URL, **without** trailing slash
|
|
38
|
-
* @example "https://example.com/w" (if wgScriptPath is "/w")
|
|
39
|
-
*/
|
|
40
|
-
wikiScriptBaseUrl: string;
|
|
41
15
|
linkClassName: string;
|
|
42
16
|
}> {
|
|
43
17
|
constructor(ctx: InPageEdit);
|
|
44
18
|
protected start(): Promise<void>;
|
|
45
19
|
protected stop(): Promise<void>;
|
|
46
|
-
isWikiLink(url: string): boolean;
|
|
47
|
-
static readonly REG_SKIPPED_HREF: RegExp;
|
|
48
|
-
private validateHrefAttr;
|
|
49
20
|
private _cachedAnchorInfo;
|
|
50
|
-
parseAnchor(anchor: HTMLAnchorElement):
|
|
51
|
-
|
|
52
|
-
scanAnchors(parent: HTMLElement): InArticleWikiAnchorInfo[];
|
|
21
|
+
parseAnchor(anchor: HTMLAnchorElement): InArticleWikiAnchorMetadata | null;
|
|
22
|
+
scanAnchors(parent: HTMLElement): InArticleWikiAnchorMetadata[];
|
|
53
23
|
handleQuickEdit(): Promise<void>;
|
|
54
24
|
handleQuickDiff(): void;
|
|
55
25
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InPageEdit } from '../../InPageEdit';
|
|
2
|
-
import {
|
|
2
|
+
import { IWikiPage } from '../../models/WikiPage';
|
|
3
3
|
import { IPEModal } from '../../services/ModalService/IPEModal';
|
|
4
4
|
import { ReactNode } from 'jsx-dom';
|
|
5
5
|
declare module '../../InPageEdit' {
|
|
@@ -28,10 +28,10 @@ export interface QuickDeleteInitPayload {
|
|
|
28
28
|
ctx: InPageEdit;
|
|
29
29
|
options: QuickDeleteOptions;
|
|
30
30
|
modal: IPEModal;
|
|
31
|
-
wikiPage:
|
|
31
|
+
wikiPage: IWikiPage;
|
|
32
32
|
}
|
|
33
33
|
export interface QuickDeleteSubmitPayload {
|
|
34
|
-
wikiPage:
|
|
34
|
+
wikiPage: IWikiPage;
|
|
35
35
|
reason?: string;
|
|
36
36
|
}
|
|
37
37
|
export declare class PluginQuickDelete extends BasePlugin {
|
|
@@ -40,8 +40,10 @@ export declare class PluginQuickDelete extends BasePlugin {
|
|
|
40
40
|
constructor(ctx: InPageEdit);
|
|
41
41
|
protected start(): Promise<void> | void;
|
|
42
42
|
showModal(payload?: string | Partial<QuickDeleteOptions>): Promise<void>;
|
|
43
|
-
handleSubmit(payload: QuickDeleteSubmitPayload): Promise<import('fexios').FexiosFinalContext<
|
|
44
|
-
|
|
43
|
+
handleSubmit(payload: QuickDeleteSubmitPayload): Promise<import('fexios').FexiosFinalContext<import('wiki-saikou').MwApiResponse<{
|
|
44
|
+
success: boolean;
|
|
45
|
+
}>>>;
|
|
46
|
+
getWikiPageFromPayload(payload: Partial<QuickDeleteOptions>): Promise<IWikiPage>;
|
|
45
47
|
private injectToolbox;
|
|
46
48
|
protected removeToolbox(ctx: InPageEdit): void;
|
|
47
49
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InPageEdit } from '../../InPageEdit';
|
|
2
|
-
import {
|
|
2
|
+
import { IWikiPage } from '../../models/WikiPage';
|
|
3
3
|
import { WatchlistAction } from '../../models/WikiPage/types/WatchlistAction';
|
|
4
4
|
import { IPEModal } from '../../services/ModalService/IPEModal';
|
|
5
5
|
import { ReactNode } from 'jsx-dom';
|
|
@@ -10,10 +10,10 @@ declare module '../../InPageEdit' {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
interface Events {
|
|
13
|
-
'quick-edit/init-options'(payload: Omit<
|
|
14
|
-
'quick-edit/show-modal'(payload: Omit<
|
|
15
|
-
'quick-edit/wiki-page'(payload:
|
|
16
|
-
'quick-edit/edit-notice'(payload:
|
|
13
|
+
'quick-edit/init-options'(payload: Omit<QuickEditEventPayload, 'modal' | 'wikiPage'>): void;
|
|
14
|
+
'quick-edit/show-modal'(payload: Omit<QuickEditEventPayload, 'wikiPage'>): void;
|
|
15
|
+
'quick-edit/wiki-page'(payload: QuickEditEventPayload): void;
|
|
16
|
+
'quick-edit/edit-notice'(payload: QuickEditEventPayload & {
|
|
17
17
|
editNotices: ReactNode[];
|
|
18
18
|
}): void;
|
|
19
19
|
}
|
|
@@ -33,14 +33,14 @@ export interface QuickEditOptions {
|
|
|
33
33
|
createOnly: boolean;
|
|
34
34
|
reloadAfterSave: boolean;
|
|
35
35
|
}
|
|
36
|
-
export interface
|
|
36
|
+
export interface QuickEditEventPayload {
|
|
37
37
|
ctx: InPageEdit;
|
|
38
38
|
options: QuickEditOptions;
|
|
39
39
|
modal: IPEModal;
|
|
40
|
-
wikiPage:
|
|
40
|
+
wikiPage: IWikiPage;
|
|
41
41
|
}
|
|
42
42
|
export interface QuickEditSubmitPayload {
|
|
43
|
-
wikiPage:
|
|
43
|
+
wikiPage: IWikiPage;
|
|
44
44
|
text?: string;
|
|
45
45
|
summary?: string;
|
|
46
46
|
section?: number | 'new' | undefined;
|
|
@@ -54,8 +54,10 @@ export declare class PluginQuickEdit extends BasePlugin {
|
|
|
54
54
|
constructor(ctx: InPageEdit);
|
|
55
55
|
protected start(): Promise<void> | void;
|
|
56
56
|
showModal(payload?: string | Partial<QuickEditOptions>): Promise<void>;
|
|
57
|
-
handleSubmit(payload: QuickEditSubmitPayload): Promise<import('fexios').FexiosFinalContext<
|
|
58
|
-
|
|
57
|
+
handleSubmit(payload: QuickEditSubmitPayload): Promise<import('fexios').FexiosFinalContext<import('wiki-saikou').MwApiResponse<{
|
|
58
|
+
success: boolean;
|
|
59
|
+
}>>>;
|
|
60
|
+
getWikiPageFromPayload(payload: Partial<QuickEditOptions>): Promise<IWikiPage>;
|
|
59
61
|
private injectToolbox;
|
|
60
62
|
protected removeToolbox(ctx: InPageEdit): void;
|
|
61
63
|
}
|
|
@@ -23,5 +23,7 @@ export declare class PluginQuickMove extends BasePlugin {
|
|
|
23
23
|
protected start(): Promise<void> | void;
|
|
24
24
|
private injectToolbox;
|
|
25
25
|
quickMove(options?: Partial<QuickMoveOptions>): import('../../services/ModalService').CustomIPEModal;
|
|
26
|
-
movePage(options: MovePageOptions): Promise<import('fexios').FexiosFinalContext<
|
|
26
|
+
movePage(options: MovePageOptions): Promise<import('fexios').FexiosFinalContext<import('wiki-saikou').MwApiResponse<{
|
|
27
|
+
success: boolean;
|
|
28
|
+
}>>>;
|
|
27
29
|
}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { InPageEdit } from '../../InPageEdit';
|
|
2
|
-
import {
|
|
2
|
+
import { IWikiPage } from '../../models/WikiPage';
|
|
3
3
|
import { MwApiParams } from 'wiki-saikou';
|
|
4
4
|
import { PageParseData } from '../../models/WikiPage/types/PageParseData';
|
|
5
5
|
import { IPEModal, IPEModalOptions } from '../../services/ModalService/IPEModal.js';
|
|
6
|
+
interface QuickPreviewEventPayload {
|
|
7
|
+
ctx: InPageEdit;
|
|
8
|
+
modal: IPEModal;
|
|
9
|
+
wikiPage: IWikiPage;
|
|
10
|
+
text: string;
|
|
11
|
+
parseData: PageParseData;
|
|
12
|
+
}
|
|
6
13
|
declare module '../../InPageEdit' {
|
|
7
14
|
interface InPageEdit {
|
|
8
15
|
quickPreview: PluginQuickPreview & {
|
|
@@ -10,19 +17,8 @@ declare module '../../InPageEdit' {
|
|
|
10
17
|
};
|
|
11
18
|
}
|
|
12
19
|
interface Events {
|
|
13
|
-
'quick-preview/show-modal'(payload:
|
|
14
|
-
|
|
15
|
-
text: string;
|
|
16
|
-
modal: IPEModal;
|
|
17
|
-
wikiPage: WikiPage;
|
|
18
|
-
}): void;
|
|
19
|
-
'quick-preview/loaded'(payload: {
|
|
20
|
-
ctx: InPageEdit;
|
|
21
|
-
modal: IPEModal;
|
|
22
|
-
wikiPage: WikiPage;
|
|
23
|
-
text: string;
|
|
24
|
-
parseData: PageParseData;
|
|
25
|
-
}): void;
|
|
20
|
+
'quick-preview/show-modal'(payload: Omit<QuickPreviewEventPayload, 'parseData'>): void;
|
|
21
|
+
'quick-preview/loaded'(payload: QuickPreviewEventPayload): void;
|
|
26
22
|
}
|
|
27
23
|
}
|
|
28
24
|
export declare class PluginQuickPreview extends BasePlugin {
|
|
@@ -30,7 +26,8 @@ export declare class PluginQuickPreview extends BasePlugin {
|
|
|
30
26
|
constructor(ctx: InPageEdit);
|
|
31
27
|
protected start(): Promise<void> | void;
|
|
32
28
|
protected stop(): Promise<void> | void;
|
|
33
|
-
previewWikitext(text: string, params?: MwApiParams, wikiPage?:
|
|
29
|
+
previewWikitext(text: string, params?: MwApiParams, wikiPage?: IWikiPage, modal?: IPEModal, modalOptions?: Partial<IPEModalOptions>): IPEModal;
|
|
34
30
|
private injectQuickEdit;
|
|
35
31
|
private injectQuickDelete;
|
|
36
32
|
}
|
|
33
|
+
export {};
|
|
@@ -20,5 +20,7 @@ export declare class PluginQuickRedirect extends BasePlugin {
|
|
|
20
20
|
protected start(): Promise<void> | void;
|
|
21
21
|
protected stop(): Promise<void> | void;
|
|
22
22
|
quickRedirect(options?: Partial<QuickRedirectOptions>): import('../../services/ModalService').CustomIPEModal;
|
|
23
|
-
redirectPage(options: RedirectPageOptions): Promise<import('fexios').FexiosFinalContext<
|
|
23
|
+
redirectPage(options: RedirectPageOptions): Promise<import('fexios').FexiosFinalContext<import('wiki-saikou').MwApiResponse<{
|
|
24
|
+
success: boolean;
|
|
25
|
+
}>>>;
|
|
24
26
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InPageEdit, Service } from '../../InPageEdit';
|
|
2
|
-
import { ReactElement } from 'jsx-dom';
|
|
2
|
+
import { JSX, ReactElement } from 'jsx-dom';
|
|
3
3
|
declare module '../../InPageEdit' {
|
|
4
4
|
interface InPageEdit {
|
|
5
5
|
toolbox: PluginToolbox;
|
|
@@ -21,6 +21,7 @@ export declare class PluginToolbox extends Service {
|
|
|
21
21
|
constructor(ctx: InPageEdit);
|
|
22
22
|
protected start(): Promise<void>;
|
|
23
23
|
protected stop(): void | Promise<void>;
|
|
24
|
+
private get isPersistent();
|
|
24
25
|
private setupHoverLogic;
|
|
25
26
|
/**
|
|
26
27
|
* 计算按钮动画延迟
|
|
@@ -40,9 +41,13 @@ export declare class PluginToolbox extends Service {
|
|
|
40
41
|
group?: 'auto' | 'group1' | 'group2';
|
|
41
42
|
icon: string | HTMLElement | SVGElement | ReactElement;
|
|
42
43
|
tooltip?: string | HTMLElement;
|
|
43
|
-
|
|
44
|
+
itemProps?: JSX.IntrinsicElements['li'];
|
|
45
|
+
buttonProps?: JSX.IntrinsicElements['button'];
|
|
44
46
|
onClick?: (event: MouseEvent) => void;
|
|
45
47
|
index?: number;
|
|
46
48
|
}): HTMLElement;
|
|
47
49
|
removeButton(id: string): void;
|
|
50
|
+
getContainer(): HTMLElement;
|
|
51
|
+
get isOpened(): boolean;
|
|
52
|
+
toggle(force?: boolean): void;
|
|
48
53
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { InPageEdit, Service } from '../InPageEdit';
|
|
2
|
-
import {
|
|
2
|
+
import { WikiMetadata, WikiUserBlockInfo } from '../types/WikiMetadata';
|
|
3
3
|
declare module '../InPageEdit' {
|
|
4
4
|
interface InPageEdit {
|
|
5
|
-
|
|
6
|
-
getUrl:
|
|
7
|
-
getSciprtUrl:
|
|
8
|
-
getMainpageUrl:
|
|
5
|
+
wiki: WikiMetadataService;
|
|
6
|
+
getUrl: WikiMetadataService['getUrl'];
|
|
7
|
+
getSciprtUrl: WikiMetadataService['getSciprtUrl'];
|
|
8
|
+
getMainpageUrl: WikiMetadataService['getMainpageUrl'];
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
export declare class
|
|
11
|
+
export declare class WikiMetadataService extends Service {
|
|
12
12
|
ctx: InPageEdit;
|
|
13
13
|
private _data;
|
|
14
14
|
private readonly CACHE_TTL;
|
|
@@ -26,37 +26,52 @@ export declare class SiteMetadataService extends Service {
|
|
|
26
26
|
protected start(): Promise<void>;
|
|
27
27
|
computeSiteIdentity(): string;
|
|
28
28
|
fetchFromApi(): Promise<any>;
|
|
29
|
-
fetchFromCache(): Promise<
|
|
30
|
-
saveToCache(data:
|
|
29
|
+
fetchFromCache(): Promise<WikiMetadata | null>;
|
|
30
|
+
saveToCache(data: WikiMetadata): Promise<import('./StorageService').IPEStorageItem<WikiMetadata>>;
|
|
31
31
|
invalidateCache(): Promise<void>;
|
|
32
|
-
get _raw():
|
|
33
|
-
get general(): import('../types/
|
|
34
|
-
get specialPageAliases(): import('../types/
|
|
35
|
-
get namespaceAliases(): import('../types/
|
|
36
|
-
get namespaces(): Record<string, import('../types/
|
|
32
|
+
get _raw(): WikiMetadata;
|
|
33
|
+
get general(): import('../types/WikiMetadata').WikiSiteInfo;
|
|
34
|
+
get specialPageAliases(): import('../types/WikiMetadata').WikiSpecialPageAlias[];
|
|
35
|
+
get namespaceAliases(): import('../types/WikiMetadata').WikiNameSpaceAlias[];
|
|
36
|
+
get namespaces(): Record<string, import('../types/WikiMetadata').WikiNamespace>;
|
|
37
37
|
get namespaceMap(): {
|
|
38
38
|
id: number;
|
|
39
39
|
canonical: string | undefined;
|
|
40
40
|
aliases: string[];
|
|
41
41
|
}[];
|
|
42
|
-
get magicWords(): import('../types/
|
|
42
|
+
get magicWords(): import('../types/WikiMetadata').WikiMagicWord[];
|
|
43
43
|
get userInfo(): {
|
|
44
44
|
id: number;
|
|
45
45
|
name: string;
|
|
46
46
|
groups: string[];
|
|
47
47
|
rights: string[];
|
|
48
|
-
} & Partial<
|
|
49
|
-
options: import('../types/
|
|
48
|
+
} & Partial<WikiUserBlockInfo> & {
|
|
49
|
+
options: import('../types/WikiMetadata').WikiUserOptions;
|
|
50
50
|
};
|
|
51
|
-
get userOptions(): import('../types/
|
|
51
|
+
get userOptions(): import('../types/WikiMetadata').WikiUserOptions;
|
|
52
52
|
get isUserBlocked(): boolean | "" | undefined;
|
|
53
53
|
get userGroups(): string[];
|
|
54
54
|
get userRights(): string[];
|
|
55
55
|
/**
|
|
56
56
|
* Base URL, without trailing slash
|
|
57
|
-
* @example "https://
|
|
57
|
+
* @example "https://mediawiki.org"
|
|
58
58
|
*/
|
|
59
59
|
get baseUrl(): string;
|
|
60
|
+
/**
|
|
61
|
+
* Home page URL of this wiki
|
|
62
|
+
* @description Generally same as the Mainpage URL,
|
|
63
|
+
* but after MediaWiki 1.34,
|
|
64
|
+
* it can be set to the website root directory.
|
|
65
|
+
* @example "https://mediawiki.org/wiki/Main_Page" (In most cases)
|
|
66
|
+
* @example "https://mediawiki.org/" ($wgMainPageIsDomainRoot = true)
|
|
67
|
+
*/
|
|
68
|
+
get landingPageUrl(): string;
|
|
69
|
+
get mainPageName(): string;
|
|
70
|
+
/**
|
|
71
|
+
* Exact Mainpage URL of this wiki
|
|
72
|
+
* @example "https://mediawiki.org/wiki/Main_Page"
|
|
73
|
+
*/
|
|
74
|
+
get mainPageUrl(): string;
|
|
60
75
|
/**
|
|
61
76
|
* Article path, with the $1 placeholder
|
|
62
77
|
* @example "/wiki/$1"
|
|
@@ -69,12 +84,12 @@ export declare class SiteMetadataService extends Service {
|
|
|
69
84
|
get scriptPath(): string;
|
|
70
85
|
/**
|
|
71
86
|
* Article base URL, with the $1 placeholder
|
|
72
|
-
* @example "https://
|
|
87
|
+
* @example "https://mediawiki.org/wiki/$1"
|
|
73
88
|
*/
|
|
74
89
|
get articleBaseUrl(): string;
|
|
75
90
|
/**
|
|
76
91
|
* Script base URL, without trailing slash
|
|
77
|
-
* @example "https://
|
|
92
|
+
* @example "https://mediawiki.org/w"
|
|
78
93
|
*/
|
|
79
94
|
get scriptBaseUrl(): string;
|
|
80
95
|
getSciprtUrl(name?: string): string;
|
|
@@ -89,5 +104,5 @@ export declare class SiteMetadataService extends Service {
|
|
|
89
104
|
hasEveryRights(...rights: string[]): boolean;
|
|
90
105
|
inGroup(name: string): boolean;
|
|
91
106
|
inAnyGroup(...names: string[]): boolean;
|
|
92
|
-
getBlockInfo():
|
|
107
|
+
getBlockInfo(): WikiUserBlockInfo | null;
|
|
93
108
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Inject, InPageEdit, Service } from '../InPageEdit';
|
|
2
|
-
import {
|
|
2
|
+
import { IWikiPage, WikiPageConstructor } from '../models/WikiPage';
|
|
3
3
|
import { PageInfo } from '../models/WikiPage/types/PageInfo';
|
|
4
4
|
declare module '../InPageEdit' {
|
|
5
5
|
interface InPageEdit {
|
|
@@ -9,11 +9,12 @@ declare module '../InPageEdit' {
|
|
|
9
9
|
export declare class WikiPageService extends Service {
|
|
10
10
|
ctx: InPageEdit;
|
|
11
11
|
static readonly inject: Inject;
|
|
12
|
+
WikiPage: WikiPageConstructor;
|
|
12
13
|
constructor(ctx: InPageEdit);
|
|
13
|
-
|
|
14
|
-
createInstance(payload: Record<string, any
|
|
15
|
-
newFromTitle(title: string, converttitles?: boolean, rvsection?: number | string): Promise<
|
|
16
|
-
newFromPageId(pageid: number, rvsection?: number | string): Promise<
|
|
17
|
-
newFromRevision(revid: number, rvsection?: number | string): Promise<
|
|
18
|
-
newBlankPage(init?: Partial<PageInfo>):
|
|
14
|
+
readonly logger: import('@inpageedit/logger').Logger;
|
|
15
|
+
createInstance(payload: Record<string, any>, noCache?: boolean): Promise<IWikiPage>;
|
|
16
|
+
newFromTitle(title: string, converttitles?: boolean, rvsection?: number | string, noCache?: boolean): Promise<IWikiPage>;
|
|
17
|
+
newFromPageId(pageid: number, rvsection?: number | string, noCache?: boolean): Promise<IWikiPage>;
|
|
18
|
+
newFromRevision(revid: number, rvsection?: number | string, noCache?: boolean): Promise<IWikiPage>;
|
|
19
|
+
newBlankPage(init?: Partial<PageInfo>): IWikiPage;
|
|
19
20
|
}
|