compass-preferences-model
Advanced tools
Comparing version 0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5 to 0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246
@@ -1,2 +0,2 @@ | ||
import type { GlobalPreferences } from './preferences'; | ||
import type { AllPreferences } from './preferences'; | ||
export interface GlobalPreferenceSources { | ||
@@ -7,5 +7,5 @@ argv?: string[]; | ||
export interface ParsedGlobalPreferencesResult { | ||
cli: Partial<GlobalPreferences>; | ||
global: Partial<GlobalPreferences>; | ||
hardcoded?: Partial<GlobalPreferences>; | ||
cli: Partial<AllPreferences>; | ||
global: Partial<AllPreferences>; | ||
hardcoded?: Partial<AllPreferences>; | ||
preferenceParseErrors: string[]; | ||
@@ -12,0 +12,0 @@ } |
@@ -1,8 +0,19 @@ | ||
import Preferences from './preferences'; | ||
export default Preferences; | ||
export { THEMES, getSettingDescription } from './preferences'; | ||
export type { UserPreferences, UserConfigurablePreferences, PreferenceStateInformation, GlobalPreferences, } from './preferences'; | ||
export { preferencesIpc } from './renderer-ipc'; | ||
import type { UserPreferences, UserConfigurablePreferences, PreferenceStateInformation, AllPreferences, Preferences } from './preferences'; | ||
export type { UserPreferences, UserConfigurablePreferences, PreferenceStateInformation, AllPreferences, Preferences, }; | ||
import { setupPreferences } from './setup-preferences'; | ||
export { setupPreferences }; | ||
export { parseAndValidateGlobalPreferences, getHelpText, } from './global-config'; | ||
export type { ParsedGlobalPreferencesResult } from './global-config'; | ||
export interface PreferencesAccess { | ||
savePreferences(attributes: Partial<UserPreferences>): Promise<AllPreferences>; | ||
refreshPreferences(): Promise<AllPreferences>; | ||
getPreferences(): AllPreferences; | ||
ensureDefaultConfigurableUserPreferences(): Promise<void>; | ||
getConfigurableUserPreferences(): Promise<UserConfigurablePreferences>; | ||
getPreferenceStates(): Promise<PreferenceStateInformation>; | ||
onPreferenceValueChanged<K extends keyof AllPreferences>(preferenceName: K, callback: (value: AllPreferences[K]) => void): () => void; | ||
} | ||
export declare const preferencesAccess: PreferencesAccess; | ||
export default preferencesAccess; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getHelpText = exports.parseAndValidateGlobalPreferences = exports.preferencesIpc = exports.getSettingDescription = exports.THEMES = void 0; | ||
const preferences_1 = __importDefault(require("./preferences")); | ||
exports.default = preferences_1.default; | ||
var preferences_2 = require("./preferences"); | ||
Object.defineProperty(exports, "THEMES", { enumerable: true, get: function () { return preferences_2.THEMES; } }); | ||
Object.defineProperty(exports, "getSettingDescription", { enumerable: true, get: function () { return preferences_2.getSettingDescription; } }); | ||
var renderer_ipc_1 = require("./renderer-ipc"); | ||
Object.defineProperty(exports, "preferencesIpc", { enumerable: true, get: function () { return renderer_ipc_1.preferencesIpc; } }); | ||
exports.preferencesAccess = exports.getHelpText = exports.parseAndValidateGlobalPreferences = exports.setupPreferences = exports.getSettingDescription = exports.THEMES = void 0; | ||
var preferences_1 = require("./preferences"); | ||
Object.defineProperty(exports, "THEMES", { enumerable: true, get: function () { return preferences_1.THEMES; } }); | ||
Object.defineProperty(exports, "getSettingDescription", { enumerable: true, get: function () { return preferences_1.getSettingDescription; } }); | ||
const setup_preferences_1 = require("./setup-preferences"); | ||
Object.defineProperty(exports, "setupPreferences", { enumerable: true, get: function () { return setup_preferences_1.setupPreferences; } }); | ||
const renderer_ipc_1 = require("./renderer-ipc"); | ||
var global_config_1 = require("./global-config"); | ||
Object.defineProperty(exports, "parseAndValidateGlobalPreferences", { enumerable: true, get: function () { return global_config_1.parseAndValidateGlobalPreferences; } }); | ||
Object.defineProperty(exports, "getHelpText", { enumerable: true, get: function () { return global_config_1.getHelpText; } }); | ||
exports.preferencesAccess = renderer_ipc_1.preferencesIpc !== null && renderer_ipc_1.preferencesIpc !== void 0 ? renderer_ipc_1.preferencesIpc : setup_preferences_1.preferencesMain; | ||
exports.default = exports.preferencesAccess; | ||
//# sourceMappingURL=index.js.map |
@@ -34,11 +34,11 @@ import type { ParsedGlobalPreferencesResult } from './global-config'; | ||
}; | ||
export declare type GlobalPreferences = UserPreferences & CliOnlyPreferences & NonUserPreferences; | ||
declare type OnPreferencesChangedCallback = (changedPreferencesValues: Partial<GlobalPreferences>) => void; | ||
export declare type AllPreferences = UserPreferences & CliOnlyPreferences & NonUserPreferences; | ||
declare type OnPreferencesChangedCallback = (changedPreferencesValues: Partial<AllPreferences>) => void; | ||
export declare type AmpersandType<T> = T extends string ? 'string' : T extends boolean ? 'boolean' : T extends number ? 'number' : T extends any[] ? 'array' : T extends Date ? 'date' : T extends object ? 'object' : never; | ||
declare type PreferenceDefinition<K extends keyof GlobalPreferences> = { | ||
type: AmpersandType<GlobalPreferences[K]>; | ||
default?: GlobalPreferences[K]; | ||
declare type PreferenceDefinition<K extends keyof AllPreferences> = { | ||
type: AmpersandType<AllPreferences[K]>; | ||
default?: AllPreferences[K]; | ||
required: boolean; | ||
ui: K extends keyof UserConfigurablePreferences ? true : false; | ||
cli: K extends keyof InternalUserPreferences ? false : K extends keyof CliOnlyPreferences ? true : boolean; | ||
cli: K extends 'showedNetworkOptIn' ? boolean : K extends keyof InternalUserPreferences ? false : K extends keyof CliOnlyPreferences ? true : boolean; | ||
global: K extends keyof InternalUserPreferences ? false : K extends keyof CliOnlyPreferences ? false : boolean; | ||
@@ -49,5 +49,5 @@ description: K extends keyof InternalUserPreferences ? null : { | ||
}; | ||
deriveValue?: DeriveValueFunction<GlobalPreferences[K]>; | ||
deriveValue?: DeriveValueFunction<AllPreferences[K]>; | ||
}; | ||
declare type DeriveValueFunction<T> = (getValue: <K extends keyof GlobalPreferences>(key: K) => GlobalPreferences[K], getState: <K extends keyof GlobalPreferences>(key: K) => PreferenceState) => { | ||
declare type DeriveValueFunction<T> = (getValue: <K extends keyof AllPreferences>(key: K) => AllPreferences[K], getState: <K extends keyof AllPreferences>(key: K) => PreferenceState) => { | ||
value: T; | ||
@@ -57,5 +57,5 @@ state: PreferenceState; | ||
export declare const allPreferencesProps: Required<{ | ||
[K in keyof GlobalPreferences]: PreferenceDefinition<K>; | ||
[K in keyof AllPreferences]: PreferenceDefinition<K>; | ||
}>; | ||
export declare function getSettingDescription(name: Exclude<keyof GlobalPreferences, keyof InternalUserPreferences>): { | ||
export declare function getSettingDescription(name: Exclude<keyof AllPreferences, keyof InternalUserPreferences>): { | ||
short: string; | ||
@@ -65,4 +65,4 @@ long?: string; | ||
export declare type PreferenceState = 'set-cli' | 'set-global' | 'hardcoded' | 'derived' | undefined; | ||
export declare type PreferenceStateInformation = Partial<Record<keyof GlobalPreferences, PreferenceState>>; | ||
declare class Preferences { | ||
export declare type PreferenceStateInformation = Partial<Record<keyof AllPreferences, PreferenceState>>; | ||
export declare class Preferences { | ||
private _onPreferencesChangedCallbacks; | ||
@@ -72,13 +72,14 @@ private _userPreferencesModel; | ||
constructor(basepath?: string, globalPreferences?: Partial<ParsedGlobalPreferencesResult>); | ||
fetchPreferences(): Promise<GlobalPreferences>; | ||
savePreferences(attributes?: Partial<UserPreferences>): Promise<GlobalPreferences>; | ||
getPreferences(): GlobalPreferences; | ||
fetchPreferences(): Promise<AllPreferences>; | ||
savePreferences(attributes?: Partial<UserPreferences>): Promise<AllPreferences>; | ||
getPreferences(): AllPreferences; | ||
private _getStoredValues; | ||
private _computePreferenceValuesAndStates; | ||
ensureDefaultConfigurableUserPreferences(): Promise<void>; | ||
getConfigurableUserPreferences(): Promise<UserConfigurablePreferences>; | ||
getPreferenceStates(): PreferenceStateInformation; | ||
_callOnPreferencesChanged(changedPreferencesValues: Partial<GlobalPreferences>): void; | ||
onPreferencesChanged(callback: OnPreferencesChangedCallback): void; | ||
_callOnPreferencesChanged(changedPreferencesValues: Partial<AllPreferences>): void; | ||
onPreferencesChanged(callback: OnPreferencesChangedCallback): () => void; | ||
} | ||
export default Preferences; | ||
export {}; | ||
//# sourceMappingURL=preferences.d.ts.map |
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getSettingDescription = exports.allPreferencesProps = exports.THEMES = void 0; | ||
exports.Preferences = exports.getSettingDescription = exports.allPreferencesProps = exports.THEMES = void 0; | ||
const storage_mixin_1 = __importDefault(require("storage-mixin")); | ||
@@ -52,3 +52,3 @@ const compass_utils_1 = require("@mongodb-js/compass-utils"); | ||
ui: false, | ||
cli: false, | ||
cli: true, | ||
global: false, | ||
@@ -346,5 +346,5 @@ description: null, | ||
} | ||
async getConfigurableUserPreferences() { | ||
const prefences = await this.fetchPreferences(); | ||
if (!prefences.showedNetworkOptIn && prefences.networkTraffic) { | ||
async ensureDefaultConfigurableUserPreferences() { | ||
const { showedNetworkOptIn } = await this.fetchPreferences(); | ||
if (!showedNetworkOptIn) { | ||
await this.savePreferences({ | ||
@@ -360,3 +360,5 @@ autoUpdates: true, | ||
} | ||
const preferences = this.getPreferences(); | ||
} | ||
async getConfigurableUserPreferences() { | ||
const preferences = await this.fetchPreferences(); | ||
return Object.fromEntries(Object.entries(preferences).filter(([key]) => exports.allPreferencesProps[key].ui === true)); | ||
@@ -374,5 +376,11 @@ } | ||
this._onPreferencesChangedCallbacks.push(callback); | ||
return () => { | ||
const index = this._onPreferencesChangedCallbacks.indexOf(callback); | ||
if (index !== -1) { | ||
this._onPreferencesChangedCallbacks.splice(index, 1); | ||
} | ||
}; | ||
} | ||
} | ||
exports.default = Preferences; | ||
exports.Preferences = Preferences; | ||
//# sourceMappingURL=preferences.js.map |
@@ -1,17 +0,14 @@ | ||
import hadronIpc from 'hadron-ipc'; | ||
import type { GlobalPreferences, PreferenceStateInformation, UserConfigurablePreferences, UserPreferences } from './preferences'; | ||
export declare const makePreferencesIpc: (ipc: typeof hadronIpc) => { | ||
savePreferences(attributes: Partial<UserPreferences>): Promise<GlobalPreferences>; | ||
getPreferences(): Promise<GlobalPreferences>; | ||
import type { HadronIpcRenderer } from 'hadron-ipc'; | ||
import type { PreferencesAccess } from '.'; | ||
import type { AllPreferences, PreferenceStateInformation, UserConfigurablePreferences, UserPreferences } from './preferences'; | ||
export declare const makePreferencesIpc: (ipcRenderer: HadronIpcRenderer) => { | ||
savePreferences(attributes: Partial<UserPreferences>): Promise<AllPreferences>; | ||
refreshPreferences(): Promise<AllPreferences>; | ||
getPreferences(): AllPreferences; | ||
ensureDefaultConfigurableUserPreferences(): Promise<void>; | ||
getConfigurableUserPreferences(): Promise<UserConfigurablePreferences>; | ||
getPreferenceStates(): Promise<PreferenceStateInformation>; | ||
onPreferenceValueChanged<K extends keyof UserConfigurablePreferences | keyof import("./preferences").InternalUserPreferences | keyof import("./preferences").CliOnlyPreferences | "ignoreAdditionalCommandLineFlags">(preferenceName: K, callback: (value: GlobalPreferences[K]) => void): () => void; | ||
onPreferenceValueChanged<K extends keyof UserConfigurablePreferences | keyof import("./preferences").InternalUserPreferences | keyof import("./preferences").CliOnlyPreferences | "ignoreAdditionalCommandLineFlags">(preferenceName: K, callback: (value: AllPreferences[K]) => void): () => void; | ||
}; | ||
export declare const preferencesIpc: { | ||
savePreferences(attributes: Partial<UserPreferences>): Promise<GlobalPreferences>; | ||
getPreferences(): Promise<GlobalPreferences>; | ||
getConfigurableUserPreferences(): Promise<UserConfigurablePreferences>; | ||
getPreferenceStates(): Promise<PreferenceStateInformation>; | ||
onPreferenceValueChanged<K extends keyof UserConfigurablePreferences | keyof import("./preferences").InternalUserPreferences | keyof import("./preferences").CliOnlyPreferences | "ignoreAdditionalCommandLineFlags">(preferenceName: K, callback: (value: GlobalPreferences[K]) => void): () => void; | ||
}; | ||
export declare const preferencesIpc: PreferencesAccess | undefined; | ||
//# sourceMappingURL=renderer-ipc.d.ts.map |
@@ -8,50 +8,47 @@ "use strict"; | ||
const hadron_ipc_1 = __importDefault(require("hadron-ipc")); | ||
const makePreferencesIpc = (ipc) => ({ | ||
savePreferences(attributes) { | ||
var _a; | ||
if (typeof ((_a = ipc === null || ipc === void 0 ? void 0 : ipc.ipcRenderer) === null || _a === void 0 ? void 0 : _a.invoke) === 'function') { | ||
return ipc.ipcRenderer.invoke('compass:save-preferences', attributes); | ||
} | ||
return Promise.resolve({}); | ||
}, | ||
getPreferences() { | ||
var _a; | ||
if (typeof ((_a = ipc === null || ipc === void 0 ? void 0 : ipc.ipcRenderer) === null || _a === void 0 ? void 0 : _a.invoke) === 'function') { | ||
return ipc.ipcRenderer.invoke('compass:get-preferences'); | ||
} | ||
return Promise.resolve({}); | ||
}, | ||
getConfigurableUserPreferences() { | ||
var _a; | ||
if (typeof ((_a = ipc === null || ipc === void 0 ? void 0 : ipc.ipcRenderer) === null || _a === void 0 ? void 0 : _a.invoke) === 'function') { | ||
return ipc.ipcRenderer.invoke('compass:get-configurable-user-preferences'); | ||
} | ||
return Promise.resolve({}); | ||
}, | ||
getPreferenceStates() { | ||
var _a; | ||
if (typeof ((_a = ipc === null || ipc === void 0 ? void 0 : ipc.ipcRenderer) === null || _a === void 0 ? void 0 : _a.invoke) === 'function') { | ||
return ipc.ipcRenderer.invoke('compass:get-preference-states'); | ||
} | ||
return Promise.resolve({}); | ||
}, | ||
onPreferenceValueChanged(preferenceName, callback) { | ||
var _a; | ||
const listener = (_, preferences) => { | ||
if (Object.keys(preferences).includes(preferenceName)) { | ||
return callback(preferences[preferenceName]); | ||
} | ||
}; | ||
if (typeof ((_a = ipc === null || ipc === void 0 ? void 0 : ipc.ipcRenderer) === null || _a === void 0 ? void 0 : _a.on) === 'function') { | ||
ipc.ipcRenderer.on('compass:preferences-changed', listener); | ||
const makePreferencesIpc = (ipcRenderer) => { | ||
const cachedPreferences = {}; | ||
async function refreshCachedPreferences() { | ||
const result = await ipcRenderer.invoke('compass:get-preferences'); | ||
Object.assign(cachedPreferences, result); | ||
return result; | ||
} | ||
void refreshCachedPreferences(); | ||
ipcRenderer.on('compass:preferences-changed', () => void refreshCachedPreferences().catch(() => { | ||
})); | ||
return { | ||
async savePreferences(attributes) { | ||
await ipcRenderer.invoke('compass:save-preferences', attributes); | ||
return await refreshCachedPreferences(); | ||
}, | ||
refreshPreferences() { | ||
return refreshCachedPreferences(); | ||
}, | ||
getPreferences() { | ||
return { ...cachedPreferences }; | ||
}, | ||
ensureDefaultConfigurableUserPreferences() { | ||
return ipcRenderer.invoke('compass:ensure-default-configurable-user-preferences'); | ||
}, | ||
getConfigurableUserPreferences() { | ||
return ipcRenderer.invoke('compass:get-configurable-user-preferences'); | ||
}, | ||
getPreferenceStates() { | ||
return ipcRenderer.invoke('compass:get-preference-states'); | ||
}, | ||
onPreferenceValueChanged(preferenceName, callback) { | ||
const listener = (_, preferences) => { | ||
if (Object.keys(preferences).includes(preferenceName)) { | ||
return callback(preferences[preferenceName]); | ||
} | ||
}; | ||
ipcRenderer.on('compass:preferences-changed', listener); | ||
return () => { | ||
ipc.ipcRenderer.removeListener('compass:preferences-changed', listener); | ||
ipcRenderer.removeListener('compass:preferences-changed', listener); | ||
}; | ||
} | ||
return () => { | ||
}; | ||
}, | ||
}); | ||
}, | ||
}; | ||
}; | ||
exports.makePreferencesIpc = makePreferencesIpc; | ||
exports.preferencesIpc = (0, exports.makePreferencesIpc)(hadron_ipc_1.default); | ||
exports.preferencesIpc = hadron_ipc_1.default.ipcRenderer ? (0, exports.makePreferencesIpc)(hadron_ipc_1.default.ipcRenderer) : undefined; | ||
//# sourceMappingURL=renderer-ipc.js.map |
@@ -5,3 +5,3 @@ { | ||
"author": "Lucas Hrabovsky <lucas@mongodb.com>", | ||
"version": "0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5", | ||
"version": "0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246", | ||
"bugs": { | ||
@@ -33,2 +33,4 @@ "url": "https://jira.mongodb.org/projects/COMPASS/issues", | ||
"prepublishOnly": "npm run compile && compass-scripts check-exports-exist", | ||
"clean": "rimraf ./dist", | ||
"precompile": "npm run clean", | ||
"compile": "tsc -p tsconfig.json && gen-esm-wrapper . ./dist/.esm-wrapper.mjs", | ||
@@ -47,3 +49,4 @@ "eslint": "eslint", | ||
"dependencies": { | ||
"@mongodb-js/compass-logging": "0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5", | ||
"@mongodb-js/compass-logging": "0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246", | ||
"@mongodb-js/compass-utils": "0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246", | ||
"ampersand-collection-filterable": "^0.3.0", | ||
@@ -55,9 +58,9 @@ "ampersand-model": "^8.0.1", | ||
"js-yaml": "^4.1.0", | ||
"storage-mixin": "0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5", | ||
"storage-mixin": "0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246", | ||
"yargs-parser": "^21.1.1" | ||
}, | ||
"devDependencies": { | ||
"@mongodb-js/compass-utils": "0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5", | ||
"@mongodb-js/eslint-config-compass": "0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5", | ||
"@mongodb-js/mocha-config-compass": "0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5", | ||
"@mongodb-js/compass-utils": "^0.1.1", | ||
"@mongodb-js/eslint-config-compass": "0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246", | ||
"@mongodb-js/mocha-config-compass": "0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246", | ||
"@types/js-yaml": "^4.0.5", | ||
@@ -68,6 +71,7 @@ "@types/yargs-parser": "21.0.0", | ||
"eslint": "^7.25.0", | ||
"hadron-ipc": "0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5", | ||
"mocha": "^6.0.2" | ||
"hadron-ipc": "0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246", | ||
"mocha": "^6.0.2", | ||
"rimraf": "^3.0.2" | ||
}, | ||
"gitHead": "25b11de63d51aa4ca7fda0f3eae67999e3418ca5" | ||
"gitHead": "4216a27cdf41425fff35938bb42040bb93c2d246" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
94921
24
845
10
11
+ Added@mongodb-js/compass-utils@0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246
+ Added@electron/remote@2.1.2(transitive)
+ Added@mongodb-js/compass-logging@0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246(transitive)
+ Added@mongodb-js/compass-utils@0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246(transitive)
+ Addedelectron@34.1.1(transitive)
+ Addedhadron-ipc@0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246(transitive)
+ Addedstorage-mixin@0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246(transitive)
- Removed@mongodb-js/compass-logging@0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5(transitive)
- Removedhadron-ipc@0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5(transitive)
- Removedstorage-mixin@0.0.0-next-25b11de63d51aa4ca7fda0f3eae67999e3418ca5(transitive)
Updated@mongodb-js/compass-logging@0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246
Updatedstorage-mixin@0.0.0-next-4216a27cdf41425fff35938bb42040bb93c2d246