Diplodoc cross-packages utils

Diplodoc cross-packages utils.
The Diplodoc ecosystem consists of many packages that have similar problems and needs. This package will contain all the general logic that is duplicated in our code base.
- AttrsParser
- Extension Load Queue
Support markdown-it-attrs-like attributes parser. Used in custom Diplodoc MarkdownIt plugins to add classes and anchors, enabling subsequent customization through CSS.
``typescript
/*
optional first query
if provided parser will parse it immediately
each 'parse' call is pure
*/
const attrs = new AttrsParser('{.class #id data-name=diplodoc}');
attrs.state / { class: ['class'], id: ['id'], 'data-name': ['diplodoc'] } /
const other = attrs.parse('{data-wide title="Support quotes too"}')
other / { attr: ['data-wide'], title: ['Support quotes too'] } /
`
This queue mechanism allows asynchronous loading of extensions by setting a property on the "window" object in the browser. This property has a Symbol data type, which makes it difficult for external manipulations to access it.
`typescript
// create a unique symbol
export const GLOBAL_SYMBOL: unique symbol = Symbol.for('someController');
// get the store
const store = getScriptStore
// get the controller
const controller = useController
``
See example in diplodoc-platform/html-extension