@chidchanun/bcp 0.2.13 → 0.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +224 -99
- package/docs/README.md +40 -35
- package/docs/api-manifest.json +26 -10
- package/docs/api-reference.md +173 -29
- package/docs/docs-web-manifest.json +8 -4
- package/docs/platform-manifest.json +33 -4
- package/docs/plugin-module-platform.md +391 -0
- package/docs/releases/0.2.14.md +241 -0
- package/docs/releases/0.2.15.md +118 -0
- package/docs/testing-platform.md +602 -0
- package/package.json +11 -1
- package/packages/bundler/src/client-boundary.ts +2 -0
- package/packages/client/src/plugins.mjs +811 -0
- package/packages/client/src/plugins.ts +26 -0
- package/packages/client/src/realtime.mjs +67 -30
- package/packages/client/src/testing.mjs +2357 -0
- package/packages/client/src/testing.ts +52 -0
- package/packages/server/src/plugins.ts +1225 -0
- package/packages/server/src/realtime.ts +95 -41
- package/packages/server/src/testing-page.ts +274 -0
- package/packages/server/src/testing.ts +1884 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export {
|
|
2
|
+
createPluginHookBus,
|
|
3
|
+
createPluginHost,
|
|
4
|
+
createPluginServiceRegistry,
|
|
5
|
+
defineModule,
|
|
6
|
+
definePlugin,
|
|
7
|
+
PluginDependencyError,
|
|
8
|
+
PluginLifecycleError,
|
|
9
|
+
} from "../../server/src/plugins.js";
|
|
10
|
+
|
|
11
|
+
export type {
|
|
12
|
+
PluginConfigParser,
|
|
13
|
+
PluginConfigSchema,
|
|
14
|
+
PluginContext,
|
|
15
|
+
PluginDefinition,
|
|
16
|
+
PluginHookBus,
|
|
17
|
+
PluginHookHandler,
|
|
18
|
+
PluginHost,
|
|
19
|
+
PluginHostOptions,
|
|
20
|
+
PluginHostView,
|
|
21
|
+
PluginModule,
|
|
22
|
+
PluginRecord,
|
|
23
|
+
PluginServiceKey,
|
|
24
|
+
PluginServiceRegistry,
|
|
25
|
+
PluginState,
|
|
26
|
+
} from "../../server/src/plugins.js";
|
|
@@ -686,32 +686,62 @@ function createRealtimeSseResponse(hub, rawChannel, options = {}) {
|
|
|
686
686
|
options.keepAliveMs ?? 15e3,
|
|
687
687
|
"SSE keepAliveMs"
|
|
688
688
|
);
|
|
689
|
+
let closed = false;
|
|
690
|
+
let controller;
|
|
691
|
+
let timer;
|
|
692
|
+
let unsubscribe = () => void 0;
|
|
693
|
+
let abortListener;
|
|
694
|
+
const cleanup = () => {
|
|
695
|
+
if (closed) {
|
|
696
|
+
return false;
|
|
697
|
+
}
|
|
698
|
+
closed = true;
|
|
699
|
+
if (timer) {
|
|
700
|
+
clearTimeout(timer);
|
|
701
|
+
timer = void 0;
|
|
702
|
+
}
|
|
703
|
+
unsubscribe();
|
|
704
|
+
unsubscribe = () => void 0;
|
|
705
|
+
if (options.signal && abortListener) {
|
|
706
|
+
options.signal.removeEventListener(
|
|
707
|
+
"abort",
|
|
708
|
+
abortListener
|
|
709
|
+
);
|
|
710
|
+
abortListener = void 0;
|
|
711
|
+
}
|
|
712
|
+
return true;
|
|
713
|
+
};
|
|
714
|
+
const close = () => {
|
|
715
|
+
if (!cleanup()) {
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
const currentController = controller;
|
|
719
|
+
controller = void 0;
|
|
720
|
+
if (!currentController) {
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
try {
|
|
724
|
+
currentController.close();
|
|
725
|
+
} catch {
|
|
726
|
+
}
|
|
727
|
+
};
|
|
728
|
+
const write = (value) => {
|
|
729
|
+
const currentController = controller;
|
|
730
|
+
if (closed || !currentController) {
|
|
731
|
+
return;
|
|
732
|
+
}
|
|
733
|
+
try {
|
|
734
|
+
currentController.enqueue(
|
|
735
|
+
encoder.encode(value)
|
|
736
|
+
);
|
|
737
|
+
} catch {
|
|
738
|
+
cleanup();
|
|
739
|
+
controller = void 0;
|
|
740
|
+
}
|
|
741
|
+
};
|
|
689
742
|
const stream = new ReadableStream({
|
|
690
|
-
start(
|
|
691
|
-
|
|
692
|
-
let timer;
|
|
693
|
-
let unsubscribe = () => void 0;
|
|
694
|
-
const close = () => {
|
|
695
|
-
if (closed) {
|
|
696
|
-
return;
|
|
697
|
-
}
|
|
698
|
-
closed = true;
|
|
699
|
-
if (timer) {
|
|
700
|
-
clearTimeout(timer);
|
|
701
|
-
}
|
|
702
|
-
unsubscribe();
|
|
703
|
-
try {
|
|
704
|
-
controller.close();
|
|
705
|
-
} catch {
|
|
706
|
-
}
|
|
707
|
-
};
|
|
708
|
-
const write = (value) => {
|
|
709
|
-
if (!closed) {
|
|
710
|
-
controller.enqueue(
|
|
711
|
-
encoder.encode(value)
|
|
712
|
-
);
|
|
713
|
-
}
|
|
714
|
-
};
|
|
743
|
+
start(streamController) {
|
|
744
|
+
controller = streamController;
|
|
715
745
|
if (retryMs !== void 0) {
|
|
716
746
|
write(
|
|
717
747
|
`retry: ${retryMs}
|
|
@@ -744,28 +774,35 @@ function createRealtimeSseResponse(hub, rawChannel, options = {}) {
|
|
|
744
774
|
|
|
745
775
|
`
|
|
746
776
|
);
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
777
|
+
if (!closed) {
|
|
778
|
+
timer = setTimeout(
|
|
779
|
+
keepAlive,
|
|
780
|
+
keepAliveMs
|
|
781
|
+
);
|
|
782
|
+
}
|
|
751
783
|
};
|
|
752
784
|
timer = setTimeout(
|
|
753
785
|
keepAlive,
|
|
754
786
|
keepAliveMs
|
|
755
787
|
);
|
|
756
788
|
if (options.signal) {
|
|
789
|
+
abortListener = close;
|
|
757
790
|
if (options.signal.aborted) {
|
|
758
791
|
close();
|
|
759
792
|
return;
|
|
760
793
|
}
|
|
761
794
|
options.signal.addEventListener(
|
|
762
795
|
"abort",
|
|
763
|
-
|
|
796
|
+
abortListener,
|
|
764
797
|
{
|
|
765
798
|
once: true
|
|
766
799
|
}
|
|
767
800
|
);
|
|
768
801
|
}
|
|
802
|
+
},
|
|
803
|
+
cancel() {
|
|
804
|
+
cleanup();
|
|
805
|
+
controller = void 0;
|
|
769
806
|
}
|
|
770
807
|
});
|
|
771
808
|
const headers = new Headers(
|