every-plugin 2.10.0 → 3.0.0-rc.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.
- package/bin/every-plugin-serve.mjs +12 -0
- package/bin/every-plugin.mjs +59 -0
- package/dist/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/build/artifact-names.cjs +119 -0
- package/dist/build/artifact-names.cjs.map +1 -0
- package/dist/build/artifact-names.d.cts +68 -0
- package/dist/build/artifact-names.d.cts.map +1 -0
- package/dist/build/artifact-names.d.mts +68 -0
- package/dist/build/artifact-names.d.mts.map +1 -0
- package/dist/build/artifact-names.mjs +102 -0
- package/dist/build/artifact-names.mjs.map +1 -0
- package/dist/build/contract-types.cjs +89 -0
- package/dist/build/contract-types.cjs.map +1 -0
- package/dist/build/contract-types.mjs +81 -0
- package/dist/build/contract-types.mjs.map +1 -0
- package/dist/build/rspack/build-report-plugin.cjs +37 -0
- package/dist/build/rspack/build-report-plugin.cjs.map +1 -0
- package/dist/build/rspack/build-report-plugin.d.cts +18 -0
- package/dist/build/rspack/build-report-plugin.d.cts.map +1 -0
- package/dist/build/rspack/build-report-plugin.d.mts +18 -0
- package/dist/build/rspack/build-report-plugin.d.mts.map +1 -0
- package/dist/build/rspack/build-report-plugin.mjs +37 -0
- package/dist/build/rspack/build-report-plugin.mjs.map +1 -0
- package/dist/build/rspack/chunk-completeness-plugin.cjs +47 -0
- package/dist/build/rspack/chunk-completeness-plugin.cjs.map +1 -0
- package/dist/build/rspack/chunk-completeness-plugin.mjs +47 -0
- package/dist/build/rspack/chunk-completeness-plugin.mjs.map +1 -0
- package/dist/build/rspack/compose.cjs +69 -0
- package/dist/build/rspack/compose.cjs.map +1 -0
- package/dist/build/rspack/compose.d.cts +20 -0
- package/dist/build/rspack/compose.d.cts.map +1 -0
- package/dist/build/rspack/compose.d.mts +20 -0
- package/dist/build/rspack/compose.d.mts.map +1 -0
- package/dist/build/rspack/compose.mjs +65 -0
- package/dist/build/rspack/compose.mjs.map +1 -0
- package/dist/build/rspack/fix-mf-data-uri-plugin.cjs +11 -11
- package/dist/build/rspack/fix-mf-data-uri-plugin.cjs.map +1 -1
- package/dist/build/rspack/fix-mf-data-uri-plugin.d.cts +2 -0
- package/dist/build/rspack/fix-mf-data-uri-plugin.d.cts.map +1 -1
- package/dist/build/rspack/fix-mf-data-uri-plugin.d.mts +2 -0
- package/dist/build/rspack/fix-mf-data-uri-plugin.d.mts.map +1 -1
- package/dist/build/rspack/fix-mf-data-uri-plugin.mjs +11 -10
- package/dist/build/rspack/fix-mf-data-uri-plugin.mjs.map +1 -1
- package/dist/build/rspack/generated-config.cjs +35 -0
- package/dist/build/rspack/generated-config.cjs.map +1 -0
- package/dist/build/rspack/generated-config.mjs +32 -0
- package/dist/build/rspack/generated-config.mjs.map +1 -0
- package/dist/build/rspack/index.cjs +8 -5
- package/dist/build/rspack/index.d.cts +5 -3
- package/dist/build/rspack/index.d.mts +5 -3
- package/dist/build/rspack/index.mjs +5 -3
- package/dist/build/rspack/module-federation.cjs +2 -2
- package/dist/build/rspack/module-federation.cjs.map +1 -1
- package/dist/build/rspack/module-federation.mjs +1 -1
- package/dist/build/rspack/module-federation.mjs.map +1 -1
- package/dist/build/rspack/plugin.cjs +44 -69
- package/dist/build/rspack/plugin.cjs.map +1 -1
- package/dist/build/rspack/plugin.d.cts +4 -13
- package/dist/build/rspack/plugin.d.cts.map +1 -1
- package/dist/build/rspack/plugin.d.mts +4 -13
- package/dist/build/rspack/plugin.d.mts.map +1 -1
- package/dist/build/rspack/plugin.mjs +44 -69
- package/dist/build/rspack/plugin.mjs.map +1 -1
- package/dist/build/rspack/utils.cjs +7 -5
- package/dist/build/rspack/utils.cjs.map +1 -1
- package/dist/build/rspack/utils.mjs +7 -6
- package/dist/build/rspack/utils.mjs.map +1 -1
- package/dist/build/ui/factory.cjs +88 -0
- package/dist/build/ui/factory.cjs.map +1 -0
- package/dist/build/ui/factory.d.cts +11 -0
- package/dist/build/ui/factory.d.cts.map +1 -0
- package/dist/build/ui/factory.d.mts +11 -0
- package/dist/build/ui/factory.d.mts.map +1 -0
- package/dist/build/ui/factory.mjs +80 -0
- package/dist/build/ui/factory.mjs.map +1 -0
- package/dist/build/ui/generated-config.cjs +118 -0
- package/dist/build/ui/generated-config.cjs.map +1 -0
- package/dist/build/ui/generated-config.d.cts +33 -0
- package/dist/build/ui/generated-config.d.cts.map +1 -0
- package/dist/build/ui/generated-config.d.mts +33 -0
- package/dist/build/ui/generated-config.d.mts.map +1 -0
- package/dist/build/ui/generated-config.mjs +111 -0
- package/dist/build/ui/generated-config.mjs.map +1 -0
- package/dist/build/ui/hash-artifacts-plugin.cjs +61 -0
- package/dist/build/ui/hash-artifacts-plugin.cjs.map +1 -0
- package/dist/build/ui/hash-artifacts-plugin.d.cts +20 -0
- package/dist/build/ui/hash-artifacts-plugin.d.cts.map +1 -0
- package/dist/build/ui/hash-artifacts-plugin.d.mts +20 -0
- package/dist/build/ui/hash-artifacts-plugin.d.mts.map +1 -0
- package/dist/build/ui/hash-artifacts-plugin.mjs +58 -0
- package/dist/build/ui/hash-artifacts-plugin.mjs.map +1 -0
- package/dist/build/ui/index.cjs +90 -0
- package/dist/build/ui/index.cjs.map +1 -0
- package/dist/build/ui/index.d.cts +29 -0
- package/dist/build/ui/index.d.cts.map +1 -0
- package/dist/build/ui/index.d.mts +29 -0
- package/dist/build/ui/index.d.mts.map +1 -0
- package/dist/build/ui/index.mjs +68 -0
- package/dist/build/ui/index.mjs.map +1 -0
- package/dist/build/ui/manifest-plugin.cjs +37 -0
- package/dist/build/ui/manifest-plugin.cjs.map +1 -0
- package/dist/build/ui/manifest-plugin.d.cts +19 -0
- package/dist/build/ui/manifest-plugin.d.cts.map +1 -0
- package/dist/build/ui/manifest-plugin.d.mts +19 -0
- package/dist/build/ui/manifest-plugin.d.mts.map +1 -0
- package/dist/build/ui/manifest-plugin.mjs +37 -0
- package/dist/build/ui/manifest-plugin.mjs.map +1 -0
- package/dist/build/ui/rsbuild-config.cjs +203 -0
- package/dist/build/ui/rsbuild-config.cjs.map +1 -0
- package/dist/build/ui/rsbuild-config.d.cts +45 -0
- package/dist/build/ui/rsbuild-config.d.cts.map +1 -0
- package/dist/build/ui/rsbuild-config.d.mts +45 -0
- package/dist/build/ui/rsbuild-config.d.mts.map +1 -0
- package/dist/build/ui/rsbuild-config.mjs +200 -0
- package/dist/build/ui/rsbuild-config.mjs.map +1 -0
- package/dist/build/ui/stubs.cjs +107 -0
- package/dist/build/ui/stubs.cjs.map +1 -0
- package/dist/build/ui/stubs.d.cts +25 -0
- package/dist/build/ui/stubs.d.cts.map +1 -0
- package/dist/build/ui/stubs.d.mts +25 -0
- package/dist/build/ui/stubs.d.mts.map +1 -0
- package/dist/build/ui/stubs.mjs +106 -0
- package/dist/build/ui/stubs.mjs.map +1 -0
- package/dist/cli.cjs +83 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +6 -0
- package/dist/cli.d.cts.map +1 -0
- package/dist/cli.d.mts +6 -0
- package/dist/cli.d.mts.map +1 -0
- package/dist/cli.mjs +82 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/dev/serve.cjs +390 -0
- package/dist/dev/serve.cjs.map +1 -0
- package/dist/dev/serve.d.cts +23 -0
- package/dist/dev/serve.d.cts.map +1 -0
- package/dist/dev/serve.d.mts +23 -0
- package/dist/dev/serve.d.mts.map +1 -0
- package/dist/dev/serve.mjs +384 -0
- package/dist/dev/serve.mjs.map +1 -0
- package/dist/dev/watch-kill.cjs +39 -0
- package/dist/dev/watch-kill.cjs.map +1 -0
- package/dist/dev/watch-kill.mjs +38 -0
- package/dist/dev/watch-kill.mjs.map +1 -0
- package/dist/effect-helpers.cjs +23 -0
- package/dist/effect-helpers.cjs.map +1 -0
- package/dist/effect-helpers.d.cts +20 -0
- package/dist/effect-helpers.d.cts.map +1 -0
- package/dist/effect-helpers.d.mts +20 -0
- package/dist/effect-helpers.d.mts.map +1 -0
- package/dist/effect-helpers.mjs +22 -0
- package/dist/effect-helpers.mjs.map +1 -0
- package/dist/errors.cjs +49 -69
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.cts +13 -96
- package/dist/errors.d.cts.map +1 -1
- package/dist/errors.d.mts +13 -96
- package/dist/errors.d.mts.map +1 -1
- package/dist/errors.mjs +16 -34
- package/dist/errors.mjs.map +1 -1
- package/dist/identity.cjs +19 -0
- package/dist/identity.cjs.map +1 -0
- package/dist/identity.d.cts +33 -0
- package/dist/identity.d.cts.map +1 -0
- package/dist/identity.d.mts +33 -0
- package/dist/identity.d.mts.map +1 -0
- package/dist/identity.mjs +16 -0
- package/dist/identity.mjs.map +1 -0
- package/dist/index.cjs +8 -5
- package/dist/index.d.cts +8 -6
- package/dist/index.d.mts +8 -6
- package/dist/index.mjs +6 -4
- package/dist/plugin.cjs +12 -26
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts +44 -25
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.mts +45 -26
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +15 -29
- package/dist/plugin.mjs.map +1 -1
- package/dist/remote-entry.cjs +103 -0
- package/dist/remote-entry.cjs.map +1 -0
- package/dist/remote-entry.d.cts +53 -0
- package/dist/remote-entry.d.cts.map +1 -0
- package/dist/remote-entry.d.mts +53 -0
- package/dist/remote-entry.d.mts.map +1 -0
- package/dist/remote-entry.mjs +98 -0
- package/dist/remote-entry.mjs.map +1 -0
- package/dist/runtime/errors.cjs +140 -34
- package/dist/runtime/errors.cjs.map +1 -1
- package/dist/runtime/errors.d.cts +42 -7
- package/dist/runtime/errors.d.cts.map +1 -1
- package/dist/runtime/errors.d.mts +42 -7
- package/dist/runtime/errors.d.mts.map +1 -1
- package/dist/runtime/errors.mjs +136 -31
- package/dist/runtime/errors.mjs.map +1 -1
- package/dist/runtime/index.cjs +95 -23
- package/dist/runtime/index.cjs.map +1 -1
- package/dist/runtime/index.d.cts +16 -0
- package/dist/runtime/index.d.cts.map +1 -1
- package/dist/runtime/index.d.mts +16 -0
- package/dist/runtime/index.d.mts.map +1 -1
- package/dist/runtime/index.mjs +98 -26
- package/dist/runtime/index.mjs.map +1 -1
- package/dist/runtime/mf-config.cjs +3 -78
- package/dist/runtime/mf-config.cjs.map +1 -1
- package/dist/runtime/mf-config.d.cts +3 -49
- package/dist/runtime/mf-config.d.cts.map +1 -1
- package/dist/runtime/mf-config.d.mts +3 -49
- package/dist/runtime/mf-config.d.mts.map +1 -1
- package/dist/runtime/mf-config.mjs +5 -78
- package/dist/runtime/mf-config.mjs.map +1 -1
- package/dist/runtime/services/module-federation.service.cjs +63 -12
- package/dist/runtime/services/module-federation.service.cjs.map +1 -1
- package/dist/runtime/services/module-federation.service.d.cts +4 -13
- package/dist/runtime/services/module-federation.service.d.mts +4 -13
- package/dist/runtime/services/module-federation.service.mjs +63 -14
- package/dist/runtime/services/module-federation.service.mjs.map +1 -1
- package/dist/runtime/services/normalize.cjs +2 -22
- package/dist/runtime/services/normalize.d.cts +2 -21
- package/dist/runtime/services/normalize.d.mts +2 -21
- package/dist/runtime/services/normalize.mjs +2 -21
- package/dist/runtime/services/plugin-lifecycle.service.cjs +9 -11
- package/dist/runtime/services/plugin-lifecycle.service.cjs.map +1 -1
- package/dist/runtime/services/plugin-lifecycle.service.d.cts +3 -16
- package/dist/runtime/services/plugin-lifecycle.service.d.mts +3 -16
- package/dist/runtime/services/plugin-lifecycle.service.mjs +10 -13
- package/dist/runtime/services/plugin-lifecycle.service.mjs.map +1 -1
- package/dist/runtime/services/plugin-loader.service.cjs +30 -29
- package/dist/runtime/services/plugin-loader.service.cjs.map +1 -1
- package/dist/runtime/services/plugin-loader.service.d.cts +6 -53
- package/dist/runtime/services/plugin-loader.service.d.mts +6 -53
- package/dist/runtime/services/plugin-loader.service.mjs +29 -30
- package/dist/runtime/services/plugin-loader.service.mjs.map +1 -1
- package/dist/runtime/services/plugin.service.cjs +10 -12
- package/dist/runtime/services/plugin.service.cjs.map +1 -1
- package/dist/runtime/services/plugin.service.d.cts +14 -36
- package/dist/runtime/services/plugin.service.d.cts.map +1 -1
- package/dist/runtime/services/plugin.service.d.mts +14 -36
- package/dist/runtime/services/plugin.service.d.mts.map +1 -1
- package/dist/runtime/services/plugin.service.mjs +14 -18
- package/dist/runtime/services/plugin.service.mjs.map +1 -1
- package/dist/runtime/services/secrets.service.cjs +12 -12
- package/dist/runtime/services/secrets.service.cjs.map +1 -1
- package/dist/runtime/services/secrets.service.d.cts +3 -15
- package/dist/runtime/services/secrets.service.d.mts +3 -15
- package/dist/runtime/services/secrets.service.mjs +12 -13
- package/dist/runtime/services/secrets.service.mjs.map +1 -1
- package/dist/runtime/services/shared-identity.cjs +40 -0
- package/dist/runtime/services/shared-identity.cjs.map +1 -0
- package/dist/runtime/services/shared-identity.mjs +38 -0
- package/dist/runtime/services/shared-identity.mjs.map +1 -0
- package/dist/runtime/validation.cjs +2 -2
- package/dist/runtime/validation.cjs.map +1 -1
- package/dist/runtime/validation.mjs +2 -2
- package/dist/runtime/validation.mjs.map +1 -1
- package/dist/shared-deps-spec.cjs +384 -0
- package/dist/shared-deps-spec.cjs.map +1 -0
- package/dist/shared-deps-spec.d.cts +182 -0
- package/dist/shared-deps-spec.d.cts.map +1 -0
- package/dist/shared-deps-spec.d.mts +182 -0
- package/dist/shared-deps-spec.d.mts.map +1 -0
- package/dist/shared-deps-spec.mjs +368 -0
- package/dist/shared-deps-spec.mjs.map +1 -0
- package/dist/types.d.cts +22 -41
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +22 -41
- package/dist/types.d.mts.map +1 -1
- package/dist/ui/manifest/construct.cjs +268 -0
- package/dist/ui/manifest/construct.cjs.map +1 -0
- package/dist/ui/manifest/construct.d.cts +48 -0
- package/dist/ui/manifest/construct.d.cts.map +1 -0
- package/dist/ui/manifest/construct.d.mts +48 -0
- package/dist/ui/manifest/construct.d.mts.map +1 -0
- package/dist/ui/manifest/construct.mjs +268 -0
- package/dist/ui/manifest/construct.mjs.map +1 -0
- package/dist/ui/manifest/contract.cjs +34 -0
- package/dist/ui/manifest/contract.cjs.map +1 -0
- package/dist/ui/manifest/contract.d.cts +26 -0
- package/dist/ui/manifest/contract.d.cts.map +1 -0
- package/dist/ui/manifest/contract.d.mts +26 -0
- package/dist/ui/manifest/contract.d.mts.map +1 -0
- package/dist/ui/manifest/contract.mjs +26 -0
- package/dist/ui/manifest/contract.mjs.map +1 -0
- package/dist/ui/manifest/descriptor.cjs +64 -0
- package/dist/ui/manifest/descriptor.cjs.map +1 -0
- package/dist/ui/manifest/descriptor.d.cts +60 -0
- package/dist/ui/manifest/descriptor.d.cts.map +1 -0
- package/dist/ui/manifest/descriptor.d.mts +60 -0
- package/dist/ui/manifest/descriptor.d.mts.map +1 -0
- package/dist/ui/manifest/descriptor.mjs +61 -0
- package/dist/ui/manifest/descriptor.mjs.map +1 -0
- package/dist/ui/manifest/generator.cjs +128 -0
- package/dist/ui/manifest/generator.cjs.map +1 -0
- package/dist/ui/manifest/generator.d.cts +41 -0
- package/dist/ui/manifest/generator.d.cts.map +1 -0
- package/dist/ui/manifest/generator.d.mts +41 -0
- package/dist/ui/manifest/generator.d.mts.map +1 -0
- package/dist/ui/manifest/generator.mjs +125 -0
- package/dist/ui/manifest/generator.mjs.map +1 -0
- package/dist/ui/manifest/index.cjs +35 -0
- package/dist/ui/manifest/index.d.cts +9 -0
- package/dist/ui/manifest/index.d.mts +9 -0
- package/dist/ui/manifest/index.mjs +9 -0
- package/dist/ui/manifest/manifest-schema.cjs +97 -0
- package/dist/ui/manifest/manifest-schema.cjs.map +1 -0
- package/dist/ui/manifest/manifest-schema.d.cts +132 -0
- package/dist/ui/manifest/manifest-schema.d.cts.map +1 -0
- package/dist/ui/manifest/manifest-schema.d.mts +132 -0
- package/dist/ui/manifest/manifest-schema.d.mts.map +1 -0
- package/dist/ui/manifest/manifest-schema.mjs +90 -0
- package/dist/ui/manifest/manifest-schema.mjs.map +1 -0
- package/dist/ui/manifest/mount-registry.cjs +52 -0
- package/dist/ui/manifest/mount-registry.cjs.map +1 -0
- package/dist/ui/manifest/mount-registry.d.cts +61 -0
- package/dist/ui/manifest/mount-registry.d.cts.map +1 -0
- package/dist/ui/manifest/mount-registry.d.mts +61 -0
- package/dist/ui/manifest/mount-registry.d.mts.map +1 -0
- package/dist/ui/manifest/mount-registry.mjs +48 -0
- package/dist/ui/manifest/mount-registry.mjs.map +1 -0
- package/dist/ui/manifest/nav.cjs +13 -0
- package/dist/ui/manifest/nav.cjs.map +1 -0
- package/dist/ui/manifest/nav.d.cts +34 -0
- package/dist/ui/manifest/nav.d.cts.map +1 -0
- package/dist/ui/manifest/nav.d.mts +34 -0
- package/dist/ui/manifest/nav.d.mts.map +1 -0
- package/dist/ui/manifest/nav.mjs +13 -0
- package/dist/ui/manifest/nav.mjs.map +1 -0
- package/dist/ui/manifest/route-config.cjs +33 -0
- package/dist/ui/manifest/route-config.cjs.map +1 -0
- package/dist/ui/manifest/route-config.d.cts +40 -0
- package/dist/ui/manifest/route-config.d.cts.map +1 -0
- package/dist/ui/manifest/route-config.d.mts +40 -0
- package/dist/ui/manifest/route-config.d.mts.map +1 -0
- package/dist/ui/manifest/route-config.mjs +33 -0
- package/dist/ui/manifest/route-config.mjs.map +1 -0
- package/dist/version-manifest.cjs +65 -0
- package/dist/version-manifest.cjs.map +1 -0
- package/dist/version-manifest.d.cts +52 -0
- package/dist/version-manifest.d.cts.map +1 -0
- package/dist/version-manifest.d.mts +52 -0
- package/dist/version-manifest.d.mts.map +1 -0
- package/dist/version-manifest.mjs +63 -0
- package/dist/version-manifest.mjs.map +1 -0
- package/package.json +165 -68
- package/skills/plugin-client/SKILL.md +24 -5
- package/skills/plugin-development/SKILL.md +79 -47
- package/skills/plugin-testing/SKILL.md +41 -12
- package/src/build/artifact-names.ts +117 -0
- package/src/build/contract-types.ts +101 -0
- package/src/build/rspack/build-report-plugin.ts +34 -0
- package/src/build/rspack/chunk-completeness-plugin.ts +57 -0
- package/src/build/rspack/compose.ts +87 -0
- package/src/build/rspack/fix-mf-data-uri-plugin.ts +23 -12
- package/src/build/rspack/generated-config.ts +35 -0
- package/src/build/rspack/index.ts +10 -5
- package/src/build/rspack/module-federation.ts +1 -1
- package/src/build/rspack/plugin.ts +103 -105
- package/src/build/rspack/utils.ts +8 -2
- package/src/build/ui/factory.ts +96 -0
- package/src/build/ui/generated-config.ts +133 -0
- package/src/build/ui/hash-artifacts-plugin.ts +79 -0
- package/src/build/ui/index.ts +98 -0
- package/src/build/ui/manifest-plugin.ts +54 -0
- package/src/build/ui/rsbuild-config.ts +256 -0
- package/src/build/ui/stubs.ts +103 -0
- package/src/cli.ts +100 -0
- package/src/dev/serve.ts +477 -0
- package/src/dev/watch-kill.ts +58 -0
- package/src/effect-helpers.ts +25 -0
- package/src/errors.ts +16 -18
- package/src/identity.ts +36 -0
- package/src/index.ts +4 -0
- package/src/plugin.ts +70 -92
- package/src/remote-entry.ts +171 -0
- package/src/runtime/errors.ts +186 -27
- package/src/runtime/index.ts +132 -43
- package/src/runtime/mf-config.ts +12 -107
- package/src/runtime/services/module-federation.service.ts +221 -117
- package/src/runtime/services/normalize.ts +1 -18
- package/src/runtime/services/plugin-lifecycle.service.ts +66 -75
- package/src/runtime/services/plugin-loader.service.ts +239 -212
- package/src/runtime/services/plugin.service.ts +61 -43
- package/src/runtime/services/secrets.service.ts +20 -15
- package/src/runtime/services/shared-identity.ts +68 -0
- package/src/runtime/validation.ts +5 -7
- package/src/shared-deps-spec.ts +478 -0
- package/src/types.ts +22 -48
- package/src/ui/manifest/construct.ts +403 -0
- package/src/ui/manifest/contract.ts +33 -0
- package/src/ui/manifest/descriptor.ts +96 -0
- package/src/ui/manifest/generator.ts +238 -0
- package/src/ui/manifest/index.ts +55 -0
- package/src/ui/manifest/manifest-schema.ts +107 -0
- package/src/ui/manifest/mount-registry.ts +50 -0
- package/src/ui/manifest/nav.ts +43 -0
- package/src/ui/manifest/route-config.ts +82 -0
- package/src/version-manifest.ts +88 -0
- package/dist/build/rspack/dev-server-middleware.cjs +0 -194
- package/dist/build/rspack/dev-server-middleware.cjs.map +0 -1
- package/dist/build/rspack/dev-server-middleware.mjs +0 -193
- package/dist/build/rspack/dev-server-middleware.mjs.map +0 -1
- package/dist/build/shared-deps.cjs +0 -83
- package/dist/build/shared-deps.cjs.map +0 -1
- package/dist/build/shared-deps.d.cts +0 -67
- package/dist/build/shared-deps.d.cts.map +0 -1
- package/dist/build/shared-deps.d.mts +0 -67
- package/dist/build/shared-deps.d.mts.map +0 -1
- package/dist/build/shared-deps.mjs +0 -79
- package/dist/build/shared-deps.mjs.map +0 -1
- package/dist/effect.cjs +0 -9
- package/dist/effect.d.cts +0 -1
- package/dist/effect.d.mts +0 -1
- package/dist/effect.mjs +0 -3
- package/dist/orpc-openapi.cjs +0 -17
- package/dist/orpc-openapi.d.cts +0 -2
- package/dist/orpc-openapi.d.mts +0 -2
- package/dist/orpc-openapi.mjs +0 -5
- package/dist/orpc.cjs +0 -46
- package/dist/orpc.d.cts +0 -7
- package/dist/orpc.d.mts +0 -7
- package/dist/orpc.mjs +0 -11
- package/dist/package.cjs +0 -23
- package/dist/package.cjs.map +0 -1
- package/dist/package.mjs +0 -17
- package/dist/package.mjs.map +0 -1
- package/dist/runtime/services/module-federation.service.d.cts.map +0 -1
- package/dist/runtime/services/module-federation.service.d.mts.map +0 -1
- package/dist/runtime/services/normalize.cjs.map +0 -1
- package/dist/runtime/services/normalize.d.cts.map +0 -1
- package/dist/runtime/services/normalize.d.mts.map +0 -1
- package/dist/runtime/services/normalize.mjs.map +0 -1
- package/dist/runtime/services/plugin-lifecycle.service.d.cts.map +0 -1
- package/dist/runtime/services/plugin-lifecycle.service.d.mts.map +0 -1
- package/dist/runtime/services/plugin-loader.service.d.cts.map +0 -1
- package/dist/runtime/services/plugin-loader.service.d.mts.map +0 -1
- package/dist/runtime/services/secrets.service.d.cts.map +0 -1
- package/dist/runtime/services/secrets.service.d.mts.map +0 -1
- package/dist/testing/index.cjs +0 -57
- package/dist/testing/index.cjs.map +0 -1
- package/dist/testing/index.d.cts +0 -54
- package/dist/testing/index.d.cts.map +0 -1
- package/dist/testing/index.d.mts +0 -54
- package/dist/testing/index.d.mts.map +0 -1
- package/dist/testing/index.mjs +0 -55
- package/dist/testing/index.mjs.map +0 -1
- package/dist/zod-core.cjs +0 -9
- package/dist/zod-core.d.cts +0 -1
- package/dist/zod-core.d.mts +0 -1
- package/dist/zod-core.mjs +0 -3
- package/dist/zod.cjs +0 -11
- package/dist/zod.d.cts +0 -2
- package/dist/zod.d.mts +0 -2
- package/dist/zod.mjs +0 -3
- package/src/build/rspack/dev-server-middleware.ts +0 -250
- package/src/build/shared-deps.ts +0 -102
- package/src/effect.ts +0 -1
- package/src/orpc-openapi.ts +0 -2
- package/src/orpc.ts +0 -9
- package/src/testing/index.ts +0 -87
- package/src/testing/mocks/module-federation.service.ts +0 -41
- package/src/zod-core.ts +0 -1
- package/src/zod.ts +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/runtime/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/runtime/index.ts"],"mappings":";;;;;;cA2Ba,cAAc,IAAI;UASnB;UACA;WATD,iBAAiB;UAElB;UACA;UACA;UACA;EAER,YACU,SAAS,eAAe,eAAe,uBACvC,UAAU;;;;;;;;;;UAYZ;UAIA;UAmDA;UAQA;UAaM;EAcR,UAAU,gBAAgB,YAC9B,UAAU,GACV,QAAQ,kBAAkB,EAAE,KAC5B,UAAU,0BACT,QAAQ,gBAAgB,GAAG;EAgExB,WAAW,gBAAgB,YAC/B,UAAU,IACT,QAAQ,aAAa,iBAAiB,GAAG;EAQtC,kBAAkB,gBAAgB,YACtC,UAAU,GACV,cAAc,aAAa,iBAAiB,GAAG,MAC9C,QAAQ,eAAe,iBAAiB,GAAG;EAQxC,iBAAiB,UAAU,WAC/B,UAAU,eAAe,IACzB,aACA,UAAU,0BACT,QAAQ,kBAAkB;EAUvB,YAAY;EAcZ,YAAY,gBAAgB,YAChC,UAAU,GACV,QAAQ,kBAAkB,EAAE,KAC5B,UAAU,0BACT;;;;;;;;;;;;;;;;;;;;iBA8FW,oBAAoB,kBAAkB,eAAe,sBACnE,QAAQ,oBAAoB,aAC3B,cAAc,yBAAyB"}
|
package/dist/runtime/index.d.mts
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
import { AnyPlugin, InferRegistryFromEntries, InitializedPlugin, LoadedPlugin, PluginConfigInput, PluginInstance, PluginRegistry, PluginRegistryEntry, PluginRuntimeConfig, RegisteredPlugin, RegisteredPlugins, UsePluginResult } from "../types.mjs";
|
|
2
2
|
import { PluginService } from "./services/plugin.service.mjs";
|
|
3
|
+
import "@orpc/openapi/extensions/route";
|
|
3
4
|
import { ManagedRuntime } from "effect";
|
|
5
|
+
import "@orpc/experimental-effect/extensions/effect";
|
|
4
6
|
//#region src/runtime/index.d.ts
|
|
5
7
|
declare class PluginRuntime<R = RegisteredPlugins> {
|
|
6
8
|
private runtime;
|
|
7
9
|
private registry;
|
|
8
10
|
readonly __registryType?: R;
|
|
9
11
|
private pluginCache;
|
|
12
|
+
private routerCache;
|
|
13
|
+
private cacheLeafIds;
|
|
14
|
+
private nextCacheLeafId;
|
|
10
15
|
constructor(runtime: ManagedRuntime.ManagedRuntime<PluginService, never>, registry: PluginRegistry);
|
|
16
|
+
/**
|
|
17
|
+
* Cache key for plugin instances: JSON-equal configs share one plugin
|
|
18
|
+
* instance (variables and secrets originate from bos.config.json, so they
|
|
19
|
+
* are JSON values). Values outside the JSON domain follow Effect's Hash
|
|
20
|
+
* semantics — symbols key by description, functions and class instances by
|
|
21
|
+
* reference identity — and the host creates its pluginsClient map once per
|
|
22
|
+
* boot, making identity the correct equivalence for function-bearing
|
|
23
|
+
* configs.
|
|
24
|
+
*/
|
|
11
25
|
private generateCacheKey;
|
|
26
|
+
private canonicalizeConfig;
|
|
27
|
+
private getCacheLeafId;
|
|
12
28
|
private validatePluginId;
|
|
13
29
|
private runPromise;
|
|
14
30
|
usePlugin<K extends keyof R & string>(pluginId: K, config: PluginConfigInput<R[K]>, plugins?: Record<string, unknown>): Promise<UsePluginResult<K, R>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/runtime/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/runtime/index.ts"],"mappings":";;;;;;cA2Ba,cAAc,IAAI;UASnB;UACA;WATD,iBAAiB;UAElB;UACA;UACA;UACA;EAER,YACU,SAAS,eAAe,eAAe,uBACvC,UAAU;;;;;;;;;;UAYZ;UAIA;UAmDA;UAQA;UAaM;EAcR,UAAU,gBAAgB,YAC9B,UAAU,GACV,QAAQ,kBAAkB,EAAE,KAC5B,UAAU,0BACT,QAAQ,gBAAgB,GAAG;EAgExB,WAAW,gBAAgB,YAC/B,UAAU,IACT,QAAQ,aAAa,iBAAiB,GAAG;EAQtC,kBAAkB,gBAAgB,YACtC,UAAU,GACV,cAAc,aAAa,iBAAiB,GAAG,MAC9C,QAAQ,eAAe,iBAAiB,GAAG;EAQxC,iBAAiB,UAAU,WAC/B,UAAU,eAAe,IACzB,aACA,UAAU,0BACT,QAAQ,kBAAkB;EAUvB,YAAY;EAcZ,YAAY,gBAAgB,YAChC,UAAU,GACV,QAAQ,kBAAkB,EAAE,KAC5B,UAAU,0BACT;;;;;;;;;;;;;;;;;;;;iBA8FW,oBAAoB,kBAAkB,eAAe,sBACnE,QAAQ,oBAAoB,aAC3B,cAAc,yBAAyB"}
|
package/dist/runtime/index.mjs
CHANGED
|
@@ -1,34 +1,84 @@
|
|
|
1
|
-
import { PluginRuntimeError } from "./errors.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { PluginRuntimeError, toPluginRuntimeError } from "./errors.mjs";
|
|
2
|
+
import { DEV_ENTRY_FILENAME } from "../build/artifact-names.mjs";
|
|
3
|
+
import { PluginService, PluginServiceLive } from "./services/plugin.service.mjs";
|
|
4
|
+
import "@orpc/openapi/extensions/route";
|
|
5
|
+
import { Cause, Effect, Exit, ManagedRuntime, Option } from "effect";
|
|
4
6
|
import { createRouterClient } from "@orpc/server";
|
|
7
|
+
import "@orpc/experimental-effect/extensions/effect";
|
|
5
8
|
|
|
6
9
|
//#region src/runtime/index.ts
|
|
10
|
+
const MAX_CACHE_KEY_DEPTH = 32;
|
|
7
11
|
var PluginRuntime = class {
|
|
8
12
|
runtime;
|
|
9
13
|
registry;
|
|
10
14
|
__registryType;
|
|
11
15
|
pluginCache = /* @__PURE__ */ new Map();
|
|
16
|
+
routerCache = /* @__PURE__ */ new Map();
|
|
17
|
+
cacheLeafIds = /* @__PURE__ */ new WeakMap();
|
|
18
|
+
nextCacheLeafId = 0;
|
|
12
19
|
constructor(runtime, registry) {
|
|
13
20
|
this.runtime = runtime;
|
|
14
21
|
this.registry = registry;
|
|
15
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Cache key for plugin instances: JSON-equal configs share one plugin
|
|
25
|
+
* instance (variables and secrets originate from bos.config.json, so they
|
|
26
|
+
* are JSON values). Values outside the JSON domain follow Effect's Hash
|
|
27
|
+
* semantics — symbols key by description, functions and class instances by
|
|
28
|
+
* reference identity — and the host creates its pluginsClient map once per
|
|
29
|
+
* boot, making identity the correct equivalence for function-bearing
|
|
30
|
+
* configs.
|
|
31
|
+
*/
|
|
16
32
|
generateCacheKey(pluginId, config) {
|
|
17
|
-
return `${pluginId}:${
|
|
33
|
+
return `${pluginId}:${this.canonicalizeConfig(config, 0, /* @__PURE__ */ new Set())}`;
|
|
34
|
+
}
|
|
35
|
+
canonicalizeConfig(value, depth, ancestors) {
|
|
36
|
+
switch (typeof value) {
|
|
37
|
+
case "undefined": return "undefined";
|
|
38
|
+
case "string": return `string:${JSON.stringify(value)}`;
|
|
39
|
+
case "number": return `number:${Object.is(value, -0) ? "-0" : String(value)}`;
|
|
40
|
+
case "bigint": return `bigint:${value.toString()}`;
|
|
41
|
+
case "boolean": return `boolean:${value}`;
|
|
42
|
+
case "symbol": return `symbol:${String(value)}`;
|
|
43
|
+
case "function": return `ref:${this.getCacheLeafId(value)}`;
|
|
44
|
+
case "object": {
|
|
45
|
+
if (value === null) return "null";
|
|
46
|
+
if (ancestors.has(value) || depth >= MAX_CACHE_KEY_DEPTH) return `ref:${this.getCacheLeafId(value)}`;
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
ancestors.add(value);
|
|
49
|
+
const serialized = `[${value.map((item) => this.canonicalizeConfig(item, depth + 1, ancestors)).join(",")}]`;
|
|
50
|
+
ancestors.delete(value);
|
|
51
|
+
return serialized;
|
|
52
|
+
}
|
|
53
|
+
const prototype = Object.getPrototypeOf(value);
|
|
54
|
+
if (prototype !== Object.prototype && prototype !== null) return `ref:${this.getCacheLeafId(value)}`;
|
|
55
|
+
const record = value;
|
|
56
|
+
ancestors.add(value);
|
|
57
|
+
const serialized = `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${this.canonicalizeConfig(record[key], depth + 1, ancestors)}`).join(",")}}`;
|
|
58
|
+
ancestors.delete(value);
|
|
59
|
+
return serialized;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
getCacheLeafId(value) {
|
|
64
|
+
const existing = this.cacheLeafIds.get(value);
|
|
65
|
+
if (existing !== void 0) return existing;
|
|
66
|
+
const id = this.nextCacheLeafId++;
|
|
67
|
+
this.cacheLeafIds.set(value, id);
|
|
68
|
+
return id;
|
|
18
69
|
}
|
|
19
70
|
validatePluginId(pluginId) {
|
|
20
71
|
if (!(pluginId in this.registry)) return Effect.fail(new PluginRuntimeError({
|
|
21
72
|
pluginId: String(pluginId),
|
|
22
73
|
operation: "validate-plugin-id",
|
|
23
|
-
cause: /* @__PURE__ */ new Error(`Plugin ID '${String(pluginId)}' not found in registry.`)
|
|
24
|
-
retryable: false
|
|
74
|
+
cause: /* @__PURE__ */ new Error(`Plugin ID '${String(pluginId)}' not found in registry.`)
|
|
25
75
|
}));
|
|
26
76
|
return Effect.succeed(String(pluginId));
|
|
27
77
|
}
|
|
28
78
|
async runPromise(effect) {
|
|
29
79
|
const exit = await this.runtime.runPromiseExit(effect);
|
|
30
80
|
if (Exit.isFailure(exit)) {
|
|
31
|
-
const error = Cause.
|
|
81
|
+
const error = Cause.findErrorOption(exit.cause);
|
|
32
82
|
if (Option.isSome(error)) throw error.value;
|
|
33
83
|
throw Cause.squash(exit.cause);
|
|
34
84
|
}
|
|
@@ -41,7 +91,7 @@ var PluginRuntime = class {
|
|
|
41
91
|
});
|
|
42
92
|
let cachedPlugin = this.pluginCache.get(cacheKey);
|
|
43
93
|
if (!cachedPlugin) {
|
|
44
|
-
const operation = Effect.gen(this, function* () {
|
|
94
|
+
const operation = Effect.gen({ self: this }, function* () {
|
|
45
95
|
const pluginService = yield* PluginService;
|
|
46
96
|
const validatedId = yield* this.validatePluginId(pluginId);
|
|
47
97
|
const ctor = yield* pluginService.loadPlugin(validatedId);
|
|
@@ -49,19 +99,32 @@ var PluginRuntime = class {
|
|
|
49
99
|
const initialized = yield* pluginService.initializePlugin(instance, config, plugins);
|
|
50
100
|
yield* pluginService.registerPlugin(initialized);
|
|
51
101
|
return initialized;
|
|
52
|
-
})
|
|
53
|
-
cachedPlugin =
|
|
102
|
+
});
|
|
103
|
+
cachedPlugin = this.runPromise(operation);
|
|
54
104
|
this.pluginCache.set(cacheKey, cachedPlugin);
|
|
55
105
|
}
|
|
56
106
|
let initialized;
|
|
57
107
|
try {
|
|
58
|
-
initialized = await
|
|
108
|
+
initialized = await cachedPlugin;
|
|
59
109
|
} catch (error) {
|
|
60
|
-
this.pluginCache.
|
|
110
|
+
if (this.pluginCache.get(cacheKey) === cachedPlugin) {
|
|
111
|
+
this.pluginCache.delete(cacheKey);
|
|
112
|
+
this.routerCache.delete(cacheKey);
|
|
113
|
+
}
|
|
61
114
|
throw error;
|
|
62
115
|
}
|
|
63
|
-
|
|
64
|
-
|
|
116
|
+
let router = this.routerCache.get(cacheKey);
|
|
117
|
+
if (!router) try {
|
|
118
|
+
router = initialized.plugin.createRouter(plugins ?? {});
|
|
119
|
+
this.routerCache.set(cacheKey, router);
|
|
120
|
+
} catch (error) {
|
|
121
|
+
await this.evictPlugin(pluginId, config, plugins);
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
const createClient = (context) => createRouterClient(router, { context: {
|
|
125
|
+
...context,
|
|
126
|
+
"effect/context": initialized.effectContext
|
|
127
|
+
} });
|
|
65
128
|
return {
|
|
66
129
|
createClient,
|
|
67
130
|
router,
|
|
@@ -72,13 +135,13 @@ var PluginRuntime = class {
|
|
|
72
135
|
async loadPlugin(pluginId) {
|
|
73
136
|
const effect = Effect.gen(function* () {
|
|
74
137
|
return yield* (yield* PluginService).loadPlugin(pluginId);
|
|
75
|
-
})
|
|
138
|
+
});
|
|
76
139
|
return this.runPromise(effect);
|
|
77
140
|
}
|
|
78
141
|
async instantiatePlugin(pluginId, loadedPlugin) {
|
|
79
142
|
const effect = Effect.gen(function* () {
|
|
80
143
|
return yield* (yield* PluginService).instantiatePlugin(pluginId, loadedPlugin);
|
|
81
|
-
})
|
|
144
|
+
});
|
|
82
145
|
return this.runPromise(effect);
|
|
83
146
|
}
|
|
84
147
|
async initializePlugin(instance, config, plugins) {
|
|
@@ -87,30 +150,39 @@ var PluginRuntime = class {
|
|
|
87
150
|
const initialized = yield* pluginService.initializePlugin(instance, config, plugins);
|
|
88
151
|
yield* pluginService.registerPlugin(initialized);
|
|
89
152
|
return initialized;
|
|
90
|
-
})
|
|
153
|
+
});
|
|
91
154
|
return this.runPromise(effect);
|
|
92
155
|
}
|
|
93
156
|
async shutdown() {
|
|
94
157
|
const effect = Effect.gen(function* () {
|
|
95
|
-
yield* (yield* PluginService).cleanup
|
|
158
|
+
yield* (yield* PluginService).cleanup;
|
|
96
159
|
});
|
|
97
|
-
|
|
98
|
-
|
|
160
|
+
try {
|
|
161
|
+
await this.runPromise(effect);
|
|
162
|
+
} finally {
|
|
163
|
+
this.pluginCache.clear();
|
|
164
|
+
this.routerCache.clear();
|
|
165
|
+
await this.runtime.dispose();
|
|
166
|
+
}
|
|
99
167
|
}
|
|
100
168
|
async evictPlugin(pluginId, config, plugins) {
|
|
101
169
|
const cacheKey = this.generateCacheKey(pluginId, {
|
|
102
170
|
...config,
|
|
103
171
|
__plugins: plugins ?? {}
|
|
104
172
|
});
|
|
105
|
-
const effect = Effect.gen(this, function* () {
|
|
173
|
+
const effect = Effect.gen({ self: this }, function* () {
|
|
106
174
|
const pluginService = yield* PluginService;
|
|
107
175
|
const cachedPlugin = this.pluginCache.get(cacheKey);
|
|
108
176
|
if (cachedPlugin) {
|
|
109
177
|
this.pluginCache.delete(cacheKey);
|
|
110
|
-
|
|
111
|
-
|
|
178
|
+
this.routerCache.delete(cacheKey);
|
|
179
|
+
const pluginResult = yield* Effect.tryPromise({
|
|
180
|
+
try: () => cachedPlugin,
|
|
181
|
+
catch: (error) => toPluginRuntimeError(error, pluginId, void 0, "evict-plugin")
|
|
182
|
+
}).pipe(Effect.orElseSucceed(() => null));
|
|
183
|
+
if (pluginResult) yield* pluginService.shutdownPlugin(pluginResult);
|
|
112
184
|
}
|
|
113
|
-
})
|
|
185
|
+
});
|
|
114
186
|
return this.runPromise(effect);
|
|
115
187
|
}
|
|
116
188
|
};
|
|
@@ -121,7 +193,7 @@ var PluginRuntime = class {
|
|
|
121
193
|
function normalizeRemoteUrl(url) {
|
|
122
194
|
if (!url) return url;
|
|
123
195
|
if (url.endsWith(".js") || url.endsWith(".json")) return url;
|
|
124
|
-
return `${url.endsWith("/") ? url.slice(0, -1) : url}
|
|
196
|
+
return `${url.endsWith("/") ? url.slice(0, -1) : url}/${DEV_ENTRY_FILENAME}`;
|
|
125
197
|
}
|
|
126
198
|
/**
|
|
127
199
|
* Extract plugin map (module constructors) from registry entries
|
|
@@ -168,7 +240,7 @@ function createPluginRuntime(config) {
|
|
|
168
240
|
const secrets = config.secrets || {};
|
|
169
241
|
const normalizedRegistry = normalizeRegistry(config.registry);
|
|
170
242
|
const pluginMap = extractPluginMap(config.registry);
|
|
171
|
-
const layer =
|
|
243
|
+
const layer = PluginServiceLive(normalizedRegistry, secrets, pluginMap);
|
|
172
244
|
const runtime = ManagedRuntime.make(layer);
|
|
173
245
|
return new PluginRuntime(runtime, normalizedRegistry);
|
|
174
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/runtime/index.ts"],"sourcesContent":["import { createRouterClient } from \"@orpc/server\";\nimport { Cause, Effect, Exit, Hash, ManagedRuntime, Option } from \"effect\";\nimport type {\n AnyPlugin,\n AnyPluginConstructor,\n InferRegistryFromEntries,\n InitializedPlugin,\n LoadedPlugin,\n PluginConfigInput,\n PluginInstance,\n PluginRegistry,\n PluginRegistryEntry,\n PluginRouterType,\n PluginRuntimeConfig,\n RegisteredPlugin,\n RegisteredPlugins,\n UsePluginResult,\n} from \"../types\";\nimport { PluginRuntimeError } from \"./errors\";\nimport { PluginService } from \"./services/plugin.service\";\n\nexport class PluginRuntime<R = RegisteredPlugins> {\n readonly __registryType?: R;\n\n private pluginCache = new Map<\n string,\n Effect.Effect<InitializedPlugin<AnyPlugin>, PluginRuntimeError>\n >();\n\n constructor(\n private runtime: ManagedRuntime.ManagedRuntime<PluginService, never>,\n private registry: PluginRegistry,\n ) {}\n\n private generateCacheKey(pluginId: string, config: unknown): string {\n const configHash = Hash.structure(config as object).toString();\n return `${pluginId}:${configHash}`;\n }\n\n private validatePluginId(pluginId: string): Effect.Effect<string, PluginRuntimeError> {\n if (!(pluginId in this.registry)) {\n return Effect.fail(\n new PluginRuntimeError({\n pluginId: String(pluginId),\n operation: \"validate-plugin-id\",\n cause: new Error(`Plugin ID '${String(pluginId)}' not found in registry.`),\n retryable: false,\n }),\n );\n }\n return Effect.succeed(String(pluginId));\n }\n\n private async runPromise<A, E>(effect: Effect.Effect<A, E, PluginService>): Promise<A> {\n const exit = await this.runtime.runPromiseExit(effect);\n\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n if (Option.isSome(error)) {\n throw error.value;\n }\n throw Cause.squash(exit.cause);\n }\n\n return exit.value;\n }\n\n async usePlugin<K extends keyof R & string>(\n pluginId: K,\n config: PluginConfigInput<R[K]>,\n plugins?: Record<string, unknown>,\n ): Promise<UsePluginResult<K, R>> {\n const cacheKey = this.generateCacheKey(pluginId, { ...config, __plugins: plugins ?? {} });\n\n let cachedPlugin = this.pluginCache.get(cacheKey);\n if (!cachedPlugin) {\n const operation = Effect.gen(this, function* () {\n const pluginService = yield* PluginService;\n const validatedId = yield* this.validatePluginId(pluginId);\n\n // Load → Instantiate → Initialize → Register\n const ctor = yield* pluginService.loadPlugin(validatedId);\n const instance = yield* pluginService.instantiatePlugin(pluginId, ctor);\n const initialized = yield* pluginService.initializePlugin(instance, config, plugins);\n yield* pluginService.registerPlugin(initialized);\n\n return initialized;\n }).pipe(Effect.annotateLogs({ plugin: pluginId }), Effect.provide(this.runtime));\n\n cachedPlugin = Effect.cached(operation).pipe(Effect.flatten);\n this.pluginCache.set(cacheKey, cachedPlugin);\n }\n\n let initialized: InitializedPlugin<AnyPlugin>;\n try {\n initialized = await this.runPromise(cachedPlugin);\n } catch (error) {\n // Evict failed initializations so the next call retries instead\n // of returning the permanently-cached failure from Effect.cached.\n this.pluginCache.delete(cacheKey);\n throw error;\n }\n\n // Construct the router once per plugin instance, not per client/request.\n const router = initialized.plugin.createRouter(initialized.context) as PluginRouterType<R[K]>;\n\n // Create client factory that accepts request context\n const createClient = (context?: any) => createRouterClient(router, { context: context ?? {} });\n\n return {\n createClient: createClient as any,\n router,\n metadata: initialized.metadata,\n initialized: initialized as InitializedPlugin<RegisteredPlugin<K, R>>,\n } as UsePluginResult<K, R>;\n }\n\n async loadPlugin<K extends keyof R & string>(\n pluginId: K,\n ): Promise<LoadedPlugin<RegisteredPlugin<K, R>>> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n return yield* pluginService.loadPlugin(pluginId);\n }).pipe(Effect.annotateLogs({ plugin: pluginId }));\n return this.runPromise(effect) as Promise<LoadedPlugin<RegisteredPlugin<K, R>>>;\n }\n\n async instantiatePlugin<K extends keyof R & string>(\n pluginId: K,\n loadedPlugin: LoadedPlugin<RegisteredPlugin<K, R>>,\n ): Promise<PluginInstance<RegisteredPlugin<K, R>>> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n return yield* pluginService.instantiatePlugin(pluginId, loadedPlugin);\n }).pipe(Effect.annotateLogs({ plugin: pluginId }));\n return this.runPromise(effect) as Promise<PluginInstance<RegisteredPlugin<K, R>>>;\n }\n\n async initializePlugin<T extends AnyPlugin>(\n instance: PluginInstance<T>,\n config: any,\n plugins?: Record<string, unknown>,\n ): Promise<InitializedPlugin<T>> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n const initialized = yield* pluginService.initializePlugin(instance, config, plugins);\n yield* pluginService.registerPlugin(initialized);\n return initialized;\n }).pipe(Effect.annotateLogs({ plugin: instance.plugin.id }));\n return this.runPromise(effect);\n }\n\n async shutdown(): Promise<void> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n yield* pluginService.cleanup();\n });\n await this.runPromise(effect);\n await this.runtime.dispose();\n }\n\n async evictPlugin<K extends keyof R & string>(\n pluginId: K,\n config: PluginConfigInput<R[K]>,\n plugins?: Record<string, unknown>,\n ): Promise<void> {\n const cacheKey = this.generateCacheKey(pluginId, { ...config, __plugins: plugins ?? {} });\n\n const effect = Effect.gen(this, function* () {\n const pluginService = yield* PluginService;\n const cachedPlugin = this.pluginCache.get(cacheKey);\n\n if (cachedPlugin) {\n this.pluginCache.delete(cacheKey);\n\n const pluginResult = yield* cachedPlugin.pipe(Effect.catchAll(() => Effect.succeed(null)));\n\n if (pluginResult) {\n yield* pluginService\n .shutdownPlugin(pluginResult)\n .pipe(\n Effect.catchAll((error) =>\n Effect.logWarning(`Failed to shutdown evicted plugin ${pluginId}`, error),\n ),\n );\n }\n }\n }).pipe(\n Effect.catchAll((error) =>\n Effect.logWarning(`Plugin eviction failed for ${pluginId}`, error),\n ),\n );\n\n return this.runPromise(effect);\n }\n}\n\n/**\n * Normalizes a remote URL to ensure it points to remoteEntry.js\n * If the URL doesn't end with a file extension, appends /remoteEntry.js\n */\nfunction normalizeRemoteUrl(url: string): string {\n if (!url) return url;\n if (url.endsWith(\".js\") || url.endsWith(\".json\")) return url;\n return `${url.endsWith(\"/\") ? url.slice(0, -1) : url}/remoteEntry.js`;\n}\n\n/**\n * Extract plugin map (module constructors) from registry entries\n */\nfunction extractPluginMap(\n registry: Record<string, PluginRegistryEntry>,\n): Record<string, AnyPluginConstructor> {\n const pluginMap: Record<string, AnyPluginConstructor> = {};\n\n for (const [pluginId, entry] of Object.entries(registry)) {\n if (\"module\" in entry && entry.module) {\n pluginMap[pluginId] = entry.module;\n }\n }\n\n return pluginMap;\n}\n\n/**\n * Normalize registry entries - ensure remote URLs are properly formatted\n */\nfunction normalizeRegistry(registry: Record<string, PluginRegistryEntry>): PluginRegistry {\n const normalized: Record<string, PluginRegistryEntry> = {};\n\n for (const [pluginId, entry] of Object.entries(registry)) {\n if (\"module\" in entry) {\n normalized[pluginId] = {\n ...entry,\n remote: entry.remote ? normalizeRemoteUrl(entry.remote) : undefined,\n };\n } else {\n normalized[pluginId] = {\n ...entry,\n remote: normalizeRemoteUrl(entry.remote),\n };\n }\n }\n\n return normalized as PluginRegistry;\n}\n\n/**\n * Creates a plugin runtime with support for both module and remote plugin entries.\n *\n * @example\n * ```typescript\n * // With module entries (types inferred automatically)\n * const runtime = createPluginRuntime({\n * registry: {\n * telegram: { module: TelegramPlugin },\n * gopher: { remote: \"https://cdn.example.com/gopher/remoteEntry.js\" }\n * },\n * secrets: { API_KEY: \"...\" }\n * });\n *\n * // Types are automatically inferred from module entries!\n * const { router } = await runtime.usePlugin(\"telegram\", config);\n * ```\n */\nexport function createPluginRuntime<TRegistry extends Record<string, PluginRegistryEntry>>(\n config: PluginRuntimeConfig<TRegistry>,\n): PluginRuntime<InferRegistryFromEntries<TRegistry>> {\n const secrets = config.secrets || {};\n const normalizedRegistry = normalizeRegistry(config.registry);\n const pluginMap = extractPluginMap(config.registry);\n\n const layer = PluginService.Live(normalizedRegistry, secrets, pluginMap);\n const runtime = ManagedRuntime.make(layer);\n\n return new PluginRuntime(runtime, normalizedRegistry) as PluginRuntime<\n InferRegistryFromEntries<TRegistry>\n >;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/runtime/index.ts"],"sourcesContent":["import \"@orpc/experimental-effect/extensions/effect\";\nimport \"@orpc/openapi/extensions/route\";\n\nimport { createRouterClient } from \"@orpc/server\";\nimport { Cause, Effect, Exit, ManagedRuntime, Option } from \"effect\";\nimport { DEV_ENTRY_FILENAME } from \"../build/artifact-names\";\nimport type {\n AnyPlugin,\n AnyPluginConstructor,\n InferRegistryFromEntries,\n InitializedPlugin,\n LoadedPlugin,\n PluginConfigInput,\n PluginInstance,\n PluginRegistry,\n PluginRegistryEntry,\n PluginRouterType,\n PluginRuntimeConfig,\n RegisteredPlugin,\n RegisteredPlugins,\n UsePluginResult,\n} from \"../types\";\nimport { PluginRuntimeError, toPluginRuntimeError } from \"./errors\";\nimport { PluginService, PluginServiceLive } from \"./services/plugin.service\";\n\nconst MAX_CACHE_KEY_DEPTH = 32;\n\nexport class PluginRuntime<R = RegisteredPlugins> {\n readonly __registryType?: R;\n\n private pluginCache = new Map<string, Promise<InitializedPlugin<AnyPlugin>>>();\n private routerCache = new Map<string, PluginRouterType<any>>();\n private cacheLeafIds = new WeakMap<object, number>();\n private nextCacheLeafId = 0;\n\n constructor(\n private runtime: ManagedRuntime.ManagedRuntime<PluginService, never>,\n private registry: PluginRegistry,\n ) {}\n\n /**\n * Cache key for plugin instances: JSON-equal configs share one plugin\n * instance (variables and secrets originate from bos.config.json, so they\n * are JSON values). Values outside the JSON domain follow Effect's Hash\n * semantics — symbols key by description, functions and class instances by\n * reference identity — and the host creates its pluginsClient map once per\n * boot, making identity the correct equivalence for function-bearing\n * configs.\n */\n private generateCacheKey(pluginId: string, config: unknown): string {\n return `${pluginId}:${this.canonicalizeConfig(config, 0, new Set())}`;\n }\n\n private canonicalizeConfig(value: unknown, depth: number, ancestors: Set<object>): string {\n switch (typeof value) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return `string:${JSON.stringify(value)}`;\n case \"number\":\n return `number:${Object.is(value, -0) ? \"-0\" : String(value)}`;\n case \"bigint\":\n return `bigint:${value.toString()}`;\n case \"boolean\":\n return `boolean:${value}`;\n case \"symbol\":\n return `symbol:${String(value)}`;\n case \"function\":\n return `ref:${this.getCacheLeafId(value)}`;\n case \"object\": {\n if (value === null) return \"null\";\n if (ancestors.has(value) || depth >= MAX_CACHE_KEY_DEPTH) {\n return `ref:${this.getCacheLeafId(value)}`;\n }\n\n if (Array.isArray(value)) {\n ancestors.add(value);\n const serialized = `[${value\n .map((item) => this.canonicalizeConfig(item, depth + 1, ancestors))\n .join(\",\")}]`;\n ancestors.delete(value);\n return serialized;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return `ref:${this.getCacheLeafId(value)}`;\n }\n\n const record = value as Record<string, unknown>;\n ancestors.add(value);\n const serialized = `{${Object.keys(record)\n .sort()\n .map(\n (key) =>\n `${JSON.stringify(key)}:${this.canonicalizeConfig(record[key], depth + 1, ancestors)}`,\n )\n .join(\",\")}}`;\n ancestors.delete(value);\n return serialized;\n }\n }\n }\n\n private getCacheLeafId(value: object): number {\n const existing = this.cacheLeafIds.get(value);\n if (existing !== undefined) return existing;\n const id = this.nextCacheLeafId++;\n this.cacheLeafIds.set(value, id);\n return id;\n }\n\n private validatePluginId(pluginId: string): Effect.Effect<string, PluginRuntimeError> {\n if (!(pluginId in this.registry)) {\n return Effect.fail(\n new PluginRuntimeError({\n pluginId: String(pluginId),\n operation: \"validate-plugin-id\",\n cause: new Error(`Plugin ID '${String(pluginId)}' not found in registry.`),\n }),\n );\n }\n return Effect.succeed(String(pluginId));\n }\n\n private async runPromise<A, E>(effect: Effect.Effect<A, E, PluginService>): Promise<A> {\n const exit = await this.runtime.runPromiseExit(effect);\n\n if (Exit.isFailure(exit)) {\n const error = Cause.findErrorOption(exit.cause);\n if (Option.isSome(error)) {\n throw error.value;\n }\n throw Cause.squash(exit.cause);\n }\n\n return exit.value;\n }\n\n async usePlugin<K extends keyof R & string>(\n pluginId: K,\n config: PluginConfigInput<R[K]>,\n plugins?: Record<string, unknown>,\n ): Promise<UsePluginResult<K, R>> {\n const cacheKey = this.generateCacheKey(pluginId, { ...config, __plugins: plugins ?? {} });\n\n let cachedPlugin = this.pluginCache.get(cacheKey);\n if (!cachedPlugin) {\n const operation = Effect.gen({ self: this }, function* () {\n const pluginService = yield* PluginService;\n const validatedId = yield* this.validatePluginId(pluginId);\n\n // Load → Instantiate → Initialize → Register\n const ctor = yield* pluginService.loadPlugin(validatedId);\n const instance = yield* pluginService.instantiatePlugin(pluginId, ctor);\n const initialized = yield* pluginService.initializePlugin(instance, config, plugins);\n yield* pluginService.registerPlugin(initialized);\n\n return initialized;\n });\n\n cachedPlugin = this.runPromise(operation);\n this.pluginCache.set(cacheKey, cachedPlugin);\n }\n\n let initialized: InitializedPlugin<AnyPlugin>;\n try {\n initialized = await cachedPlugin;\n } catch (error) {\n if (this.pluginCache.get(cacheKey) === cachedPlugin) {\n this.pluginCache.delete(cacheKey);\n this.routerCache.delete(cacheKey);\n }\n throw error;\n }\n\n // Construct the router once per plugin instance, not per client/request.\n let router = this.routerCache.get(cacheKey);\n if (!router) {\n try {\n router = initialized.plugin.createRouter(plugins ?? {}) as PluginRouterType<R[K]>;\n this.routerCache.set(cacheKey, router);\n } catch (error) {\n await this.evictPlugin(pluginId, config, plugins);\n throw error;\n }\n }\n\n // Create client factory that accepts request context. The plugin's\n // Effect context is injected so `.effect()` handlers resolve services\n // on in-process (server-side / SSR) calls.\n const createClient = (context?: any) =>\n createRouterClient(router, {\n context: {\n ...context,\n \"effect/context\": initialized.effectContext,\n },\n });\n\n return {\n createClient: createClient as any,\n router,\n metadata: initialized.metadata,\n initialized: initialized as InitializedPlugin<RegisteredPlugin<K, R>>,\n } as UsePluginResult<K, R>;\n }\n\n async loadPlugin<K extends keyof R & string>(\n pluginId: K,\n ): Promise<LoadedPlugin<RegisteredPlugin<K, R>>> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n return yield* pluginService.loadPlugin(pluginId);\n });\n return this.runPromise(effect) as Promise<LoadedPlugin<RegisteredPlugin<K, R>>>;\n }\n\n async instantiatePlugin<K extends keyof R & string>(\n pluginId: K,\n loadedPlugin: LoadedPlugin<RegisteredPlugin<K, R>>,\n ): Promise<PluginInstance<RegisteredPlugin<K, R>>> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n return yield* pluginService.instantiatePlugin(pluginId, loadedPlugin);\n });\n return this.runPromise(effect) as Promise<PluginInstance<RegisteredPlugin<K, R>>>;\n }\n\n async initializePlugin<T extends AnyPlugin>(\n instance: PluginInstance<T>,\n config: any,\n plugins?: Record<string, unknown>,\n ): Promise<InitializedPlugin<T>> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n const initialized = yield* pluginService.initializePlugin(instance, config, plugins);\n yield* pluginService.registerPlugin(initialized);\n return initialized;\n });\n return this.runPromise(effect);\n }\n\n async shutdown(): Promise<void> {\n const effect = Effect.gen(function* () {\n const pluginService = yield* PluginService;\n yield* pluginService.cleanup;\n });\n try {\n await this.runPromise(effect);\n } finally {\n this.pluginCache.clear();\n this.routerCache.clear();\n await this.runtime.dispose();\n }\n }\n\n async evictPlugin<K extends keyof R & string>(\n pluginId: K,\n config: PluginConfigInput<R[K]>,\n plugins?: Record<string, unknown>,\n ): Promise<void> {\n const cacheKey = this.generateCacheKey(pluginId, { ...config, __plugins: plugins ?? {} });\n\n const effect = Effect.gen({ self: this }, function* () {\n const pluginService = yield* PluginService;\n const cachedPlugin = this.pluginCache.get(cacheKey);\n\n if (cachedPlugin) {\n this.pluginCache.delete(cacheKey);\n this.routerCache.delete(cacheKey);\n\n const pluginResult = yield* Effect.tryPromise({\n try: () => cachedPlugin,\n catch: (error) => toPluginRuntimeError(error, pluginId, undefined, \"evict-plugin\"),\n }).pipe(Effect.orElseSucceed(() => null));\n\n if (pluginResult) {\n yield* pluginService.shutdownPlugin(pluginResult);\n }\n }\n });\n\n return this.runPromise(effect);\n }\n}\n\n/**\n * Normalizes a remote URL to ensure it points to remoteEntry.js\n * If the URL doesn't end with a file extension, appends /remoteEntry.js\n */\nfunction normalizeRemoteUrl(url: string): string {\n if (!url) return url;\n if (url.endsWith(\".js\") || url.endsWith(\".json\")) return url;\n return `${url.endsWith(\"/\") ? url.slice(0, -1) : url}/${DEV_ENTRY_FILENAME}`;\n}\n\n/**\n * Extract plugin map (module constructors) from registry entries\n */\nfunction extractPluginMap(\n registry: Record<string, PluginRegistryEntry>,\n): Record<string, AnyPluginConstructor> {\n const pluginMap: Record<string, AnyPluginConstructor> = {};\n\n for (const [pluginId, entry] of Object.entries(registry)) {\n if (\"module\" in entry && entry.module) {\n pluginMap[pluginId] = entry.module;\n }\n }\n\n return pluginMap;\n}\n\n/**\n * Normalize registry entries - ensure remote URLs are properly formatted\n */\nfunction normalizeRegistry(registry: Record<string, PluginRegistryEntry>): PluginRegistry {\n const normalized: Record<string, PluginRegistryEntry> = {};\n\n for (const [pluginId, entry] of Object.entries(registry)) {\n if (\"module\" in entry) {\n normalized[pluginId] = {\n ...entry,\n remote: entry.remote ? normalizeRemoteUrl(entry.remote) : undefined,\n };\n } else {\n normalized[pluginId] = {\n ...entry,\n remote: normalizeRemoteUrl(entry.remote),\n };\n }\n }\n\n return normalized as PluginRegistry;\n}\n\n/**\n * Creates a plugin runtime with support for both module and remote plugin entries.\n *\n * @example\n * ```typescript\n * // With module entries (types inferred automatically)\n * const runtime = createPluginRuntime({\n * registry: {\n * telegram: { module: TelegramPlugin },\n * gopher: { remote: \"https://cdn.example.com/gopher/remoteEntry.js\" }\n * },\n * secrets: { API_KEY: \"...\" }\n * });\n *\n * // Types are automatically inferred from module entries!\n * const { router } = await runtime.usePlugin(\"telegram\", config);\n * ```\n */\nexport function createPluginRuntime<TRegistry extends Record<string, PluginRegistryEntry>>(\n config: PluginRuntimeConfig<TRegistry>,\n): PluginRuntime<InferRegistryFromEntries<TRegistry>> {\n const secrets = config.secrets || {};\n const normalizedRegistry = normalizeRegistry(config.registry);\n const pluginMap = extractPluginMap(config.registry);\n\n const layer = PluginServiceLive(normalizedRegistry, secrets, pluginMap);\n const runtime = ManagedRuntime.make(layer);\n\n return new PluginRuntime(runtime, normalizedRegistry) as PluginRuntime<\n InferRegistryFromEntries<TRegistry>\n >;\n}\n"],"mappings":"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"}
|
|
@@ -1,87 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const
|
|
2
|
+
const require_shared_deps_spec = require('../shared-deps-spec.cjs');
|
|
3
3
|
let node_fs = require("node:fs");
|
|
4
|
-
let node_module = require("node:module");
|
|
5
|
-
let node_path = require("node:path");
|
|
6
4
|
|
|
7
5
|
//#region src/runtime/mf-config.ts
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
try {
|
|
11
|
-
let currentDir = (0, node_path.dirname)(require$1.resolve(packageName));
|
|
12
|
-
for (let i = 0; i < 5; i += 1) {
|
|
13
|
-
const packageJsonPath = (0, node_path.join)(currentDir, "package.json");
|
|
14
|
-
if ((0, node_fs.existsSync)(packageJsonPath)) return JSON.parse((0, node_fs.readFileSync)(packageJsonPath, "utf-8")).version;
|
|
15
|
-
currentDir = (0, node_path.dirname)(currentDir);
|
|
16
|
-
}
|
|
17
|
-
throw new Error(`Could not resolve installed version for ${packageName}`);
|
|
18
|
-
} catch {
|
|
19
|
-
const match = fallbackRange.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/);
|
|
20
|
-
return match ? match[0] : fallbackRange.replace(/^[\^~>=<\s]+/, "");
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
const PLUGIN_VERSION = "2.10.0";
|
|
24
|
-
const SHARE_CONFIG = {
|
|
25
|
-
singleton: true,
|
|
26
|
-
requiredVersion: false,
|
|
27
|
-
strictVersion: false,
|
|
28
|
-
eager: false
|
|
29
|
-
};
|
|
30
|
-
const MF_CORE_SHARED_DEPS = {
|
|
31
|
-
"every-plugin": {
|
|
32
|
-
version: PLUGIN_VERSION,
|
|
33
|
-
shareScope: "default",
|
|
34
|
-
shareConfig: SHARE_CONFIG
|
|
35
|
-
},
|
|
36
|
-
effect: {
|
|
37
|
-
version: getInstalledPackageVersion("effect", require_package.peerDependencies.effect),
|
|
38
|
-
shareScope: "default",
|
|
39
|
-
shareConfig: SHARE_CONFIG
|
|
40
|
-
},
|
|
41
|
-
zod: {
|
|
42
|
-
version: getInstalledPackageVersion("zod", require_package.peerDependencies.zod),
|
|
43
|
-
shareScope: "default",
|
|
44
|
-
shareConfig: SHARE_CONFIG
|
|
45
|
-
},
|
|
46
|
-
"@orpc/contract": {
|
|
47
|
-
version: getInstalledPackageVersion("@orpc/contract", require_package.peerDependencies["@orpc/contract"]),
|
|
48
|
-
shareScope: "default",
|
|
49
|
-
shareConfig: SHARE_CONFIG
|
|
50
|
-
},
|
|
51
|
-
"@orpc/client": {
|
|
52
|
-
version: getInstalledPackageVersion("@orpc/client", require_package.peerDependencies["@orpc/client"]),
|
|
53
|
-
shareScope: "default",
|
|
54
|
-
shareConfig: SHARE_CONFIG
|
|
55
|
-
},
|
|
56
|
-
"@orpc/server": {
|
|
57
|
-
version: getInstalledPackageVersion("@orpc/server", require_package.peerDependencies["@orpc/server"]),
|
|
58
|
-
shareScope: "default",
|
|
59
|
-
shareConfig: SHARE_CONFIG
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
function buildMergedSharedDeps(appShared) {
|
|
63
|
-
const merged = {};
|
|
64
|
-
for (const [name, config] of Object.entries(MF_CORE_SHARED_DEPS)) merged[name] = {
|
|
65
|
-
version: config.version,
|
|
66
|
-
shareScope: config.shareScope,
|
|
67
|
-
shareConfig: config.shareConfig
|
|
68
|
-
};
|
|
69
|
-
if (appShared) for (const [name, config] of Object.entries(appShared)) merged[name] = {
|
|
70
|
-
version: config.version,
|
|
71
|
-
shareScope: config.shareScope ?? "default",
|
|
72
|
-
shareConfig: {
|
|
73
|
-
singleton: config.singleton ?? false,
|
|
74
|
-
requiredVersion: config.requiredVersion ?? false,
|
|
75
|
-
strictVersion: config.strictVersion ?? false,
|
|
76
|
-
eager: config.eager ?? false
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
return merged;
|
|
80
|
-
}
|
|
6
|
+
const PLUGIN_VERSION = "3.0.0-rc.0";
|
|
7
|
+
const MF_CORE_SHARED_DEPS = require_shared_deps_spec.buildMfCoreSharedDependencies({ ownVersion: PLUGIN_VERSION });
|
|
81
8
|
|
|
82
9
|
//#endregion
|
|
83
10
|
exports.MF_CORE_SHARED_DEPS = MF_CORE_SHARED_DEPS;
|
|
84
11
|
exports.PLUGIN_VERSION = PLUGIN_VERSION;
|
|
85
|
-
exports.SHARE_CONFIG = SHARE_CONFIG;
|
|
86
|
-
exports.buildMergedSharedDeps = buildMergedSharedDeps;
|
|
87
12
|
//# sourceMappingURL=mf-config.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mf-config.cjs","names":["
|
|
1
|
+
{"version":3,"file":"mf-config.cjs","names":["buildMfCoreSharedDependencies"],"sources":["../../src/runtime/mf-config.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { buildMfCoreSharedDependencies, type CoreSharedDepName } from \"../shared-deps-spec\";\n\ndeclare const __EVERY_PLUGIN_VERSION__: string | undefined;\n\nfunction readPackageVersion(): string {\n try {\n // Not createRequire(import.meta.url): under tsx the require's resolution\n // base can come up empty in spawned child processes (\"Cannot find module\n // from ''\"), reading 0.0.0 and tripping the shared-identity check.\n return (\n JSON.parse(readFileSync(new URL(\"../../package.json\", import.meta.url), \"utf-8\")) as {\n version: string;\n }\n ).version;\n } catch {\n return \"0.0.0\";\n }\n}\n\nexport const PLUGIN_VERSION =\n typeof __EVERY_PLUGIN_VERSION__ === \"string\" ? __EVERY_PLUGIN_VERSION__ : readPackageVersion();\n\nexport interface SharedConfig {\n singleton: boolean;\n requiredVersion: string | false;\n strictVersion: boolean;\n eager: boolean;\n}\n\nexport const MF_CORE_SHARED_DEPS = buildMfCoreSharedDependencies({ ownVersion: PLUGIN_VERSION });\n\nexport type { CoreSharedDepName };\n"],"mappings":";;;;;AAoBA,MAAa;AAUb,MAAa,sBAAsBA,uDAA8B,EAAE,YAAY,eAAe,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CoreSharedDepName, HostSharedEntry } from "../shared-deps-spec.cjs";
|
|
1
2
|
//#region src/runtime/mf-config.d.ts
|
|
2
3
|
declare const PLUGIN_VERSION: string;
|
|
3
4
|
interface SharedConfig {
|
|
@@ -6,54 +7,7 @@ interface SharedConfig {
|
|
|
6
7
|
strictVersion: boolean;
|
|
7
8
|
eager: boolean;
|
|
8
9
|
}
|
|
9
|
-
declare const
|
|
10
|
-
declare const MF_CORE_SHARED_DEPS: {
|
|
11
|
-
readonly "every-plugin": {
|
|
12
|
-
readonly version: string;
|
|
13
|
-
readonly shareScope: "default";
|
|
14
|
-
readonly shareConfig: SharedConfig;
|
|
15
|
-
};
|
|
16
|
-
readonly effect: {
|
|
17
|
-
readonly version: string;
|
|
18
|
-
readonly shareScope: "default";
|
|
19
|
-
readonly shareConfig: SharedConfig;
|
|
20
|
-
};
|
|
21
|
-
readonly zod: {
|
|
22
|
-
readonly version: string;
|
|
23
|
-
readonly shareScope: "default";
|
|
24
|
-
readonly shareConfig: SharedConfig;
|
|
25
|
-
};
|
|
26
|
-
readonly "@orpc/contract": {
|
|
27
|
-
readonly version: string;
|
|
28
|
-
readonly shareScope: "default";
|
|
29
|
-
readonly shareConfig: SharedConfig;
|
|
30
|
-
};
|
|
31
|
-
readonly "@orpc/client": {
|
|
32
|
-
readonly version: string;
|
|
33
|
-
readonly shareScope: "default";
|
|
34
|
-
readonly shareConfig: SharedConfig;
|
|
35
|
-
};
|
|
36
|
-
readonly "@orpc/server": {
|
|
37
|
-
readonly version: string;
|
|
38
|
-
readonly shareScope: "default";
|
|
39
|
-
readonly shareConfig: SharedConfig;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
type CoreSharedDepName = keyof typeof MF_CORE_SHARED_DEPS;
|
|
43
|
-
interface AppSharedDepConfig {
|
|
44
|
-
version: string;
|
|
45
|
-
requiredVersion?: string | false;
|
|
46
|
-
singleton?: boolean;
|
|
47
|
-
strictVersion?: boolean;
|
|
48
|
-
eager?: boolean;
|
|
49
|
-
shareScope?: string;
|
|
50
|
-
}
|
|
51
|
-
type AppSharedDeps = Record<string, AppSharedDepConfig>;
|
|
52
|
-
declare function buildMergedSharedDeps(appShared?: AppSharedDeps): Record<string, {
|
|
53
|
-
version: string;
|
|
54
|
-
shareScope: string;
|
|
55
|
-
shareConfig: SharedConfig;
|
|
56
|
-
}>;
|
|
10
|
+
declare const MF_CORE_SHARED_DEPS: Record<string, HostSharedEntry>;
|
|
57
11
|
//#endregion
|
|
58
|
-
export {
|
|
12
|
+
export { type CoreSharedDepName, MF_CORE_SHARED_DEPS, PLUGIN_VERSION, SharedConfig };
|
|
59
13
|
//# sourceMappingURL=mf-config.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mf-config.d.cts","names":[],"sources":["../../src/runtime/mf-config.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"mf-config.d.cts","names":["_$___shared_deps_spec0.HostSharedEntry"],"sources":["../../src/runtime/mf-config.ts"],"mappings":";;cAoBa;UAGI;EACf;EACA;EACA;EACA;;cAGW,qBAAmB,eAAnBA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CoreSharedDepName, HostSharedEntry } from "../shared-deps-spec.mjs";
|
|
1
2
|
//#region src/runtime/mf-config.d.ts
|
|
2
3
|
declare const PLUGIN_VERSION: string;
|
|
3
4
|
interface SharedConfig {
|
|
@@ -6,54 +7,7 @@ interface SharedConfig {
|
|
|
6
7
|
strictVersion: boolean;
|
|
7
8
|
eager: boolean;
|
|
8
9
|
}
|
|
9
|
-
declare const
|
|
10
|
-
declare const MF_CORE_SHARED_DEPS: {
|
|
11
|
-
readonly "every-plugin": {
|
|
12
|
-
readonly version: string;
|
|
13
|
-
readonly shareScope: "default";
|
|
14
|
-
readonly shareConfig: SharedConfig;
|
|
15
|
-
};
|
|
16
|
-
readonly effect: {
|
|
17
|
-
readonly version: string;
|
|
18
|
-
readonly shareScope: "default";
|
|
19
|
-
readonly shareConfig: SharedConfig;
|
|
20
|
-
};
|
|
21
|
-
readonly zod: {
|
|
22
|
-
readonly version: string;
|
|
23
|
-
readonly shareScope: "default";
|
|
24
|
-
readonly shareConfig: SharedConfig;
|
|
25
|
-
};
|
|
26
|
-
readonly "@orpc/contract": {
|
|
27
|
-
readonly version: string;
|
|
28
|
-
readonly shareScope: "default";
|
|
29
|
-
readonly shareConfig: SharedConfig;
|
|
30
|
-
};
|
|
31
|
-
readonly "@orpc/client": {
|
|
32
|
-
readonly version: string;
|
|
33
|
-
readonly shareScope: "default";
|
|
34
|
-
readonly shareConfig: SharedConfig;
|
|
35
|
-
};
|
|
36
|
-
readonly "@orpc/server": {
|
|
37
|
-
readonly version: string;
|
|
38
|
-
readonly shareScope: "default";
|
|
39
|
-
readonly shareConfig: SharedConfig;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
type CoreSharedDepName = keyof typeof MF_CORE_SHARED_DEPS;
|
|
43
|
-
interface AppSharedDepConfig {
|
|
44
|
-
version: string;
|
|
45
|
-
requiredVersion?: string | false;
|
|
46
|
-
singleton?: boolean;
|
|
47
|
-
strictVersion?: boolean;
|
|
48
|
-
eager?: boolean;
|
|
49
|
-
shareScope?: string;
|
|
50
|
-
}
|
|
51
|
-
type AppSharedDeps = Record<string, AppSharedDepConfig>;
|
|
52
|
-
declare function buildMergedSharedDeps(appShared?: AppSharedDeps): Record<string, {
|
|
53
|
-
version: string;
|
|
54
|
-
shareScope: string;
|
|
55
|
-
shareConfig: SharedConfig;
|
|
56
|
-
}>;
|
|
10
|
+
declare const MF_CORE_SHARED_DEPS: Record<string, HostSharedEntry>;
|
|
57
11
|
//#endregion
|
|
58
|
-
export {
|
|
12
|
+
export { type CoreSharedDepName, MF_CORE_SHARED_DEPS, PLUGIN_VERSION, SharedConfig };
|
|
59
13
|
//# sourceMappingURL=mf-config.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mf-config.d.mts","names":[],"sources":["../../src/runtime/mf-config.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"mf-config.d.mts","names":["_$___shared_deps_spec0.HostSharedEntry"],"sources":["../../src/runtime/mf-config.ts"],"mappings":";;cAoBa;UAGI;EACf;EACA;EACA;EACA;;cAGW,qBAAmB,eAAnBA"}
|