@decaf-ts/ui-decorators 0.5.14 → 0.5.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui-decorators.cjs +266 -22
- package/dist/ui-decorators.esm.cjs +265 -23
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +4 -4
- package/lib/esm/model/decorators.d.ts +113 -0
- package/lib/esm/model/decorators.js +119 -3
- package/lib/esm/model/index.js +5 -5
- package/lib/esm/model/model.d.ts +1 -208
- package/lib/esm/model/model.js +1 -1
- package/lib/esm/model/overrides.js +2 -2
- package/lib/esm/ui/Rendering.d.ts +28 -0
- package/lib/esm/ui/Rendering.js +77 -16
- package/lib/esm/ui/constants.d.ts +2 -0
- package/lib/esm/ui/constants.js +3 -1
- package/lib/esm/ui/decorators.d.ts +50 -0
- package/lib/esm/ui/decorators.js +63 -3
- package/lib/esm/ui/index.js +9 -9
- package/lib/esm/ui/types.d.ts +38 -1
- package/lib/esm/ui/types.js +2 -2
- package/lib/esm/ui/utils.js +14 -10
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/model/decorators.cjs +118 -1
- package/lib/model/decorators.d.ts +113 -0
- package/lib/model/model.cjs +1 -1
- package/lib/model/model.d.ts +1 -208
- package/lib/ui/Rendering.cjs +74 -13
- package/lib/ui/Rendering.d.ts +28 -0
- package/lib/ui/constants.cjs +3 -1
- package/lib/ui/constants.d.ts +2 -0
- package/lib/ui/decorators.cjs +62 -1
- package/lib/ui/decorators.d.ts +50 -0
- package/lib/ui/types.cjs +1 -1
- package/lib/ui/types.d.ts +38 -1
- package/lib/ui/utils.cjs +13 -9
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UIMediaBreakPoints } from "../ui/types";
|
|
1
2
|
/**
|
|
2
3
|
* @description Decorator that tags a class as a UI model
|
|
3
4
|
* @summary Adds rendering capabilities to a model class by providing a render method
|
|
@@ -121,4 +122,116 @@ export declare function renderedBy(engine: string): (target: object, propertyKey
|
|
|
121
122
|
* RenderingEngine->>System: renders with list item styling
|
|
122
123
|
*/
|
|
123
124
|
export declare function uilistitem(tag?: string, props?: Record<string, any>): (original: any, propertyKey?: any) => void;
|
|
125
|
+
/**
|
|
126
|
+
* @description Decorator that adds event handlers to a UI model
|
|
127
|
+
* @summary Specifies event handlers that should be attached to the rendered model
|
|
128
|
+
* This decorator allows you to define event handlers that will be automatically
|
|
129
|
+
* attached to the rendered UI element. The handlers are passed as properties
|
|
130
|
+
* to the rendering engine.
|
|
131
|
+
*
|
|
132
|
+
* @param {Record<string, any>} [props] Object containing event handler functions and other properties
|
|
133
|
+
* @return {Function} A class decorator function
|
|
134
|
+
*
|
|
135
|
+
* @function uihandlers
|
|
136
|
+
* @category Class Decorators
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* // Add event handlers to a model
|
|
140
|
+
* @uimodel('button')
|
|
141
|
+
* @uihandlers({
|
|
142
|
+
* onClick: (event) => console.log('Button clicked'),
|
|
143
|
+
* onMouseOver: (event) => console.log('Mouse over button'),
|
|
144
|
+
* disabled: false
|
|
145
|
+
* })
|
|
146
|
+
* class ClickableButton extends Model {
|
|
147
|
+
* @attribute()
|
|
148
|
+
* label: string;
|
|
149
|
+
* }
|
|
150
|
+
*
|
|
151
|
+
* // Add form submission handlers
|
|
152
|
+
* @uimodel('form')
|
|
153
|
+
* @uihandlers({
|
|
154
|
+
* onSubmit: (event) => {
|
|
155
|
+
* event.preventDefault();
|
|
156
|
+
* console.log('Form submitted');
|
|
157
|
+
* },
|
|
158
|
+
* onReset: (event) => console.log('Form reset')
|
|
159
|
+
* })
|
|
160
|
+
* class ContactForm extends Model {
|
|
161
|
+
* @attribute()
|
|
162
|
+
* email: string;
|
|
163
|
+
* }
|
|
164
|
+
*
|
|
165
|
+
* @mermaid
|
|
166
|
+
* sequenceDiagram
|
|
167
|
+
* participant System
|
|
168
|
+
* participant uihandlers
|
|
169
|
+
* participant Model
|
|
170
|
+
* participant RenderingEngine
|
|
171
|
+
* participant UI
|
|
172
|
+
* System->>uihandlers: apply to Model
|
|
173
|
+
* uihandlers->>Model: adds handler metadata
|
|
174
|
+
* Model->>RenderingEngine: requests rendering with handlers
|
|
175
|
+
* RenderingEngine->>UI: renders element with event handlers attached
|
|
176
|
+
* UI->>Model: triggers handlers on events
|
|
177
|
+
*/
|
|
124
178
|
export declare function uihandlers(props?: Record<string, any>): (original: any) => void;
|
|
179
|
+
/**
|
|
180
|
+
* @description Decorator that creates a layout container with grid specifications
|
|
181
|
+
* @summary Combines UI model functionality with layout grid configuration
|
|
182
|
+
* This decorator creates a UI model that acts as a layout container with specified
|
|
183
|
+
* column and row configurations. It's a convenience decorator that combines
|
|
184
|
+
* @uimodel with layout-specific properties for responsive grid layouts.
|
|
185
|
+
*
|
|
186
|
+
* @param {string} tag The HTML tag to use for the layout container
|
|
187
|
+
* @param {number} [cols=1] Number of columns in the grid layout
|
|
188
|
+
* @param {number|string[]} [rows=1] Number of rows or array of row definitions
|
|
189
|
+
* @param {UIMediaBreakPoints} [breakpoint='m'] Media breakpoint for responsive behavior
|
|
190
|
+
* @return {Function} A class decorator function
|
|
191
|
+
*
|
|
192
|
+
* @function uilayout
|
|
193
|
+
* @category Class Decorators
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* // Create a simple 2-column layout
|
|
197
|
+
* @uilayout('div', 2, 3)
|
|
198
|
+
* class TwoColumnLayout extends Model {
|
|
199
|
+
* @attribute()
|
|
200
|
+
* @uilayoutitem(1, 1)
|
|
201
|
+
* header: string;
|
|
202
|
+
*
|
|
203
|
+
* @attribute()
|
|
204
|
+
* @uilayoutitem(1, 2)
|
|
205
|
+
* leftContent: string;
|
|
206
|
+
*
|
|
207
|
+
* @attribute()
|
|
208
|
+
* @uilayoutitem(2, 2)
|
|
209
|
+
* rightContent: string;
|
|
210
|
+
* }
|
|
211
|
+
*
|
|
212
|
+
* // Create a responsive layout with custom breakpoint
|
|
213
|
+
* @uilayout('section', 3, 2, 'l')
|
|
214
|
+
* class ResponsiveLayout extends Model {
|
|
215
|
+
* @attribute()
|
|
216
|
+
* @uilayoutitem(1, 1)
|
|
217
|
+
* title: string;
|
|
218
|
+
*
|
|
219
|
+
* @attribute()
|
|
220
|
+
* @uilayoutitem(2, 1)
|
|
221
|
+
* subtitle: string;
|
|
222
|
+
* }
|
|
223
|
+
*
|
|
224
|
+
* @mermaid
|
|
225
|
+
* sequenceDiagram
|
|
226
|
+
* participant System
|
|
227
|
+
* participant uilayout
|
|
228
|
+
* participant uimodel
|
|
229
|
+
* participant Model
|
|
230
|
+
* participant RenderingEngine
|
|
231
|
+
* System->>uilayout: apply to Model
|
|
232
|
+
* uilayout->>uimodel: call with layout props
|
|
233
|
+
* uimodel->>Model: adds model metadata with layout config
|
|
234
|
+
* Model->>RenderingEngine: requests rendering as layout container
|
|
235
|
+
* RenderingEngine->>System: renders grid layout with specified dimensions
|
|
236
|
+
*/
|
|
237
|
+
export declare function uilayout(tag: string, cols?: number, rows?: number | string[], breakpoint?: UIMediaBreakPoints): (original: any, propertyKey?: any) => void;
|
package/lib/model/model.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsRXJyb3JEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgQnVpbGRlclJlZ2lzdHJ5LFxuICBDb21wYXJhYmxlLFxuICBDb25zdHJ1Y3RvcixcbiAgSGFzaGFibGUsXG4gIE1vZGVsQXJnLFxuICBNb2RlbEJ1aWxkZXJGdW5jdGlvbixcbiAgTW9kZWxDb25zdHJ1Y3RvcixcbiAgU2VyaWFsaXphYmxlLFxuICBWYWxpZGF0YWJsZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gXCIuL1JlbmRlcmFibGVcIjtcblxuZGVjbGFyZSBtb2R1bGUgXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIE1vZGVsXG4gICAgaW1wbGVtZW50c1xuICAgICAgVmFsaWRhdGFibGUsXG4gICAgICBTZXJpYWxpemFibGUsXG4gICAgICBIYXNoYWJsZSxcbiAgICAgIENvbXBhcmFibGU8TW9kZWw+LFxuICAgICAgUmVuZGVyYWJsZVxuICB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPE1vZGVsPik7XG5cbiAgICBoYXNFcnJvcnMoLi4uZXhjbHVzaW9uczogYW55W10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBoYXNFcnJvcnMoXG4gICAgICBwcmV2aW91c1ZlcnNpb24/OiBNb2RlbCB8IGFueSxcbiAgICAgIC4uLmV4Y2x1c2lvbnM6IGFueVtdXG4gICAgKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdGhpcyBtb2RlbCB3aXRoIGFub3RoZXIgb2JqZWN0IGZvciBlcXVhbGl0eVxuICAgICAqIEBzdW1tYXJ5IENvbXBhcmUgb2JqZWN0IGVxdWFsaXR5IHJlY3Vyc2l2ZWx5LCBjaGVja2luZyBhbGwgcHJvcGVydGllc1xuICAgICAqIEBwYXJhbSB7YW55fSBvYmogLSBPYmplY3QgdG8gY29tcGFyZSB0b1xuICAgICAqIEBwYXJhbSB7Li4uc3RyaW5nfSBleGNlcHRpb25zIC0gUHJvcGVydHkgbmFtZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgY29tcGFyaXNvblxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgb2JqZWN0cyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGVxdWFscyhvYmo6IGFueSwgLi4uZXhjZXB0aW9uczogc3RyaW5nW10pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIHRoZSBtb2RlbCB0byBhIHNlcmlhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgc2VyaWFsaXplZCBtb2RlbCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnRseSBkZWZpbmVkIHtAbGluayBTZXJpYWxpemVyfVxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gU2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWxcbiAgICAgKi9cbiAgICBzZXJpYWxpemUoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbFxuICAgICAqIEBzdW1tYXJ5IE92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgSmF2YVNjcmlwdCdzIGRlZmF1bHQgdG9TdHJpbmcoKSBtZXRob2RcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWxcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICB0b1N0cmluZygpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGEgaGFzaCBjb2RlIGZvciB0aGUgbW9kZWxcbiAgICAgKiBAc3VtbWFyeSBEZWZpbmVzIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3Igb2JqZWN0IGhhc2ggYmFzZWQgb24gSmF2YSdzIHN0cmluZyBoYXNoIGFsZ29yaXRobVxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gSGFzaCBjb2RlIGZvciB0aGUgbW9kZWxcbiAgICAgKi9cbiAgICBoYXNoKCk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHNlcmlhbGl6ZWQgc3RyaW5nIGJhY2sgdG8gYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IERlc2VyaWFsaXplcyBhIE1vZGVsIGZyb20gaXRzIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc2VyaWFsaXplZCBzdHJpbmcgdG8gZGVzZXJpYWxpemVcbiAgICAgKiBAcmV0dXJuIHthbnl9IFRoZSBkZXNlcmlhbGl6ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgZmFpbHMgdG8gcGFyc2UgdGhlIHN0cmluZywgb3IgaWYgaXQgZmFpbHMgdG8gYnVpbGQgdGhlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIGRlc2VyaWFsaXplKHN0cjogc3RyaW5nKTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEl0ZXJhdGVzIGFsbCBjb21tb24gcHJvcGVydGllcyBvZiBvYmogKGlmIGV4aXN0aW5nKSBhbmQgc2VsZiwgYW5kIGNvcGllcyB0aGVtIG9udG8gc2VsZlxuICAgICAqIEBzdW1tYXJ5IFJlcG9wdWxhdGVzIHRoZSBPYmplY3QgcHJvcGVydGllcyB3aXRoIHRoZSBvbmVzIGZyb20gdGhlIG5ldyBvYmplY3RcbiAgICAgKiBAdGVtcGxhdGUgVCAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAgICogQHBhcmFtIHtUfSBzZWxmIC0gVGhlIHRhcmdldCBtb2RlbCBpbnN0YW5jZSB0byB1cGRhdGVcbiAgICAgKiBAcGFyYW0ge1R8UmVjb3JkPHN0cmluZywgYW55Pn0gW29ial0gLSBUaGUgc291cmNlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICAgICAqIEByZXR1cm4ge1R9IFRoZSB1cGRhdGVkIG1vZGVsIGluc3RhbmNlXG4gICAgICovXG4gICAgc3RhdGljIGZyb21PYmplY3Q8VCBleHRlbmRzIE1vZGVsPihcbiAgICAgIHNlbGY6IFQsXG4gICAgICBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IFQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXRlcmF0ZXMgYWxsIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG9iaiAoaWYgZXhpc3RpbmcpIGFuZCBzZWxmLCBhbmQgY29waWVzIHRoZW0gb250byBzZWxmLiBJcyBhd2FyZSBvZiBuZXN0ZWQgTW9kZWwgT2JqZWN0cyBhbmQgcmVidWlsZHMgdGhlbSBhbHNvLiBXaGVuIExpc3QgcHJvcGVydGllcyBhcmUgZGVjb3JhdGVkIHdpdGgge0BsaW5rIGxpc3R9LCB0aGUgbGlzdCBpdGVtcyB3aWxsIGFsc28gYmUgcmVidWlsdFxuICAgICAqIEBzdW1tYXJ5IFJlcG9wdWxhdGVzIHRoZSBpbnN0YW5jZSB3aXRoIHByb3BlcnRpZXMgZnJvbSB0aGUgbmV3IE1vZGVsIE9iamVjdCwgaGFuZGxpbmcgbmVzdGVkIG1vZGVsc1xuICAgICAqIEB0ZW1wbGF0ZSBUIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge1R9IHNlbGYgLSBUaGUgdGFyZ2V0IG1vZGVsIGluc3RhbmNlIHRvIHVwZGF0ZVxuICAgICAqIEBwYXJhbSB7VHxSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb2JqXSAtIFRoZSBzb3VyY2UgbW9kZWwgb3Igb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gICAgICogQHJldHVybiB7VH0gVGhlIHVwZGF0ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbU1vZGVsPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBzZWxmOiBULFxuICAgICAgb2JqPzogVCB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApOiBUO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIGdsb2JhbCBtb2RlbCBidWlsZGVyIGZ1bmN0aW9uIHVzZWQgZm9yIGNyZWF0aW5nIG1vZGVsIGluc3RhbmNlc1xuICAgICAqIEBzdW1tYXJ5IFNldHMgdGhlIEdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259IHVzZWQgZm9yIG1vZGVsIGNvbnN0cnVjdGlvblxuICAgICAqIEBwYXJhbSB7TW9kZWxCdWlsZGVyRnVuY3Rpb259IFtidWlsZGVyXSAtIFRoZSBidWlsZGVyIGZ1bmN0aW9uIHRvIHNldCwgb3IgdW5kZWZpbmVkIHRvIHJlc2V0XG4gICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgKi9cbiAgICBzdGF0aWMgc2V0QnVpbGRlcihidWlsZGVyPzogTW9kZWxCdWlsZGVyRnVuY3Rpb24pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIGdsb2JhbCBtb2RlbCBidWlsZGVyIGZ1bmN0aW9uXG4gICAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBjdXJyZW50IGdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259IHVzZWQgZm9yIG1vZGVsIGNvbnN0cnVjdGlvblxuICAgICAqIEByZXR1cm4ge01vZGVsQnVpbGRlckZ1bmN0aW9ufHVuZGVmaW5lZH0gVGhlIGN1cnJlbnQgYnVpbGRlciBmdW5jdGlvbiBvciB1bmRlZmluZWQgaWYgbm90IHNldFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRCdWlsZGVyKCk6IE1vZGVsQnVpbGRlckZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgY3VycmVudCBtb2RlbCByZWdpc3RyeSBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGN1cnJlbnQge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfSB1c2VkIGZvciBtb2RlbCByZWdpc3RyYXRpb25cbiAgICAgKiBAcmV0dXJuIHtCdWlsZGVyUmVnaXN0cnk8YW55Pn0gTW9kZWxSZWdpc3RyeSBpbnN0YW5jZSwgZGVmYXVsdHMgdG8ge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVnaXN0cnk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2V0cyB0aGUgbW9kZWwgcmVnaXN0cnkgdG8gYmUgdXNlZCBmb3IgbW9kZWwgcmVnaXN0cmF0aW9uIGFuZCByZXRyaWV2YWxcbiAgICAgKiBAc3VtbWFyeSBDb25maWd1cmVzIHRoZSBjdXJyZW50IG1vZGVsIHJlZ2lzdHJ5IGltcGxlbWVudGF0aW9uXG4gICAgICogQHBhcmFtIHtCdWlsZGVyUmVnaXN0cnk8YW55Pn0gbW9kZWxSZWdpc3RyeSAtIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgUmVnaXN0cnkgdG8gdXNlXG4gICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgKi9cbiAgICBzdGF0aWMgc2V0UmVnaXN0cnkobW9kZWxSZWdpc3RyeTogQnVpbGRlclJlZ2lzdHJ5PGFueT4pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhIG1vZGVsIGNvbnN0cnVjdG9yIHdpdGggdGhlIG1vZGVsIHJlZ2lzdHJ5XG4gICAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIG5ldyBNb2RlbHMgZm9yIGxhdGVyIHJldHJpZXZhbCBhbmQgaW5zdGFudGlhdGlvblxuICAgICAqIEB0ZW1wbGF0ZSBUIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3I8VD59IGNvbnN0cnVjdG9yIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yIHRvIHJlZ2lzdGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSAtIE9wdGlvbmFsIG5hbWUgZm9yIHJlZ2lzdHJhdGlvbiwgZGVmYXVsdHMgdG8gY29uc3RydWN0b3IgbmFtZVxuICAgICAqIEByZXR1cm4ge3ZvaWR9XG4gICAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAgICovXG4gICAgc3RhdGljIHJlZ2lzdGVyPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBjb25zdHJ1Y3RvcjogTW9kZWxDb25zdHJ1Y3RvcjxUPixcbiAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICApOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBtb2RlbCBjb25zdHJ1Y3RvciBieSBuYW1lXG4gICAgICogQHN1bW1hcnkgR2V0cyBhIHJlZ2lzdGVyZWQgTW9kZWwge0BsaW5rIE1vZGVsQ29uc3RydWN0b3J9IGZyb20gdGhlIHJlZ2lzdHJ5XG4gICAgICogQHRlbXBsYXRlIFQgLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1vZGVsIHRvIHJldHJpZXZlXG4gICAgICogQHJldHVybiB7TW9kZWxDb25zdHJ1Y3RvcjxUPnx1bmRlZmluZWR9IFRoZSBtb2RlbCBjb25zdHJ1Y3RvciBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAgICovXG4gICAgc3RhdGljIGdldDxUIGV4dGVuZHMgTW9kZWw+KG5hbWU6IHN0cmluZyk6IE1vZGVsQ29uc3RydWN0b3I8VD4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBtb2RlbCBpbnN0YW5jZSBmcm9tIGEgcGxhaW4gb2JqZWN0XG4gICAgICogQHN1bW1hcnkgQnVpbGRzIGEgbW9kZWwgaW5zdGFuY2UgdXNpbmcgdGhlIHJlZ2lzdGVyZWQgY29uc3RydWN0b3JcbiAgICAgKiBAdGVtcGxhdGUgVCAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb2JqXSAtIFRoZSBzb3VyY2Ugb2JqZWN0IHRvIGJ1aWxkIGZyb21cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXp6XSAtIE9wdGlvbmFsIGNsYXNzIG5hbWUgdG8gZmluZCB0aGUgbWF0Y2hpbmcgY29uc3RydWN0b3JcbiAgICAgKiBAcmV0dXJuIHtUfSBUaGUgYnVpbHQgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgY2xhenogaXMgbm90IGZvdW5kLCBvciBvYmogaXMgbm90IGEge0BsaW5rIE1vZGVsfSBtZWFuaW5nIGl0IGhhcyBubyB7QGxpbmsgTW9kZWxLZXlzLkFOQ0hPUn0gcHJvcGVydHlcbiAgICAgKiBAc2VlIE1vZGVsUmVnaXN0cnlcbiAgICAgKi9cbiAgICBzdGF0aWMgYnVpbGQ8VCBleHRlbmRzIE1vZGVsPihvYmo/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjbGF6ej86IHN0cmluZyk6IFQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIG1vZGVsIGluc3RhbmNlXG4gICAgICogQHN1bW1hcnkgR2V0cyB0aGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gYSBtb2RlbFxuICAgICAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge1Z9IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGdldCBtZXRhZGF0YSBmcm9tXG4gICAgICogQHJldHVybiB7YW55fSBUaGUgbW9kZWwncyBtZXRhZGF0YVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRNZXRhZGF0YTxWIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBWKTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhbGwgYXR0cmlidXRlIG5hbWVzIGRlZmluZWQgb24gYSBtb2RlbFxuICAgICAqIEBzdW1tYXJ5IEdldHMgdGhlIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgYSBtb2RlbCBjbGFzcyBvciBpbnN0YW5jZVxuICAgICAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0geyhDb25zdHJ1Y3RvcjxWPnxWKX0gbW9kZWwgLSBUaGUgbW9kZWwgY29uc3RydWN0b3Igb3IgaW5zdGFuY2VcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2YgYXR0cmlidXRlIG5hbWVzXG4gICAgICovXG4gICAgc3RhdGljIGdldEF0dHJpYnV0ZXM8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogQ29uc3RydWN0b3I8Vj4gfCBWKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIG1vZGVsIGluc3RhbmNlcyBmb3IgZXF1YWxpdHlcbiAgICAgKiBAc3VtbWFyeSBTdGF0aWMgbWV0aG9kIHRvIGNoZWNrIGlmIHR3byBtb2RlbCBpbnN0YW5jZXMgYXJlIGVxdWFsXG4gICAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgICAqIEBwYXJhbSB7TX0gb2JqMSAtIEZpcnN0IG1vZGVsIGluc3RhbmNlIHRvIGNvbXBhcmVcbiAgICAgKiBAcGFyYW0ge019IG9iajIgLSBTZWNvbmQgbW9kZWwgaW5zdGFuY2UgdG8gY29tcGFyZVxuICAgICAqIEBwYXJhbSB7YW55W119IGV4Y2VwdGlvbnMgLSBQcm9wZXJ0aWVzIHRvIGV4Y2x1ZGUgZnJvbSBjb21wYXJpc29uXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb2RlbHMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBzdGF0aWMgZXF1YWxzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBvYmoxOiBNLFxuICAgICAgb2JqMjogTSxcbiAgICAgIC4uLmV4Y2VwdGlvbnM6IGFueVtdXG4gICAgKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgYSBtb2RlbCBhbmQgY2hlY2tzIGZvciBlcnJvcnNcbiAgICAgKiBAc3VtbWFyeSBTdGF0aWMgbWV0aG9kIHRvIHZhbGlkYXRlIGEgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzVG9JZ25vcmUgLSBQcm9wZXJ0aWVzIHRvIGV4Y2x1ZGUgZnJvbSB2YWxpZGF0aW9uXG4gICAgICogQHJldHVybiB7TW9kZWxFcnJvckRlZmluaXRpb258dW5kZWZpbmVkfSBFcnJvciBkZWZpbml0aW9uIGlmIHZhbGlkYXRpb24gZmFpbHMsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBzdGF0aWMgaGFzRXJyb3JzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBtb2RlbDogTSxcbiAgICAgIC4uLnByb3BzVG9JZ25vcmU6IHN0cmluZ1tdXG4gICAgKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VyaWFsaXplcyBhIG1vZGVsIGluc3RhbmNlIHRvIGEgc3RyaW5nXG4gICAgICogQHN1bW1hcnkgU3RhdGljIG1ldGhvZCB0byBjb252ZXJ0IGEgbW9kZWwgdG8gaXRzIHNlcmlhbGl6ZWQgZm9ybVxuICAgICAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHNlcmlhbGl6ZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIHNlcmlhbGl6ZTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGhhc2ggY29kZSBmb3IgYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IFN0YXRpYyBtZXRob2QgdG8gY3JlYXRlIGEgaGFzaCBjb2RlIGZvciBhIG1vZGVsXG4gICAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgICAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gaGFzaFxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGhhc2ggY29kZSBmb3IgdGhlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIGhhc2g8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSk6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCdWlsZHMgYSBtZXRhZGF0YSBrZXkgZm9yIHJlZmxlY3Rpb25cbiAgICAgKiBAc3VtbWFyeSBDb25jYXRlbmF0ZXMgdGhlIG1vZGVsIHJlZmxlY3Rpb24gcHJlZml4IHdpdGggdGhlIHByb3ZpZGVkIGtleSBzdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIGtleSBzdHJpbmcgdG8gYXBwZW5kIHRvIHRoZSByZWZsZWN0aW9uIHByZWZpeFxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbXBsZXRlIG1ldGFkYXRhIGtleVxuICAgICAqL1xuICAgIHN0YXRpYyBrZXkoc3RyOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3QgaXMgYSBtb2RlbCBpbnN0YW5jZSBvciBoYXMgbW9kZWwgbWV0YWRhdGFcbiAgICAgKiBAc3VtbWFyeSBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG9iamVjdCBpcyBlaXRoZXIgYW4gaW5zdGFuY2Ugb2YgdGhlIE1vZGVsIGNsYXNzIG9yXG4gICAgICogaGFzIG1vZGVsIG1ldGFkYXRhIGF0dGFjaGVkIHRvIGl0LiBUaGlzIGZ1bmN0aW9uIGlzIGVzc2VudGlhbCBmb3Igc2VyaWFsaXphdGlvbiBhbmRcbiAgICAgKiBkZXNlcmlhbGl6YXRpb24gcHJvY2Vzc2VzLCBhcyBpdCBoZWxwcyBpZGVudGlmeSBtb2RlbCBvYmplY3RzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLlxuICAgICAqIEl0IHNhZmVseSBoYW5kbGVzIHBvdGVudGlhbCBlcnJvcnMgZHVyaW5nIG1ldGFkYXRhIHJldHJpZXZhbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gdGFyZ2V0IC0gVGhlIG9iamVjdCB0byBjaGVja1xuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIG9iamVjdCBpcyBhIG1vZGVsIGluc3RhbmNlIG9yIGhhcyBtb2RlbCBtZXRhZGF0YSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBtb2RlbFxuICAgICAqIGNvbnN0IHVzZXIgPSBuZXcgVXNlcih7IG5hbWU6IFwiSm9oblwiIH0pO1xuICAgICAqIGNvbnN0IGlzVXNlck1vZGVsID0gaXNNb2RlbCh1c2VyKTsgLy8gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gQ2hlY2sgYSBwbGFpbiBvYmplY3RcbiAgICAgKiBjb25zdCBwbGFpbk9iamVjdCA9IHsgbmFtZTogXCJKb2huXCIgfTtcbiAgICAgKiBjb25zdCBpc1BsYWluT2JqZWN0TW9kZWwgPSBpc01vZGVsKHBsYWluT2JqZWN0KTsgLy8gZmFsc2VcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNNb2RlbCh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHByb3BlcnR5IG9mIGEgbW9kZWwgaXMgaXRzZWxmIGEgbW9kZWwgb3IgaGFzIGEgbW9kZWwgdHlwZVxuICAgICAqIEBzdW1tYXJ5IERldGVybWluZXMgd2hldGhlciBhIHNwZWNpZmljIHByb3BlcnR5IG9mIGEgbW9kZWwgaW5zdGFuY2UgaXMgZWl0aGVyIGEgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBvciBoYXMgYSB0eXBlIHRoYXQgaXMgcmVnaXN0ZXJlZCBhcyBhIG1vZGVsLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIG1vZGVsIHNlcmlhbGl6YXRpb25cbiAgICAgKiBhbmQgZGVzZXJpYWxpemF0aW9uIHRvIHByb3Blcmx5IGhhbmRsZSBuZXN0ZWQgbW9kZWxzLlxuICAgICAqIEB0ZW1wbGF0ZSBNIGV4dGVuZHMge0BsaW5rIE1vZGVsfVxuICAgICAqIEBwYXJhbSB7TX0gdGFyZ2V0IC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGNoZWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYnV0ZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIGNoZWNrXG4gICAgICogQHJldHVybiB7Ym9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZH0gUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyBhIG1vZGVsIGluc3RhbmNlLFxuICAgICAqIHRoZSBtb2RlbCBuYW1lIGlmIHRoZSBwcm9wZXJ0eSBoYXMgYSBtb2RlbCB0eXBlLCBvciB1bmRlZmluZWQgaWYgbm90IGEgbW9kZWxcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNQcm9wZXJ0eU1vZGVsPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgICB0YXJnZXQ6IE0sXG4gICAgICBhdHRyaWJ1dGU6IHN0cmluZ1xuICAgICk6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2hlY2tzIGlmIGEgcHJvcGVydHkgb2YgYSBtb2RlbCBpcyBpdHNlbGYgYSBtb2RlbCBvciBoYXMgYSBtb2RlbCB0eXBlXG4gICAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3BlY2lmaWMgcHJvcGVydHkgb2YgYSBtb2RlbCBpbnN0YW5jZSBpcyBlaXRoZXIgYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIG9yIGhhcyBhIHR5cGUgdGhhdCBpcyByZWdpc3RlcmVkIGFzIGEgbW9kZWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgbW9kZWwgc2VyaWFsaXphdGlvblxuICAgICAqIGFuZCBkZXNlcmlhbGl6YXRpb24gdG8gcHJvcGVybHkgaGFuZGxlIG5lc3RlZCBtb2RlbHMuXG4gICAgICogQHRlbXBsYXRlIFIgdGhlIGV4cGVjdGVkIFVJIGNvZGUgYWNjb3JkaW5nIHRvIGVhY2ggcmVuZGVyaW5nIGVuZ2luZVxuICAgICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBvcHRpb25hbCBlbmdpbmUgc3BlY2lmaWMgYXJnc1xuICAgICAqL1xuICAgIHJlbmRlcjxSPiguLi5hcmdzOiBhbnlbXSk6IFI7XG4gIH1cbn1cbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbmRlcmFibGUgfSBmcm9tIFwiLi9SZW5kZXJhYmxlXCI7XG5cbmRlY2xhcmUgbW9kdWxlIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCIge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgZGVjbGFyZSBpbnRlcmZhY2UgTW9kZWwgZXh0ZW5kcyBSZW5kZXJhYmxlIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2hlY2tzIGlmIGEgcHJvcGVydHkgb2YgYSBtb2RlbCBpcyBpdHNlbGYgYSBtb2RlbCBvciBoYXMgYSBtb2RlbCB0eXBlXG4gICAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3BlY2lmaWMgcHJvcGVydHkgb2YgYSBtb2RlbCBpbnN0YW5jZSBpcyBlaXRoZXIgYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIG9yIGhhcyBhIHR5cGUgdGhhdCBpcyByZWdpc3RlcmVkIGFzIGEgbW9kZWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgbW9kZWwgc2VyaWFsaXphdGlvblxuICAgICAqIGFuZCBkZXNlcmlhbGl6YXRpb24gdG8gcHJvcGVybHkgaGFuZGxlIG5lc3RlZCBtb2RlbHMuXG4gICAgICogQHRlbXBsYXRlIFIgdGhlIGV4cGVjdGVkIFVJIGNvZGUgYWNjb3JkaW5nIHRvIGVhY2ggcmVuZGVyaW5nIGVuZ2luZVxuICAgICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBvcHRpb25hbCBlbmdpbmUgc3BlY2lmaWMgYXJnc1xuICAgICAqL1xuICAgIHJlbmRlcjxSPiguLi5hcmdzOiBhbnlbXSk6IFI7XG4gIH1cbn1cbiJdfQ==
|
package/lib/model/model.d.ts
CHANGED
|
@@ -1,213 +1,6 @@
|
|
|
1
|
-
import { ModelErrorDefinition } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import { BuilderRegistry, Comparable, Constructor, Hashable, ModelArg, ModelBuilderFunction, ModelConstructor, Serializable, Validatable } from "@decaf-ts/decorator-validation";
|
|
3
1
|
import { Renderable } from "./Renderable";
|
|
4
2
|
declare module "@decaf-ts/decorator-validation" {
|
|
5
|
-
|
|
6
|
-
protected constructor(arg?: ModelArg<Model>);
|
|
7
|
-
hasErrors(...exclusions: any[]): ModelErrorDefinition | undefined;
|
|
8
|
-
hasErrors(previousVersion?: Model | any, ...exclusions: any[]): ModelErrorDefinition | undefined;
|
|
9
|
-
/**
|
|
10
|
-
* @description Compares this model with another object for equality
|
|
11
|
-
* @summary Compare object equality recursively, checking all properties
|
|
12
|
-
* @param {any} obj - Object to compare to
|
|
13
|
-
* @param {...string} exceptions - Property names to be excluded from the comparison
|
|
14
|
-
* @return {boolean} True if objects are equal, false otherwise
|
|
15
|
-
*/
|
|
16
|
-
equals(obj: any, ...exceptions: string[]): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* @description Converts the model to a serialized string representation
|
|
19
|
-
* @summary Returns the serialized model according to the currently defined {@link Serializer}
|
|
20
|
-
* @return {string} Serialized representation of the model
|
|
21
|
-
*/
|
|
22
|
-
serialize(): string;
|
|
23
|
-
/**
|
|
24
|
-
* @description Provides a string representation of the model
|
|
25
|
-
* @summary Override the implementation for JavaScript's default toString() method
|
|
26
|
-
* @return {string} String representation of the model
|
|
27
|
-
* @override
|
|
28
|
-
*/
|
|
29
|
-
toString(): string;
|
|
30
|
-
/**
|
|
31
|
-
* @description Generates a hash code for the model
|
|
32
|
-
* @summary Defines a default implementation for object hash based on Java's string hash algorithm
|
|
33
|
-
* @return {string} Hash code for the model
|
|
34
|
-
*/
|
|
35
|
-
hash(): string;
|
|
36
|
-
/**
|
|
37
|
-
* @description Converts a serialized string back to a model instance
|
|
38
|
-
* @summary Deserializes a Model from its string representation
|
|
39
|
-
* @param {string} str - The serialized string to deserialize
|
|
40
|
-
* @return {any} The deserialized model instance
|
|
41
|
-
* @throws {Error} If it fails to parse the string, or if it fails to build the model
|
|
42
|
-
*/
|
|
43
|
-
static deserialize(str: string): any;
|
|
44
|
-
/**
|
|
45
|
-
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self
|
|
46
|
-
* @summary Repopulates the Object properties with the ones from the new object
|
|
47
|
-
* @template T - Type extending Model
|
|
48
|
-
* @param {T} self - The target model instance to update
|
|
49
|
-
* @param {T|Record<string, any>} [obj] - The source object to copy properties from
|
|
50
|
-
* @return {T} The updated model instance
|
|
51
|
-
*/
|
|
52
|
-
static fromObject<T extends Model>(self: T, obj?: T | Record<string, any>): T;
|
|
53
|
-
/**
|
|
54
|
-
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self. Is aware of nested Model Objects and rebuilds them also. When List properties are decorated with {@link list}, the list items will also be rebuilt
|
|
55
|
-
* @summary Repopulates the instance with properties from the new Model Object, handling nested models
|
|
56
|
-
* @template T - Type extending Model
|
|
57
|
-
* @param {T} self - The target model instance to update
|
|
58
|
-
* @param {T|Record<string, any>} [obj] - The source model or object to copy properties from
|
|
59
|
-
* @return {T} The updated model instance
|
|
60
|
-
*/
|
|
61
|
-
static fromModel<T extends Model>(self: T, obj?: T | Record<string, any>): T;
|
|
62
|
-
/**
|
|
63
|
-
* @description Configures the global model builder function used for creating model instances
|
|
64
|
-
* @summary Sets the Global {@link ModelBuilderFunction} used for model construction
|
|
65
|
-
* @param {ModelBuilderFunction} [builder] - The builder function to set, or undefined to reset
|
|
66
|
-
* @return {void}
|
|
67
|
-
*/
|
|
68
|
-
static setBuilder(builder?: ModelBuilderFunction): void;
|
|
69
|
-
/**
|
|
70
|
-
* @description Returns the currently configured global model builder function
|
|
71
|
-
* @summary Retrieves the current global {@link ModelBuilderFunction} used for model construction
|
|
72
|
-
* @return {ModelBuilderFunction|undefined} The current builder function or undefined if not set
|
|
73
|
-
*/
|
|
74
|
-
static getBuilder(): ModelBuilderFunction | undefined;
|
|
75
|
-
/**
|
|
76
|
-
* @description Retrieves the current model registry instance
|
|
77
|
-
* @summary Returns the current {@link ModelRegistryManager} used for model registration
|
|
78
|
-
* @return {BuilderRegistry<any>} ModelRegistry instance, defaults to {@link ModelRegistryManager}
|
|
79
|
-
* @private
|
|
80
|
-
*/
|
|
81
|
-
private static getRegistry;
|
|
82
|
-
/**
|
|
83
|
-
* @description Sets the model registry to be used for model registration and retrieval
|
|
84
|
-
* @summary Configures the current model registry implementation
|
|
85
|
-
* @param {BuilderRegistry<any>} modelRegistry - The new implementation of Registry to use
|
|
86
|
-
* @return {void}
|
|
87
|
-
*/
|
|
88
|
-
static setRegistry(modelRegistry: BuilderRegistry<any>): void;
|
|
89
|
-
/**
|
|
90
|
-
* @description Registers a model constructor with the model registry
|
|
91
|
-
* @summary Registers new Models for later retrieval and instantiation
|
|
92
|
-
* @template T - Type extending Model
|
|
93
|
-
* @param {ModelConstructor<T>} constructor - The model constructor to register
|
|
94
|
-
* @param {string} [name] - Optional name for registration, defaults to constructor name
|
|
95
|
-
* @return {void}
|
|
96
|
-
* @see ModelRegistry
|
|
97
|
-
*/
|
|
98
|
-
static register<T extends Model>(constructor: ModelConstructor<T>, name?: string): void;
|
|
99
|
-
/**
|
|
100
|
-
* @description Retrieves a previously registered model constructor by name
|
|
101
|
-
* @summary Gets a registered Model {@link ModelConstructor} from the registry
|
|
102
|
-
* @template T - Type extending Model
|
|
103
|
-
* @param {string} name - The name of the model to retrieve
|
|
104
|
-
* @return {ModelConstructor<T>|undefined} The model constructor or undefined if not found
|
|
105
|
-
* @see ModelRegistry
|
|
106
|
-
*/
|
|
107
|
-
static get<T extends Model>(name: string): ModelConstructor<T> | undefined;
|
|
108
|
-
/**
|
|
109
|
-
* @description Creates a new model instance from a plain object
|
|
110
|
-
* @summary Builds a model instance using the registered constructor
|
|
111
|
-
* @template T - Type extending Model
|
|
112
|
-
* @param {Record<string, any>} [obj] - The source object to build from
|
|
113
|
-
* @param {string} [clazz] - Optional class name to find the matching constructor
|
|
114
|
-
* @return {T} The built model instance
|
|
115
|
-
* @throws {Error} If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
|
|
116
|
-
* @see ModelRegistry
|
|
117
|
-
*/
|
|
118
|
-
static build<T extends Model>(obj?: Record<string, any>, clazz?: string): T;
|
|
119
|
-
/**
|
|
120
|
-
* @description Retrieves metadata associated with a model instance
|
|
121
|
-
* @summary Gets the metadata attached to a model
|
|
122
|
-
* @template V - Type extending Model
|
|
123
|
-
* @param {V} model - The model instance to get metadata from
|
|
124
|
-
* @return {any} The model's metadata
|
|
125
|
-
*/
|
|
126
|
-
static getMetadata<V extends Model>(model: V): any;
|
|
127
|
-
/**
|
|
128
|
-
* @description Retrieves all attribute names defined on a model
|
|
129
|
-
* @summary Gets the list of attributes for a model class or instance
|
|
130
|
-
* @template V - Type extending Model
|
|
131
|
-
* @param {(Constructor<V>|V)} model - The model constructor or instance
|
|
132
|
-
* @return {string[]} Array of attribute names
|
|
133
|
-
*/
|
|
134
|
-
static getAttributes<V extends Model>(model: Constructor<V> | V): string[];
|
|
135
|
-
/**
|
|
136
|
-
* @description Compares two model instances for equality
|
|
137
|
-
* @summary Static method to check if two model instances are equal
|
|
138
|
-
* @template M - Type extending Model
|
|
139
|
-
* @param {M} obj1 - First model instance to compare
|
|
140
|
-
* @param {M} obj2 - Second model instance to compare
|
|
141
|
-
* @param {any[]} exceptions - Properties to exclude from comparison
|
|
142
|
-
* @return {boolean} True if models are equal, false otherwise
|
|
143
|
-
*/
|
|
144
|
-
static equals<M extends Model>(obj1: M, obj2: M, ...exceptions: any[]): boolean;
|
|
145
|
-
/**
|
|
146
|
-
* @description Validates a model and checks for errors
|
|
147
|
-
* @summary Static method to validate a model instance
|
|
148
|
-
* @template M - Type extending Model
|
|
149
|
-
* @param {M} model - The model instance to validate
|
|
150
|
-
* @param {string[]} propsToIgnore - Properties to exclude from validation
|
|
151
|
-
* @return {ModelErrorDefinition|undefined} Error definition if validation fails, undefined otherwise
|
|
152
|
-
*/
|
|
153
|
-
static hasErrors<M extends Model>(model: M, ...propsToIgnore: string[]): ModelErrorDefinition | undefined;
|
|
154
|
-
/**
|
|
155
|
-
* @description Serializes a model instance to a string
|
|
156
|
-
* @summary Static method to convert a model to its serialized form
|
|
157
|
-
* @template M - Type extending Model
|
|
158
|
-
* @param {M} model - The model instance to serialize
|
|
159
|
-
* @return {string} The serialized representation of the model
|
|
160
|
-
*/
|
|
161
|
-
static serialize<M extends Model>(model: M): any;
|
|
162
|
-
/**
|
|
163
|
-
* @description Generates a hash code for a model instance
|
|
164
|
-
* @summary Static method to create a hash code for a model
|
|
165
|
-
* @template M - Type extending Model
|
|
166
|
-
* @param {M} model - The model instance to hash
|
|
167
|
-
* @return {string} The hash code for the model
|
|
168
|
-
*/
|
|
169
|
-
static hash<M extends Model>(model: M): any;
|
|
170
|
-
/**
|
|
171
|
-
* @description Builds a metadata key for reflection
|
|
172
|
-
* @summary Concatenates the model reflection prefix with the provided key string
|
|
173
|
-
* @param {string} str - The key string to append to the reflection prefix
|
|
174
|
-
* @return {string} The complete metadata key
|
|
175
|
-
*/
|
|
176
|
-
static key(str: string): string;
|
|
177
|
-
/**
|
|
178
|
-
* @description Determines if an object is a model instance or has model metadata
|
|
179
|
-
* @summary Checks whether a given object is either an instance of the Model class or
|
|
180
|
-
* has model metadata attached to it. This function is essential for serialization and
|
|
181
|
-
* deserialization processes, as it helps identify model objects that need special handling.
|
|
182
|
-
* It safely handles potential errors during metadata retrieval.
|
|
183
|
-
*
|
|
184
|
-
* @param {Record<string, any>} target - The object to check
|
|
185
|
-
* @return {boolean} True if the object is a model instance or has model metadata, false otherwise
|
|
186
|
-
*
|
|
187
|
-
* @example
|
|
188
|
-
* ```typescript
|
|
189
|
-
* // Check if an object is a model
|
|
190
|
-
* const user = new User({ name: "John" });
|
|
191
|
-
* const isUserModel = isModel(user); // true
|
|
192
|
-
*
|
|
193
|
-
* // Check a plain object
|
|
194
|
-
* const plainObject = { name: "John" };
|
|
195
|
-
* const isPlainObjectModel = isModel(plainObject); // false
|
|
196
|
-
* ```
|
|
197
|
-
*/
|
|
198
|
-
static isModel(target: Record<string, any>): boolean;
|
|
199
|
-
/**
|
|
200
|
-
* @description Checks if a property of a model is itself a model or has a model type
|
|
201
|
-
* @summary Determines whether a specific property of a model instance is either a model instance
|
|
202
|
-
* or has a type that is registered as a model. This function is used for model serialization
|
|
203
|
-
* and deserialization to properly handle nested models.
|
|
204
|
-
* @template M extends {@link Model}
|
|
205
|
-
* @param {M} target - The model instance to check
|
|
206
|
-
* @param {string} attribute - The property name to check
|
|
207
|
-
* @return {boolean | string | undefined} Returns true if the property is a model instance,
|
|
208
|
-
* the model name if the property has a model type, or undefined if not a model
|
|
209
|
-
*/
|
|
210
|
-
static isPropertyModel<M extends Model>(target: M, attribute: string): boolean | string | undefined;
|
|
3
|
+
interface Model extends Renderable {
|
|
211
4
|
/**
|
|
212
5
|
* @description Checks if a property of a model is itself a model or has a model type
|
|
213
6
|
* @summary Determines whether a specific property of a model instance is either a model instance
|