From ab55c43dff1263927e511260f1da2daa6b7c2991 Mon Sep 17 00:00:00 2001 From: Alperen Elhan Date: Mon, 19 Sep 2022 18:25:18 +0300 Subject: [PATCH] feat: add gnome 43 support --- .vscode/settings.json | 22 +++++ package.json | 5 +- resources/metadata.json | 2 +- rollup.config.js | 7 +- src/api/providers/github.ts | 56 +++++++----- src/api/providers/gitlab.ts | 59 ++++++------ src/data/providers/extensions/utils.ts | 95 ++++++-------------- src/shell/index.ts | 2 +- yarn.lock | 119 +------------------------ 9 files changed, 127 insertions(+), 240 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..db0ce57 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "workbench.colorCustomizations": { + "activityBar.activeBackground": "#1e593f", + "activityBar.background": "#1e593f", + "activityBar.foreground": "#e7e7e7", + "activityBar.inactiveForeground": "#e7e7e799", + "activityBarBadge.background": "#221030", + "activityBarBadge.foreground": "#e7e7e7", + "commandCenter.border": "#e7e7e799", + "sash.hoverBorder": "#1e593f", + "statusBar.background": "#113324", + "statusBar.foreground": "#e7e7e7", + "statusBarItem.hoverBackground": "#1e593f", + "statusBarItem.remoteBackground": "#113324", + "statusBarItem.remoteForeground": "#e7e7e7", + "titleBar.activeBackground": "#113324", + "titleBar.activeForeground": "#e7e7e7", + "titleBar.inactiveBackground": "#11332499", + "titleBar.inactiveForeground": "#e7e7e799" + }, + "peacock.color": "#113324" +} \ No newline at end of file diff --git a/package.json b/package.json index e921d6b..b1b1e17 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@gi-types/gtk4": "^4.6.1", "@gi-types/meta10": "^10.0.1", "@gi-types/shell0": "^0.1.1", - "@gi-types/soup2": "^2.74.1", + "@gi-types/soup3": "^3.0.1", "@gi-types/st1": "^1.0.1", "@gi.ts/cli": "^1.5.7", "@gi.ts/lib": "^1.5.9", @@ -66,7 +66,6 @@ }, "dependencies": { "events": "^3.3.0", - "fast-xml-parser": "^3.21.0", - "grest": "^1.2.0" + "fast-xml-parser": "^3.21.0" } } diff --git a/resources/metadata.json b/resources/metadata.json index fcdc40d..b588a74 100644 --- a/resources/metadata.json +++ b/resources/metadata.json @@ -5,5 +5,5 @@ "version": 999, "settings-schema": "org.gnome.shell.extensions.extensions-sync", "url": "https://github.com/oae/gnome-shell-extensions-sync", - "shell-version": ["40", "41", "42"] + "shell-version": ["42", "43"] } diff --git a/rollup.config.js b/rollup.config.js index 3207e9e..9d1e965 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -16,16 +16,12 @@ const globals = { '@gi-types/st1': 'imports.gi.St', '@gi-types/shell0': 'imports.gi.Shell', '@gi-types/meta10': 'imports.gi.Meta', - '@gi-types/soup2': 'imports.gi.Soup', + '@gi-types/soup3': 'imports.gi.Soup', '@gi-types/gobject2': 'imports.gi.GObject', }; const external = Object.keys(globals); -const banner = [ - 'imports.gi.versions.Gtk = \'4.0\';', -].join('\n'); - const prefsFooter = [ 'var init = prefs.init;', 'var buildPrefsWidget = prefs.buildPrefsWidget;', @@ -77,7 +73,6 @@ export default [ format: 'iife', exports: 'default', name: 'prefs', - banner, footer: prefsFooter, globals, }, diff --git a/src/api/providers/github.ts b/src/api/providers/github.ts index 1bb356a..d9b6863 100644 --- a/src/api/providers/github.ts +++ b/src/api/providers/github.ts @@ -1,6 +1,7 @@ import { SyncData } from '@esync/data'; import { logger } from '@esync/utils'; -import { Context as request } from 'grest/src/app/Context/Context'; +import { Bytes, PRIORITY_DEFAULT } from '@gi-types/glib2'; +import { Message, Session, Status, status_get_phrase } from '@gi-types/soup3'; import { SyncOperationStatus, SyncProvider } from '../types'; const debug = logger('github'); @@ -10,10 +11,12 @@ export class Github implements SyncProvider { private gistId: string; private userToken: string; + private session: Session; constructor(gistId: string, userToken: string) { this.gistId = gistId; this.userToken = userToken; + this.session = new Session(); } async save(syncData: SyncData): Promise { @@ -26,38 +29,45 @@ export class Github implements SyncProvider { }; }, {}); - const { status } = await request.fetch(`${Github.GIST_API_URL}/${this.gistId}`, { - headers: { - 'User-Agent': 'Mozilla/5.0', - Authorization: `token ${this.userToken}`, - }, - body: { - description: 'Extensions Sync', - files, - }, - method: 'PATCH', + const message = Message.new('PATCH', `${Github.GIST_API_URL}/${this.gistId}`); + message.request_headers.append('User-Agent', 'Mozilla/5.0'); + message.request_headers.append('Authorization', `token ${this.userToken}`); + const requestBody = JSON.stringify({ + description: 'Extensions Sync', + files, }); + message.set_request_body_from_bytes('application/json', new Bytes(imports.byteArray.fromString(requestBody))); + await this.session.send_and_read_async(message, PRIORITY_DEFAULT, null); - if (status !== 200) { - throw new Error(`failed to save data to ${this.getName()}. Server status: ${status}`); + const { statusCode } = message; + const phrase = status_get_phrase(statusCode); + if (statusCode !== Status.OK) { + throw new Error(`failed to save data to ${this.getName()}. Server status: ${phrase}`); } - return status === 200 ? SyncOperationStatus.SUCCESS : SyncOperationStatus.FAIL; + return SyncOperationStatus.SUCCESS; } async read(): Promise { - const { body, status } = await request.fetch(`${Github.GIST_API_URL}/${this.gistId}`, { - headers: { - 'User-Agent': 'Mozilla/5.0', - Authorization: `token ${this.userToken}`, - }, - method: 'GET', - }); + const message = Message.new('GET', `${Github.GIST_API_URL}/${this.gistId}`); + message.request_headers.append('User-Agent', 'Mozilla/5.0'); + message.request_headers.append('Authorization', `token ${this.userToken}`); - if (status !== 200) { - throw new Error(`failed to read data from ${this.getName()}. Server status: ${status}`); + const bytes = await this.session.send_and_read_async(message, PRIORITY_DEFAULT, null); + const { statusCode } = message; + const phrase = status_get_phrase(statusCode); + if (statusCode !== Status.OK) { + throw new Error(`failed to read data from ${this.getName()}. Server status: ${phrase}`); } + const data = bytes.get_data(); + if (data === null) { + throw new Error(`failed to read data from ${this.getName()}. Empty response`); + } + + const json = imports.byteArray.toString(data); + const body = JSON.parse(json); + const syncData: SyncData = Object.keys(body.files).reduce( (acc, key) => { try { diff --git a/src/api/providers/gitlab.ts b/src/api/providers/gitlab.ts index 08e9524..3151995 100644 --- a/src/api/providers/gitlab.ts +++ b/src/api/providers/gitlab.ts @@ -1,5 +1,6 @@ import { SyncData } from '@esync/data'; -import { Context as request } from 'grest/src/app/Context/Context'; +import { Bytes, PRIORITY_DEFAULT } from '@gi-types/glib2'; +import { Message, Session, Status, status_get_phrase } from '@gi-types/soup3'; import { SyncOperationStatus, SyncProvider } from '../types'; export class Gitlab implements SyncProvider { @@ -7,47 +8,55 @@ export class Gitlab implements SyncProvider { private snippetId: string; private userToken: string; + private session: Session; constructor(snippetId: string, userToken: string) { this.snippetId = snippetId; this.userToken = userToken; + this.session = new Session(); } async save(syncData: SyncData): Promise { - const { status } = await request.fetch(`${Gitlab.SNIPPETS_API_URL}/${this.snippetId}`, { - headers: { - 'User-Agent': 'Mozilla/5.0', - 'PRIVATE-TOKEN': `${this.userToken}`, - 'Content-Type': 'application/json', - }, - body: { - title: 'Extensions Sync', - content: JSON.stringify(syncData), - }, - method: 'PUT', + const message = Message.new('PUT', `${Gitlab.SNIPPETS_API_URL}/${this.snippetId}`); + message.request_headers.append('User-Agent', 'Mozilla/5.0'); + message.request_headers.append('PRIVATE-TOKEN', `${this.userToken}`); + const requestBody = JSON.stringify({ + title: 'Extensions Sync', + content: JSON.stringify(syncData), }); + message.set_request_body_from_bytes('application/json', new Bytes(imports.byteArray.fromString(requestBody))); + await this.session.send_and_read_async(message, PRIORITY_DEFAULT, null); - if (status !== 200) { - throw new Error(`failed to save data to ${this.getName()}. Server status: ${status}`); + const { statusCode } = message; + const phrase = status_get_phrase(statusCode); + if (statusCode !== Status.OK) { + throw new Error(`failed to save data to ${this.getName()}. Server status: ${phrase}`); } - return status === 200 ? SyncOperationStatus.SUCCESS : SyncOperationStatus.FAIL; + return SyncOperationStatus.SUCCESS; } async read(): Promise { - const { body, status } = await request.fetch(`${Gitlab.SNIPPETS_API_URL}/${this.snippetId}/raw`, { - headers: { - 'User-Agent': 'Mozilla/5.0', - 'PRIVATE-TOKEN': `${this.userToken}`, - }, - method: 'GET', - }); + const message = Message.new('GET', `${Gitlab.SNIPPETS_API_URL}/${this.snippetId}/raw`); + message.request_headers.append('User-Agent', 'Mozilla/5.0'); + message.request_headers.append('PRIVATE-TOKEN', `${this.userToken}`); + + const bytes = await this.session.send_and_read_async(message, PRIORITY_DEFAULT, null); + const { statusCode } = message; + const phrase = status_get_phrase(statusCode); + if (statusCode !== Status.OK) { + throw new Error(`failed to read data from ${this.getName()}. Server status: ${phrase}`); + } - if (status !== 200) { - throw new Error(`failed to read data from ${this.getName()}. Server status: ${status}`); + const data = bytes.get_data(); + if (data === null) { + throw new Error(`failed to read data from ${this.getName()}. Empty response`); } - return body; + const json = imports.byteArray.toString(data); + const syncData = JSON.parse(json); + + return syncData; } getName(): string { diff --git a/src/data/providers/extensions/utils.ts b/src/data/providers/extensions/utils.ts index 907db42..f6ea932 100644 --- a/src/data/providers/extensions/utils.ts +++ b/src/data/providers/extensions/utils.ts @@ -1,18 +1,8 @@ import { ExtensionType, getCurrentExtension, readDconfData, ShellExtension } from '@esync/shell'; import { execute, logger } from '@esync/utils'; -import { File } from '@gi-types/gio2'; -import { - build_filenamev, - ByteArray, - child_watch_add, - file_get_contents, - get_user_data_dir, - PRIORITY_DEFAULT, - SpawnFlags, - spawn_async, - spawn_close_pid, -} from '@gi-types/glib2'; -import { form_encode_hash, Message, Session, Status, status_get_phrase, URI } from '@gi-types/soup2'; +import { File, Subprocess, SubprocessFlags } from '@gi-types/gio2'; +import { build_filenamev, file_get_contents, get_user_data_dir, PRIORITY_DEFAULT } from '@gi-types/glib2'; +import { form_encode_hash, Message, Session, Status, status_get_phrase } from '@gi-types/soup3'; import { parse } from 'fast-xml-parser'; const debug = logger('extension-utils'); @@ -138,70 +128,43 @@ export const removeExtension = (extensionId: string): void => { debug(`removed extension ${extensionId}`); }; -export const extractExtensionArchive = (bytes: ByteArray, dir: File, callback: any) => { +const extractExtensionArchive = async (bytes, dir) => { if (!dir.query_exists(null)) { dir.make_directory_with_parents(null); } const [file, stream] = File.new_tmp('XXXXXX.shell-extension.zip'); + await stream.output_stream.write_bytes_async(bytes, PRIORITY_DEFAULT, null); + stream.close_async(PRIORITY_DEFAULT, null); - stream.output_stream.write_bytes(bytes as any, null); - stream.close(null); - const [success, pid] = spawn_async( - null, - ['unzip', '-uod', `${dir.get_path()}`, '--', `${file.get_path()}`], - null, - SpawnFlags.SEARCH_PATH | SpawnFlags.DO_NOT_REAP_CHILD, - null, - ); - - if (!success) { - throw new Error('failed to extract extension'); - } - if (pid) { - child_watch_add(PRIORITY_DEFAULT, pid, (o, status) => { - spawn_close_pid(pid); - - if (status != 0) { - throw new Error('failed to extract extension'); - } else { - callback(); - } - }); - } + const unzip = Subprocess.new(['unzip', '-uod', dir.get_path(), '--', file.get_path()], SubprocessFlags.NONE); + await unzip.wait_check_async(null); }; export const installExtension = async (extensionId: string): Promise => { - return new Promise((resolve) => { - const params = { shell_version: imports.misc.config.PACKAGE_VERSION }; - const soupUri = URI.new(`https://extensions.gnome.org/download-extension/${extensionId}.shell-extension.zip`); - soupUri.set_query(form_encode_hash(params)); + const params = { shell_version: imports.misc.config.PACKAGE_VERSION }; + const message = Message.new_from_encoded_form( + 'GET', + `https://extensions.gnome.org/download-extension/${extensionId}.shell-extension.zip`, + form_encode_hash(params), + ); - const message = Message.new_from_uri('GET', soupUri); + const dir = File.new_for_path(build_filenamev([get_user_data_dir(), 'gnome-shell', 'extensions', extensionId])); - const dir = File.new_for_path(build_filenamev([get_user_data_dir(), 'gnome-shell', 'extensions', extensionId])); + try { + const bytes = await new Session().send_and_read_async(message, PRIORITY_DEFAULT, null); + const { statusCode } = message; + const phrase = status_get_phrase(statusCode); + if (statusCode !== Status.OK) throw new Error(`Unexpected response: ${phrase}`); - try { - const httpSession = new Session(); - httpSession.queue_message(message, () => { - const { statusCode } = message; - const phrase = status_get_phrase(statusCode); - if (statusCode !== Status.OK) { - throw new Error(`Unexpected response: ${phrase}`); - } - const bytes = message.response_body.flatten().get_as_bytes(); - extractExtensionArchive(bytes as any, dir, () => { - const extension = getExtensionManager().createExtensionObject(extensionId, dir, ExtensionType.PER_USER); - getExtensionManager().loadExtension(extension); - if (!getExtensionManager().enableExtension(extensionId)) { - throw new Error(`Cannot enable ${extensionId}`); - } - resolve(); - }); - }); - } catch (e) { - debug(`error occurred during installation of ${extensionId}. Error: ${e}`); - resolve(); + await extractExtensionArchive(bytes, dir); + + const extension = getExtensionManager().createExtensionObject(extensionId, dir, ExtensionType.PER_USER); + getExtensionManager().loadExtension(extension); + if (!getExtensionManager().enableExtension(extensionId)) { + throw new Error(`Cannot enable ${extensionId}`); } - }); + } catch (e) { + debug(`error occurred during installation of ${extensionId}. Error: ${e}`); + } }; diff --git a/src/shell/index.ts b/src/shell/index.ts index 209ede3..af718cd 100644 --- a/src/shell/index.ts +++ b/src/shell/index.ts @@ -82,7 +82,7 @@ export const writeDconfData = async (schemaPath: string, data: string): Promise< debug(`cannot load settings for ${schemaPath}`); } file.delete(null); - ioStream.close_async(PRIORITY_DEFAULT, null, null); + ioStream.close_async(PRIORITY_DEFAULT, null); }; export const readDconfData = async (schemaPath: string): Promise => { diff --git a/yarn.lock b/yarn.lock index b78a1b8..13e52bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -217,68 +217,6 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@cgjs/assert@^0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@cgjs/assert/-/assert-0.0.2.tgz#38137d9fef2cb0c5d5685f9dba03ecbb543ece00" - integrity sha512-G6nTc0DZZ0Wp14fxzj9oF+vQT1GHMtRUrIN/a6M8V8sJKqm7kdw+IQQDFE12abxC5vsWPMpB090MDYnaBDQg3w== - -"@cgjs/buffer@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@cgjs/buffer/-/buffer-0.1.1.tgz#fee9633a4e8d6a3f99ee2d840296729096d59660" - integrity sha512-UJwhXsnytdRt2ygEZjHcEm6SZ/RsuUkPHVHZdaCT0Ey6CYF6sC2U1c9wR4uo4VnoQddfAeJF8CVE8VxK2+ELtQ== - dependencies: - buffer "^5.0.8" - -"@cgjs/cluster@^0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@cgjs/cluster/-/cluster-0.0.2.tgz#c76e3c0731942a30303b5dd0c7b06c897e0ffa7b" - integrity sha512-PzQsyK79v0Uq7H0tVbepeafp9IndpRZwhftkM3LBkDLRroISpuhmIgx56tBlPwrDr3XDkUlTEX7F0wh4Jfdwpw== - -"@cgjs/console@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@cgjs/console/-/console-0.1.3.tgz#5eb4c696f98a6eba0d4b9387d198a87ca6396efd" - integrity sha512-0kbKaUIO9JwO35fiKb2zMPdHqvFzTFHVF2ZjhL92RxDZm9i5HS35TkydVoZ3dAMp0ACslTKB3V3WR2jHqde+wQ== - -"@cgjs/events@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@cgjs/events/-/events-0.1.1.tgz#05277f760e4c63225ad8bf1bcfcc3bb4be7e2e6f" - integrity sha512-P9AdVIPXgBbTUiU1vatWTu039BR3fU/p+u7aNZD+cuwzsmqaqLsj708utdNvil65XhHYcGAa6HSzXLkZlRtOVA== - -"@cgjs/fs@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@cgjs/fs/-/fs-0.0.4.tgz#874d6abcaac50cd869c5916a1781c0294d28fb9d" - integrity sha512-63KagxS9h24omUTNorMYCXj5ktu7Lug37LqAgC/4FMhqEGH2l32r0Yf/BsRheCRq1GYSBNWRDCim2kLD631YtA== - -"@cgjs/gir@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@cgjs/gir/-/gir-0.0.1.tgz#154187c3cffbbfd4c6651bab5041c82ddbe9d126" - integrity sha512-ABHguFr8uYiAWIXGfBXimw3Xksr9bFxa2m65/bCccDXyptyy1+5Ndx3ZTyABHsElP5MkggZzHtqCKRqX8oTTYA== - -"@cgjs/os@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@cgjs/os/-/os-0.1.1.tgz#6fdc5e04db8b9badf832ec08d3ae2983d474eba1" - integrity sha512-FF4NZoMSKP7gR1TOKGdv9Q1LbxmpP6UVmZMJBUhn33YEeG5aOiZnBljKF707lqd2+qc+VEtRYNkEBJK0Jc0a0Q== - -"@cgjs/path@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@cgjs/path/-/path-0.1.1.tgz#514c8737c06e3eee51639a28c3ccf0ddaa903c6a" - integrity sha512-tsBblo9bYVVYUlleyUu6+MfnZYApI+4xA6KLslNn96+4LI345g7ubaoETz0WBiyrQ3rleYFWJgHD5jrGTiOvSg== - -"@cgjs/process@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@cgjs/process/-/process-0.0.4.tgz#24fde38f7a3f08f1af2a95bd32c498b46612f5fd" - integrity sha512-pc6SJlTdz1at/DzhZ9zEbXUgDEmcZb+e0x+YdY3MjgmmPNDkd426nKPdY9EJQ92pUjTju4Utx8lA2fIMm4zAZQ== - -"@cgjs/timers@^0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@cgjs/timers/-/timers-0.0.2.tgz#95c06d35a30995a1343fa36bad81b838b6797fe6" - integrity sha512-pU6ITZiqw094cUu0k1v7YRTkfYhyRDFxZKf87Xvh6riF6y20lPXMO6tmrYUr3HNWxw8E8s/87jOvvujPGI8FhA== - -"@cgjs/util@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@cgjs/util/-/util-0.1.1.tgz#1c73f0b2a4810894028aa7d726b69f71a9d713ff" - integrity sha512-0iZ2zui0k3K/j/7ohshfqHQ9YGJ5wuKz5K4xP8T6uwk9nLnWXjF5ot7AJmqaBz2Sq/JyMUeOtX2qIWEhY8pheg== - "@commitlint/cli@^13.2.1": version "13.2.1" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-13.2.1.tgz#80ebd46beef6ceed3bb0c0842bcda8d02a3c91de" @@ -736,10 +674,10 @@ "@gi-types/polkitagent1" "^1.0.1" "@gi-types/st1" "^1.0.1" -"@gi-types/soup2@^2.74.1": - version "2.74.1" - resolved "https://registry.yarnpkg.com/@gi-types/soup2/-/soup2-2.74.1.tgz#114a53638ddab71684681a53dd10f570eaac96a6" - integrity sha512-K11KSN032DFAc3RTTBtPiZ9utWqw4CJ7wUAG1cMRdQtRBD44Xi2o2r9RuZkqUhT12V0vU7ZafF8Apb6PM6AOpg== +"@gi-types/soup3@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@gi-types/soup3/-/soup3-3.0.1.tgz#0b8c73c929384dba0a1122f0c20ced724808fabd" + integrity sha512-fZoJA5QHopIcOVf83dbhzRJqpHtbUUmyIinq6nu+sStQTOMQcf8m31cTVJvpjP6PzaBO13xaG3hagccF1PXpvw== dependencies: "@gi-types/gio2" "^2.72.1" "@gi-types/glib2" "^2.72.1" @@ -1049,11 +987,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== -"@types/node@^10.12.5": - version "10.17.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.18.tgz#ae364d97382aacdebf583fa4e7132af2dfe56a0c" - integrity sha512-DQ2hl/Jl3g33KuAUOcMrcAOtsbzb+y/ufakzAdeK9z/H/xsvkpbETZZbPNMIiQuk24f5ZRMCcZIViAwyFIiKmg== - "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -1298,11 +1231,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -1350,14 +1278,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer@^5.0.8: - version "5.5.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" - integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - builtin-modules@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" @@ -1453,24 +1373,6 @@ caniuse-lite@^1.0.30001271: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz#0dda0c9bcae2cf5407cd34cac304186616cc83e8" integrity sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA== -cgjs@^0.1.32: - version "0.1.32" - resolved "https://registry.yarnpkg.com/cgjs/-/cgjs-0.1.32.tgz#1c96f68f73fdde9aba098bdfa42a41e40c06975c" - integrity sha512-d2TiE5fyRzTIk8/6uEP6hYMkjnBpJa1DkhCnlJubyEotH6DoXd8LJ/PiJBU9NSeDHhpRmSnQdku00qXQi6KmeQ== - dependencies: - "@cgjs/assert" "^0.0.2" - "@cgjs/buffer" "^0.1.1" - "@cgjs/cluster" "^0.0.2" - "@cgjs/console" "^0.1.3" - "@cgjs/events" "^0.1.1" - "@cgjs/fs" "^0.0.4" - "@cgjs/gir" "^0.0.1" - "@cgjs/os" "^0.1.1" - "@cgjs/path" "^0.1.1" - "@cgjs/process" "^0.0.4" - "@cgjs/timers" "^0.0.2" - "@cgjs/util" "^0.1.1" - chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2583,14 +2485,6 @@ graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -grest@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/grest/-/grest-1.2.0.tgz#ae7236242b09f8ef09868c2b7f1363ac49698ba6" - integrity sha512-ZW2K10i/PjxkeMkIvn+crJyhIGOberCaGRMHxcVTyomeCytWgLCMhrx/yTQ3tAMovHjJ0uPXKejNNMf6huHARg== - optionalDependencies: - "@types/node" "^10.12.5" - cgjs "^0.1.32" - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -2689,11 +2583,6 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"