@syncbridge/common 1.1.3 → 2.0.0

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.
Files changed (145) hide show
  1. package/app-factory.d.ts +29 -0
  2. package/{processor-factory.js → app-factory.js} +64 -44
  3. package/app-factory.js.map +1 -0
  4. package/classes/{processor-base.d.ts → app-base.d.ts} +3 -3
  5. package/classes/app-base.js +11 -0
  6. package/classes/app-base.js.map +1 -0
  7. package/classes/base-element.d.ts +3 -0
  8. package/classes/base-element.js +2 -0
  9. package/classes/base-element.js.map +1 -1
  10. package/classes/component-base.d.ts +6 -6
  11. package/classes/component-base.js +2 -2
  12. package/classes/component-base.js.map +1 -1
  13. package/classes/log-channel-writer.d.ts +32 -0
  14. package/classes/log-channel-writer.js +97 -0
  15. package/classes/log-channel-writer.js.map +1 -0
  16. package/classes/runnable.d.ts +6 -0
  17. package/classes/runnable.js +22 -0
  18. package/classes/runnable.js.map +1 -1
  19. package/constants.d.ts +1 -1
  20. package/constants.js +1 -1
  21. package/decorators/app-events.decorator.d.ts +5 -0
  22. package/decorators/{processor-events.decorator.js → app-events.decorator.js} +1 -1
  23. package/decorators/app-events.decorator.js.map +1 -0
  24. package/decorators/app.decorator.d.ts +29 -0
  25. package/decorators/{processor.decorator.js → app.decorator.js} +25 -19
  26. package/decorators/app.decorator.js.map +1 -0
  27. package/decorators/component.decorator.js +13 -5
  28. package/decorators/component.decorator.js.map +1 -1
  29. package/decorators/define-variable.decorator.d.ts +6 -1
  30. package/decorators/define-variable.decorator.js +5 -1
  31. package/decorators/define-variable.decorator.js.map +1 -1
  32. package/decorators/log-channel.decorator.d.ts +97 -0
  33. package/decorators/log-channel.decorator.js +34 -0
  34. package/decorators/log-channel.decorator.js.map +1 -0
  35. package/decorators/use-component.decorator.d.ts +2 -2
  36. package/decorators/use-component.decorator.js +1 -1
  37. package/decorators/use-component.decorator.js.map +1 -1
  38. package/decorators/use-variables.decorator.d.ts +2 -2
  39. package/host-link/host-identity.d.ts +53 -0
  40. package/host-link/host-identity.js +140 -0
  41. package/host-link/host-identity.js.map +1 -0
  42. package/host-link/host-link.d.ts +43 -0
  43. package/host-link/host-link.js +54 -0
  44. package/host-link/host-link.js.map +1 -0
  45. package/host-link/host-packages.d.ts +25 -0
  46. package/host-link/host-packages.js +10 -0
  47. package/host-link/host-packages.js.map +1 -0
  48. package/host-link/host-workers.d.ts +75 -0
  49. package/host-link/host-workers.js +29 -0
  50. package/host-link/host-workers.js.map +1 -0
  51. package/host-link/multiplexer.d.ts +115 -0
  52. package/host-link/multiplexer.js +289 -0
  53. package/host-link/multiplexer.js.map +1 -0
  54. package/host-link/sealed-box.d.ts +21 -0
  55. package/host-link/sealed-box.js +104 -0
  56. package/host-link/sealed-box.js.map +1 -0
  57. package/index.d.ts +16 -3
  58. package/index.js +16 -3
  59. package/index.js.map +1 -1
  60. package/models/enums/enum-source.enum.d.ts +11 -0
  61. package/models/enums/enum-source.enum.js +22 -0
  62. package/models/enums/enum-source.enum.js.map +1 -0
  63. package/models/enums/log-channel-kind.d.ts +7 -0
  64. package/models/enums/log-channel-kind.js +14 -0
  65. package/models/enums/log-channel-kind.js.map +1 -0
  66. package/models/enums/service-status.d.ts +5 -1
  67. package/models/enums/service-status.js +4 -0
  68. package/models/enums/service-status.js.map +1 -1
  69. package/models/enums/worker-permission.enum.d.ts +16 -0
  70. package/models/enums/worker-permission.enum.js +28 -0
  71. package/models/enums/worker-permission.enum.js.map +1 -0
  72. package/models/index.d.ts +6 -1
  73. package/models/index.js +6 -1
  74. package/models/index.js.map +1 -1
  75. package/models/metadata/app-metadata.d.ts +6 -0
  76. package/models/metadata/{processor-metadata.js → app-metadata.js} +7 -7
  77. package/models/metadata/app-metadata.js.map +1 -0
  78. package/models/metadata/element-component-metadata.d.ts +2 -0
  79. package/models/metadata/element-component-metadata.js +10 -2
  80. package/models/metadata/element-component-metadata.js.map +1 -1
  81. package/models/metadata/element-metadata.d.ts +8 -0
  82. package/models/metadata/element-metadata.js +40 -0
  83. package/models/metadata/element-metadata.js.map +1 -1
  84. package/models/metadata/log-channel-metadata.d.ts +23 -0
  85. package/models/metadata/log-channel-metadata.js +73 -0
  86. package/models/metadata/log-channel-metadata.js.map +1 -0
  87. package/models/metadata/plugin-metadata.d.ts +15 -0
  88. package/models/metadata/plugin-metadata.js +66 -0
  89. package/models/metadata/plugin-metadata.js.map +1 -0
  90. package/models/metadata/variable-metadata.d.ts +3 -0
  91. package/models/metadata/variable-metadata.js +15 -1
  92. package/models/metadata/variable-metadata.js.map +1 -1
  93. package/models/profile/log-options.d.ts +17 -0
  94. package/models/profile/log-options.js +58 -1
  95. package/models/profile/log-options.js.map +1 -1
  96. package/models/profile/profile.d.ts +2 -2
  97. package/models/profile/profile.js +9 -9
  98. package/models/profile/profile.js.map +1 -1
  99. package/package.json +2 -2
  100. package/registry/docs-sidebar.d.ts +59 -0
  101. package/registry/docs-sidebar.js +170 -0
  102. package/registry/docs-sidebar.js.map +1 -0
  103. package/registry/extension-package.d.ts +40 -15
  104. package/registry/extension-package.js +59 -20
  105. package/registry/extension-package.js.map +1 -1
  106. package/registry/extension-registry.d.ts +16 -16
  107. package/registry/extension-registry.js +59 -44
  108. package/registry/extension-registry.js.map +1 -1
  109. package/registry/module-catalog.d.ts +31 -0
  110. package/registry/module-catalog.js +89 -0
  111. package/registry/module-catalog.js.map +1 -0
  112. package/registry/package-docs.d.ts +98 -0
  113. package/registry/package-docs.js +160 -0
  114. package/registry/package-docs.js.map +1 -0
  115. package/registry/package-manifest.d.ts +52 -24
  116. package/registry/package-manifest.js +53 -21
  117. package/registry/package-manifest.js.map +1 -1
  118. package/utils/decode-profile.d.ts +18 -2
  119. package/utils/decode-profile.js +65 -9
  120. package/utils/decode-profile.js.map +1 -1
  121. package/utils/encrypt-helpers.d.ts +7 -0
  122. package/utils/encrypt-helpers.js +12 -5
  123. package/utils/encrypt-helpers.js.map +1 -1
  124. package/utils/materialize-metadata.d.ts +3 -3
  125. package/utils/materialize-metadata.js +16 -12
  126. package/utils/materialize-metadata.js.map +1 -1
  127. package/utils/normalize-metadata.d.ts +23 -4
  128. package/utils/normalize-metadata.js +52 -6
  129. package/utils/normalize-metadata.js.map +1 -1
  130. package/utils/type-guards.d.ts +2 -2
  131. package/utils/type-guards.js +4 -4
  132. package/utils/type-guards.js.map +1 -1
  133. package/utils/worker-permissions.d.ts +25 -0
  134. package/utils/worker-permissions.js +60 -0
  135. package/utils/worker-permissions.js.map +1 -0
  136. package/classes/processor-base.js +0 -11
  137. package/classes/processor-base.js.map +0 -1
  138. package/decorators/processor-events.decorator.d.ts +0 -5
  139. package/decorators/processor-events.decorator.js.map +0 -1
  140. package/decorators/processor.decorator.d.ts +0 -29
  141. package/decorators/processor.decorator.js.map +0 -1
  142. package/models/metadata/processor-metadata.d.ts +0 -6
  143. package/models/metadata/processor-metadata.js.map +0 -1
  144. package/processor-factory.d.ts +0 -26
  145. package/processor-factory.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"log-options.js","sourceRoot":"","sources":["../../../src/models/profile/log-options.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;GAEG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,YAAY,IAA0B;QACpC,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAMD,KAAK,CAAY;IAMjB,UAAU,CAAW;CACtB,CAAA;AAPC;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0BAA0B;KACxC,CAAC;;yCACe;AAMjB;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,iDAAiD;KAC/D,CAAC;;8CACmB;AAfV,UAAU;IADtB,WAAW,EAAE;;GACD,UAAU,CAgBtB;;AAED;;GAEG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IAC/C,YAAY,IAAiC;QAC3C,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAMD,UAAU,CAAW;CACtB,CAAA;AADC;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,0DAA0D;KACxE,CAAC;;qDACmB;AATV,iBAAiB;IAD7B,WAAW,EAAE;;GACD,iBAAiB,CAU7B"}
