@primafuture/contrib-kit-react 1.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 (128) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +294 -0
  3. package/dist/contribution-component.d.ts +82 -0
  4. package/dist/contribution-component.d.ts.map +1 -0
  5. package/dist/contribution-component.js +12 -0
  6. package/dist/contribution-component.js.map +1 -0
  7. package/dist/extension-outlet.d.ts +155 -0
  8. package/dist/extension-outlet.d.ts.map +1 -0
  9. package/dist/extension-outlet.js +229 -0
  10. package/dist/extension-outlet.js.map +1 -0
  11. package/dist/extension-registry-provider.d.ts +26 -0
  12. package/dist/extension-registry-provider.d.ts.map +1 -0
  13. package/dist/extension-registry-provider.js +82 -0
  14. package/dist/extension-registry-provider.js.map +1 -0
  15. package/dist/index.d.ts +22 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +14 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/internal/adapter-configuration.d.ts +54 -0
  20. package/dist/internal/adapter-configuration.d.ts.map +1 -0
  21. package/dist/internal/adapter-configuration.js +89 -0
  22. package/dist/internal/adapter-configuration.js.map +1 -0
  23. package/dist/internal/adapter-context.d.ts +24 -0
  24. package/dist/internal/adapter-context.d.ts.map +1 -0
  25. package/dist/internal/adapter-context.js +23 -0
  26. package/dist/internal/adapter-context.js.map +1 -0
  27. package/dist/internal/adapter-registry-bridge.d.ts +58 -0
  28. package/dist/internal/adapter-registry-bridge.d.ts.map +1 -0
  29. package/dist/internal/adapter-registry-bridge.js +494 -0
  30. package/dist/internal/adapter-registry-bridge.js.map +1 -0
  31. package/dist/internal/adapter-registry-protocol.d.ts +53 -0
  32. package/dist/internal/adapter-registry-protocol.d.ts.map +1 -0
  33. package/dist/internal/adapter-registry-protocol.js +182 -0
  34. package/dist/internal/adapter-registry-protocol.js.map +1 -0
  35. package/dist/internal/adapter-scope.d.ts +87 -0
  36. package/dist/internal/adapter-scope.d.ts.map +1 -0
  37. package/dist/internal/adapter-scope.js +346 -0
  38. package/dist/internal/adapter-scope.js.map +1 -0
  39. package/dist/internal/implementation-classifier.d.ts +21 -0
  40. package/dist/internal/implementation-classifier.d.ts.map +1 -0
  41. package/dist/internal/implementation-classifier.js +39 -0
  42. package/dist/internal/implementation-classifier.js.map +1 -0
  43. package/dist/internal/managed-lazy-generation.d.ts +100 -0
  44. package/dist/internal/managed-lazy-generation.d.ts.map +1 -0
  45. package/dist/internal/managed-lazy-generation.js +419 -0
  46. package/dist/internal/managed-lazy-generation.js.map +1 -0
  47. package/dist/internal/outlet-commit-lease.d.ts +46 -0
  48. package/dist/internal/outlet-commit-lease.d.ts.map +1 -0
  49. package/dist/internal/outlet-commit-lease.js +137 -0
  50. package/dist/internal/outlet-commit-lease.js.map +1 -0
  51. package/dist/internal/outlet-error-pipeline.d.ts +122 -0
  52. package/dist/internal/outlet-error-pipeline.d.ts.map +1 -0
  53. package/dist/internal/outlet-error-pipeline.js +214 -0
  54. package/dist/internal/outlet-error-pipeline.js.map +1 -0
  55. package/dist/internal/outlet-input.d.ts +42 -0
  56. package/dist/internal/outlet-input.d.ts.map +1 -0
  57. package/dist/internal/outlet-input.js +86 -0
  58. package/dist/internal/outlet-input.js.map +1 -0
  59. package/dist/internal/outlet-membership-boundary.d.ts +93 -0
  60. package/dist/internal/outlet-membership-boundary.d.ts.map +1 -0
  61. package/dist/internal/outlet-membership-boundary.js +710 -0
  62. package/dist/internal/outlet-membership-boundary.js.map +1 -0
  63. package/dist/internal/outlet-membership.d.ts +31 -0
  64. package/dist/internal/outlet-membership.d.ts.map +1 -0
  65. package/dist/internal/outlet-membership.js +65 -0
  66. package/dist/internal/outlet-membership.js.map +1 -0
  67. package/dist/internal/outlet-projection.d.ts +102 -0
  68. package/dist/internal/outlet-projection.d.ts.map +1 -0
  69. package/dist/internal/outlet-projection.js +228 -0
  70. package/dist/internal/outlet-projection.js.map +1 -0
  71. package/dist/internal/outlet-reporter-boundary.d.ts +42 -0
  72. package/dist/internal/outlet-reporter-boundary.d.ts.map +1 -0
  73. package/dist/internal/outlet-reporter-boundary.js +57 -0
  74. package/dist/internal/outlet-reporter-boundary.js.map +1 -0
  75. package/dist/internal/public-input-capture.d.ts +13 -0
  76. package/dist/internal/public-input-capture.d.ts.map +1 -0
  77. package/dist/internal/public-input-capture.js +34 -0
  78. package/dist/internal/public-input-capture.js.map +1 -0
  79. package/dist/internal/resolved-contributions-query.d.ts +42 -0
  80. package/dist/internal/resolved-contributions-query.d.ts.map +1 -0
  81. package/dist/internal/resolved-contributions-query.js +203 -0
  82. package/dist/internal/resolved-contributions-query.js.map +1 -0
  83. package/dist/react-adapter-diagnostics.d.ts +199 -0
  84. package/dist/react-adapter-diagnostics.d.ts.map +1 -0
  85. package/dist/react-adapter-diagnostics.js +257 -0
  86. package/dist/react-adapter-diagnostics.js.map +1 -0
  87. package/dist/react-adapter-error.d.ts +35 -0
  88. package/dist/react-adapter-error.d.ts.map +1 -0
  89. package/dist/react-adapter-error.js +37 -0
  90. package/dist/react-adapter-error.js.map +1 -0
  91. package/dist/react-extension-point.d.ts +26 -0
  92. package/dist/react-extension-point.d.ts.map +1 -0
  93. package/dist/react-extension-point.js +100 -0
  94. package/dist/react-extension-point.js.map +1 -0
  95. package/dist/react-lazy-contribution.d.ts +40 -0
  96. package/dist/react-lazy-contribution.d.ts.map +1 -0
  97. package/dist/react-lazy-contribution.js +18 -0
  98. package/dist/react-lazy-contribution.js.map +1 -0
  99. package/dist/resolved-contributions.d.ts +90 -0
  100. package/dist/resolved-contributions.d.ts.map +1 -0
  101. package/dist/resolved-contributions.js +455 -0
  102. package/dist/resolved-contributions.js.map +1 -0
  103. package/package.json +47 -0
  104. package/src/contribution-component.ts +118 -0
  105. package/src/extension-outlet.ts +590 -0
  106. package/src/extension-registry-provider.ts +179 -0
  107. package/src/index.ts +72 -0
  108. package/src/internal/adapter-configuration.ts +181 -0
  109. package/src/internal/adapter-context.ts +43 -0
  110. package/src/internal/adapter-registry-bridge.ts +723 -0
  111. package/src/internal/adapter-registry-protocol.ts +365 -0
  112. package/src/internal/adapter-scope.ts +500 -0
  113. package/src/internal/implementation-classifier.ts +59 -0
  114. package/src/internal/managed-lazy-generation.ts +540 -0
  115. package/src/internal/outlet-commit-lease.ts +216 -0
  116. package/src/internal/outlet-error-pipeline.ts +447 -0
  117. package/src/internal/outlet-input.ts +264 -0
  118. package/src/internal/outlet-membership-boundary.ts +1048 -0
  119. package/src/internal/outlet-membership.ts +125 -0
  120. package/src/internal/outlet-projection.ts +511 -0
  121. package/src/internal/outlet-reporter-boundary.ts +105 -0
  122. package/src/internal/public-input-capture.ts +55 -0
  123. package/src/internal/resolved-contributions-query.ts +318 -0
  124. package/src/react-adapter-diagnostics.ts +457 -0
  125. package/src/react-adapter-error.ts +88 -0
  126. package/src/react-extension-point.ts +181 -0
  127. package/src/react-lazy-contribution.ts +66 -0
  128. package/src/resolved-contributions.ts +895 -0
