Skip to content
This repository has been archived by the owner on Apr 22, 2024. It is now read-only.

Commit

Permalink
chore: migrate from webpack to rollup
Browse files Browse the repository at this point in the history
  • Loading branch information
oae committed Aug 21, 2020
1 parent b44f0a1 commit 70eb262
Show file tree
Hide file tree
Showing 21 changed files with 623 additions and 2,931 deletions.
2 changes: 1 addition & 1 deletion .ts-for-girrc.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module.exports = {
environments: ['gjs'],
modules: ['Gtk-3.0', 'Soup-2.4', 'St-1.0'],
modules: ['Gtk-3.0', 'Soup-2.4', 'St-1.0', 'Shell-0.1'],
prettify: true,
girDirectories: [
'/usr/share/gir-1.0',
Expand Down
31 changes: 14 additions & 17 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
"clean": "yarn run clean:ts && yarn run build:types",
"build:types": "yarn run clean:types && ts-for-gir generate",
"clean:types": "rm -rf ./@types",
"build:ts": "yarn run clean:ts && webpack",
"build:ts": "yarn run clean:ts && rollup -c",
"clean:ts": "rm -rf ./dist",
"build:extension": "yarn run build:schema",
"build:schema": "yarn run clean:schema && glib-compile-schemas ./resources/schemas --targetdir=./dist/schemas/",
"clean:schema": "rm -rf ./dist/schemas/*.compiled",
"build:package": "rm -rf './dist/[email protected]' && cd ./dist && zip -qr '[email protected]' .",
"watch": "yarn run build && yarn run webpack --watch",
"watch": "yarn run build && yarn run rollup -c --watch",
"test": "echo \"Error: no test specified\" && exit 1",
"lint": "eslint --ext .ts src/"
},
Expand All @@ -30,28 +30,25 @@
}
},
"devDependencies": {
"@commitlint/cli": "^9.1.1",
"@commitlint/config-conventional": "^9.1.1",
"@commitlint/cli": "^9.1.2",
"@commitlint/config-conventional": "^9.1.2",
"@rollup/plugin-commonjs": "^15.0.0",
"@rollup/plugin-node-resolve": "^9.0.0",
"@rollup/plugin-typescript": "^5.0.2",
"@types/events": "^3.0.0",
"@typescript-eslint/eslint-plugin": "^3.9.0",
"@typescript-eslint/parser": "^3.9.0",
"copy-webpack-plugin": "^6.0.3",
"css-loader": "^4.2.1",
"eslint": "^7.6.0",
"@typescript-eslint/eslint-plugin": "^3.9.1",
"@typescript-eslint/parser": "^3.9.1",
"eslint": "^7.7.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-prettier": "^3.1.4",
"file-loader": "^6.0.0",
"husky": "^4.2.5",
"mini-css-extract-plugin": "^0.10.0",
"node-sass": "^4.14.1",
"prettier": "^2.0.5",
"sass-loader": "^9.0.3",
"style-loader": "^1.2.1",
"rollup": "^2.26.4",
"rollup-plugin-copy": "^3.3.0",
"rollup-plugin-scss": "^2.6.0",
"ts-for-gir": "https://github.com/oae/ts-for-gjs",
"ts-loader": "^8.0.2",
"typescript": "^3.9.7",
"webpack": "^4.44.1",
"webpack-cli": "^3.3.12"
"typescript": "^4.0.2"
},
"dependencies": {
"events": "^3.2.0",
Expand Down
92 changes: 92 additions & 0 deletions rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
import typescript from '@rollup/plugin-typescript';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import scss from 'rollup-plugin-scss';
import copy from 'rollup-plugin-copy';

const buildPath = 'dist';

const globals = {
'@imports/Gio-2.0': 'imports.gi.Gio',
'@imports/Gdk-3.0': 'imports.gi.Gdk',
'@imports/Gtk-3.0': 'imports.gi.Gtk',
'@imports/GdkPixbuf-2.0': 'imports.gi.GdkPixbuf',
'@imports/GLib-2.0': 'imports.gi.GLib',
'@imports/St-1.0': 'imports.gi.St',
'@imports/Shell-0.1': 'imports.gi.Shell',
'@imports/Meta-6': 'imports.gi.Meta',
'@imports/Wnck-3.0': 'imports.gi.Wnck',
'@imports/Clutter-6': 'imports.gi.Clutter',
'@imports/Soup-2.4': 'imports.gi.Soup',
};

const external = Object.keys(globals);

const banner = [
].join('\n');

const prefsFooter = [
'var init = prefs.init;',
'var buildPrefsWidget = prefs.buildPrefsWidget;',
].join('\n')

export default [
{
input: 'src/extension.ts',
output: {
file: `${buildPath}/extension.js`,
format: 'iife',
name: 'init',
banner,
exports: 'default',
globals,
},
external,
plugins: [
commonjs(),
nodeResolve({
preferBuiltins: false,
}),
typescript({
tsconfig: './tsconfig.json',
}),
scss({
output: `${buildPath}/stylesheet.css`,
failOnError: true,
watch: 'src/styles',
}),
copy({
targets: [
{ src: './resources/icons', dest: `${buildPath}` },
{ src: './resources/metadata.json', dest: `${buildPath}` },
{ src: './resources/schemas', dest: `${buildPath}` },
],
}),
],
},
{
input: 'src/prefs/prefs.ts',
output: {
file: `${buildPath}/prefs.js`,
format: 'iife',
exports: 'default',
name: 'prefs',
banner,
footer: prefsFooter,
globals,
},
external,
plugins: [
commonjs(),
nodeResolve({
preferBuiltins: false,
}),
typescript({
tsconfig: './tsconfig.json',
}),
copy({
targets: [{ src: './resources/ui', dest: `${buildPath}` }],
}),
],
},
];
38 changes: 7 additions & 31 deletions src/api/index.ts
Original file line number Diff line number Diff line change
@@ -1,38 +1,14 @@
import { EventEmitter } from 'events';

import { Github } from '@esync/api/providers/github';
import { Gitlab } from '@esync/api/providers/gitlab';
import { Data, SyncData } from '@esync/data';
import { getCurrentExtensionSettings, notify } from '@esync/shell';
import { logger } from '@esync/utils';
import { Settings } from '@imports/Gio-2.0';

import { Github } from './providers/github';
import { logger } from '../utils';
import { notify, getCurrentExtensionSettings } from '../shell';
import { Gitlab } from './providers/gitlab';
import { SyncData, Data } from '../data';
import { EventEmitter } from 'events';
import { ApiProvider, ApiEvent, ApiOperationStatus, ApiProviderType } from './types';

const debug = logger('api');

export enum ApiOperationStatus {
SUCCESS,
FAIL,
}

export enum ApiEvent {
UPLOAD = 'UPLOAD',
UPLOAD_FINISHED = 'UPLOAD_FINISHED',
DOWNLOAD = 'DOWNLOAD',
DOWNLOAD_FINISHED = 'DOWNLOAD_FINISHED',
}

export enum ApiProviderType {
GITHUB,
GITLAB,
}

export interface ApiProvider {
upload(syncData: SyncData): Promise<ApiOperationStatus>;
download(): Promise<SyncData>;
getName(): string;
}

export class Api {
private provider: ApiProvider;
private eventEmitter: EventEmitter;
Expand Down
5 changes: 2 additions & 3 deletions src/api/providers/github.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { SyncData } from '@esync/data';
import { Context as request } from 'grest/src/app/Context/Context';

import { ApiProvider, ApiOperationStatus } from '../';
import { SyncData } from '../../data';
import { ApiOperationStatus, ApiProvider } from '../types';

export class Github implements ApiProvider {
private static GIST_API_URL = 'https://api.github.com/gists';
Expand Down
5 changes: 2 additions & 3 deletions src/api/providers/gitlab.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { SyncData } from '@esync/data';
import { Context as request } from 'grest/src/app/Context/Context';

import { ApiProvider, ApiOperationStatus } from '../';
import { SyncData } from '../../data';
import { ApiOperationStatus, ApiProvider } from '../types';

export class Gitlab implements ApiProvider {
private static SNIPPETS_API_URL = 'https://gitlab.com/api/v4/snippets';
Expand Down
24 changes: 24 additions & 0 deletions src/api/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { SyncData } from '@esync/data';

export enum ApiOperationStatus {
SUCCESS,
FAIL,
}

export enum ApiEvent {
UPLOAD = 'UPLOAD',
UPLOAD_FINISHED = 'UPLOAD_FINISHED',
DOWNLOAD = 'DOWNLOAD',
DOWNLOAD_FINISHED = 'DOWNLOAD_FINISHED',
}

export enum ApiProviderType {
GITHUB,
GITLAB,
}

export interface ApiProvider {
upload(syncData: SyncData): Promise<ApiOperationStatus>;
download(): Promise<SyncData>;
getName(): string;
}
11 changes: 5 additions & 6 deletions src/data/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { ExtensionData, ExtensionsDataProvider } from '@esync/data/providers/extensions/provider';
import { KeyBindingsData, KeyBindingsDataProvider } from '@esync/data/providers/keybindings';
import { TweaksData, TweaksDataProvider } from '@esync/data/providers/tweaks';
import { getCurrentExtensionSettings } from '@esync/shell';
import { logger, settingsFlagsToEnumList } from '@esync/utils';
import { Settings } from '@imports/Gio-2.0';

import { logger, settingsFlagsToEnumList } from '../utils';
import { getCurrentExtensionSettings } from '../shell';
import { ExtensionsDataProvider, ExtensionData } from './providers/extensions/provider';
import { KeyBindingsDataProvider, KeyBindingsData } from './providers/keybindings';
import { TweaksDataProvider, TweaksData } from './providers/tweaks';

const debug = logger('data');

export type SyncData = {
Expand Down
11 changes: 8 additions & 3 deletions src/data/providers/extensions/provider.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { DataProvider } from '../../../data';
import { getAllExtensionConfigData, getExtensionIds, removeExtension, installExtension } from './utils';
import { writeDconfData } from '../../../shell';
import { DataProvider } from '@esync/data';
import {
getAllExtensionConfigData,
getExtensionIds,
installExtension,
removeExtension,
} from '@esync/data/providers/extensions/utils';
import { writeDconfData } from '@esync/shell';

export type ExtensionData = {
[key: string]: {
Expand Down
25 changes: 11 additions & 14 deletions src/data/providers/extensions/utils.ts
Original file line number Diff line number Diff line change
@@ -1,34 +1,31 @@
import { parse } from 'fast-xml-parser';

import { ExtensionType, getCurrentExtension, readDconfData, ShellExtension } from '@esync/shell';
import { execute, logger } from '@esync/utils';
import { File } from '@imports/Gio-2.0';
import {
file_get_contents,
spawn_async,
SpawnFlags,
build_filenamev,
child_watch_add,
file_get_contents,
get_user_data_dir,
PRIORITY_DEFAULT,
SpawnFlags,
spawn_async,
spawn_close_pid,
build_filenamev,
get_user_data_dir,
} from '@imports/GLib-2.0';
import { byteArray } from '@imports/Gjs';
import {
KnownStatusCode,
form_request_new_from_hash,
SessionAsync,
KnownStatusCode,
ProxyResolverDefault,
Session,
SessionAsync,
} from '@imports/Soup-2.4';

import { execute, logger } from '../../../utils';
import { ShellExtension, ExtensionType, getCurrentExtension, readDconfData } from '../../../shell';
import { parse } from 'fast-xml-parser';

const debug = logger('extension-utils');

const readSchemaAsJson = (schemaPath: string): any => {
const [, contents] = file_get_contents(schemaPath);

return parse(byteArray.toString(contents), { ignoreAttributes: false });
return parse(imports.byteArray.toString(contents), { ignoreAttributes: false });
};

const getExtensionManager = (): any => imports.ui.main.extensionManager;
Expand Down
6 changes: 3 additions & 3 deletions src/data/providers/keybindings.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { DataProvider } from '../';
import { logger } from '../../utils';
import { readDconfData, writeDconfData } from '../../shell';
import { DataProvider } from '@esync/data';
import { readDconfData, writeDconfData } from '@esync/shell';
import { logger } from '@esync/utils';

const debug = logger('keybindings-data-provider');

Expand Down
6 changes: 3 additions & 3 deletions src/data/providers/tweaks.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { DataProvider } from '../';
import { logger } from '../../utils';
import { readDconfData, writeDconfData } from '../../shell';
import { DataProvider } from '@esync/data';
import { readDconfData, writeDconfData } from '@esync/shell';
import { logger } from '@esync/utils';

const debug = logger('tweaks-data-provider');

Expand Down
14 changes: 6 additions & 8 deletions src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
import { Api } from '@esync/api';
import { Data } from '@esync/data';
import { StatusMenu } from '@esync/panel/statusMenu';
import { Sync } from '@esync/sync';
import { logger } from '@esync/utils';
import { EventEmitter } from 'events';

import './styles/stylesheet.scss';

import { StatusMenu } from './panel/statusMenu';
import { Sync } from './sync';
import { Api } from './api';
import { logger } from './utils';
import { Data } from './data';

const debug = logger('extension');

export class SyncExtension {
class SyncExtension {
private sync: Sync;
private statusMenu: StatusMenu;
private api: Api;
Expand Down
12 changes: 5 additions & 7 deletions src/panel/statusMenu.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import { EventEmitter } from 'events';

import { Icon } from '@imports/St-1.0';
import { ApiEvent } from '@esync/api/types';
import { getCurrentExtension, getCurrentExtensionSettings, ShellExtension } from '@esync/shell';
import { execute, logger } from '@esync/utils';
import { icon_new_for_string, Settings } from '@imports/Gio-2.0';

import { getCurrentExtension, ShellExtension, getCurrentExtensionSettings } from '../shell';
import { ApiEvent } from '../api';
import { execute, logger } from '../utils';
import { Icon } from '@imports/St-1.0';
import { EventEmitter } from 'events';

const { Button } = imports.ui.panelMenu;
const { PopupImageMenuItem, PopupSeparatorMenuItem } = imports.ui.popupMenu;
Expand Down
Loading

0 comments on commit 70eb262

Please sign in to comment.