1
+ {"version":3,"file":"log-options.js","sourceRoot":"","sources":["../../../src/models/profile/log-options.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;GAEG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAAY,IAAkC;QAC5C,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAGD,OAAO,CAAW;IAGlB,KAAK,CAAY;IAGjB,aAAa,CAAU;IAOvB,MAAM,CAAY;CACnB,CAAA;AAdC;IADC,QAAQ,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;;mDACtC;AAGlB;IADC,QAAQ,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;;iDAC9C;AAGjB;IADC,QAAQ,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;;yDAChC;AAOvB;IALC,QAAQ,CAAC;QACR,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;QACvB,WAAW,EACT,uHAAuH;KAC1H,CAAC;;kDACgB;AAnBP,kBAAkB;IAD9B,WAAW,EAAE;;GACD,kBAAkB,CAoB9B;;AAED;;GAEG;AAKI,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;CAEpC,CAAA;AAFY,wBAAwB;IAJpC,WAAW,CAAC;QACX,WAAW,EAAE,uCAAuC;QACpD,gBAAgB,EAAE,GAAG,EAAE,CAAC,kBAAkB;KAC3C,CAAC;GACW,wBAAwB,CAEpC;;AAED;;GAEG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,YAAY,IAA0B;QACpC,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAMD,KAAK,CAAY;IAMjB,UAAU,CAAW;IAMrB,QAAQ,CAA4B;CACrC,CAAA;AAbC;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0BAA0B;KACxC,CAAC;;yCACe;AAMjB;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,iDAAiD;KAC/D,CAAC;;8CACmB;AAMrB;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,yDAAyD;KACvE,CAAC;8BACS,wBAAwB;4CAAC;AArBzB,UAAU;IADtB,WAAW,EAAE;;GACD,UAAU,CAsBtB;;AAED;;GAEG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IAC/C,YAAY,IAAiC;QAC3C,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAMD,UAAU,CAAW;CACtB,CAAA;AADC;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,0DAA0D;KACxE,CAAC;;qDACmB;AATV,iBAAiB;IAD7B,WAAW,EAAE;;GACD,iBAAiB,CAU7B"}
@@ -15,8 +15,8 @@ export declare class Profile {
15
15
  constructor(init?: Partial<Profile>);
16
16
  id: string;
17
17
  displayName: string;
18
- processorUri: string;
19
- processorVersion?: string;
18
+ appUri: string;
19
+ appVersion?: string;
20
20
  group?: string;
21
21
  description?: string;
22
22
  iconUrl?: string;
@@ -16,14 +16,14 @@ let ProfileSettings = class ProfileSettings {
16
16
  __decorate([
17
17
  ApiField({
18
18
  label: 'Auto Start',
19
- description: 'Determines if the processor will be auto started or not',
19
+ description: 'Determines if the app will be auto started or not',
20
20
  }),
21
21
  __metadata("design:type", Boolean)
22
22
  ], ProfileSettings.prototype, "autostart", void 0);
23
23
  __decorate([
24
24
  ApiField({
25
25
  label: 'Logs',
26
- description: 'Log settings of the processor',
26
+ description: 'Log settings of the app',
27
27
  }),
28
28
  __metadata("design:type", ProfileLogOptions)
29
29
  ], ProfileSettings.prototype, "logs", void 0);
@@ -59,19 +59,19 @@ __decorate([
59
59
  ], Profile.prototype, "displayName", void 0);
60
60
  __decorate([
61
61
  ApiField({
62
- label: 'Processor URI',
63
- description: 'URI of the processor',
62
+ label: 'App URI',
63
+ description: 'URI of the app',
64
64
  required: true,
65
65
  }),
66
66
  __metadata("design:type", String)
67
- ], Profile.prototype, "processorUri", void 0);
67
+ ], Profile.prototype, "appUri", void 0);
68
68
  __decorate([
69
69
  ApiField({
70
- label: 'Processor Version',
70
+ label: 'App Version',
71
71
  description: 'Determines which installed version will be used. This value accepts semver format. https://semver.npmjs.com/',
72
72
  }),
73
73
  __metadata("design:type", String)
74
- ], Profile.prototype, "processorVersion", void 0);
74
+ ], Profile.prototype, "appVersion", void 0);
75
75
  __decorate([
76
76
  ApiField({
77
77
  label: 'Group',
@@ -104,14 +104,14 @@ __decorate([
104
104
  __decorate([
105
105
  ApiField({
106
106
  label: 'Components',
107
- description: 'Components of the processor',
107
+ description: 'Components of the app',
108
108
  }),
109
109
  __metadata("design:type", ProfileComponentRecord)
110
110
  ], Profile.prototype, "components", void 0);
111
111
  __decorate([
112
112
  ApiField({
113
113
  label: 'Settings',
114
- description: 'Settings of the processor',
114
+ description: 'Settings of the app',
115
115
  }),
116
116
  __metadata("design:type", ProfileSettings)
117
117
  ], Profile.prototype, "settings", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/models/profile/profile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;GAEG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAAY,IAA+B;QACzC,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAMD,SAAS,CAAW;IAMpB,IAAI,CAAqB;CAC1B,CAAA;AAPC;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,yDAAyD;KACvE,CAAC;;kDACkB;AAMpB;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,+BAA+B;KAC7C,CAAC;8BACK,iBAAiB;6CAAC;AAfd,eAAe;IAD3B,WAAW,EAAE;;GACD,eAAe,CAgB3B;;AAED;;GAEG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAO;IAClB,YAAY,IAAuB;QACjC,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CAkEF,CAAA;AA3DS;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,IAAI;KACf,CAAC;;mCACiB;AAOX;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,8DAA8D;QAC3E,QAAQ,EAAE,IAAI;KACf,CAAC;;4CAC0B;AAOpB;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,IAAI;KACf,CAAC;;6CAC2B;AAOrB;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,8GAA8G;KACjH,CAAC;;iDACgC;AAM1B;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0DAA0D;KACxE,CAAC;;sCACqB;AAMf;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,kBAAkB;KAChC,CAAC;;4CAC2B;AAMrB;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,UAAU;KACxB,CAAC;;wCACuB;AAOjB;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,QAAQ;KACf,CAAC;;uCACmC;AAM7B;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,6BAA6B;KAC3C,CAAC;8BACmB,sBAAsB;2CAAC;AAMpC;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,2BAA2B;KACzC,CAAC;8BACiB,eAAe;yCAAC;AApExB,OAAO;IADnB,WAAW,EAAE;;GACD,OAAO,CAqEnB"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/models/profile/profile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;GAEG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAAY,IAA+B;QACzC,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAMD,SAAS,CAAW;IAMpB,IAAI,CAAqB;CAC1B,CAAA;AAPC;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,mDAAmD;KACjE,CAAC;;kDACkB;AAMpB;IAJC,QAAQ,CAAC;QACR,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,yBAAyB;KACvC,CAAC;8BACK,iBAAiB;6CAAC;AAfd,eAAe;IAD3B,WAAW,EAAE;;GACD,eAAe,CAgB3B;;AAED;;GAEG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAO;IAClB,YAAY,IAAuB;QACjC,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CAkEF,CAAA;AA3DS;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,IAAI;KACf,CAAC;;mCACiB;AAOX;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,8DAA8D;QAC3E,QAAQ,EAAE,IAAI;KACf,CAAC;;4CAC0B;AAOpB;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,gBAAgB;QAC7B,QAAQ,EAAE,IAAI;KACf,CAAC;;uCACqB;AAOf;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,8GAA8G;KACjH,CAAC;;2CAC0B;AAMpB;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0DAA0D;KACxE,CAAC;;sCACqB;AAMf;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,kBAAkB;KAChC,CAAC;;4CAC2B;AAMrB;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,UAAU;KACxB,CAAC;;wCACuB;AAOjB;IALP,QAAQ,CAAC;QACR,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,QAAQ;KACf,CAAC;;uCACmC;AAM7B;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,uBAAuB;KACrC,CAAC;8BACmB,sBAAsB;2CAAC;AAMpC;IAJP,QAAQ,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,qBAAqB;KACnC,CAAC;8BACiB,eAAe;yCAAC;AApExB,OAAO;IADnB,WAAW,EAAE;;GACD,OAAO,CAqEnB"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@syncbridge/common",
3
- "version": "1.1.3",
3
+ "version": "2.0.0",
4
4
  "description": "SyncBridge Common utilities",
5
5
  "author": "Panates Inc",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/panates/syncbridge.git",
9
+ "url": "git+https://github.com/syncbridge-io/syncbridge.git",
10
10
  "directory": "packages/common"
11
11
  },
12
12
  "dependencies": {
@@ -0,0 +1,59 @@
1
+ /**
2
+ * How a package's documents are listed, where its author tells it: a
3
+ * sidebar.json in docs/ (the package's own) or in docs/<ClassName>/ (an
4
+ * app's, component's or plugin's). Without one they are listed by their
5
+ * front matter's order and titles.
6
+ *
7
+ * {
8
+ * "items": [
9
+ * "README.md",
10
+ * { "doc": "user-guide.pdf",
11
+ * "title": { "tr": "Kullanım kılavuzu", "en": "User guide" } },
12
+ * { "label": { "tr": "Ağ", "en": "Network" },
13
+ * "items": ["network.md", "firewall.md"] }
14
+ * ]
15
+ * }
16
+ *
17
+ * A document is named as it is in the package's own language, from where
18
+ * the sidebar is - its languages are found by its name (network.md for
19
+ * network.tr.md). A title is text, or text by language. A document not
20
+ * listed is read by a link to it alone.
21
+ */
22
+ export declare const SIDEBAR_FILE = "sidebar.json";
23
+ /** Text, or text by language: { "tr": "Ağ", "en": "Network" } */
24
+ export type SidebarText = string | Record<string, string>;
25
+ /** An item of a sidebar, as its author writes it */
26
+ export type SidebarItemSource = string | {
27
+ doc: string;
28
+ title?: SidebarText;
29
+ } | {
30
+ label: SidebarText;
31
+ items: SidebarItemSource[];
32
+ };
33
+ /** An item of a sidebar as kept: each document by its path in the package */
34
+ export type SidebarItem = {
35
+ doc: string;
36
+ title?: SidebarText;
37
+ } | {
38
+ label: SidebarText;
39
+ items: SidebarItem[];
40
+ };
41
+ /** A sidebar as kept: its items, each document by its path in the package */
42
+ export interface DocsSidebar {
43
+ items: SidebarItem[];
44
+ }
45
+ /**
46
+ * Whose a sidebar is, by its path in the package: '' for docs/sidebar.json
47
+ * (the package's own), the class for docs/<ClassName>/sidebar.json; none
48
+ * if it is not where a sidebar may be
49
+ */
50
+ export declare function sidebarOwner(file: string): string | undefined;
51
+ /**
52
+ * Reads a sidebar: what its author wrote, each document found among `docs`
53
+ * - the paths, in the package's own language, the package's documents are
54
+ * read by (docs/Gw/network.md, for network.md and network.tr.md alike).
55
+ * Throws, telling every problem, when it is not one.
56
+ */
57
+ export declare function parseSidebar(file: string, source: unknown, docs: ReadonlySet<string>): DocsSidebar;
58
+ /** The documents a sidebar lists, by their paths */
59
+ export declare function sidebarDocs(sidebar: DocsSidebar): string[];
@@ -0,0 +1,170 @@
1
+ import { SbError } from '../classes/sb-error.js';
2
+ import { CLASS_DIR_PATTERN, DOCS_DIR, isDocsLanguage } from './package-docs.js';
3
+ /**
4
+ * How a package's documents are listed, where its author tells it: a
5
+ * sidebar.json in docs/ (the package's own) or in docs/<ClassName>/ (an
6
+ * app's, component's or plugin's). Without one they are listed by their
7
+ * front matter's order and titles.
8
+ *
9
+ * {
10
+ * "items": [
11
+ * "README.md",
12
+ * { "doc": "user-guide.pdf",
13
+ * "title": { "tr": "Kullanım kılavuzu", "en": "User guide" } },
14
+ * { "label": { "tr": "Ağ", "en": "Network" },
15
+ * "items": ["network.md", "firewall.md"] }
16
+ * ]
17
+ * }
18
+ *
19
+ * A document is named as it is in the package's own language, from where
20
+ * the sidebar is - its languages are found by its name (network.md for
21
+ * network.tr.md). A title is text, or text by language. A document not
22
+ * listed is read by a link to it alone.
23
+ */
24
+ export const SIDEBAR_FILE = 'sidebar.json';
25
+ /** Categories within categories, at most */
26
+ const MAX_DEPTH = 3;
27
+ /**
28
+ * Whose a sidebar is, by its path in the package: '' for docs/sidebar.json
29
+ * (the package's own), the class for docs/<ClassName>/sidebar.json; none
30
+ * if it is not where a sidebar may be
31
+ */
32
+ export function sidebarOwner(file) {
33
+ const parts = file.split('/');
34
+ if (parts[0] !== DOCS_DIR || parts[parts.length - 1] !== SIDEBAR_FILE)
35
+ return;
36
+ if (parts.length === 2)
37
+ return '';
38
+ if (parts.length === 3 && CLASS_DIR_PATTERN.test(parts[1]))
39
+ return parts[1];
40
+ }
41
+ /**
42
+ * Reads a sidebar: what its author wrote, each document found among `docs`
43
+ * - the paths, in the package's own language, the package's documents are
44
+ * read by (docs/Gw/network.md, for network.md and network.tr.md alike).
45
+ * Throws, telling every problem, when it is not one.
46
+ */
47
+ export function parseSidebar(file, source, docs) {
48
+ const owner = sidebarOwner(file);
49
+ if (owner === undefined)
50
+ throw new SbError(`${file}: a sidebar is ${DOCS_DIR}/${SIDEBAR_FILE} or ${DOCS_DIR}/<ClassName>/${SIDEBAR_FILE}`);
51
+ const dir = owner ? `${DOCS_DIR}/${owner}` : DOCS_DIR;
52
+ const errors = [];
53
+ const listed = new Set();
54
+ const text = (value, at) => {
55
+ if (typeof value === 'string' && value.trim())
56
+ return value.trim();
57
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
58
+ const entries = Object.entries(value);
59
+ const bad = entries.filter(([lang, t]) => !isDocsLanguage(lang) || typeof t !== 'string' || !t.trim());
60
+ if (entries.length && !bad.length)
61
+ return Object.fromEntries(entries.map(([l, t]) => [l, t.trim()]));
62
+ }
63
+ errors.push(`${at}: text, or text by language ({ "tr": "...", "en": "..." })`);
64
+ };
65
+ const doc = (name, at) => {
66
+ if (typeof name !== 'string' || !name) {
67
+ errors.push(`${at}: a document's name, from where the sidebar is`);
68
+ return;
69
+ }
70
+ const parts = dir.split('/');
71
+ for (const part of name.split('/')) {
72
+ if (part === '..')
73
+ parts.pop();
74
+ else if (part && part !== '.')
75
+ parts.push(part);
76
+ }
77
+ const path = parts.join('/');
78
+ if (!path.startsWith(dir + '/') || (!owner && isModuleDoc(path))) {
79
+ errors.push(`${at}: "${name}" is not ${owner ? `${owner}'s` : "the package's own"} - a sidebar lists the documents beside it`);
80
+ return;
81
+ }
82
+ if (!docs.has(path)) {
83
+ errors.push(`${at}: "${name}" is not a document of the package - named as in its own language, without one (network.md, not network.tr.md)`);
84
+ return;
85
+ }
86
+ if (listed.has(path)) {
87
+ errors.push(`${at}: "${name}" is listed twice`);
88
+ return;
89
+ }
90
+ listed.add(path);
91
+ return path;
92
+ };
93
+ const items = (value, at, depth) => {
94
+ if (!Array.isArray(value)) {
95
+ errors.push(`${at}: a list of items`);
96
+ return [];
97
+ }
98
+ const out = [];
99
+ value.forEach((item, i) => {
100
+ const here = `${at}[${i}]`;
101
+ if (typeof item === 'string') {
102
+ const path = doc(item, here);
103
+ if (path)
104
+ out.push({ doc: path });
105
+ return;
106
+ }
107
+ if (!item || typeof item !== 'object' || Array.isArray(item)) {
108
+ errors.push(`${here}: a document's name, or an object`);
109
+ return;
110
+ }
111
+ const keys = Object.keys(item);
112
+ if ('doc' in item) {
113
+ const unknown = keys.filter(k => k !== 'doc' && k !== 'title');
114
+ if (unknown.length)
115
+ errors.push(`${here}: "${unknown.join('", "')}" is not read`);
116
+ const path = doc(item.doc, `${here}.doc`);
117
+ const title = item.title === undefined
118
+ ? undefined
119
+ : text(item.title, `${here}.title`);
120
+ if (path)
121
+ out.push(title ? { doc: path, title } : { doc: path });
122
+ }
123
+ else if ('label' in item) {
124
+ const unknown = keys.filter(k => k !== 'label' && k !== 'items');
125
+ if (unknown.length)
126
+ errors.push(`${here}: "${unknown.join('", "')}" is not read`);
127
+ if (depth >= MAX_DEPTH)
128
+ errors.push(`${here}: categories go ${MAX_DEPTH} deep at most`);
129
+ const label = text(item.label, `${here}.label`);
130
+ const inner = items(item.items, `${here}.items`, depth + 1);
131
+ if (label)
132
+ out.push({ label, items: inner });
133
+ }
134
+ else
135
+ errors.push(`${here}: a document ("doc") or a category ("label" and "items")`);
136
+ });
137
+ return out;
138
+ };
139
+ let result = [];
140
+ if (!source || typeof source !== 'object' || Array.isArray(source))
141
+ errors.push(`${file}: an object, its "items" listed`);
142
+ else {
143
+ const unknown = Object.keys(source).filter(k => k !== 'items');
144
+ if (unknown.length)
145
+ errors.push(`${file}: "${unknown.join('", "')}" is not read`);
146
+ result = items(source.items, `${file}: items`, 0);
147
+ }
148
+ if (errors.length)
149
+ throw new SbError(errors.join('\n'));
150
+ return { items: result };
151
+ }
152
+ /** A path in docs/ that is a module's: in docs/<ClassName>/ */
153
+ function isModuleDoc(path) {
154
+ const parts = path.split('/');
155
+ return parts.length > 2 && CLASS_DIR_PATTERN.test(parts[1]);
156
+ }
157
+ /** The documents a sidebar lists, by their paths */
158
+ export function sidebarDocs(sidebar) {
159
+ const out = [];
160
+ const walk = (items) => {
161
+ for (const item of items)
162
+ if ('doc' in item)
163
+ out.push(item.doc);
164
+ else
165
+ walk(item.items);
166
+ };
167
+ walk(sidebar.items);
168
+ return out;
169
+ }
170
+ //# sourceMappingURL=docs-sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-sidebar.js","sourceRoot":"","sources":["../../src/registry/docs-sidebar.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import 'reflect-metadata';
2
2
  import type { Type } from 'ts-gems';
3
+ import { AppBase } from '../classes/app-base.js';
3
4
  import { BaseElement } from '../classes/base-element.js';
4
5
  import { ComponentBase } from '../classes/component-base.js';
5
- import { ProcessorBase } from '../classes/processor-base.js';
6
- import { ComponentMetadata, ElementMetadata, ProcessorMetadata } from '../models/index.js';
7
- import { type ExtensionPackageJson } from './package-manifest.js';
6
+ import { AppMetadata, ComponentMetadata, ElementMetadata, PluginMetadata } from '../models/index.js';
7
+ import type { ExtensionPackageJson, SyncBridgeManifest } from './package-manifest.js';
8
8
  /**
9
9
  *
10
10
  */
@@ -14,30 +14,37 @@ export declare class ExtensionPackage {
14
14
  description: string;
15
15
  path: string;
16
16
  entryPoint: string;
17
- /** See `getManifestVersion`; `undefined` for a class registered directly */
18
- manifestVersion?: number;
19
17
  /** Registry packages this one depends on: registry name -> semver range */
20
18
  registryDependencies: Record<string, string>;
21
19
  /** What the package expects the host to provide */
22
20
  peerDependencies: Record<string, string>;
23
21
  components: ComponentExtension[];
24
- processors: ProcessorExtension[];
22
+ apps: AppExtension[];
23
+ plugins: PluginExtension[];
25
24
  errors: Error[];
25
+ /** What was passed over reading the package: fields of its manifest SyncBridge does not know */
26
+ warnings: string[];
26
27
  /**
27
- * Takes the package's identity and dependencies from its `package.json`.
28
+ * Takes the package's identity and dependencies from its `package.json`
29
+ * and its manifest (see readExtensionManifest)
28
30
  */
29
- assignManifest(pkgJson: ExtensionPackageJson): void;
31
+ assignManifest(pkgJson: ExtensionPackageJson, manifest?: SyncBridgeManifest): void;
30
32
  }
31
33
  /**
32
34
  *
33
35
  */
34
36
  export declare abstract class ExtensionBase {
35
- abstract readonly kind: 'component' | 'processor';
37
+ abstract readonly kind: 'component' | 'app';
36
38
  protected _ctor?: Type;
37
39
  readonly pkg: ExtensionPackage;
38
40
  readonly exportName: string;
39
41
  readonly metadata: ElementMetadata;
40
42
  readonly className: string;
43
+ /**
44
+ * The module the class is exported from: its own, given in the manifest,
45
+ * or else the package's entry point
46
+ */
47
+ entryPoint?: string;
41
48
  protected constructor(pkg: ExtensionPackage, exportName: string, metadata: ElementMetadata, ctor?: Type<BaseElement>);
42
49
  get uri(): string;
43
50
  get displayName(): string;
@@ -56,10 +63,28 @@ export declare class ComponentExtension extends ExtensionBase {
56
63
  /**
57
64
  *
58
65
  */
59
- export declare class ProcessorExtension extends ExtensionBase {
60
- readonly kind = "processor";
61
- protected _ctor?: Type<ProcessorBase>;
62
- readonly metadata: ProcessorMetadata;
63
- constructor(pkg: ExtensionPackage, exportName: string, metadata: ProcessorMetadata, ctor?: Type<ProcessorBase>);
64
- getClass(): Promise<Type<ProcessorBase>>;
66
+ export declare class AppExtension extends ExtensionBase {
67
+ readonly kind = "app";
68
+ protected _ctor?: Type<AppBase>;
69
+ readonly metadata: AppMetadata;
70
+ constructor(pkg: ExtensionPackage, exportName: string, metadata: AppMetadata, ctor?: Type<AppBase>);
71
+ getClass(): Promise<Type<AppBase>>;
72
+ }
73
+ /**
74
+ * A plugin a package brings: it extends SyncBridge itself, loaded in the
75
+ * engine's main process, never in a worker
76
+ */
77
+ export declare class PluginExtension {
78
+ readonly pkg: ExtensionPackage;
79
+ readonly exportName: string;
80
+ readonly metadata: PluginMetadata;
81
+ readonly kind = "plugin";
82
+ protected _ctor?: Type;
83
+ /** The module the class is exported from */
84
+ entryPoint?: string;
85
+ constructor(pkg: ExtensionPackage, exportName: string, metadata: PluginMetadata, ctor?: Type);
86
+ /** The name it is set by: `plugins.<name>` */
87
+ get name(): string;
88
+ get version(): string;
89
+ getClass(): Promise<Type>;
65
90
  }
@@ -1,11 +1,11 @@
1
1
  import 'reflect-metadata';
2
+ import { AppBase } from '../classes/app-base.js';
2
3
  import { BaseElement } from '../classes/base-element.js';
3
4
  import { ComponentBase } from '../classes/component-base.js';
4
- import { ProcessorBase } from '../classes/processor-base.js';
5
5
  import { SbError } from '../classes/sb-error.js';
6
- import { ComponentMetadata, ElementMetadata, ProcessorMetadata, } from '../models/index.js';
7
- import { isComponentBase, isProcessorBase } from '../utils/type-guards.js';
8
- import { getManifestVersion, } from './package-manifest.js';
6
+ import { CLASS_TYPE } from '../constants.js';
7
+ import { AppMetadata, ComponentMetadata, ElementMetadata, PluginMetadata, } from '../models/index.js';
8
+ import { isAppBase, isComponentBase } from '../utils/type-guards.js';
9
9
  /**
10
10
  *
11
11
  */
@@ -15,17 +15,20 @@ export class ExtensionPackage {
15
15
  /** What the package expects the host to provide */
16
16
  peerDependencies = {};
17
17
  components = [];
18
- processors = [];
18
+ apps = [];
19
+ plugins = [];
19
20
  errors = [];
21
+ /** What was passed over reading the package: fields of its manifest SyncBridge does not know */
22
+ warnings = [];
20
23
  /**
21
- * Takes the package's identity and dependencies from its `package.json`.
24
+ * Takes the package's identity and dependencies from its `package.json`
25
+ * and its manifest (see readExtensionManifest)
22
26
  */
23
- assignManifest(pkgJson) {
24
- this.name = pkgJson.syncbridge?.name || pkgJson.name;
27
+ assignManifest(pkgJson, manifest) {
28
+ this.name = manifest?.name || pkgJson.name;
25
29
  this.version = pkgJson.version;
26
30
  this.description = pkgJson.description;
27
- this.manifestVersion = getManifestVersion(pkgJson);
28
- this.registryDependencies = { ...pkgJson.syncbridge?.dependencies };
31
+ this.registryDependencies = { ...manifest?.dependencies };
29
32
  this.peerDependencies = { ...pkgJson.peerDependencies };
30
33
  }
31
34
  }
@@ -68,7 +71,7 @@ export class ComponentExtension extends ExtensionBase {
68
71
  async getClass() {
69
72
  if (this._ctor)
70
73
  return this._ctor;
71
- const module = await import(this.pkg.entryPoint);
74
+ const module = await import(this.entryPoint || this.pkg.entryPoint);
72
75
  const ctor = module[this.exportName];
73
76
  if (!ctor)
74
77
  throw new SbError(`Exported component "${this.exportName}" not found in package "${this.pkg.name}"`);
@@ -83,26 +86,62 @@ export class ComponentExtension extends ExtensionBase {
83
86
  /**
84
87
  *
85
88
  */
86
- export class ProcessorExtension extends ExtensionBase {
87
- kind = 'processor';
89
+ export class AppExtension extends ExtensionBase {
90
+ kind = 'app';
88
91
  constructor(pkg, exportName, metadata, ctor) {
89
92
  super(pkg, exportName, metadata, ctor);
90
- if (ctor && !isProcessorBase(ctor.prototype))
91
- throw new SbError(`${ctor.name} does not extends ProcessorBase`);
93
+ if (ctor && !isAppBase(ctor.prototype))
94
+ throw new SbError(`${ctor.name} does not extends AppBase`);
92
95
  }
93
96
  async getClass() {
94
97
  if (this._ctor)
95
98
  return this._ctor;
96
- const module = await import(this.pkg.entryPoint);
99
+ const module = await import(this.entryPoint || this.pkg.entryPoint);
97
100
  const ctor = module[this.exportName];
98
101
  if (!ctor)
99
- throw new SbError(`Exported processor "${this.exportName}" not found in package "${this.pkg.name}"`);
102
+ throw new SbError(`Exported app "${this.exportName}" not found in package "${this.pkg.name}"`);
100
103
  if (typeof ctor !== 'function')
101
- throw new SbError(`Exported processor "${this.exportName}" is not a class`);
102
- if (!isProcessorBase(ctor.prototype))
103
- throw new SbError(`Exported processor "${this.exportName}" does not extends ProcessorBase`);
104
+ throw new SbError(`Exported app "${this.exportName}" is not a class`);
105
+ if (!isAppBase(ctor.prototype))
106
+ throw new SbError(`Exported app "${this.exportName}" does not extends AppBase`);
104
107
  this._ctor = ctor;
105
108
  return this._ctor;
106
109
  }
107
110
  }
111
+ /**
112
+ * A plugin a package brings: it extends SyncBridge itself, loaded in the
113
+ * engine's main process, never in a worker
114
+ */
115
+ export class PluginExtension {
116
+ pkg;
117
+ exportName;
118
+ metadata;
119
+ kind = 'plugin';
120
+ _ctor;
121
+ constructor(pkg, exportName, metadata, ctor) {
122
+ this.pkg = pkg;
123
+ this.exportName = exportName;
124
+ this.metadata = metadata;
125
+ this._ctor = ctor;
126
+ }
127
+ /** The name it is set by: `plugins.<name>` */
128
+ get name() {
129
+ return this.metadata.name;
130
+ }
131
+ get version() {
132
+ return this.pkg.version;
133
+ }
134
+ async getClass() {
135
+ if (this._ctor)
136
+ return this._ctor;
137
+ const module = await import(this.entryPoint || this.pkg.entryPoint);
138
+ const ctor = module[this.exportName];
139
+ if (typeof ctor !== 'function')
140
+ throw new SbError(`Exported plugin "${this.exportName}" not found in package "${this.pkg.name}"`);
141
+ if (Reflect.getMetadata(CLASS_TYPE, ctor) !== 'plugin')
142
+ throw new SbError(`Exported plugin "${this.exportName}" is not decorated with @Plugin`);
143
+ this._ctor = ctor;
144
+ return ctor;
145
+ }
146
+ }
108
147
  //# sourceMappingURL=extension-package.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-package.js","sourceRoot":"","sources":["../../src/registry/extension-package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-package.js","sourceRoot":"","sources":["../../src/registry/extension-package.ts"],"names":[],"mappings":"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"}