@@ -0,0 +1,181 @@
1
+ import * as contribKitCore from "@primafuture/contrib-kit-core";
2
+
3
+ import * as implementationClassifier from "./internal/implementation-classifier.js";
4
+
5
+ /** Immutable prázdný issues seznam vestavěného negativního výsledku. */
6
+ const emptyValidationIssues: readonly contribKitCore.RuntimeValidationIssue[] = Object.freeze([]);
7
+
8
+ /** Sdílený platný výsledek vestavěného classifier validátoru. */
9
+ const validImplementationResult: contribKitCore.RuntimeValidationResult = Object.freeze({ valid: true });
10
+
11
+ /** Sdílený negativní výsledek bez raw implementation hodnoty. */
12
+ const invalidImplementationResult: contribKitCore.RuntimeValidationResult = Object.freeze({
13
+ valid: false,
14
+ issues: emptyValidationIssues,
15
+ });
16
+
17
+ /** Callable host validator zachycený přes transparentní Core capture. */
18
+ type HostImplementationValidator = (value: unknown) => contribKitCore.RuntimeValidationResult;
19
+
20
+ /**
21
+ * Spustí vestavěnou React implementation klasifikaci bez obalení accessor chyby.
22
+ */
23
+ function validateReactImplementation(value: unknown): contribKitCore.RuntimeValidationResult {
24
+ return implementationClassifier.classifyReactContributionImplementation(value).kind === "invalid"
25
+ ? invalidImplementationResult
26
+ : validImplementationResult;
27
+ }
28
+
29
+ /**
30
+ * Rozpozná hodnotu, kterou lze transparentně obalit Proxy bez předčasného čtení.
31
+ */
32
+ function isProxyTarget(value: unknown): value is object {
33
+ return (typeof value === "object" && value !== null) || typeof value === "function";
34
+ }
35
+
36
+ /**
37
+ * Vytvoří validator facade, jehož jediný `validate` Get zachytí host callback.
38
+ */
39
+ function createImplementationValidatorFacade(value: unknown): unknown {
40
+ if (value === undefined) {
41
+ return Object.freeze({ validate: validateReactImplementation });
42
+ }
43
+ if (!isProxyTarget(value)) {
44
+ return value;
45
+ }
46
+
47
+ return new Proxy(Object.create(null) as object, {
48
+ get(_target, property): unknown {
49
+ const captured = Reflect.get(value, property, value);
50
+ if (property !== "validate") {
51
+ return captured;
52
+ }
53
+ if (captured === undefined) {
54
+ return validateReactImplementation;
55
+ }
56
+ if (typeof captured !== "function") {
57
+ return captured;
58
+ }
59
+
60
+ const hostValidate = captured as HostImplementationValidator;
61
+ return (implementation: unknown): contribKitCore.RuntimeValidationResult => {
62
+ const builtIn = validateReactImplementation(implementation);
63
+ return builtIn.valid ? hostValidate(implementation) : builtIn;
64
+ };
65
+ },
66
+ });
67
+ }
68
+
69
+ /**
70
+ * Doplní pouze implementation validator a ostatní nested fields transparentně předá.
71
+ */
72
+ function createValidatorsFacade(value: unknown): unknown {
73
+ if (value === undefined) {
74
+ return Object.freeze({
75
+ implementation: Object.freeze({ validate: validateReactImplementation }),
76
+ });
77
+ }
78
+ if (!isProxyTarget(value)) {
79
+ return value;
80
+ }
81
+
82
+ return new Proxy(Object.create(null) as object, {
83
+ get(_target, property): unknown {
84
+ const captured = Reflect.get(value, property, value);
85
+ return property === "implementation"
86
+ ? createImplementationValidatorFacade(captured)
87
+ : captured;
88
+ },
89
+ });
90
+ }
91
+
92
+ /**
93
+ * Vytvoří transparentní definition facade; samotný read-once capture vlastní Core.
94
+ */
95
+ function createDefinitionFacade(value: unknown): unknown {
96
+ if (!isProxyTarget(value)) {
97
+ return value;
98
+ }
99
+
100
+ return new Proxy(Object.create(null) as object, {
101
+ get(_target, property): unknown {
102
+ const captured = Reflect.get(value, property, value);
103
+ return property === "validators" ? createValidatorsFacade(captured) : captured;
104
+ },
105
+ });
106
+ }
107
+
108
+ /**
109
+ * React-specific extension point with an eager or managed-lazy implementation axis.
110
+ *
111
+ * @public
112
+ */
113
+ export type ReactExtensionPoint<
114
+ Context,
115
+ Data,
116
+ PointId extends string = string,
117
+ ContractVersion extends number = number,
118
+ > = contribKitCore.ExtensionPoint<
119
+ Context,
120
+ Data,
121
+ import("./react-lazy-contribution.js").ReactContributionImplementation<Context, Data>,
122
+ PointId,
123
+ ContractVersion
124
+ >;
125
+
126
+ /**
127
+ * Any React extension point accepted by generic adapter APIs.
128
+ *
129
+ * @public
130
+ */
131
+ export type AnyReactExtensionPoint = ReactExtensionPoint<any, any, any, any>;
132
+
133
+ /**
134
+ * Core point definition specialized for React contribution implementations.
135
+ *
136
+ * @public
137
+ */
138
+ export type ReactExtensionPointDefinition<
139
+ Context,
140
+ Data,
141
+ PointId extends string,
142
+ ContractVersion extends number,
143
+ > = contribKitCore.ExtensionPointDefinition<
144
+ Context,
145
+ Data,
146
+ import("./react-lazy-contribution.js").ReactContributionImplementation<Context, Data>,
147
+ PointId,
148
+ ContractVersion
149
+ >;
150
+
151
+ /**
152
+ * Creates an authentic Core point with a built-in React implementation validator.
153
+ *
154
+ * @public
155
+ */
156
+ export function defineReactExtensionPoint<Context, Data>(): <
157
+ const PointId extends string,
158
+ const ContractVersion extends number,
159
+ >(
160
+ definition: ReactExtensionPointDefinition<Context, Data, PointId, ContractVersion>,
161
+ options?: contribKitCore.ExtensionPointFactoryOptions,
162
+ ) => ReactExtensionPoint<Context, Data, PointId, ContractVersion> {
163
+ const defineCorePoint = contribKitCore.defineExtensionPoint<
164
+ Context,
165
+ Data,
166
+ import("./react-lazy-contribution.js").ReactContributionImplementation<Context, Data>
167
+ >();
168
+
169
+ return <const PointId extends string, const ContractVersion extends number>(
170
+ definition: ReactExtensionPointDefinition<Context, Data, PointId, ContractVersion>,
171
+ options?: contribKitCore.ExtensionPointFactoryOptions,
172
+ ): ReactExtensionPoint<Context, Data, PointId, ContractVersion> => defineCorePoint(
173
+ createDefinitionFacade(definition) as ReactExtensionPointDefinition<
174
+ Context,
175
+ Data,
176
+ PointId,
177
+ ContractVersion
178
+ >,
179
+ options,
180
+ );
181
+ }
@@ -0,0 +1,66 @@
1
+ import * as publicInputCapture from "./internal/public-input-capture.js";
2
+
3
+ /**
4
+ * Input for one managed-lazy loader attempt.
5
+ *
6
+ * @public
7
+ */
8
+ export interface ReactLazyContributionLoadInput {
9
+ /** Abort signal owned by the specific render boundary generation. */
10
+ readonly signal: import("@primafuture/contrib-kit-core").ContributionAbortSignal;
11
+ }
12
+
13
+ /**
14
+ * Public input for the managed-lazy contribution convenience factory.
15
+ *
16
+ * @public
17
+ */
18
+ export interface ReactLazyContributionInput<Context, Data> {
19
+ /** Loads a React contribution component for one boundary-owned attempt. */
20
+ readonly load: (
21
+ input: ReactLazyContributionLoadInput,
22
+ ) => Promise<import("./contribution-component.js").ReactContributionComponent<Context, Data>>;
23
+ }
24
+
25
+ /**
26
+ * Structural managed-lazy descriptor recognizable across two adapter runtimes.
27
+ *
28
+ * @public
29
+ */
30
+ export interface ReactLazyContribution<Context, Data>
31
+ extends ReactLazyContributionInput<Context, Data> {
32
+ /** Reserved literal that distinguishes the descriptor from an eager React component. */
33
+ readonly kind: "contrib-kit-react-lazy";
34
+ }
35
+
36
+ /**
37
+ * Implementation axis of a React extension point.
38
+ *
39
+ * @public
40
+ */
41
+ export type ReactContributionImplementation<Context, Data> =
42
+ | import("./contribution-component.js").ReactContributionComponent<Context, Data>
43
+ | ReactLazyContribution<Context, Data>;
44
+
45
+ /**
46
+ * Captures the loader exactly once and creates a shallow-frozen structural descriptor.
47
+ *
48
+ * @public
49
+ */
50
+ export function defineReactLazyContribution<Context, Data>(
51
+ input: ReactLazyContributionInput<Context, Data>,
52
+ ): ReactLazyContribution<Context, Data> {
53
+ const source = publicInputCapture.requireInputObject(input, "input");
54
+ const load = publicInputCapture.readInputProperty(source, "load", "input.load");
55
+ if (typeof load !== "function") {
56
+ return publicInputCapture.throwInvalidCapturedArgument(
57
+ "input.load",
58
+ "input.load must be callable.",
59
+ );
60
+ }
61
+
62
+ return Object.freeze({
63
+ kind: "contrib-kit-react-lazy" as const,
64
+ load: load as ReactLazyContributionInput<Context, Data>["load"],
65
+ });
66
+ }