Skip to content

Commit

Permalink
Replace forum and admin global compat exports with a Proxy to allow n…
Browse files Browse the repository at this point in the history
…amespace use (#2488)
  • Loading branch information
dsevillamartin authored Dec 7, 2020
1 parent 51a97fb commit 67a2aac
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 6 deletions.
7 changes: 4 additions & 3 deletions js/src/admin/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ export { app };
// Export public API

// Export compat API
import compat from './compat';
import compatObj from './compat';
import proxifyCompat from '../common/utils/proxifyCompat';

compat.app = app;
compatObj.app = app;

export { compat };
export const compat = proxifyCompat(compatObj, 'admin');
2 changes: 2 additions & 0 deletions js/src/common/compat.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import stringToColor from './utils/stringToColor';
import subclassOf from './utils/subclassOf';
import SuperTextarea from './utils/SuperTextarea';
import patchMithril from './utils/patchMithril';
import proxifyCompat from './utils/proxifyCompat';
import classList from './utils/classList';
import extractText from './utils/extractText';
import formatNumber from './utils/formatNumber';
Expand Down Expand Up @@ -94,6 +95,7 @@ export default {
'utils/SuperTextarea': SuperTextarea,
'utils/setRouteWithForcedRefresh': setRouteWithForcedRefresh,
'utils/patchMithril': patchMithril,
'utils/proxifyCompat': proxifyCompat,
'utils/classList': classList,
'utils/extractText': extractText,
'utils/formatNumber': formatNumber,
Expand Down
10 changes: 10 additions & 0 deletions js/src/common/utils/proxifyCompat.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export default (compat: { [key: string]: any }, namespace: string) => {
// regex to replace common/ and NAMESPACE/ for core & core extensions
// e.g. admin/utils/extract --> utils/extract
// e.g. tags/common/utils/sortTags --> tags/utils/sortTags
const regex = new RegExp(`(\\w+\\/)?(${namespace}|common)\\/`);

return new Proxy(compat, {
get: (obj, prop: string) => obj[prop] || obj[prop.replace(regex, '$1')],
});
};
7 changes: 4 additions & 3 deletions js/src/forum/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ export { app };
// export { IndexPage, DicsussionList } from './components';

// Export compat API
import compat from './compat';
import compatObj from './compat';
import proxifyCompat from '../common/utils/proxifyCompat';

compat.app = app;
compatObj.app = app;

export { compat };
export const compat = proxifyCompat(compatObj, 'forum');

0 comments on commit 67a2aac

Please sign in to comment.