Classes for your scripts
Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta
// @require https://update.greasyfork.org/scripts/389765/1785927/CommonUtils.js
Shared utility classes for WME (Waze Map Editor) userscripts.
// @require https://greasyfork.org/scripts/389765-common-utils/code/CommonUtils.js?version=XXX
See last available version on the GreasyFork homepage
npm install
npm run build # one-off build → dist/Utils.user.js
npm run watch # rebuild on changes
Source is written in TypeScript under src/, built with Rollup into dist/Utils.user.js.
src/
├── meta.ts # userscript header
├── container.ts # Container class
├── simple-cache.ts # SimpleCache extends Container
├── settings.ts # Settings extends Container
├── tools.ts # Tools static class
└── index.ts # exposes all classes to global scope
A nested key-value store with path-based access:
let container = new Container()
// set nested values
container.set(['options', 'theme'], 'dark')
container.set(['options', 'lang'], 'uk')
// get nested values
container.get('options', 'theme') // 'dark'
container.get('options') // { theme: 'dark', lang: 'uk' }
container.get() // entire container
// check existence
container.has('options', 'theme') // true
container.has('options', 'color') // false
Simplified Container with flat key-value interface:
let cache = new SimpleCache()
cache.set('key', result)
cache.has('key') // true
cache.get('key') // result
Container backed by localStorage. Loads on construction, merges stored values over defaults:
// load settings (merges localStorage data over defaults)
let settings = new Settings('my-script', {
enabled: true,
radius: 200
})
// read
settings.get('enabled') // true
settings.get('radius') // 200
// update
settings.set(['radius'], 500)
// save to localStorage (call before page unload)
settings.save()
With jQuery:
$(window).on('beforeunload', () => settings.save())
Static utility methods:
// deep merge objects (preserves nested structure)
let result = Tools.mergeDeep({}, defaults, overrides)
// check if value is a plain object
Tools.isObject({}) // true
Tools.isObject([]) // false
Tools.isObject(null) // false
Author homepage: https://anton.shevchuk.name/
Script homepage: https://github.com/AntonShevchuk/common.utils
GreasyFork: https://greasyfork.org/uk/scripts/389765-common-utils