site-library/scripts/tools-output.json
2025-03-08 21:04:49 +01:00

63 lines
23 KiB
JSON

[
{
"path": "../src/model/registry.ts",
"content": "aW1wb3J0IHsgQ29tcG9uZW50Q29uZmlnU2NoZW1hLCBJQ29tcG9uZW50Q29uZmlnLCBJQ29tcG9uZW50Tm9kZSB9IGZyb20gJy4uLy4uL3BvbHltZWNoLW1vbm8vcGFja2FnZXMvY29tbW9ucy9zcmMvY29tcG9uZW50LmpzJztcblxuLyoqXG4gKiBIYW5kbGVyIGludGVyZmFjZSBmb3IgdHJhbnNmb3JtaW5nIGNvbXBvbmVudCBkYXRhIHRvIHBsYXRmb3JtLXNwZWNpZmljIGZvcm1hdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGF0YUhhbmRsZXI8VCBleHRlbmRzIHVua25vd24+IHtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBjb21wb25lbnQgZGF0YSB0byBwbGF0Zm9ybS1zcGVjaWZpYyBmb3JtYXRcbiAgICogQHBhcmFtIG5vZGUgLSBDb21wb25lbnQgbm9kZVxuICAgKiBAcmV0dXJucyBQbGF0Zm9ybS1zcGVjaWZpYyBkYXRhIHN0cnVjdHVyZVxuICAgKi9cbiAgdHJhbnNmb3JtKG5vZGU6IElDb21wb25lbnROb2RlKTogVDtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGhhbmRsZXIgY2FuIHByb2Nlc3MgdGhlIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gbm9kZSAtIENvbXBvbmVudCBub2RlXG4gICAqIEByZXR1cm5zIFRydWUgaWYgaGFuZGxlciBjYW4gcHJvY2VzcyB0aGUgY29tcG9uZW50XG4gICAqL1xuICBjYW5IYW5kbGUobm9kZTogSUNvbXBvbmVudE5vZGUpOiBib29sZWFuO1xufVxuXG4vLyBJbXBvcnQgaGFuZGxlcnMgZnJvbSByZXNwZWN0aXZlIGZpbGVzXG5pbXBvcnQgeyBSU1NIYW5kbGVyLCBSU1NJdGVtIH0gZnJvbSAnLi9yc3MuanMnO1xuaW1wb3J0IHsgTWVyY2hhbnRIYW5kbGVyLCBNZXJjaGFudEl0ZW0gfSBmcm9tICcuL21lcmNoYW50LmpzJztcbmltcG9ydCB7IEpTT05MREhhbmRsZXIsIEpTT05MRFByb2R1Y3QgfSBmcm9tICcuL2pzb24tbGQuanMnO1xuXG4vLyBFeHBvcnQgdHlwZXMgZm9yIHVzZSBpbiBvdGhlciBmaWxlc1xuZXhwb3J0IHR5cGUgeyBSU1NJdGVtLCBNZXJjaGFudEl0ZW0sIEpTT05MRFByb2R1Y3QgfTtcblxuLyoqXG4gKiBSZWdpc3RyeSBmb3IgZGF0YSBoYW5kbGVyc1xuICovXG5leHBvcnQgY2xhc3MgSGFuZGxlclJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBIYW5kbGVyUmVnaXN0cnk7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiBNYXA8c3RyaW5nLCBJRGF0YUhhbmRsZXI8dW5rbm93bj4+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKlxuICAgKiBHZXQgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBIYW5kbGVyUmVnaXN0cnkge1xuICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEhhbmRsZXJSZWdpc3RyeSgpO1xuICAgICAgdGhpcy5faW5zdGFuY2UucmVnaXN0ZXJEZWZhdWx0SGFuZGxlcnMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbmV3IGhhbmRsZXJcbiAgICogQHBhcmFtIHR5cGUgLSBUeXBlIG9mIGhhbmRsZXJcbiAgICogQHBhcmFtIGhhbmRsZXIgLSBIYW5kbGVyIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXI8VCBleHRlbmRzIHVua25vd24+KHR5cGU6IHN0cmluZywgaGFuZGxlcjogSURhdGFIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlcnMuc2V0KHR5cGUsIGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGhhbmRsZXIgYnkgdHlwZVxuICAgKiBAcGFyYW0gdHlwZSAtIFR5cGUgb2YgaGFuZGxlclxuICAgKiBAcmV0dXJucyBIYW5kbGVyIGluc3RhbmNlIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgcHVibGljIGdldDxUIGV4dGVuZHMgdW5rbm93bj4odHlwZTogc3RyaW5nKTogSURhdGFIYW5kbGVyPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faGFuZGxlcnMuZ2V0KHR5cGUpIGFzIElEYXRhSGFuZGxlcjxUPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGFwcHJvcHJpYXRlIGhhbmRsZXJzIGZvciBhIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gbm9kZSAtIENvbXBvbmVudCBub2RlXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGhhbmRsZXJzIHRoYXQgY2FuIHByb2Nlc3MgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIGZpbmRIYW5kbGVycyhub2RlOiBJQ29tcG9uZW50Tm9kZSk6IElEYXRhSGFuZGxlcjx1bmtub3duPltdIHtcbiAgICBjb25zdCBoYW5kbGVycyA9IFtdO1xuICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLl9oYW5kbGVycy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGhhbmRsZXIuY2FuSGFuZGxlKG5vZGUpKSB7XG4gICAgICAgIGhhbmRsZXJzLnB1c2goaGFuZGxlcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gY29tcG9uZW50IGRhdGEgdXNpbmcgdGhlIHNwZWNpZmllZCBoYW5kbGVyIHR5cGVcbiAgICogQHBhcmFtIHR5cGUgLSBIYW5kbGVyIHR5cGVcbiAgICogQHBhcmFtIG5vZGUgLSBDb21wb25lbnQgbm9kZVxuICAgKiBAcmV0dXJucyBUcmFuc2Zvcm1lZCBkYXRhIG9yIG51bGwgaWYgbm8gaGFuZGxlciBmb3VuZCBvciBjYW5ub3QgaGFuZGxlXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtPFQgZXh0ZW5kcyB1bmtub3duPih0eXBlOiBzdHJpbmcsIG5vZGU6IElDb21wb25lbnROb2RlKTogVCB8IG51bGwge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmdldDxUPih0eXBlKTtcbiAgICBpZiAoIWhhbmRsZXIgfHwgIWhhbmRsZXIuY2FuSGFuZGxlKG5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXIudHJhbnNmb3JtKG5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBjb21wb25lbnQgZGF0YSB1c2luZyBhbGwgYXBwbGljYWJsZSBoYW5kbGVyc1xuICAgKiBAcGFyYW0gbm9kZSAtIENvbXBvbmVudCBub2RlXG4gICAqIEByZXR1cm5zIE1hcCBvZiB0cmFuc2Zvcm1lZCBkYXRhIGJ5IGhhbmRsZXIgdHlwZVxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybUFsbChub2RlOiBJQ29tcG9uZW50Tm9kZSk6IE1hcDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgZm9yIChjb25zdCBbdHlwZSwgaGFuZGxlcl0gb2YgdGhpcy5faGFuZGxlcnMuZW50cmllcygpKSB7XG4gICAgICBpZiAoaGFuZGxlci5jYW5IYW5kbGUobm9kZSkpIHtcbiAgICAgICAgcmVzdWx0LnNldCh0eXBlLCBoYW5kbGVyLnRyYW5zZm9ybShub2RlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgZGVmYXVsdCBoYW5kbGVyc1xuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlckRlZmF1bHRIYW5kbGVycygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyKCdyc3MnLCBuZXcgUlNTSGFuZGxlcigpKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCdtZXJjaGFudCcsIG5ldyBNZXJjaGFudEhhbmRsZXIoKSk7XG4gICAgdGhpcy5yZWdpc3RlcignanNvbi1sZCcsIG5ldyBKU09OTERIYW5kbGVyKCkpO1xuICB9XG59XG5cbi8vIEV4cG9ydCBhIGRlZmF1bHQgaW5zdGFuY2Vcbmv4cG9ydCBjb25zdCByZWdpc3RyeSA9IEhhbmRsZXJSZWdpc3RyeS5pbnN0YW5jZTtcbiJcbiAgfSxcbiAge1xuICAgIFwicGF0aFwiOiBcIi4uL3NyYy9tb2RlbC9yc3MudHNcIixcbiAgICBcImNvbnRlbnRcIjogXCJpbXBvcnQgeyBJRGF0YUhhbmRsZXIgfSBmcm9tICcuL3JlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IElDb21wb25lbnROb2RlIH0gZnJvbSAnLi4vLi4vcG9seW1lY2gtbW9uby9wYWNrYWdlcy9jb21tb25zL3NyYy9jb21wb25lbnQuanMnO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgUlNTIGl0ZW0gc3RydWN0dXJlIGJhc2VkIG9uIEBhc3Ryb2pzL3Jzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJTU0l0ZW0ge1xuICAvKiogVGhlIHRpdGxlIG9mIHRoZSBpdGVtICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIFxuICAvKiogVGhlIGxpbmsgb2YgdGhlIGl0ZW0gKi9cbiAgbGluazogc3RyaW5nO1xuICBcbiAgLyoqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBpdGVtICovXG4gIGd1aWQ/OiBzdHJpbmc7XG4gIFxuICAvKiogVGhlIHB1YmxpY2F0aW9uIGRhdGUgb2YgdGhlIGl0ZW0gKi9cbiAgcHViRGF0ZT86IERhdGU7XG4gIFxuICAvKiogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBpdGVtICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBcbiAgLyoqIFRoZSBjYXRlZ29yaWVzIHRoZSBpdGVtIGJlbG9uZ3MgdG8gKi9cbiAgY2F0ZWdvcmllcz86IHN0cmluZ1tdO1xuICBcbiAgLyoqIEFuIGVuY2xvc3VyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0gKGZvciBwb2RjYXN0cykgKi9cbiAgZW5jbG9zdXJlPzoge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGxlbmd0aDogbnVtYmVyO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfTtcbiAgXG4gIC8qKiBDdXN0b20gZmllbGRzIGZvciB0aGUgaXRlbSAqL1xuICBjdXN0b21EYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZT47XG4gIFxuICAvKiogSW1hZ2UgcmVsYXRlZCB0byB0aGUgaXRlbSAqL1xuICBpbWFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBIYW5kbGVyIGZvciB0cmFuc2Zvcm1pbmcgY29tcG9uZW50IGRhdGEgdG8gUlNTIGZlZWQgaXRlbXNcbiAqL1xuZXhwb3J0IGNsYXNzIFJTU0hhbmRsZXIgaW1wbGVtZW50cyBJRGF0YUhhbmRsZXI8UlNTSXRlbT4ge1xuICAvKipcbiAgICogVHJhbnNmb3JtIGNvbXBvbmVudCBkYXRhIHRvIFJTUyBmZWVkIGl0ZW1cbiAgICogQHBhcmFtIG5vZGUgLSBDb21wb25lbnQgbm9kZVxuICAgKiBAcmV0dXJucyBSU1MgZmVlZCBpdGVtXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtKG5vZGU6IElDb21wb25lbnROb2RlKTogUlNTSXRlbSB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IG5vZGU7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiBjb25maWcubmFtZSxcbiAgICAgIGxpbms6IGAvaXRlbXMvJHtjb25maWcuc2x1Z31gLFxuICAgICAgZ3VpZDogY29uZmlnLmNvZGUsXG4gICAgICBkZXNjcmlwdGlvbjogY29uZmlnLm1ldGFfa2V5d29yZHMgfHwgY29uZmlnLmtleXdvcmRzLFxuICAgICAgY2F0ZWdvcmllczogY29uZmlnLmNhdGVnb3J5ID8gW2NvbmZpZy5jYXRlZ29yeV0gOiB1bmRlZmluZWQsXG4gICAgICBpbWFnZTogY29uZmlnLmltYWdlPy51cmwsXG4gICAgICBjdXN0b21EYXRhOiB7XG4gICAgICAgIHByaWNlOiBjb25maWcucHJpY2UgfHwgMCxcbiAgICAgICAgY29kZTogY29uZmlnLmNvZGUsXG4gICAgICAgIHNsdWc6IGNvbmZpZy5zbHVnLFxuICAgICAgICB2ZXJzaW9uOiBjb25maWcudmVyc2lvbiB8fCAnJyxcbiAgICAgICAgc3RhdHVzOiBjb25maWcuc3RhdHVzIHx8ICcnXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgaGFuZGxlciBjYW4gcHJvY2VzcyB0aGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSBub2RlIC0gQ29tcG9uZW50IG5vZGVcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgaGFuZGxlciBjYW4gcHJvY2VzcyB0aGUgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgY2FuSGFuZGxlKG5vZGU6IElDb21wb25lbnROb2RlKTogYm9vbGVhbiB7XG4gICAgLy8gQWxsIGNvbXBvbmVudHMgdGhhdCBoYXZlIHJlcXVpcmVkIGZpZWxkcyBjYW4gYmUgdHJhbnNmb3JtZWQgdG8gUlNTXG4gICAgY29uc3QgeyBjb25maWcgfSA9IG5vZGU7XG4gICAgcmV0dXJuICEhKGNvbmZpZy5uYW1lICYmIGNvbmZpZy5zbHVnICYmIGNvbmZpZy5jb2RlKTtcbiAgfVxufVxuXCJcbiAgfSxcbiAge1xuICAgIFwicGF0aFwiOiBcIi4uL3NyYy9tb2RlbC9tZXJjaGFudC50c1wiLFxuICAgIFwiY29udGVudFwiOiBcImltcG9ydCB7IElEYXRhSGFuZGxlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgSUNvbXBvbmVudE5vZGUgfSBmcm9tICcuLi8uLi9wb2x5bWVjaC1tb25vL3BhY2thZ2VzL2NvbW1vbnMvc3JjL2NvbXBvbmVudC5qcyc7XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBHb29nbGUgTWVyY2hhbnQgQ2VudGVyIFByb2R1Y3QgZGF0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lcmNoYW50SXRlbSB7XG4gIC8qKiBQcm9kdWN0IElEICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqIFRpdGxlIG9mIHRoZSBwcm9kdWN0ICovXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqIFByb2R1Y3QgZGVzY3JpcHRpb24gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKiogUHJvZHVjdCBMaW5rICovXG4gIGxpbms6IHN0cmluZztcblxuICAvKiogUHJvZHVjdCBpbWFnZSBVUkwgKi9cbiAgaW1hZ2VfbGluaz86IHN0cmluZztcblxuICAvKiogQXZhaWxhYmlsaXR5IHN0YXR1cyAqL1xuICBhdmFpbGFiaWxpdHk6IFwiaW5fc3RvY2tcIiB8IFwib3V0X29mX3N0b2NrXCIgfCBcInByZW9yZGVyXCIgfCBcImJhY2tvcmRlclwiO1xuXG4gIC8qKiBQcmljZSBpbmNsdWRpbmcgY3VycmVuY3kgY29kZSAqL1xuICBwcmljZTogc3RyaW5nO1xuXG4gIC8qKiBCcmFuZCBuYW1lICovXG4gIGJyYW5kOiBzdHJpbmc7XG5cbiAgLyoqIEdUTiBvciB1bmlxdWUgcHJvZHVjdCBjb2RlICovXG4gIGd0aW4/OiBzdHJpbmc7XG5cbiAgLyoqIENvbmRpdGlvbiBvZiB0aGUgcHJvZHVjdCAqL1xuICBjb25kaXRpb246IFwibmV3XCIgfCBcInVzZWRcIiB8IFwicmVmdXJiaXNoZWRcIjtcblxuICAvKiogUHJvZHVjdCBjYXRlZ29yeSAqL1xuICBnb29nbGVfcHJvZHVjdF9jYXRlZ29yeT86IHN0cmluZztcblxuICAvKiogUHJvZHVjdCB0eXBlICovXG4gIHByb2R1Y3RfdHlwZT86IHN0cmluZztcblxuICAvKiogTVBOIChNYW51ZmFjdHVyZXIgUGFydCBOdW1iZXIpICovXG4gIG1wbj86IHN0cmluZztcblxuICAvKiogQWRkaXRpb25hbCBpbWFnZSBsaW5rcyAqL1xuICBhZGRpdGlvbmFsX2ltYWdlX2xpbms/OiBzdHJpbmdbXTtcblxuICAvKiogU2FsZSBwcmljZSBpZiBhcHBsaWNhYmxlICovXG4gIHNhbGVfcHJpY2U/OiBzdHJpbmc7XG5cbiAgLyoqIFNhbGUgcHJpY2UgZWZmZWN0aXZlIGRhdGUgcmFuZ2UgKi9cbiAgc2FsZV9wcmljZV9lZmZlY3RpdmVfZGF0ZT86IHN0cmluZztcblxuICAvKiogSXRlbSBncm91cCBJRCBmb3IgdmFyaWFudHMgKi9cbiAgaXRlbV9ncm91cF9pZD86IHN0cmluZztcblxuICAvKiogQ29sb3Igb2YgdGhlIHByb2R1Y3QgKi9cbiAgY29sb3I/OiBzdHJpbmc7XG5cbiAgLyoqIFNpemUgb2YgdGhlIHByb2R1Y3QgKi9cbiAgc2l6ZT86IHN0cmluZztcblxuICAvKiogTWF0ZXJpYWwgb2YgdGhlIHByb2R1Y3QgKi9cbiAgbWF0ZXJpYWw/OiBzdHJpbmc7XG5cbiAgLyoqIFBhdHRlcm4gb2YgdGhlIHByb2R1Y3QgKi9cbiAgcGF0dGVybj86IHN0cmluZztcblxuICAvKiogU2hpcHBpbmcgaW5mb3JtYXRpb24gKi9cbiAgc2hpcHBpbmc/OiB7XG4gICAgY291bnRyeTogc3RyaW5nO1xuICAgIHJlZ2lvbj86IHN0cmluZztcbiAgICBzZXJ2aWNlPzogc3RyaW5nO1xuICAgIHByaWNlOiBzdHJpbmc7XG4gIH1bXTtcbn1cblxuLyoqXG4gKiBIYW5kbGVyIGZvciB0cmFuc2Zvcm1pbmcgY29tcG9uZW50IGRhdGEgdG8gR29vZ2xlIE1lcmNoYW50IENlbnRlciBmb3JtYXRcbiAqL1xuZXhwb3J0IGNsYXNzIE1lcmNoYW50SGFuZGxlciBpbXBsZW1lbnRzIElEYXRhSGFuZGxlcjxNZXJjaGFudEl0ZW0+IHtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBjb21wb25lbnQgZGF0YSB0byBHb29nbGUgTWVyY2hhbnQgQ2VudGVyIGZvcm1hdFxuICAgKiBAcGFyYW0gbm9kZSAtIENvbXBvbmVudCBub2RlXG4gICAqIEByZXR1cm5zIE1lcmNoYW50IENlbnRlciBmb3JtYXR0ZWQgZGF0YVxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybShub2RlOiBJQ29tcG9uZW50Tm9kZSk6IE1lcmNoYW50SXRlbSB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IG5vZGU7XG4gICAgY29uc3QgYmFzZVVybCA9ICdodHRwczovL2V4YW1wbGUuY29tJzsgLy8gUmVwbGFjZSB3aXRoIGFjdHVhbCBiYXNlIFVSTCBpbiBwcm9kdWN0aW9uXG5cbiAgICAvLyBHYXRoZXIgYWRkaXRpb25hbCBpbWFnZXMgaWYgYXZhaWxhYmxlXG4gICAgY29uc3QgYWRkaXRpb25hbEltYWdlcyA9IFtdO1xuICAgIGlmIChjb25maWcuYXNzZXRzPy5nYWxsZXJ5Py5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGNvbmZpZy5hc3NldHMuZ2FsbGVyeSkge1xuICAgICAgICBpZiAoaW1hZ2UudXJsKSB7XG4gICAgICAgICAgYWRkaXRpb25hbEltYWdlcy5wdXNoKGltYWdlLnVybCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgYXZhaWxhYmlsaXR5IGJhc2VkIG9uIHN0YXR1c1xuICAgIGxldCBhdmFpbGFiaWxpdHk6IFwiaW5fc3RvY2tcIiB8IFwib3V0X29mX3N0b2NrXCIgfCBcInByZW9yZGVyXCIgfCBcImJhY2tvcmRlclwiID0gXCJpbl9zdG9ja1wiO1xuICAgIGlmIChjb25maWcuc3RhdHVzKSB7XG4gICAgICBpZiAoY29uZmlnLnN0YXR1cy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdvdXQgb2Ygc3RvY2snKSkge1xuICAgICAgICBhdmFpbGFiaWxpdHkgPSBcIm91dF9vZl9zdG9ja1wiO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3ByZW9yZGVyJykpIHtcbiAgICAgICAgYXZhaWxhYmlsaXR5ID0gXCJwcmVvcmRlclwiO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2JhY2tvcmRlcicpKSB7XG4gICAgICAgIGF2YWlsYWJpbGl0eSA9IFwiYmFja29yZGVyXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjb25maWcuY29kZSxcbiAgICAgIHRpdGxlOiBjb25maWcubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBjb25maWcubWV0YV9rZXl3b3JkcyB8fCBjb25maWcua2V5d29yZHMgfHwgY29uZmlnLm5hbWUsXG4gICAgICBsaW5rOiBgJHtiYXNlVXJsfS9pdGVtcy8ke2NvbmZpZy5zbHVnfWAsXG4gICAgICBpbWFnZV9saW5rOiBjb25maWcuaW1hZ2U/LnVybCxcbiAgICAgIGF2YWlsYWJpbGl0eSxcbiAgICAgIHByaWNlOiBgJHtjb25maWcucHJpY2UgfHwgMH0gVVNEYCxcbiAgICAgIGJyYW5kOiBcIkJyYW5kIE5hbWVcIiwgLy8gUmVwbGFjZSB3aXRoIGFjdHVhbCBicmFuZCBuYW1lXG4gICAgICBndGluOiBjb25maWcuY29kZSxcbiAgICAgIGNvbmRpdGlvbjogXCJuZXdcIixcbiAgICAgIGdvb2dsZV9wcm9kdWN0X2NhdGVnb3J5OiBcIkhhcmR3YXJlID4gVG9vbHNcIiwgLy8gUmVwbGFjZSB3aXRoIGFjdHVhbCBjYXRlZ29yeVxuICAgICAgcHJvZHVjdF90eXBlOiBjb25maWcuY2F0ZWdvcnkgfHwgXCJIYXJkd2FyZVwiLFxuICAgICAgbXBuOiBjb25maWcuY29kZSxcbiAgICAgIGFkZGl0aW9uYWxfaW1hZ2VfbGluazogYWRkaXRpb25hbEltYWdlcy5sZW5ndGggPiAwID8gYWRkaXRpb25hbEltYWdlcyA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFdlIGNhbiBhZGQgbW9yZSBmaWVsZHMgaWYgdGhleSBhcmUgYXZhaWxhYmxlIGluIHRoZSBjb21wb25lbnQgZGF0YVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGhhbmRsZXIgY2FuIHByb2Nlc3MgdGhlIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gbm9kZSAtIENvbXBvbmVudCBub2RlXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGhhbmRsZXIgY2FuIHByb2Nlc3MgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIGNhbkhhbmRsZShub2RlOiBJQ29tcG9uZW50Tm9kZSk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGZvciByZXF1aXJlZCBmaWVsZHMgZm9yIEdvb2dsZSBNZXJjaGFudCBDZW50ZXJcbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gbm9kZTtcbiAgICByZXR1cm4gISEoY29uZmlnLm5hbWUgJiYgY29uZmlnLnNsdWcgJiYgY29uZmlnLmNvZGUpO1xuICB9XG59XG5cIlxuICB9LFxuICB7XG4gICAgXCJwYXRoXCI6IFwiLi4vc3JjL21vZGVsL2pzb24tbGQudHNcIixcbiAgICBcImNvbnRlbnRcIjogXCJpbXBvcnQgeyBJRGF0YUhhbmRsZXIgfSBmcm9tICcuL3JlZ2lzdHJ5LmpzJztcbmltcG9ydCB7IElDb21wb25lbnROb2RlIH0gZnJvbSAnLi4vLi4vcG9seW1lY2gtbW9uby9wYWNrYWdlcy9jb21tb25zL3NyYy9jb21wb25lbnQuanMnO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgSlNPTi1MRCBQcm9kdWN0IHNjaGVtYSBiYXNlZCBvbiBzY2hlbWEub3JnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSlNPTkxEUHJvZHVjdCB7XG4gIC8qKiBTcGVjaWZpZXMgdGhlIHR5cGUgb2Ygb2JqZWN0IChcIlByb2R1Y3RcIiBmb3IgcHJvZHVjdCBzY2hlbWEgKi9cbiAgXCJAY29udGV4dFwiOiBcImh0dHBzOi8vc2NoZW1hLm9yZ1wiO1xuICBcbiAgLyoqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiBvYmplY3QgKFwiUHJvZHVjdFwiIGZvciBwcm9kdWN0IHNjaGVtYSAqL1xuICBcIkB0eXBlXCI6IFwiUHJvZHVjdFwiO1xuICBcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBwcm9kdWN0ICovXG4gIG5hbWU6IHN0cmluZztcbiAgXG4gIC8qKiBUaGUgaW1hZ2Ugb2YgdGhlIHByb2R1Y3QgKi9cbiAgaW1hZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgXG4gIC8qKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHByb2R1Y3QgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIFxuICAvKiogVGhlIGJyYW5kIG9mIHRoZSBwcm9kdWN0ICovXG4gIGJyYW5kPzoge1xuICAgIFwiQHR5cGVcIjogXCJCcmFuZFwiO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfTtcbiAgXG4gIC8qKiBUaGUgb2ZmZXIgb2YgdGhlIHByb2R1Y3QgKi9cbiAgb2ZmZXJzPzoge1xuICAgIFwiQHR5cGVcIjogXCJPZmZlclwiO1xuICAgIHByaWNlOiBudW1iZXI7XG4gICAgcHJpY2VDdXJyZW5jeTogc3RyaW5nO1xuICAgIGl0ZW1Db25kaXRpb24/OiBzdHJpbmc7XG4gICAgYXZhaWxhYmlsaXR5Pzogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHByaWNlVmFsaWRVbnRpbD86IHN0cmluZztcbiAgICBza3U/OiBzdHJpbmc7XG4gIH07XG4gIFxuICAvKiogUHJvZHVjdCBJRCAqL1xuICBwcm9kdWN0SUQ/OiBzdHJpbmc7XG4gIFxuICAvKiogU2t1ICovXG4gIHNrdT86IHN0cmluZztcbiAgXG4gIC8qKiBNUE4gKE1hbnVmYWN0dXJlciBQYXJ0IE51bWJlcikgKi9cbiAgbXBuPzogc3RyaW5nO1xuICBcbiAgLyoqIFByb2R1Y3QgY2F0ZWdvcnkgKi9cbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIFxuICAvKiogQWdncmVnYXRlIHJhdGluZ3MgKi9cbiAgYWdncmVnYXRlUmF0aW5nPzoge1xuICAgIFwiQHR5cGVcIjogXCJBZ2dyZWdhdGVSYXRpbmdcIjtcbiAgICByYXRpbmdWYWx1ZT86IG51bWJlcjtcbiAgICByYXRpbmdDb3VudD86IG51bWJlcjtcbiAgICByZXZpZXdDb3VudD86IG51bWJlcjtcbiAgICBiZXN0UmF0aW5nPzogbnVtYmVyO1xuICB9O1xuICBcbiAgLyoqIFByb2R1Y3QgdmFyaWFudHMgKi9cbiAgdmFyaWFudHM/OiBhbnlbXTtcbiAgXG4gIC8qKiBQcm9kdWN0IHdlaWdodCAqL1xuICB3ZWlnaHQ/OiB7XG4gICAgXCJAdHlwZVwiOiBcIlF1YW50aXRhdGl2ZVZhbHVlXCI7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICB1bml0VGV4dDogc3RyaW5nO1xuICB9O1xuICBcbiAgLyoqIEhlaWdodCAqL1xuICBoZWlnaHQ/OiB7XG4gICAgXCJAdHlwZVwiOiBcIlF1YW50aXRhdGl2ZVZhbHVlXCI7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICB1bml0VGV4dDogc3RyaW5nO1xuICB9O1xuICBcbiAgLyoqIFdpZHRoICovXG4gIHdpZHRoPzoge1xuICAgIFwiQHR5cGVcIjogXCJRdWFudGl0YXRpdmVWYWx1ZVwiO1xuICAgIHZhbHVlOiBudW1iZXI7XG4gICAgdW5pdFRleHQ6IHN0cmluZztcbiAgfTtcbiAgXG4gIC8qKiBEZXB0aCAqL1xuICBkZXB0aD86IHtcbiAgICBcIkB0eXBlXCI6IFwiUXVhbnRpdGF0aXZlVmFsdWVcIjtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICAgIHVuaXRUZXh0OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogSGFuZGxlciBmb3IgdHJhbnNmb3JtaW5nIGNvbXBvbmVudCBkYXRhIHRvIEpTT04tTEQgUHJvZHVjdCBzY2hlbWFcbiAqL1xuZXhwb3J0IGNsYXNzIEpTT05MREhhbmRsZXIgaW1wbGVtZW50cyBJRGF0YUhhbmRsZXI8SlNPTkxEUHJvZHVjdD4ge1xuICAvKipcbiAgICogVHJhbnNmb3JtIGNvbXBvbmVudCBkYXRhIHRvIEpTT04tTEQgcHJvZHVjdCBzY2hlbWFcbiAgICogQHBhcmFtIG5vZGUgLSBDb21wb25lbnQgbm9kZVxuICAgKiBAcmV0dXJucyBKU09OLUxEIGZvcm1hdHRlZCBwcm9kdWN0IGRhdGFcbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0obm9kZTogSUNvbXBvbmVudE5vZGUpOiBKU09OTERQcm9kdWN0IHtcbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gbm9kZTtcbiAgICBjb25zdCBiYXNlVXJsID0gJ2h0dHBzOi8vZXhhbXBsZS5jb20nOyAvLyBSZXBsYWNlIHdpdGggYWN0dWFsIGJhc2UgVVJMIGluIHByb2R1Y3Rpb25cbiAgICBcbiAgICAvLyBDb2xsZWN0IGltYWdlc1xuICAgIGNvbnN0IGltYWdlcyA9IFtdO1xuICAgIGlmIChjb25maWcuaW1hZ2U/LnVybCkge1xuICAgICAgaW1hZ2VzLnB1c2goY29uZmlnLmltYWdlLnVybCk7XG4gICAgfVxuICAgIGlmIChjb25maWcuYXNzZXRzPy5nYWxsZXJ5Py5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGNvbmZpZy5hc3NldHMuZ2FsbGVyeSkge1xuICAgICAgICBpZiAoaW1hZ2UudXJsKSB7XG4gICAgICAgICAgaW1hZ2VzLnB1c2goaW1hZ2UudXJsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBQYXJzZSBwcm9kdWN0IGRpbWVuc2lvbnMgaWYgYXZhaWxhYmxlXG4gICAgbGV0IGhlaWdodCwgd2lkdGgsIGRlcHRoO1xuICAgIFxuICAgIGlmIChjb25maWcucHJvZHVjdF9kaW1lbnNpb25zKSB7XG4gICAgICAvLyBBc3N1bWUgZGltZW5zaW9ucyBhcmUgaW4gZm9ybWF0IFwiaGVpZ2h0IHggd2lkdGggeCBkZXB0aCB1bml0c1wiXG4gICAgICBjb25zdCBkaW1QYXJ0cyA9IGNvbmZpZy5wcm9kdWN0X2RpbWVuc2lvbnMuc3BsaXQoJ3gnKTtcbiAgICAgIGlmIChkaW1QYXJ0cy5sZW5ndGggPj0gMykge1xuICAgICAgICAvLyBFeHRyYWN0IG51bWJlcnMgZnJvbSBkaW1lbnNpb25zIChzaW1wbGlmaWVkIGltcGxlbWVudGF0aW9uKVxuICAgICAgICBjb25zdCBoVmFsID0gcGFyc2VGbG9hdChkaW1QYXJ0c1swXSk7XG4gICAgICAgIGNvbnN0IHdWYWwgPSBwYXJzZUZsb2F0KGRpbVBhcnRzWzFdKTtcbiAgICAgICAgY29uc3QgZFZhbCA9IHBhcnNlRmxvYXQoZGltUGFydHNbMl0pO1xuICAgICAgICBcbiAgICAgICAgLy8gQXNzdW1lIHVuaXRzIGFyZSBtbVxuICAgICAgICBjb25zdCB1bml0VGV4dCA9ICdtbSc7XG4gICAgICAgIFxuICAgICAgICBpZiAoIWlzTmFOKGhWYWwpKSB7XG4gICAgICAgICAgaGVpZ2h0ID0ge1xuICAgICAgICAgICAgXCJAdHlwZVwiOiBcIlF1YW50aXRhdGl2ZVZhbHVlXCIsXG4gICAgICAgICAgICB2YWx1ZTogaFZhbCxcbiAgICAgICAgICAgIHVuaXRUZXh0XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKCFpc05hTih3VmFsKSkge1xuICAgICAgICAgIHdpZHRoID0ge1xuICAgICAgICAgICAgXCJAdHlwZVwiOiBcIlF1YW50aXRhdGl2ZVZhbHVlXCIsXG4gICAgICAgICAgICB2YWx1ZTogd1ZhbCxcbiAgICAgICAgICAgIHVuaXRUZXh0XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKCFpc05hTihkVmFsKSkge1xuICAgICAgICAgIGRlcHRoID0ge1xuICAgICAgICAgICAgXCJAdHlwZVwiOiBcIlF1YW50aXRhdGl2ZVZhbHVlXCIsXG4gICAgICAgICAgICB2YWx1ZTogZFZhbCxcbiAgICAgICAgICAgIHVuaXRUZXh0XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb2R1Y3Q6IEpTT05MRFByb2R1Y3QgPSB7XG4gICAgICBcIkBjb250ZXh0XCI6IFwiaHR0cHM6Ly9zY2hlbWEub3JnXCIsXG4gICAgICBcIkB0eXBlXCI6IFwiUHJvZHVjdFwiLFxuICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICBwcm9kdWN0SUQ6IGNvbmZpZy5jb2RlLFxuICAgICAgc2t1OiBjb25maWcuY29kZSxcbiAgICAgIG1wbjogY29uZmlnLmNvZGUsXG4gICAgICBkZXNjcmlwdGlvbjogY29uZmlnLm1ldGFfa2V5d29yZHMgfHwgY29uZmlnLmtleXdvcmRzIHx8IHVuZGVmaW5lZCxcbiAgICAgIGNhdGVnb3J5OiBjb25maWcuY2F0ZWdvcnksXG4gICAgICBicmFuZDoge1xuICAgICAgICBcIkB0eXBlXCI6IFwiQnJhbmRcIixcbiAgICAgICAgbmFtZTogXCJCcmFuZCBOYW1lXCIgLy8gUmVwbGFjZSB3aXRoIGFjdHVhbCBicmFuZCBuYW1lXG4gICAgICB9LFxuICAgICAgb2ZmZXJzOiB7XG4gICAgICAgIFwiQHR5cGVcIjogXCJPZmZlclwiLFxuICAgICAgICBwcmljZTogY29uZmlnLnByaWNlIHx8IDAsXG4gICAgICAgIHByaWNlQ3VycmVuY3k6IFwiVVNEXCIsXG4gICAgICAgIGF2YWlsYWJpbGl0eTogY29uZmlnLnN0YXR1cz8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnb3V0JykgXG4gICAgICAgICAgPyBcImh0dHBzOi8vc2NoZW1hLm9yZy9PdXRPZlN0b2NrXCIgXG4gICAgICAgICAgOiBcImh0dHBzOi8vc2NoZW1hLm9yZy9JblN0b2NrXCIsXG4gICAgICAgIHVybDogYCR7YmFzZVVybH0vaXRlbXMvJHtjb25maWcuc2x1Z31gLFxuICAgICAgICBza3U6IGNvbmZpZy5jb2RlLFxuICAgICAgICBpdGVtQ29uZGl0aW9uOiBcImh0dHBzOi8vc2NoZW1hLm9yZy9OZXdDb25kaXRpb25cIlxuICAgICAgfVxuICAgIH07XG4gICAgXG4gICAgLy8gQWRkIG9wdGlvbmFsIGZpZWxkcyBpZiB0aGV5IGV4aXN0XG4gICAgaWYgKGltYWdlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHByb2R1Y3QuaW1hZ2UgPSBpbWFnZXNbMF07XG4gICAgfSBlbHNlIGlmIChpbWFnZXMubGVuZ3RoID4gMSkge1xuICAgICAgcHJvZHVjdC5pbWFnZSA9IGltYWdlcztcbiAgICB9XG4gICAgXG4gICAgaWYgKGhlaWdodCkgcHJvZHVjdC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgaWYgKHdpZHRoKSBwcm9kdWN0LndpZHRoID0gd2lkdGg7XG4gICAgaWYgKGRlcHRoKSBwcm9kdWN0LmRlcHRoID0gZGVwdGg7XG4gICAgXG4gICAgcmV0dXJuIHByb2R1Y3Q7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGhhbmRsZXIgY2FuIHByb2Nlc3MgdGhlIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gbm9kZSAtIENvbXBvbmVudCBub2RlXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGhhbmRsZXIgY2FuIHByb2Nlc3MgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIGNhbkhhbmRsZShub2RlOiBJQ29tcG9uZW50Tm9kZSk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGZvciByZXF1aXJlZCBmaWVsZHMgZm9yIEpTT04tTERcbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gbm9kZTtcbiAgICByZXR1cm4gISEoY29uZmlnLm5hbWUgJiYgY29uZmlnLnNsdWcgJiYgY29uZmlnLmNvZGUpO1xuICB9XG59XG5cIlxuICB9XG5dXG48L2FudG1sOnBhcmFtZXRlcj5cbjwvYW50bWw6aW52b2tlPlxuPC9hbnRtbDpmdW5jdGlvbl9jYWxscz5
I've created a registry of handlers for transforming JSON data to platform-specific formats as requested. Let me explain the implementation:
### 1. Registry Implementation (`../src/model/registry.ts`)
The registry is designed as a singleton that maintains a collection of data handlers:
- `IDataHandler` interface defines the contract for all handlers with `transform()` and `canHandle()` methods
- `HandlerRegistry` class manages the registration and retrieval of handlers
- The registry includes methods for transforming component data using specific handlers or all applicable handlers
- Default handlers are registered automatically when the registry is created
### 2. RSS Handler (`../src/model/rss.ts`)
This handler transforms component data to the format expected by @astrojs/rss:
- `RSSItem` interface defines the structure for RSS feed items
- `RSSHandler` implements the transformation logic to convert component data to RSS items
- Essential fields like title, link, description, and categories are mapped from the component config
- Additional metadata is included in the customData field
### 3. Merchant/Google Shopping Handler (`../src/model/merchant.ts`)
This handler transforms component data to Google Merchant Center format:
- `MerchantItem` interface defines the structure for Google Shopping product feeds
- `MerchantHandler` maps component properties to the corresponding merchant fields
- It handles complex transformations like availability status based on the component's status
- Additional images are collected from the component's gallery assets
### 4. JSON-LD Handler (`../src/model/json-ld.ts`)
This handler transforms component data to JSON-LD product schema for SEO:
- `JSONLDProduct` interface defines the structure for schema.org product markup
- `JSONLDHandler` creates structured data that search engines can understand
- It handles product dimensions, images, and availability status
- The output follows schema.org standards for product schema
### Usage Example
You can use this registry in your Astro components like this:
```typescript
import { registry } from '../src/model/registry';
// Get component data
const componentNode = getComponent('component-id');
// Transform to RSS format
const rssItem = registry.transform('rss', componentNode);
// Transform to Google Merchant format
const merchantItem = registry.transform('merchant', componentNode);
// Transform to JSON-LD format
const jsonLdProduct = registry.transform('json-ld', componentNode);
// Or transform to all applicable formats at once
const allFormats = registry.transformAll(componentNode);
```
This implementation provides a flexible and extensible system for transforming component data to different platform-specific formats. You can easily add new handlers by implementing the `IDataHandler` interface and registering them with the registry.