@waline/client
Version:
client for waline comment system
81 lines (73 loc) • 2.16 kB
text/typescript
import { warning } from './logger';
import { resolveOldEmojiMap } from './valine';
import {
DROPPED_OPTIONS_WHICH_CAN_NOT_BE_POLYFILLED,
DROPPED_OPTIONS_WHICH_CAN_STILL_BE_POLYFILLED,
} from './dropped';
import type { DeprecatedValineOptions } from './valine';
import type { DeprecatedWalineOptions } from './v1';
import type { WalineInitOptions } from '../typings';
export const covertOptions = (
options: WalineInitOptions & DeprecatedValineOptions & DeprecatedWalineOptions
): WalineInitOptions => {
const {
// Options which needs to be polyfilled
placeholder,
langMode = {},
emojiCDN,
emojiMaps,
requiredFields = [],
anonymous,
previewMath,
uploadImage,
highlight,
copyRight,
visitor,
pageview = visitor === true
? '.leancloud_visitors,.leancloud-visitors,.waline-visitor-count,.waline-pageview-count'
: visitor,
locale = langMode,
emoji,
requiredMeta = requiredFields,
highlighter = highlight,
imageUploader = uploadImage,
texRenderer = previewMath,
copyright = copyRight,
login = anonymous === true
? 'disable'
: anonymous === false
? 'force'
: 'enable',
...more
} = options;
// error with those which can no longer be handled
DROPPED_OPTIONS_WHICH_CAN_NOT_BE_POLYFILLED.filter((item) =>
Object.keys(options).includes(item)
).forEach((item) =>
warning(`Option "${item}" is REMOVED and CAN NOT be polyfilled!`)
);
// warnings with those which is being polyfilled
DROPPED_OPTIONS_WHICH_CAN_STILL_BE_POLYFILLED.filter(([oldOption]) =>
Object.keys(options).includes(oldOption)
).forEach(([oldOption, newOption]) =>
warning(
`Deprecated option "${oldOption}" is currently being polyfilled, Please switch to option "${newOption}" in v2!`
)
);
if (placeholder) locale.placeholder = placeholder;
return {
locale,
emoji:
emojiCDN && typeof emojiMaps === 'object'
? resolveOldEmojiMap(emojiMaps, emojiCDN)
: emoji,
requiredMeta,
imageUploader,
highlighter,
texRenderer,
copyright,
login,
pageview,
...more,
};
};