@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,21 @@
1
+ /** Callable loader zachycený z platného structural managed-lazy descriptoru. */
2
+ export type CapturedReactLazyLoader = (input: unknown) => unknown;
3
+ /** Shallow klasifikace opaque React contribution implementation hodnoty. */
4
+ export type ReactImplementationClassification = {
5
+ readonly kind: "eager";
6
+ } | {
7
+ readonly kind: "managedLazy";
8
+ readonly load: CapturedReactLazyLoader;
9
+ } | {
10
+ readonly kind: "invalid";
11
+ };
12
+ /** Lifecycle checkpoint mezi jednotlivými user-observable kroky klasifikace. */
13
+ export type ReactImplementationClassificationCheckpoint = () => void;
14
+ /**
15
+ * Provede jedinou normativní shallow klasifikaci React implementation hodnoty.
16
+ *
17
+ * Funkce záměrně nezachytává accessor chyby. Volající hranice rozhoduje, zda je
18
+ * přeloží do Core validator failure nebo pozdější React render chyby.
19
+ */
20
+ export declare function classifyReactContributionImplementation(value: unknown, checkpoint?: ReactImplementationClassificationCheckpoint): ReactImplementationClassification;
21
+ //# sourceMappingURL=implementation-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation-classifier.d.ts","sourceRoot":"","sources":["../../src/internal/implementation-classifier.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAElE,4EAA4E;AAC5E,MAAM,MAAM,iCAAiC,GAC1C;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEhC,gFAAgF;AAChF,MAAM,MAAM,2CAA2C,GAAG,MAAM,IAAI,CAAC;AAQrE;;;;;GAKG;AACH,wBAAgB,uCAAuC,CACtD,KAAK,EAAE,OAAO,EACd,UAAU,GAAE,2CAA6F,GACvG,iCAAiC,CA0BnC"}
@@ -0,0 +1,39 @@
1
+ /** Sdílený immutable eager výsledek bez per-call mutable identity. */
2
+ const eagerClassification = Object.freeze({ kind: "eager" });
3
+ /** Sdílený immutable invalid výsledek bez raw hodnoty. */
4
+ const invalidClassification = Object.freeze({ kind: "invalid" });
5
+ /**
6
+ * Provede jedinou normativní shallow klasifikaci React implementation hodnoty.
7
+ *
8
+ * Funkce záměrně nezachytává accessor chyby. Volající hranice rozhoduje, zda je
9
+ * přeloží do Core validator failure nebo pozdější React render chyby.
10
+ */
11
+ export function classifyReactContributionImplementation(value, checkpoint = skipReactImplementationClassificationCheckpoint) {
12
+ checkpoint();
13
+ const eligible = typeof value === "function"
14
+ || (typeof value === "object" && value !== null && !Array.isArray(value));
15
+ checkpoint();
16
+ if (!eligible) {
17
+ return invalidClassification;
18
+ }
19
+ const target = value;
20
+ const kind = Reflect.get(target, "kind", target);
21
+ checkpoint();
22
+ if (kind !== "contrib-kit-react-lazy") {
23
+ return eagerClassification;
24
+ }
25
+ const load = Reflect.get(target, "load", target);
26
+ checkpoint();
27
+ if (typeof load !== "function") {
28
+ return invalidClassification;
29
+ }
30
+ return Object.freeze({
31
+ kind: "managedLazy",
32
+ load: load,
33
+ });
34
+ }
35
+ /** Výchozí checkpoint pro klasifikace bez consumer lifecycle autority. */
36
+ function skipReactImplementationClassificationCheckpoint() {
37
+ // Core activation validator žádný adapter state nepublikuje.
38
+ }
39
+ //# sourceMappingURL=implementation-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation-classifier.js","sourceRoot":"","sources":["../../src/internal/implementation-classifier.ts"],"names":[],"mappings":"AAYA,sEAAsE;AACtE,MAAM,mBAAmB,GAAsC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAEhG,0DAA0D;AAC1D,MAAM,qBAAqB,GAAsC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAEpG;;;;;GAKG;AACH,MAAM,UAAU,uCAAuC,CACtD,KAAc,EACd,UAAU,GAAgD,+CAA+C;IAEzG,UAAU,EAAE,CAAC;IACb,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,UAAU;WACxC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,UAAU,EAAE,CAAC;IACb,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,qBAAqB,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,KAAe,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC;IACb,IAAI,IAAI,KAAK,wBAAwB,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC;IACb,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,qBAAqB,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,IAA+B;KACrC,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,+CAA+C;IACvD,6DAA6D;AAC9D,CAAC"}
@@ -0,0 +1,100 @@
1
+ import type * as contribKitCore from "@primafuture/contrib-kit-core";
2
+ import * as react from "react";
3
+ import * as implementationClassifier from "./implementation-classifier.js";
4
+ /** Strukturální controller skrytý uvnitř exact lazy attemptu. */
5
+ export interface ManagedLazyAbortController {
6
+ /** Platformní signal předaný právě jednomu loader callu. */
7
+ readonly signal: contribKitCore.ContributionAbortSignal;
8
+ /** Synchronně dispatchne abort event vlastněného attemptu. */
9
+ abort(): void;
10
+ }
11
+ /** Factory čtená až v committed start microtasku, nikdy při renderu. */
12
+ export type ManagedLazyAbortControllerFactory = () => ManagedLazyAbortController;
13
+ /** Deterministický microtask seam pro start a Strict finalizaci. */
14
+ export type ManagedLazyMicrotaskScheduler = (callback: () => void) => void;
15
+ /** Připojí operation k committed scope epoše bez její render-time aktivace. */
16
+ export type ManagedLazyInvalidationRegistrar = (invalidate: () => ManagedLazyAbortDispatch) => contribKitCore.Unsubscribe;
17
+ /** Normalizovaná current chyba bez propouštění fulfilled business hodnoty. */
18
+ export type ManagedLazyGenerationFailure = {
19
+ /** Loader throw, rejection, thenable nebo platformní start failure. */
20
+ readonly code: "REACT_LAZY_LOAD_FAILED";
21
+ /** Přesný cizí cause zachycený load hranicí. */
22
+ readonly cause: unknown;
23
+ } | {
24
+ /** Fulfilled hodnota není eager React contribution componenta. */
25
+ readonly code: "REACT_POINT_IMPLEMENTATION_INVALID";
26
+ /** Optional classifier accessor cause bez raw fulfilled hodnoty. */
27
+ readonly cause?: unknown;
28
+ };
29
+ /** Host callbacky jedné boundary-owned UI retry generation. */
30
+ export interface ManagedLazyGenerationCallbacks {
31
+ /** Ověří exact membership, retry, outlet a scope autoritu. */
32
+ readonly isCurrent: () => boolean;
33
+ /** Publikuje jedinou eager componentu do current loading state. */
34
+ readonly onResolved: (component: unknown) => void;
35
+ /** Předá current load failure existující contribution pipeline. */
36
+ readonly onFailed: (failure: ManagedLazyGenerationFailure) => void;
37
+ /** Spotřebuje jeden settlement, který už nemá UI autoritu. */
38
+ readonly onLate: (outcome: "resolved" | "rejected") => void;
39
+ /** Publikuje best-effort lifecycle cleanup failure bez business autority. */
40
+ readonly onLifecycleFailure?: (cause: unknown) => void;
41
+ /** Připojí pending operation k exact committed scope epoše. */
42
+ readonly registerInvalidation?: ManagedLazyInvalidationRegistrar;
43
+ }
44
+ /** Volitelné interní seams pro deterministické lifecycle testy. */
45
+ export interface ManagedLazyGenerationOptions {
46
+ /** Factory controlleru volaná pouze po všech start gatech. */
47
+ readonly createAbortController?: ManagedLazyAbortControllerFactory;
48
+ /** Scheduler start/finalization microtasků. */
49
+ readonly scheduleMicrotask?: ManagedLazyMicrotaskScheduler;
50
+ }
51
+ /** Idempotentní abort dispatch oddělený od synchronní invalidace. */
52
+ export type ManagedLazyAbortDispatch = () => void;
53
+ /** Explicitní lifecycle stav jedné exact managed-lazy operation. */
54
+ export type ManagedLazyOperationState = "current" | "invalidated" | "awaiting-settlement" | "terminal";
55
+ /** Props effect-only hostu bez DOM wrapperu nebo render-time ownershipu. */
56
+ export interface ManagedLazyCommitLeaseProps {
57
+ /** Již renderovaný loading subtree; host přidá pouze effect lease. */
58
+ readonly children: react.ReactNode;
59
+ /** Exact resource-free operation current membership generation. */
60
+ readonly operation: ManagedLazyGenerationOperation;
61
+ }
62
+ /** No-op pro operation bez controlleru nebo již dispatchnutý abort. */
63
+ export declare function skipManagedLazyAbortDispatch(): void;
64
+ /**
65
+ * Jedna boundary-local retry generation s commit lease a nejvýše jedním attemptem.
66
+ */
67
+ export declare class ManagedLazyGenerationOperation {
68
+ #private;
69
+ /** Opaque identita UI generation odlišná od veřejného čísla retry. */
70
+ readonly generationToken: Readonly<{}>;
71
+ /** Opaque identita jediného povoleného loader attemptu. */
72
+ readonly loadAttemptToken: Readonly<{}>;
73
+ /** Monotonická public diagnostic generation owning boundary. */
74
+ readonly retryGeneration: number;
75
+ /** Zachytí operation inputs bez controlleru, Promise nebo host side effectu. */
76
+ constructor(retryGeneration: number, loader: implementationClassifier.CapturedReactLazyLoader, callbacks: ManagedLazyGenerationCallbacks, options?: ManagedLazyGenerationOptions);
77
+ /** Vrátí explicitní interní stav pro lifecycle orchestrace a testy. */
78
+ readState(): ManagedLazyOperationState;
79
+ /**
80
+ * Znovu naplánuje start po commitnutí nového outlet lease téže operation.
81
+ *
82
+ * React 18 a 19 smějí odlišně seřadit parent passive lease update vůči
83
+ * boundary microtasku. Recheck pouze znovu použije current effect lease;
84
+ * nevytvoří controller ani druhý loader attempt.
85
+ */
86
+ requestStartRecheck(): void;
87
+ /**
88
+ * Získá jednu passive-effect lease a naplánuje guarded start microtask.
89
+ */
90
+ acquireCommitLease(): () => void;
91
+ /**
92
+ * Synchronně odebere UI/start autoritu a vrátí oddělený abort dispatch.
93
+ */
94
+ invalidate(): ManagedLazyAbortDispatch;
95
+ }
96
+ /**
97
+ * Headless passive-effect host, který odděluje loading render od loader startu.
98
+ */
99
+ export declare function ManagedLazyCommitLease(props: ManagedLazyCommitLeaseProps): react.ReactElement;
100
+ //# sourceMappingURL=managed-lazy-generation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-lazy-generation.d.ts","sourceRoot":"","sources":["../../src/internal/managed-lazy-generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,419 @@
1
+ import * as react from "react";
2
+ import * as implementationClassifier from "./implementation-classifier.js";
3
+ /** Interní sentinel ukončující classifier po reentrantní ztrátě autority. */
4
+ const staleClassification = Object.freeze({ kind: "staleReactLazyClassification" });
5
+ /** No-op pro operation bez controlleru nebo již dispatchnutý abort. */
6
+ export function skipManagedLazyAbortDispatch() {
7
+ // Nenastartovaná nebo settled generation nemá fyzický controller k abortu.
8
+ }
9
+ /** Použije platformní microtask bez Node-specific importu. */
10
+ function schedulePlatformMicrotask(callback) {
11
+ queueMicrotask(callback);
12
+ }
13
+ /** Vytvoří AbortController až za committed start gate. */
14
+ function createPlatformAbortController() {
15
+ return new AbortController();
16
+ }
17
+ /** Pohltí neočekávaný trusted reaction throw bez druhého async kanálu. */
18
+ function ignoreManagedLazyReactionFailure() {
19
+ // Business outcome už zpracovala explicitní fulfilled/rejected reaction.
20
+ }
21
+ /**
22
+ * Jedna boundary-local retry generation s commit lease a nejvýše jedním attemptem.
23
+ */
24
+ export class ManagedLazyGenerationOperation {
25
+ /** Opaque identita UI generation odlišná od veřejného čísla retry. */
26
+ generationToken = Object.freeze({});
27
+ /** Opaque identita jediného povoleného loader attemptu. */
28
+ loadAttemptToken = Object.freeze({});
29
+ /** Monotonická public diagnostic generation owning boundary. */
30
+ retryGeneration;
31
+ /** Read-once loader reference zachycená membership classifierem. */
32
+ #loader;
33
+ /** Controller factory zachycená bez jejího render-time volání. */
34
+ #createAbortController;
35
+ /** Jediný scheduler všech commit lease microtasků. */
36
+ #scheduleMicrotask;
37
+ /** Current authority probe odstraněná při invalidaci. */
38
+ #isCurrentCallback;
39
+ /** UI success callback odstraněný před abort dispatchí. */
40
+ #onResolved;
41
+ /** UI failure callback odstraněný před abort dispatchí. */
42
+ #onFailed;
43
+ /** Late consumer ponechaný pouze do prvního terminal settlementu. */
44
+ #onLate;
45
+ /** Best-effort cleanup reporter zachycený před fyzickým abortem. */
46
+ #onLifecycleFailure;
47
+ /** Commit-only registrace invalidace do owning scope epochy. */
48
+ #registerInvalidation;
49
+ /** Idempotentní odpojení settled nebo lokálně invalidované operation. */
50
+ #unregisterInvalidation;
51
+ /** Controller existující pouze po autoritativním client startu. */
52
+ #controller;
53
+ /** Stabilní exactly-once dispatch vytvořený první invalidací. */
54
+ #abortDispatch = skipManagedLazyAbortDispatch;
55
+ /** Počet committed effect leases current Strict cycle. */
56
+ #leaseCount = 0;
57
+ /** Token rušící stale start a finalization microtasky. */
58
+ #lifecycleToken = 0;
59
+ /** Zabraňuje druhému loader/controller startu stejné generation. */
60
+ #started = false;
61
+ /** Jediný autoritativní lifecycle stav bez kombinace boolean příznaků. */
62
+ #state = "current";
63
+ /** Loader call již může vyprodukovat settlement, který je nutné spotřebovat. */
64
+ #settlementExpected = false;
65
+ /** Zachytí operation inputs bez controlleru, Promise nebo host side effectu. */
66
+ constructor(retryGeneration, loader, callbacks, options = {}) {
67
+ this.retryGeneration = retryGeneration;
68
+ this.#loader = loader;
69
+ this.#isCurrentCallback = callbacks.isCurrent;
70
+ this.#onResolved = callbacks.onResolved;
71
+ this.#onFailed = callbacks.onFailed;
72
+ this.#onLate = callbacks.onLate;
73
+ this.#onLifecycleFailure = callbacks.onLifecycleFailure;
74
+ this.#registerInvalidation = callbacks.registerInvalidation;
75
+ this.#createAbortController = options.createAbortController
76
+ ?? createPlatformAbortController;
77
+ this.#scheduleMicrotask = options.scheduleMicrotask ?? schedulePlatformMicrotask;
78
+ }
79
+ /** Vrátí explicitní interní stav pro lifecycle orchestrace a testy. */
80
+ readState() {
81
+ return this.#state;
82
+ }
83
+ /**
84
+ * Znovu naplánuje start po commitnutí nového outlet lease téže operation.
85
+ *
86
+ * React 18 a 19 smějí odlišně seřadit parent passive lease update vůči
87
+ * boundary microtasku. Recheck pouze znovu použije current effect lease;
88
+ * nevytvoří controller ani druhý loader attempt.
89
+ */
90
+ requestStartRecheck() {
91
+ if (this.#state !== "current" || this.#started || this.#leaseCount < 1) {
92
+ return;
93
+ }
94
+ this.#scheduleMicrotask(() => {
95
+ this.#start();
96
+ });
97
+ }
98
+ /**
99
+ * Získá jednu passive-effect lease a naplánuje guarded start microtask.
100
+ */
101
+ acquireCommitLease() {
102
+ if (this.#state !== "current") {
103
+ return skipManagedLazyAbortDispatch;
104
+ }
105
+ if (this.#unregisterInvalidation === undefined
106
+ && this.#registerInvalidation !== undefined) {
107
+ const unregister = this.#registerInvalidation(() => this.invalidate());
108
+ this.#unregisterInvalidation = unregister;
109
+ if (this.#state !== "current") {
110
+ this.#releaseInvalidationRegistration();
111
+ return skipManagedLazyAbortDispatch;
112
+ }
113
+ }
114
+ this.#leaseCount += 1;
115
+ this.#lifecycleToken += 1;
116
+ this.#scheduleMicrotask(() => {
117
+ // Exact current autoritu znovu ověřuje #start; starý Strict intent smí
118
+ // obsloužit bezprostředně reacquired lease stejné operation.
119
+ this.#start();
120
+ });
121
+ let active = true;
122
+ const operation = this;
123
+ /** Idempotentně release právě jednu effect lease. */
124
+ function releaseCommitLease() {
125
+ if (!active) {
126
+ return;
127
+ }
128
+ active = false;
129
+ operation.#leaseCount -= 1;
130
+ if (operation.#leaseCount !== 0 || operation.#state !== "current") {
131
+ return;
132
+ }
133
+ operation.#lifecycleToken += 1;
134
+ const finalizeToken = operation.#lifecycleToken;
135
+ operation.#scheduleMicrotask(() => {
136
+ if (operation.#lifecycleToken !== finalizeToken
137
+ || operation.#leaseCount !== 0
138
+ || operation.#state !== "current") {
139
+ return;
140
+ }
141
+ const dispatchAbort = operation.invalidate();
142
+ dispatchAbort();
143
+ });
144
+ }
145
+ return releaseCommitLease;
146
+ }
147
+ /**
148
+ * Synchronně odebere UI/start autoritu a vrátí oddělený abort dispatch.
149
+ */
150
+ invalidate() {
151
+ if (this.#state !== "current") {
152
+ return this.#abortDispatch;
153
+ }
154
+ this.#state = this.#settlementExpected ? "awaiting-settlement" : "invalidated";
155
+ this.#lifecycleToken += 1;
156
+ this.#isCurrentCallback = undefined;
157
+ this.#onResolved = undefined;
158
+ this.#onFailed = undefined;
159
+ this.#releaseInvalidationRegistration();
160
+ const controller = this.#controller;
161
+ this.#controller = undefined;
162
+ if (this.#state === "invalidated") {
163
+ this.#onLate = undefined;
164
+ }
165
+ if (controller === undefined) {
166
+ if (!this.#started) {
167
+ this.#state = "terminal";
168
+ this.#onLifecycleFailure = undefined;
169
+ }
170
+ return this.#abortDispatch;
171
+ }
172
+ const capturedController = controller;
173
+ const reportLifecycleFailure = this.#onLifecycleFailure;
174
+ this.#onLifecycleFailure = undefined;
175
+ const operation = this;
176
+ let dispatched = false;
177
+ /** Dispatchne odpojený controller nejvýše jednou a cleanup chybu pohltí. */
178
+ function dispatchManagedLazyAbort() {
179
+ if (dispatched) {
180
+ return;
181
+ }
182
+ dispatched = true;
183
+ try {
184
+ capturedController.abort();
185
+ }
186
+ catch (cause) {
187
+ try {
188
+ reportLifecycleFailure?.(cause);
189
+ }
190
+ catch {
191
+ // Diagnostic callback nemá cleanup ani business autoritu.
192
+ }
193
+ }
194
+ if (operation.#state === "invalidated") {
195
+ operation.#state = "terminal";
196
+ }
197
+ }
198
+ this.#abortDispatch = dispatchManagedLazyAbort;
199
+ return this.#abortDispatch;
200
+ }
201
+ /** Spustí loader pouze po opětovné kontrole celé commit autority. */
202
+ #start() {
203
+ if (this.#started || this.#state !== "current"
204
+ || this.#leaseCount < 1 || this.#isCurrentCallback?.() !== true) {
205
+ return;
206
+ }
207
+ this.#started = true;
208
+ let controller;
209
+ try {
210
+ controller = this.#createAbortController();
211
+ }
212
+ catch (cause) {
213
+ if (this.#state !== "current") {
214
+ this.#state = "terminal";
215
+ this.#clearCallbacks();
216
+ return;
217
+ }
218
+ this.#settleRejected(cause);
219
+ return;
220
+ }
221
+ this.#controller = controller;
222
+ if (this.#state !== "current" || !this.#isCurrent()) {
223
+ const dispatchAbort = this.#captureAbortDispatchAfterReentrantInvalidation();
224
+ dispatchAbort();
225
+ return;
226
+ }
227
+ const loadInput = Object.freeze({ signal: controller.signal });
228
+ let result;
229
+ this.#settlementExpected = true;
230
+ try {
231
+ result = Reflect.apply(this.#loader, undefined, [loadInput]);
232
+ }
233
+ catch (cause) {
234
+ this.#settleRejected(cause);
235
+ return;
236
+ }
237
+ let settlement;
238
+ try {
239
+ settlement = Promise.resolve(result);
240
+ }
241
+ catch (cause) {
242
+ this.#settleRejected(cause);
243
+ return;
244
+ }
245
+ /** Přijme fulfilled hodnotu pouze do exact owning operation. */
246
+ function handleResolved(operation, value) {
247
+ operation.#settleResolved(value);
248
+ }
249
+ /** Přijme rejected cause pouze do exact owning operation. */
250
+ function handleRejected(operation, cause) {
251
+ operation.#settleRejected(cause);
252
+ }
253
+ void settlement.then(handleResolved.bind(undefined, this), handleRejected.bind(undefined, this)).catch(ignoreManagedLazyReactionFailure);
254
+ }
255
+ /** Ověří current autoritu po každém observable classifier kroku. */
256
+ #assertCurrentClassification() {
257
+ if (!this.#isCurrent()) {
258
+ throw staleClassification;
259
+ }
260
+ }
261
+ /** Klasifikuje fulfilled value a publikuje pouze validní eager componentu. */
262
+ #settleResolved(value) {
263
+ if (this.#state === "terminal") {
264
+ return;
265
+ }
266
+ if (!this.#isCurrent()) {
267
+ this.#settleLate("resolved");
268
+ return;
269
+ }
270
+ let classification;
271
+ try {
272
+ classification = implementationClassifier.classifyReactContributionImplementation(value, () => {
273
+ this.#assertCurrentClassification();
274
+ });
275
+ }
276
+ catch (cause) {
277
+ if (cause === staleClassification || !this.#isCurrent()) {
278
+ this.#settleLate("resolved");
279
+ return;
280
+ }
281
+ this.#settleCurrentFailure(Object.freeze({
282
+ code: "REACT_POINT_IMPLEMENTATION_INVALID",
283
+ cause,
284
+ }));
285
+ return;
286
+ }
287
+ if (!this.#isCurrent()) {
288
+ this.#settleLate("resolved");
289
+ return;
290
+ }
291
+ if (classification.kind !== "eager") {
292
+ this.#settleCurrentFailure(Object.freeze({
293
+ code: "REACT_POINT_IMPLEMENTATION_INVALID",
294
+ }));
295
+ return;
296
+ }
297
+ this.#state = "terminal";
298
+ this.#settlementExpected = false;
299
+ this.#controller = undefined;
300
+ this.#releaseInvalidationRegistration();
301
+ const callback = this.#onResolved;
302
+ this.#clearCallbacks();
303
+ callback?.(value);
304
+ }
305
+ /** Přeloží loader throw/rejection podle current nebo late autority. */
306
+ #settleRejected(cause) {
307
+ if (this.#state === "terminal") {
308
+ return;
309
+ }
310
+ if (!this.#isCurrent()) {
311
+ this.#settleLate("rejected");
312
+ return;
313
+ }
314
+ this.#settleCurrentFailure(Object.freeze({
315
+ code: "REACT_LAZY_LOAD_FAILED",
316
+ cause,
317
+ }));
318
+ }
319
+ /** Terminalizuje current failure před reentrantní boundary pipeline. */
320
+ #settleCurrentFailure(failure) {
321
+ this.#state = "terminal";
322
+ this.#settlementExpected = false;
323
+ this.#controller = undefined;
324
+ this.#releaseInvalidationRegistration();
325
+ const callback = this.#onFailed;
326
+ this.#clearCallbacks();
327
+ callback?.(failure);
328
+ }
329
+ /** Spotřebuje právě jeden stale terminal outcome bez UI autority. */
330
+ #settleLate(outcome) {
331
+ this.#state = "terminal";
332
+ this.#settlementExpected = false;
333
+ this.#controller = undefined;
334
+ this.#releaseInvalidationRegistration();
335
+ const callback = this.#onLate;
336
+ this.#clearCallbacks();
337
+ callback?.(outcome);
338
+ }
339
+ /** Uvolní host callbacky a authority probe po terminal settlementu. */
340
+ #clearCallbacks() {
341
+ this.#isCurrentCallback = undefined;
342
+ this.#onResolved = undefined;
343
+ this.#onFailed = undefined;
344
+ this.#onLate = undefined;
345
+ this.#onLifecycleFailure = undefined;
346
+ }
347
+ /**
348
+ * Doplní controller vytvořený reentrantně až po předchozí invalidaci.
349
+ */
350
+ #captureAbortDispatchAfterReentrantInvalidation() {
351
+ if ((this.#state !== "invalidated" && this.#state !== "awaiting-settlement")
352
+ || this.#controller === undefined) {
353
+ return skipManagedLazyAbortDispatch;
354
+ }
355
+ const controller = this.#controller;
356
+ this.#controller = undefined;
357
+ const reportLifecycleFailure = this.#onLifecycleFailure;
358
+ this.#onLifecycleFailure = undefined;
359
+ const operation = this;
360
+ let dispatched = false;
361
+ /** Abortne pozdě připojený controller právě jednou. */
362
+ function dispatchLateControllerAbort() {
363
+ if (dispatched) {
364
+ return;
365
+ }
366
+ dispatched = true;
367
+ try {
368
+ controller.abort();
369
+ }
370
+ catch (cause) {
371
+ try {
372
+ reportLifecycleFailure?.(cause);
373
+ }
374
+ catch {
375
+ // Diagnostic callback nemá cleanup ani business autoritu.
376
+ }
377
+ }
378
+ if (operation.#state === "invalidated") {
379
+ operation.#state = "terminal";
380
+ }
381
+ }
382
+ this.#abortDispatch = dispatchLateControllerAbort;
383
+ return this.#abortDispatch;
384
+ }
385
+ /** Odpojí operation ze scope epochy bez vyvolání její invalidace. */
386
+ #releaseInvalidationRegistration() {
387
+ const unregister = this.#unregisterInvalidation;
388
+ this.#unregisterInvalidation = undefined;
389
+ try {
390
+ unregister?.();
391
+ }
392
+ catch (cause) {
393
+ try {
394
+ this.#onLifecycleFailure?.(cause);
395
+ }
396
+ catch {
397
+ // Diagnostic callback nemá lifecycle autoritu.
398
+ }
399
+ }
400
+ }
401
+ /** Otestuje lease i boundary callback bez inspekce loader výsledku. */
402
+ #isCurrent() {
403
+ return this.#state === "current"
404
+ && this.#leaseCount > 0
405
+ && this.#isCurrentCallback?.() === true;
406
+ }
407
+ }
408
+ /**
409
+ * Headless passive-effect host, který odděluje loading render od loader startu.
410
+ */
411
+ export function ManagedLazyCommitLease(props) {
412
+ react.useEffect(
413
+ /** Commit setup/release deleguje všechnu Strict autoritu exact operation. */
414
+ function acquireManagedLazyGeneration() {
415
+ return props.operation.acquireCommitLease();
416
+ }, [props.operation]);
417
+ return react.createElement(react.Fragment, null, props.children);
418
+ }
419
+ //# sourceMappingURL=managed-lazy-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-lazy-generation.js","sourceRoot":"","sources":["../../src/internal/managed-lazy-generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /** Privátní compile-time identita opaque outlet tokenu. */
2
+ declare const outletInstanceTokenBrand: unique symbol;
3
+ /** Render-pure opaque identita jedné budoucí outlet instance. */
4
+ export interface OutletInstanceToken {
5
+ /** Privátní invariant bez runtime property nebo globálního brandu. */
6
+ readonly [outletInstanceTokenBrand]: "outlet-instance";
7
+ }
8
+ /** Druh commit-owned diagnostické identity. */
9
+ export type OutletCommitOwnerKind = "outlet" | "boundary";
10
+ /** Interní commit lease s přesnou epochovou autoritou. */
11
+ export interface OutletCommitLease {
12
+ /** Scope-local opaque identita bez veřejného formátového kontraktu. */
13
+ readonly id: string;
14
+ /** Monotonická scope epocha, ve které lease vznikla. */
15
+ readonly epoch: number;
16
+ /** Ověří current lease, owner cycle i owning scope epoch. */
17
+ readonly isCurrent: () => boolean;
18
+ /** Idempotentně ukončí právě tuto committed lease. */
19
+ readonly release: () => void;
20
+ }
21
+ /** Deterministický microtask seam pro Strict grace finalizaci. */
22
+ export type OutletCommitLeaseScheduler = (callback: () => void) => void;
23
+ /** Probe přesné scope epochy bez převzetí jejího lifecycle. */
24
+ export type OutletCommitEpochProbe = (epoch: number) => boolean;
25
+ /** Vytvoří render-pure outlet token bez external identity nebo side effectu. */
26
+ export declare function createOutletInstanceToken(): OutletInstanceToken;
27
+ /**
28
+ * Scope-local allocator a Strict grace registr commit-owned diagnostických identit.
29
+ */
30
+ export declare class OutletCommitLeaseRegistry {
31
+ #private;
32
+ /** Zachytí jediný scheduler seam pro celý scope lifetime. */
33
+ constructor(scheduleMicrotask: OutletCommitLeaseScheduler);
34
+ /** Vrátí počet dosud nefinalizovaných owner records pro lifecycle testy. */
35
+ readRetainedOwnerCount(): number;
36
+ /**
37
+ * Přijme jednu committed lease; grace reacquire zachová existující ID.
38
+ */
39
+ acquire(epoch: number, kind: OutletCommitOwnerKind, token: object, isEpochCurrent: OutletCommitEpochProbe): OutletCommitLease;
40
+ /** Synchronně zneplatní všechny capability jedné scope epochy před cleanupem. */
41
+ invalidateEpoch(epoch: number): void;
42
+ /** Terminálně odstraní všechny owner records jedné retired scope epochy. */
43
+ retireEpoch(epoch: number): void;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=outlet-commit-lease.d.ts.map