@xmachines/docs 3.0.0 → 5.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.
- package/README.md +14 -20
- package/api/@xmachines/play/README.md +29 -118
- package/api/@xmachines/play/errors/README.md +8 -0
- package/api/@xmachines/play/{classes → errors/classes}/NonNullableError.md +6 -6
- package/api/@xmachines/play/{classes → errors/classes}/PlayError.md +36 -10
- package/api/@xmachines/play/index/README.md +75 -0
- package/api/@xmachines/play/index/functions/asCleanup.md +77 -0
- package/api/@xmachines/play/{functions → index/functions}/assertNonNullable.md +2 -2
- package/api/@xmachines/{play-actor → play/index}/functions/shallowEqualExcept.md +3 -3
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/Cleanup.md +5 -5
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/DisposeKey.md +2 -2
- package/api/@xmachines/play/{type-aliases → index/type-aliases}/PlayEvent.md +4 -4
- package/api/@xmachines/play/{variables → index/variables}/DISPOSE.md +2 -2
- package/api/@xmachines/play-actor/README.md +80 -231
- package/api/@xmachines/play-actor/interfaces/ActorEvent.md +18 -0
- package/api/@xmachines/play-actor/interfaces/PlayActor.md +73 -0
- package/api/@xmachines/play-atom/README.md +281 -0
- package/api/@xmachines/play-atom/functions/watchAtom.md +79 -0
- package/api/@xmachines/play-atom/interfaces/AsyncAtomOptions.md +16 -0
- package/api/@xmachines/play-atom/interfaces/Atom.md +149 -0
- package/api/@xmachines/play-atom/interfaces/AtomObserver.md +25 -0
- package/api/@xmachines/play-atom/interfaces/AtomOptions.md +33 -0
- package/api/@xmachines/play-atom/interfaces/AtomSubscription.md +23 -0
- package/api/@xmachines/play-atom/interfaces/BaseAtom.md +97 -0
- package/api/@xmachines/play-atom/interfaces/CreateAtom.md +91 -0
- package/api/@xmachines/play-atom/interfaces/Readable.md +93 -0
- package/api/@xmachines/play-atom/interfaces/ReadonlyAtom.md +108 -0
- package/api/@xmachines/play-atom/type-aliases/AnyAtom.md +13 -0
- package/api/@xmachines/play-atom/type-aliases/AsyncAtomState.md +32 -0
- package/api/@xmachines/{play-signals → play-atom}/type-aliases/Cleanup.md +5 -5
- package/api/@xmachines/play-atom/variables/createAsyncAtom.md +42 -0
- package/api/@xmachines/play-atom/variables/createAtom.md +18 -0
- package/api/@xmachines/play-atom/variables/createWritableAtom.md +70 -0
- package/api/@xmachines/play-dom/README.md +44 -52
- package/api/@xmachines/play-dom/classes/PlayRenderer.md +17 -16
- package/api/@xmachines/play-dom/functions/asCleanup.md +77 -0
- package/api/@xmachines/play-dom/functions/createPlayUI.md +4 -4
- package/api/@xmachines/play-dom/functions/createRenderer.md +1 -1
- package/api/@xmachines/play-dom/interfaces/CreatePlayUIOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/MountOptions.md +3 -3
- package/api/@xmachines/play-dom/interfaces/PlayDomOptions.md +6 -6
- package/api/@xmachines/play-dom/type-aliases/Cleanup.md +4 -4
- package/api/@xmachines/play-dom/type-aliases/MountFn.md +29 -12
- package/api/@xmachines/play-dom-router/README.md +83 -83
- package/api/@xmachines/play-dom-router/classes/DomRouterBridge.md +24 -23
- package/api/@xmachines/play-dom-router/{interfaces → classes}/RouteMap.md +42 -7
- package/api/@xmachines/{play → play-dom-router}/functions/asCleanup.md +5 -6
- package/api/@xmachines/play-dom-router/functions/connectRouter.md +3 -8
- package/api/@xmachines/play-dom-router/functions/createBrowserHistory.md +9 -3
- package/api/@xmachines/play-dom-router/functions/createRouter.md +8 -14
- package/api/@xmachines/play-dom-router/interfaces/BasePathOptions.md +5 -9
- package/api/@xmachines/play-dom-router/interfaces/BrowserHistory.md +70 -26
- package/api/@xmachines/play-dom-router/interfaces/BrowserWindow.md +14 -14
- package/api/@xmachines/play-dom-router/interfaces/ConnectRouterOptions.md +11 -9
- package/api/@xmachines/play-dom-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-dom-router/interfaces/RoutableActor.md +24 -21
- package/api/@xmachines/play-dom-router/interfaces/RouteLookupContract.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-dom-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-dom-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-dom-router/interfaces/RouterConnection.md +8 -8
- package/api/@xmachines/play-dom-router/interfaces/VanillaRouter.md +36 -23
- package/api/@xmachines/play-dom-router/type-aliases/Cleanup.md +4 -4
- package/api/@xmachines/play-dom-router/variables/DISPOSE.md +2 -2
- package/api/@xmachines/play-pattern/README.md +115 -0
- package/api/@xmachines/play-pattern/functions/buildPath.md +46 -0
- package/api/@xmachines/play-pattern/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-pattern/functions/getIndexKey.md +30 -0
- package/api/@xmachines/play-pattern/functions/isDotSegment.md +40 -0
- package/api/@xmachines/play-pattern/functions/parsePattern.md +28 -0
- package/api/@xmachines/play-pattern/interfaces/GroupPart.md +15 -0
- package/api/@xmachines/play-pattern/interfaces/LiteralPart.md +14 -0
- package/api/@xmachines/play-pattern/interfaces/ParamPart.md +21 -0
- package/api/@xmachines/play-pattern/interfaces/ParseOptions.md +19 -0
- package/api/@xmachines/play-pattern/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-pattern/interfaces/PatternCache.md +65 -0
- package/api/@xmachines/play-pattern/interfaces/PatternParam.md +15 -0
- package/api/@xmachines/play-pattern/type-aliases/PathBuildResult.md +74 -0
- package/api/@xmachines/play-pattern/type-aliases/PathParams.md +15 -0
- package/api/@xmachines/play-pattern/type-aliases/PatternModifier.md +11 -0
- package/api/@xmachines/play-pattern/type-aliases/PatternPart.md +9 -0
- package/api/@xmachines/play-react/README.md +46 -58
- package/api/@xmachines/play-react/classes/PlayErrorBoundary.md +14 -10
- package/api/@xmachines/play-react/functions/useActor.md +1 -1
- package/api/@xmachines/play-react/functions/useAtomEffect.md +103 -0
- package/api/@xmachines/play-react/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-react/interfaces/ActorProviderProps.md +11 -11
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryProps.md +6 -6
- package/api/@xmachines/play-react/interfaces/PlayErrorBoundaryState.md +4 -4
- package/api/@xmachines/play-react/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-react/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-react/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-react/variables/ActorProvider.md +2 -2
- package/api/@xmachines/play-react/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-react/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-react/variables/schema.md +52 -0
- package/api/@xmachines/play-react-router/README.md +23 -51
- package/api/@xmachines/play-react-router/classes/ReactRouterBridge.md +24 -23
- package/api/@xmachines/play-react-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-react-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-react-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-react-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
- package/api/@xmachines/play-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-router/README.md +116 -197
- package/api/@xmachines/play-router/errors/README.md +15 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateBridgeError.md +191 -0
- package/api/@xmachines/play-router/errors/classes/DuplicateRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/EmptyRoutePathError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-router/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-router/errors/classes/InvalidStateIdError.md +175 -0
- package/api/@xmachines/play-router/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-router/errors/classes/RouterSyncError.md +192 -0
- package/api/@xmachines/play-router/errors/classes/UnknownStateTypeError.md +182 -0
- package/api/@xmachines/play-router/index/README.md +83 -0
- package/api/@xmachines/play-router/{classes → index/classes}/RouteMap.md +19 -13
- package/api/@xmachines/play-router/{classes → index/classes}/RouterBridgeBase.md +22 -20
- package/api/@xmachines/play-router/{functions → index/functions}/buildPlayRouteEvent.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/buildRouteTree.md +14 -4
- package/api/@xmachines/play-router/{functions → index/functions}/cleanFrameworkParams.md +3 -4
- package/api/@xmachines/play-router/index/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-router/{functions → index/functions}/createRouteMapFromTree.md +17 -10
- package/api/@xmachines/play-router/{functions → index/functions}/createRouterConnection.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/detectDuplicateRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractQuery.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/extractRouteParams.md +9 -8
- package/api/@xmachines/play-router/{functions → index/functions}/findRouteById.md +2 -2
- package/api/@xmachines/play-router/index/functions/findRouteByPath.md +48 -0
- package/api/@xmachines/play-router/{functions → index/functions}/isMountableBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/joinBasePath.md +38 -0
- package/api/@xmachines/play-router/{functions → index/functions}/mountKey.md +2 -2
- package/api/@xmachines/play-router/index/functions/normalizeBasePath.md +43 -0
- package/api/@xmachines/play-router/{functions → index/functions}/openProviderBridge.md +14 -14
- package/api/@xmachines/play-router/index/functions/parsePattern.md +28 -0
- package/api/@xmachines/play-router/index/functions/pickOwnParams.md +41 -0
- package/api/@xmachines/play-router/{functions → index/functions}/repointProviderBridge.md +2 -2
- package/api/@xmachines/play-router/index/functions/resolveBasePath.md +51 -0
- package/api/@xmachines/play-router/index/functions/resolveFrameworkParams.md +49 -0
- package/api/@xmachines/play-router/index/functions/sanitizePathname.md +27 -0
- package/api/@xmachines/play-router/index/functions/splitLocation.md +37 -0
- package/api/@xmachines/play-router/index/functions/stripBasePath.md +44 -0
- package/api/@xmachines/play-router/{functions → index/functions}/validateRouteFormat.md +2 -2
- package/api/@xmachines/play-router/{functions → index/functions}/validateStateExists.md +2 -2
- package/api/@xmachines/play-router/index/interfaces/BasePathOptions.md +32 -0
- package/api/@xmachines/play-router/index/interfaces/BuildPlayRouteEventOptions.md +13 -0
- package/api/@xmachines/play-router/index/interfaces/CompileOptions.md +35 -0
- package/api/@xmachines/play-router/index/interfaces/FrameworkParamsSource.md +52 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/LocationLike.md +6 -6
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/MountableRouterBridge.md +12 -12
- package/api/@xmachines/play-router/index/interfaces/OpenProviderBridgeArgs.md +30 -0
- package/api/@xmachines/play-router/index/interfaces/ParseOptions.md +24 -0
- package/api/@xmachines/play-router/index/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-router/index/interfaces/PatternCache.md +65 -0
- package/api/@xmachines/play-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-router/index/interfaces/PlayRouterProviderBaseProps.md +39 -0
- package/api/@xmachines/play-router/index/interfaces/ResolvedBasePath.md +14 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/ResolvedRoutePath.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/Routable.md +26 -0
- package/api/@xmachines/play-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteInfo.md +11 -11
- package/api/@xmachines/play-router/index/interfaces/RouteMapOptions.md +19 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-router/index/interfaces/RouteMatch.md +12 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouteNode.md +13 -13
- package/api/@xmachines/play-router/index/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-router/index/interfaces/RouteTree.md +27 -0
- package/api/@xmachines/play-router/index/interfaces/RouteWatcherHandle.md +55 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterBridge.md +17 -19
- package/api/@xmachines/play-router/index/interfaces/RouterBridgeOptions.md +31 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/RouterConnection.md +10 -10
- package/api/@xmachines/play-router/index/interfaces/SplitLocation.md +16 -0
- package/api/@xmachines/play-router/{interfaces → index/interfaces}/WindowLike.md +4 -4
- package/api/@xmachines/play-router/index/type-aliases/PlayRouterBridgeConstructor.md +53 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-router/index/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-router/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/{play-xstate → play-router/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-router/index/variables/NO_BASE_PATH.md +18 -0
- package/api/@xmachines/play-router/index/variables/ROOT_NODE_ID.md +18 -0
- package/api/@xmachines/play-router/xstate/README.md +53 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/createRouteMap.md +11 -9
- package/api/@xmachines/play-router/xstate/functions/extractMachineRoutes.md +30 -0
- package/api/@xmachines/play-router/xstate/functions/getNavigableRoutes.md +35 -0
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRoutableRoutes.md +6 -6
- package/api/@xmachines/play-router/{functions → xstate/functions}/getRouteMappings.md +7 -7
- package/api/@xmachines/play-router/{functions → xstate/functions}/getTransitionReachableRoutes.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/isRouteReachable.md +2 -2
- package/api/@xmachines/play-router/{functions → xstate/functions}/machineToGraph.md +2 -2
- package/api/@xmachines/play-router/xstate/functions/routeExists.md +26 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineEdgeData.md +15 -0
- package/api/@xmachines/play-router/xstate/interfaces/MachineNodeData.md +17 -0
- package/api/@xmachines/play-router/{type-aliases → xstate/type-aliases}/MachineGraph.md +2 -2
- package/api/@xmachines/play-solid/README.md +21 -34
- package/api/@xmachines/play-solid/functions/useActor.md +1 -1
- package/api/@xmachines/play-solid/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-solid/interfaces/ActorProviderProps.md +11 -11
- package/api/@xmachines/play-solid/interfaces/PlayUIProviderProps.md +13 -13
- package/api/@xmachines/play-solid/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-solid/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-solid/variables/ActorContext.md +1 -1
- package/api/@xmachines/play-solid/variables/ActorProvider.md +2 -2
- package/api/@xmachines/play-solid/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-solid/variables/PlayUIProvider.md +1 -1
- package/api/@xmachines/play-solid/variables/schema.md +71 -0
- package/api/@xmachines/play-solid-router/README.md +34 -55
- package/api/@xmachines/play-solid-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-solid-router/classes/SolidRouterBridge.md +33 -56
- package/api/@xmachines/play-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-solid-router/interfaces/PlayActor.md +38 -35
- package/api/@xmachines/play-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-solid-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-solid-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-solid-router/interfaces/RouteMapping.md +5 -5
- package/api/@xmachines/play-solid-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
- package/api/@xmachines/play-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-solid-router/type-aliases/SolidRouterHooks.md +4 -4
- package/api/@xmachines/play-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-svelte/README.md +18 -29
- package/api/@xmachines/play-svelte/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-svelte/functions/getActorContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/getPlayViewContext.md +1 -1
- package/api/@xmachines/play-svelte/functions/setActorContext.md +1 -1
- package/api/@xmachines/play-svelte/interfaces/ActorProviderProps.md +12 -12
- package/api/@xmachines/play-svelte/interfaces/DefineRegistryOptions.md +4 -4
- package/api/@xmachines/play-svelte/interfaces/PlayUIProviderProps.md +14 -14
- package/api/@xmachines/play-svelte/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-svelte/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-svelte/variables/schema.md +16 -0
- package/api/@xmachines/play-svelte-spa-router/README.md +25 -44
- package/api/@xmachines/play-svelte-spa-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-svelte-spa-router/classes/SvelteSpaRouterBridge.md +24 -23
- package/api/@xmachines/play-svelte-spa-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-svelte-spa-router/interfaces/BasePathOptions.md +5 -9
- package/api/@xmachines/play-svelte-spa-router/interfaces/ConnectRouterOptions.md +11 -9
- package/api/@xmachines/play-svelte-spa-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-svelte-spa-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-svelte-spa-router/interfaces/RouterConnection.md +8 -8
- package/api/@xmachines/play-svelte-spa-router/interfaces/WindowLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/README.md +32 -50
- package/api/@xmachines/play-sveltekit-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-sveltekit-router/classes/SvelteKitRouterBridge.md +24 -23
- package/api/@xmachines/play-sveltekit-router/functions/connectRouter.md +3 -2
- package/api/@xmachines/play-sveltekit-router/interfaces/BasePathOptions.md +5 -9
- package/api/@xmachines/play-sveltekit-router/interfaces/ConnectRouterOptions.md +15 -23
- package/api/@xmachines/play-sveltekit-router/interfaces/LocationLike.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-sveltekit-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-sveltekit-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-sveltekit-router/interfaces/RouterConnection.md +8 -8
- package/api/@xmachines/play-tanstack-react-router/README.md +25 -49
- package/api/@xmachines/play-tanstack-react-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-tanstack-react-router/classes/TanStackReactRouterBridge.md +22 -21
- package/api/@xmachines/play-tanstack-react-router/functions/createPlayRouterProvider.md +11 -8
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMapFromTree.md +16 -9
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-tanstack-react-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
- package/api/@xmachines/play-tanstack-react-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-react-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-react-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-tanstack-router/README.md +6 -4
- package/api/@xmachines/play-tanstack-router/classes/TanStackRouterBridgeBase.md +26 -29
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouteMapLike.md +3 -3
- package/api/@xmachines/play-tanstack-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/README.md +29 -55
- package/api/@xmachines/play-tanstack-solid-router/classes/RouteMap.md +18 -12
- package/api/@xmachines/play-tanstack-solid-router/classes/TanStackSolidRouterBridge.md +52 -48
- package/api/@xmachines/play-tanstack-solid-router/functions/createPlayRouterProvider.md +9 -8
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouteEvent.md +9 -14
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayRouterProviderProps.md +14 -12
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapOptions.md +10 -4
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouteMapping.md +3 -3
- package/api/@xmachines/play-tanstack-solid-router/interfaces/RouterBridge.md +15 -17
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterBridgeConstructor.md +29 -12
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/PlayRouterProviderBaseProps.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterInstance.md +1 -1
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/TanStackRouterLike.md +5 -5
- package/api/@xmachines/play-tanstack-solid-router/variables/PlayRouterProvider.md +4 -4
- package/api/@xmachines/play-url/README.md +75 -0
- package/api/@xmachines/play-url/errors/README.md +17 -0
- package/api/@xmachines/play-url/errors/classes/InvalidBasePathError.md +200 -0
- package/api/@xmachines/play-url/errors/classes/InvalidRoutePatternError.md +203 -0
- package/api/@xmachines/play-url/errors/classes/MissingBasePathParamError.md +199 -0
- package/api/@xmachines/play-url/index/README.md +72 -0
- package/api/@xmachines/play-url/index/functions/buildPath.md +46 -0
- package/api/@xmachines/play-url/index/functions/cleanFrameworkParams.md +39 -0
- package/api/@xmachines/play-url/index/functions/createPatternCache.md +47 -0
- package/api/@xmachines/play-url/index/functions/getCandidates.md +29 -0
- package/api/@xmachines/play-url/index/functions/getCompiledPattern.md +32 -0
- package/api/@xmachines/play-url/index/functions/getIndexKey.md +30 -0
- package/api/@xmachines/play-url/index/functions/holdsUnsubstitutedParam.md +36 -0
- package/api/@xmachines/play-url/index/functions/isDotSegment.md +40 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/joinBasePath.md +3 -2
- package/api/@xmachines/{play-router → play-url/index}/functions/normalizeBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/parsePattern.md +28 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/pickOwnParams.md +4 -4
- package/api/@xmachines/{play-router → play-url/index}/functions/resolveBasePath.md +2 -2
- package/api/@xmachines/play-url/index/functions/resolveFrameworkParams.md +49 -0
- package/api/@xmachines/play-url/index/functions/sanitizePathname.md +27 -0
- package/api/@xmachines/play-url/index/functions/splitLocation.md +37 -0
- package/api/@xmachines/{play-router → play-url/index}/functions/stripBasePath.md +2 -2
- package/api/@xmachines/{play-router → play-url/index}/interfaces/BasePathOptions.md +6 -10
- package/api/@xmachines/play-url/index/interfaces/CompileOptions.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/FrameworkParamsSource.md +52 -0
- package/api/@xmachines/play-url/index/interfaces/GroupPart.md +15 -0
- package/api/@xmachines/play-url/index/interfaces/LiteralPart.md +14 -0
- package/api/@xmachines/play-url/index/interfaces/ParamPart.md +21 -0
- package/api/@xmachines/play-url/index/interfaces/ParseOptions.md +24 -0
- package/api/@xmachines/play-url/index/interfaces/ParsedPattern.md +23 -0
- package/api/@xmachines/play-url/index/interfaces/PatternCache.md +65 -0
- package/api/@xmachines/play-url/index/interfaces/PatternParam.md +15 -0
- package/api/@xmachines/{play-router → play-url/index}/interfaces/ResolvedBasePath.md +6 -6
- package/api/@xmachines/play-url/index/interfaces/SplitLocation.md +16 -0
- package/api/@xmachines/play-url/index/type-aliases/PathBuildResult.md +74 -0
- package/api/@xmachines/play-url/index/type-aliases/PathParams.md +15 -0
- package/api/@xmachines/play-url/index/type-aliases/PatternModifier.md +11 -0
- package/api/@xmachines/play-url/index/type-aliases/PatternPart.md +9 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternCtor.md +22 -0
- package/api/@xmachines/play-url/index/type-aliases/URLPatternLike.md +68 -0
- package/api/@xmachines/{play-router → play-url/index}/variables/NO_BASE_PATH.md +2 -2
- package/api/@xmachines/play-url/index/variables/URLPattern.md +21 -0
- package/api/@xmachines/play-view/README.md +176 -0
- package/api/@xmachines/play-view/errors/README.md +17 -0
- package/api/@xmachines/play-view/errors/classes/ReadOnlyContextError.md +192 -0
- package/api/@xmachines/play-view/index/README.md +55 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/attachRenderErrorHandler.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/functions/composePlayState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createFailureLatch.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createReportGuard.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/createViewStoreLifecycle.md +2 -2
- package/api/@xmachines/play-view/index/functions/guardContextWrites.md +19 -0
- package/api/@xmachines/{play-actor → play-view/index}/functions/refreshContextSubtree.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/reuseComposedState.md +3 -3
- package/api/@xmachines/{play-actor → play-view/index}/functions/sameViewInputs.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/toAtomState.md +2 -2
- package/api/@xmachines/{play-actor → play-view/index}/functions/typedSpec.md +2 -2
- package/api/@xmachines/play-view/index/interfaces/BaseActorProviderProps.md +49 -0
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/BaseViewContextValue.md +12 -12
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/FailureLatch.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/PlaySpec.md +8 -8
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuard.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ReportGuardMessages.md +6 -6
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ResolveViewStoreOptions.md +5 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewInputs.md +7 -7
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreLifecycle.md +6 -5
- package/api/@xmachines/{play-actor → play-view/index}/interfaces/ViewStoreResolution.md +7 -7
- package/api/@xmachines/play-view/index/interfaces/Viewable.md +18 -0
- package/api/@xmachines/play-view/index/type-aliases/ViewActor.md +26 -0
- package/api/@xmachines/{play-actor → play-view/index}/variables/CONTEXT_STATE_KEY.md +2 -2
- package/api/@xmachines/play-vue/README.md +26 -40
- package/api/@xmachines/play-vue/functions/defineRegistry.md +1 -1
- package/api/@xmachines/play-vue/functions/useActor.md +1 -1
- package/api/@xmachines/play-vue/functions/usePlayView.md +1 -1
- package/api/@xmachines/play-vue/interfaces/ActorProviderProps.md +9 -9
- package/api/@xmachines/play-vue/interfaces/PlayUIProviderProps.md +11 -11
- package/api/@xmachines/play-vue/interfaces/ViewContextValue.md +8 -8
- package/api/@xmachines/play-vue/type-aliases/AnyPlayActor.md +11 -3
- package/api/@xmachines/play-vue/type-aliases/ComponentEntry.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/ComponentsMap.md +1 -1
- package/api/@xmachines/play-vue/type-aliases/DefineRegistryOptions.md +2 -2
- package/api/@xmachines/play-vue/variables/PlayRenderer.md +1 -1
- package/api/@xmachines/play-vue/variables/schema.md +71 -0
- package/api/@xmachines/play-vue-router/README.md +42 -84
- package/api/@xmachines/play-vue-router/errors/README.md +8 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterNavigationError.md +193 -0
- package/api/@xmachines/play-vue-router/errors/classes/VueRouterSendError.md +177 -0
- package/api/@xmachines/play-vue-router/index/README.md +20 -0
- package/api/@xmachines/play-vue-router/{classes → index/classes}/RouteMap.md +19 -13
- package/api/@xmachines/play-vue-router/{classes → index/classes}/VueRouterBridge.md +26 -45
- package/api/@xmachines/play-vue-router/index/interfaces/PlayRouteEvent.md +130 -0
- package/api/@xmachines/play-vue-router/index/interfaces/RoutableActor.md +72 -0
- package/api/@xmachines/play-vue-router/index/interfaces/RouteMapOptions.md +19 -0
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouteMapping.md +6 -6
- package/api/@xmachines/play-vue-router/{interfaces → index/interfaces}/RouterBridge.md +17 -19
- package/api/@xmachines/play-vue-router/{variables → index/variables}/PlayRouterProvider.md +26 -4
- package/api/@xmachines/play-xstate/README.md +195 -116
- package/api/@xmachines/play-xstate/errors/README.md +14 -0
- package/api/@xmachines/play-xstate/errors/classes/ActorThrewNonErrorError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidEventError.md +198 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidMachineError.md +169 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteHandlerError.md +197 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteMetadataError.md +176 -0
- package/api/@xmachines/play-xstate/errors/classes/InvalidRouteParamError.md +207 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingRouteParamError.md +199 -0
- package/api/@xmachines/play-xstate/errors/classes/MissingStateIdError.md +203 -0
- package/api/@xmachines/play-xstate/index/README.md +38 -0
- package/api/@xmachines/play-xstate/index/classes/PlayerActor.md +583 -0
- package/api/@xmachines/play-xstate/index/functions/compose.md +224 -0
- package/api/@xmachines/play-xstate/index/functions/definePlayer.md +158 -0
- package/api/@xmachines/play-xstate/index/interfaces/PlayerConfig.md +22 -0
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerFactoryResumeOptions.md +3 -3
- package/api/@xmachines/play-xstate/{interfaces → index/interfaces}/PlayerOptions.md +10 -10
- package/api/@xmachines/play-xstate/index/type-aliases/Capability.md +33 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerConstructor.md +39 -0
- package/api/@xmachines/play-xstate/index/type-aliases/PlayerFactory.md +27 -0
- package/api/@xmachines/{play-router → play-xstate/index}/variables/DISPOSE.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/README.md +46 -0
- package/api/@xmachines/play-xstate/with-routing/functions/buildRouteUrl.md +57 -0
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/deriveRoute.md +4 -4
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/formatPlayRouteTransitions.md +2 -2
- package/api/@xmachines/play-xstate/{functions → with-routing/functions}/isAbsoluteRoute.md +3 -3
- package/api/@xmachines/play-xstate/with-routing/functions/withRouting.md +36 -0
- package/api/@xmachines/play-xstate/{interfaces → with-routing/interfaces}/RouteContext.md +6 -6
- package/api/@xmachines/play-xstate/with-routing/interfaces/RouteObject.md +34 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteData.md +12 -0
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteDataResolver.md +31 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteMachineConfig.md +5 -5
- package/api/@xmachines/play-xstate/with-routing/type-aliases/RouteMetadata.md +11 -0
- package/api/@xmachines/play-xstate/{type-aliases → with-routing/type-aliases}/RouteStateNode.md +21 -7
- package/api/@xmachines/play-xstate/with-view/README.md +31 -0
- package/api/@xmachines/play-xstate/with-view/functions/withView.md +33 -0
- package/api/@xmachines/shared/README.md +10 -32
- package/api/@xmachines/shared/vite-aliases/functions/xmAliases.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmCacheDir.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmOptimizeDeps.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmResolve.md +1 -1
- package/api/@xmachines/shared/vite-aliases/functions/xmSvelteRunes.md +2 -2
- package/api/@xmachines/shared/vitest/functions/defineXmBrowserConfig.md +1 -1
- package/api/@xmachines/shared/vitest/functions/defineXmVitestConfig.md +2 -1
- package/api/@xmachines/shared/vitest/interfaces/XmBrowserConfigOptions.md +4 -4
- package/api/README.md +4 -1
- package/api/llms.txt +18 -12
- package/contributing/architecture.md +157 -148
- package/contributing/configuration.md +100 -41
- package/contributing/deployment.md +112 -34
- package/contributing/development.md +103 -34
- package/contributing/migrating-to-play-atom.md +209 -0
- package/contributing/testing.md +136 -80
- package/examples/README.md +11 -9
- package/examples/basic-state-machine.md +4 -4
- package/examples/form-validation.md +4 -3
- package/examples/multi-router-integration.md +81 -59
- package/examples/routing-patterns.md +20 -19
- package/examples/traffic-light.md +17 -11
- package/guides/README.md +2 -1
- package/guides/actor-model.md +50 -32
- package/guides/atoms.md +264 -0
- package/guides/getting-started.md +91 -53
- package/guides/inspector.md +7 -7
- package/guides/routing.md +265 -0
- package/guides/state-machines.md +20 -21
- package/package.json +10 -9
- package/rfc/play.md +104 -60
- package/api/@xmachines/play-actor/classes/AbstractActor.md +0 -505
- package/api/@xmachines/play-actor/functions/guardContextWrites.md +0 -43
- package/api/@xmachines/play-actor/interfaces/BaseActorProviderProps.md +0 -48
- package/api/@xmachines/play-actor/interfaces/Routable.md +0 -14
- package/api/@xmachines/play-actor/interfaces/Viewable.md +0 -18
- package/api/@xmachines/play-dom/type-aliases/DisposablePlayUI.md +0 -36
- package/api/@xmachines/play-dom-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-dom-router/interfaces/DisposableBrowserHistory.md +0 -262
- package/api/@xmachines/play-dom-router/interfaces/DisposableVanillaRouter.md +0 -80
- package/api/@xmachines/play-react/functions/useSignalEffect.md +0 -77
- package/api/@xmachines/play-react/type-aliases/PlayRendererProps.md +0 -13
- package/api/@xmachines/play-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/functions/extractMachineRoutes.md +0 -29
- package/api/@xmachines/play-router/functions/findRouteByPath.md +0 -41
- package/api/@xmachines/play-router/functions/getNavigableRoutes.md +0 -35
- package/api/@xmachines/play-router/functions/getPatternParamNames.md +0 -24
- package/api/@xmachines/play-router/functions/getRequiredPatternParamNames.md +0 -36
- package/api/@xmachines/play-router/functions/resolveFrameworkParams.md +0 -51
- package/api/@xmachines/play-router/functions/routeExists.md +0 -26
- package/api/@xmachines/play-router/functions/sanitizePathname.md +0 -42
- package/api/@xmachines/play-router/interfaces/BuildPlayRouteEventOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/FrameworkParamsSource.md +0 -47
- package/api/@xmachines/play-router/interfaces/MachineEdgeData.md +0 -15
- package/api/@xmachines/play-router/interfaces/MachineNodeData.md +0 -17
- package/api/@xmachines/play-router/interfaces/OpenProviderBridgeArgs.md +0 -28
- package/api/@xmachines/play-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-router/interfaces/PlayRouterProviderBaseProps.md +0 -33
- package/api/@xmachines/play-router/interfaces/RoutableActor.md +0 -65
- package/api/@xmachines/play-router/interfaces/RouteMapOptions.md +0 -13
- package/api/@xmachines/play-router/interfaces/RouteMatch.md +0 -12
- package/api/@xmachines/play-router/interfaces/RouteObject.md +0 -21
- package/api/@xmachines/play-router/interfaces/RouteTree.md +0 -21
- package/api/@xmachines/play-router/interfaces/RouteWatcherHandle.md +0 -55
- package/api/@xmachines/play-router/type-aliases/BaseRouteMapping.md +0 -13
- package/api/@xmachines/play-router/type-aliases/PlayRouterBridgeConstructor.md +0 -36
- package/api/@xmachines/play-router/type-aliases/RouteMetadata.md +0 -11
- package/api/@xmachines/play-signals/README.md +0 -231
- package/api/@xmachines/play-signals/functions/watchSignal.md +0 -65
- package/api/@xmachines/play-signals/interfaces/ComputedOptions.md +0 -36
- package/api/@xmachines/play-signals/interfaces/SignalComputed.md +0 -49
- package/api/@xmachines/play-signals/interfaces/SignalOptions.md +0 -37
- package/api/@xmachines/play-signals/interfaces/SignalState.md +0 -68
- package/api/@xmachines/play-signals/interfaces/SignalWatcher.md +0 -97
- package/api/@xmachines/play-signals/namespaces/Signal/README.md +0 -22
- package/api/@xmachines/play-signals/namespaces/Signal/classes/Computed.md +0 -52
- package/api/@xmachines/play-signals/namespaces/Signal/classes/State.md +0 -72
- package/api/@xmachines/play-signals/namespaces/Signal/interfaces/Options.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/README.md +0 -21
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/classes/Watcher.md +0 -85
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/currentComputed.md +0 -13
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSinks.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/hasSources.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSinks.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/introspectSources.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/functions/untrack.md +0 -25
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/unwatched.md +0 -9
- package/api/@xmachines/play-signals/namespaces/Signal/namespaces/subtle/variables/watched.md +0 -9
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isComputed.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isState.md +0 -19
- package/api/@xmachines/play-signals/namespaces/Signal/variables/isWatcher.md +0 -19
- package/api/@xmachines/play-signals/type-aliases/WatcherNotify.md +0 -33
- package/api/@xmachines/play-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-solid-router/interfaces/AbstractActor.md +0 -471
- package/api/@xmachines/play-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-svelte-spa-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-svelte-spa-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-sveltekit-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-sveltekit-router/type-aliases/RoutableActor.md +0 -9
- package/api/@xmachines/play-tanstack-react-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-react-router/functions/extractMachineRoutes.md +0 -29
- package/api/@xmachines/play-tanstack-react-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-react-router/interfaces/RouteNavigateEvent.md +0 -31
- package/api/@xmachines/play-tanstack-solid-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-tanstack-solid-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-tanstack-solid-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue/interfaces/VisibilityProviderProps.md +0 -9
- package/api/@xmachines/play-vue/variables/getPlayViewContext.md +0 -39
- package/api/@xmachines/play-vue-router/functions/createRouteMap.md +0 -40
- package/api/@xmachines/play-vue-router/interfaces/PlayActor.md +0 -70
- package/api/@xmachines/play-vue-router/interfaces/PlayRouteEvent.md +0 -135
- package/api/@xmachines/play-vue-router/interfaces/RouteMapOptions.md +0 -13
- package/api/@xmachines/play-vue-router/type-aliases/RoutableActor.md +0 -13
- package/api/@xmachines/play-vue-router/type-aliases/VueRouteMap.md +0 -13
- package/api/@xmachines/play-vue-router/variables/VueRouteMap.md +0 -13
- package/api/@xmachines/play-xstate/classes/PlayerActor.md +0 -568
- package/api/@xmachines/play-xstate/functions/buildRouteUrl.md +0 -50
- package/api/@xmachines/play-xstate/functions/composeGuards.md +0 -86
- package/api/@xmachines/play-xstate/functions/composeGuardsOr.md +0 -72
- package/api/@xmachines/play-xstate/functions/contextFieldMatches.md +0 -43
- package/api/@xmachines/play-xstate/functions/definePlayer.md +0 -78
- package/api/@xmachines/play-xstate/functions/eventMatches.md +0 -45
- package/api/@xmachines/play-xstate/functions/hasContext.md +0 -45
- package/api/@xmachines/play-xstate/functions/negateGuard.md +0 -67
- package/api/@xmachines/play-xstate/interfaces/PlayerConfig.md +0 -20
- package/api/@xmachines/play-xstate/interfaces/RouteObject.md +0 -17
- package/api/@xmachines/play-xstate/type-aliases/ComposedGuard.md +0 -19
- package/api/@xmachines/play-xstate/type-aliases/Guard.md +0 -36
- package/api/@xmachines/play-xstate/type-aliases/GuardArray.md +0 -23
- package/api/@xmachines/play-xstate/type-aliases/PlayerFactory.md +0 -26
- package/api/@xmachines/play-xstate/type-aliases/RouteMetadata.md +0 -9
- package/guides/signals.md +0 -209
|
@@ -22,23 +22,23 @@ The dev container currently defines no workspace-specific environment variables;
|
|
|
22
22
|
|
|
23
23
|
**Examples:**
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
# Skip one package publish
|
|
27
|
-
SEMREL_SKIP_STEPS="@semantic-release/npm:packages/play-xstate"
|
|
25
|
+
A step ID is the name of the plugin, and a name that the entry declares extends it: `@semantic-release/exec:build`.
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
```bash
|
|
28
|
+
# Skip one prepare step
|
|
29
|
+
SEMREL_SKIP_STEPS="@semantic-release/exec:build$"
|
|
31
30
|
|
|
32
|
-
# Skip
|
|
31
|
+
# Skip every prepare step
|
|
33
32
|
SEMREL_SKIP_STEPS="@semantic-release/exec"
|
|
34
33
|
|
|
35
|
-
#
|
|
36
|
-
SEMREL_SKIP_STEPS="@semantic-release/
|
|
37
|
-
|
|
38
|
-
# Skip git commit and GitLab release
|
|
39
|
-
SEMREL_SKIP_STEPS="@semantic-release/git|@semantic-release/gitlab"
|
|
34
|
+
# Leave CHANGELOG.md alone
|
|
35
|
+
SEMREL_SKIP_STEPS="@semantic-release/changelog"
|
|
40
36
|
```
|
|
41
37
|
|
|
38
|
+
A pattern that removes `@semantic-release/git` throws instead of running: semantic-release would still tag and push, and the tag would then name a commit that carries no version bump.
|
|
39
|
+
|
|
40
|
+
The variable reaches the publish never. `scripts/publish-release.mjs` runs on the tag pipeline, outside semantic-release — see [deployment.md](deployment.md).
|
|
41
|
+
|
|
42
42
|
---
|
|
43
43
|
|
|
44
44
|
## Configuration Files
|
|
@@ -58,7 +58,7 @@ The root TypeScript config is a **build coordinator only** — it compiles nothi
|
|
|
58
58
|
{ "path": "./packages/play" },
|
|
59
59
|
{ "path": "./packages/shared" },
|
|
60
60
|
// Layer 1 — depends on Layer 0
|
|
61
|
-
{ "path": "./packages/play-
|
|
61
|
+
{ "path": "./packages/play-atom" },
|
|
62
62
|
// Layer 2
|
|
63
63
|
{ "path": "./packages/play-actor" },
|
|
64
64
|
// Layer 3
|
|
@@ -75,7 +75,7 @@ Every package must be listed here and must have `composite: true` in its own `ts
|
|
|
75
75
|
### TypeScript — Shared Base Config (`@xmachines/shared/tsconfig`)
|
|
76
76
|
|
|
77
77
|
**Location:** `packages/shared/config/tsconfig.json`
|
|
78
|
-
**Exported as:** `@xmachines/shared/tsconfig`
|
|
78
|
+
**Exported as:** [`@xmachines/shared/tsconfig`](../api/@xmachines/shared/README.md)
|
|
79
79
|
|
|
80
80
|
All packages extend this base. Key compiler settings:
|
|
81
81
|
|
|
@@ -139,7 +139,7 @@ declared floor is the floor the bundle runs on.
|
|
|
139
139
|
|
|
140
140
|
A package declares no `references`. Its dependencies live in `package.json`, and the root array orders the build.
|
|
141
141
|
|
|
142
|
-
**Test tsconfig (`@xmachines/shared/tsconfig-test`):**
|
|
142
|
+
**Test tsconfig ([`@xmachines/shared/tsconfig-test`](../api/@xmachines/shared/README.md)):**
|
|
143
143
|
|
|
144
144
|
**Location:** `packages/shared/config/tsconfig.test.json`
|
|
145
145
|
|
|
@@ -151,7 +151,7 @@ Test builds add `noEmit: true`, `allowImportingTsExtensions: true`, and `vitest/
|
|
|
151
151
|
**Tool:** [oxlint](https://oxc.rs/docs/guide/usage/linter) `^1.62.0`
|
|
152
152
|
**Run:** `pnpm run lint` / `pnpm run lint:fix`
|
|
153
153
|
|
|
154
|
-
The root config extends the shared base (`@xmachines/shared/oxlint`) and adds workspace-level ignore patterns:
|
|
154
|
+
The root config extends the shared base ([`@xmachines/shared/oxlint`](../api/@xmachines/shared/README.md)) and adds workspace-level ignore patterns:
|
|
155
155
|
|
|
156
156
|
```typescript
|
|
157
157
|
// /oxlint.config.ts
|
|
@@ -185,8 +185,8 @@ export default defineConfig({
|
|
|
185
185
|
| `no-underscore-dangle` | — | `off` |
|
|
186
186
|
|
|
187
187
|
`unicorn/no-array-sort` is an error and not the warning of its category. The workspace
|
|
188
|
-
targets ESNext, and Node
|
|
189
|
-
|
|
188
|
+
targets ESNext, and Node 24 — the floor of every package — has `toSorted()`, so the
|
|
189
|
+
method is always available. As a warning the rule kept
|
|
190
190
|
the lint job green while the Code Quality report showed the degradation, and `sort()` stayed
|
|
191
191
|
behind a suppression for a ceiling that had already gone.
|
|
192
192
|
|
|
@@ -252,6 +252,64 @@ export default defineConfig({
|
|
|
252
252
|
| `useTabs` | `false` |
|
|
253
253
|
| `tabWidth` | `2` |
|
|
254
254
|
|
|
255
|
+
### Developer Tools — Vite DevTools
|
|
256
|
+
|
|
257
|
+
**Tool:** [Vite DevTools](https://devtools.vite.dev/guide/) `^0.7.1`
|
|
258
|
+
**Run:** `Shift+Alt+D` in any demo dev server
|
|
259
|
+
|
|
260
|
+
`@vitejs/devtools` hosts four integrations, and each one reads a tool this repository already
|
|
261
|
+
uses:
|
|
262
|
+
|
|
263
|
+
| Integration | Panel |
|
|
264
|
+
| ------------------------------------------------------------------ | ---------------------------------------------------------------- |
|
|
265
|
+
| [`@vitejs/devtools-oxc`](https://devtools.vite.dev/oxc/) | oxlint diagnostics, the resolved rules, and the oxfmt version |
|
|
266
|
+
| [`@vitejs/devtools-vite`](https://devtools.vite.dev/vite/) | the plugin pipeline of the dev server, and each module transform |
|
|
267
|
+
| [`@vitejs/devtools-rolldown`](https://devtools.vite.dev/rolldown/) | the rolldown build that Vite 8 runs, and the modules it bundles |
|
|
268
|
+
| [`@vitejs/devtools-vitest`](https://devtools.vite.dev/vitest/) | the Vitest UI, inside the dock |
|
|
269
|
+
|
|
270
|
+
`defineXmDemoConfig` adds the dock to every demo dev server, therefore the four panels need no
|
|
271
|
+
script and no separate command:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
pnpm --filter @xmachines/play-vue-router-demo run dev
|
|
275
|
+
# then press Shift+Alt+D in the browser
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
The dock starts hidden (`embeddedVisibility: "passive"`), and the browser remembers the choice
|
|
279
|
+
after the first `Shift+Alt+D`. The demos are the subjects of the browser suites and of the
|
|
280
|
+
screenshots of the documentation, and a panel above them helps neither.
|
|
281
|
+
|
|
282
|
+
The root manifest declares `@vitest/ui`, because the Vitest panel embeds it. Without it the panel
|
|
283
|
+
shows an "Install @vitest/ui & start" button, and that button writes the dependency into the root
|
|
284
|
+
manifest and installs it while the dev server runs. It installs the newest version, which is 5.x,
|
|
285
|
+
and `vitest` names `@vitest/ui` as a peer at its own exact version. The declared `^4.1.11` keeps
|
|
286
|
+
the whole vitest family on one range, which `tests/vitest-version-lockstep.test.ts` holds true.
|
|
287
|
+
|
|
288
|
+
Only the 13 demo apps declare the five packages, because only they run a dev server. The Oxc panel
|
|
289
|
+
reads the same shared configuration from any of them: all 23 per-package `oxlint.config.ts`
|
|
290
|
+
files hold `extends: [sharedConfig]` and add nothing, and the packages under `examples/` hold no
|
|
291
|
+
config of their own. To read the configuration of a package that has no demo, run the inspector
|
|
292
|
+
without installing it:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
pnpm --filter @xmachines/docs exec npx @vitejs/devtools-oxc
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
`defineXmDemoConfig` hands `DevTools()` the demo directory as `cwd`. Without it the lookup starts
|
|
299
|
+
at `process.cwd()`, and the set of panels then depends on the directory a person typed the command
|
|
300
|
+
in.
|
|
301
|
+
|
|
302
|
+
Every DevTools plugin carries `apply: "serve"`. A demo is a release asset, therefore
|
|
303
|
+
`pnpm --filter <demo> run build` emits the same files as before the dock existed, and no devtools
|
|
304
|
+
code reaches a published demo.
|
|
305
|
+
|
|
306
|
+
A Vitest run gets no dock. `apply: "serve"` does not cover that case, because Vitest browser mode
|
|
307
|
+
serves the app and therefore counts as `serve`. `defineXmDemoConfig` reads the `VITEST` variable
|
|
308
|
+
that the Vitest CLI sets, and it adds no plugin when that variable is present. This gate is a
|
|
309
|
+
guard, and it is not a fix for a failure that reproduces: the browser suite also passes and exits
|
|
310
|
+
with the gate removed. A dock belongs to a dev server that a person opened, therefore the gate
|
|
311
|
+
stays.
|
|
312
|
+
|
|
255
313
|
### Editor — `.editorconfig`
|
|
256
314
|
|
|
257
315
|
**Location:** `/.editorconfig`
|
|
@@ -273,15 +331,15 @@ export default defineConfig({
|
|
|
273
331
|
|
|
274
332
|
Root Vitest config is a **workspace coordinator** that lists all per-package configs under `test.projects`. It sets conservative monorepo-wide defaults:
|
|
275
333
|
|
|
276
|
-
| Setting | Value | Notes
|
|
277
|
-
| ----------------- | ---------- |
|
|
278
|
-
| `pool` | `"forks"` | Process-isolated workers
|
|
279
|
-
| `maxWorkers` | `4` | Root default; per-project configs may override
|
|
280
|
-
| `isolate` | `true` |
|
|
281
|
-
| `fileParallelism` | `false` | Conservative default; safe packages opt in with `true`
|
|
282
|
-
| `teardownTimeout` | `30000` ms |
|
|
283
|
-
| `hookTimeout` | `30000` ms |
|
|
284
|
-
| `testTimeout` | `10000` ms |
|
|
334
|
+
| Setting | Value | Notes |
|
|
335
|
+
| ----------------- | ---------- | ------------------------------------------------------------------------------------ |
|
|
336
|
+
| `pool` | `"forks"` | Process-isolated workers; `defineXmVitestConfig` gives a jsdom project `"vmThreads"` |
|
|
337
|
+
| `maxWorkers` | `4` | Root default; per-project configs may override |
|
|
338
|
+
| `isolate` | `true` | |
|
|
339
|
+
| `fileParallelism` | `false` | Conservative default; safe packages opt in with `true` |
|
|
340
|
+
| `teardownTimeout` | `30000` ms | |
|
|
341
|
+
| `hookTimeout` | `30000` ms | |
|
|
342
|
+
| `testTimeout` | `10000` ms | |
|
|
285
343
|
|
|
286
344
|
**Coverage thresholds** (monorepo aggregate — `vitest run --coverage`):
|
|
287
345
|
|
|
@@ -300,7 +358,7 @@ Run with `pnpm run test:browser`. Uses Playwright Chromium via Vitest browser mo
|
|
|
300
358
|
### Per-Package Vitest Config — `@xmachines/shared/vitest`
|
|
301
359
|
|
|
302
360
|
**Location:** `packages/shared/config/vitest.ts`
|
|
303
|
-
**Exported as:** `@xmachines/shared/vitest`
|
|
361
|
+
**Exported as:** [`@xmachines/shared/vitest`](../api/@xmachines/shared/README.md)
|
|
304
362
|
|
|
305
363
|
Packages use `defineXmVitestConfig(import.meta.url, overrides)` to create their config. It automatically injects:
|
|
306
364
|
|
|
@@ -325,7 +383,7 @@ export default defineXmVitestConfig(import.meta.url, {
|
|
|
325
383
|
### Vite Source Aliases — `@xmachines/shared/vite-aliases`
|
|
326
384
|
|
|
327
385
|
**Location:** `packages/shared/config/vite-aliases.ts`
|
|
328
|
-
**Exported as:** `@xmachines/shared/vite-aliases`
|
|
386
|
+
**Exported as:** [`@xmachines/shared/vite-aliases`](../api/@xmachines/shared/README.md)
|
|
329
387
|
|
|
330
388
|
Provides two helpers used in all `vitest.config.ts` and `vite.config.ts` files:
|
|
331
389
|
|
|
@@ -367,11 +425,12 @@ Only `main` is a protected branch today. That works because `GITLAB_TOKEN` — w
|
|
|
367
425
|
- `build` — `pnpm run build`
|
|
368
426
|
- `typedoc` — `pnpm --filter @xmachines/docs run typedoc`
|
|
369
427
|
- `format-docs` — `pnpm --filter @xmachines/docs run format`
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
428
|
+
- `stage-generated-docs` — `git add -A packages/docs/api`, so a page that TypeDoc deleted leaves git too
|
|
429
|
+
5. `@semantic-release/git` — commits the changelog, the manifests, the READMEs and the generated API docs, then pushes the commit and the tag
|
|
430
|
+
|
|
431
|
+
The list ends there. semantic-release publishes nothing and creates no GitLab release: `scripts/publish-release.mjs` does both, on the pipeline of the tag. [deployment.md](deployment.md) states the whole sequence and the reason.
|
|
373
432
|
|
|
374
|
-
Any step can be skipped
|
|
433
|
+
Any step above can be skipped with the `SEMREL_SKIP_STEPS` CI variable, which the CI / Release Pipeline Variable section at the top of this page states.
|
|
375
434
|
|
|
376
435
|
---
|
|
377
436
|
|
|
@@ -385,15 +444,15 @@ The only environment-specific distinction is between **local development** (dev
|
|
|
385
444
|
|
|
386
445
|
## Required vs Optional Settings Summary
|
|
387
446
|
|
|
388
|
-
| Config
|
|
389
|
-
|
|
|
390
|
-
| `SEMREL_SKIP_STEPS`
|
|
391
|
-
| Root `tsconfig.json` `references`
|
|
392
|
-
| Per-package `references`
|
|
393
|
-
| Per-package `composite: true`
|
|
394
|
-
| `@xmachines/shared/tsconfig` extends | Yes — all packages must extend it | — |
|
|
395
|
-
| `@xmachines/shared/oxlint` extends | Yes — all packages must extend it | — |
|
|
396
|
-
| `@xmachines/shared/oxfmt` extends | Yes — all packages must extend it | — |
|
|
447
|
+
| Config | Required to Work | Optional / Has Default |
|
|
448
|
+
| -------------------------------------------------------------------------- | --------------------------------------- | ----------------------------- |
|
|
449
|
+
| `SEMREL_SKIP_STEPS` | No | Default: `""` (run all steps) |
|
|
450
|
+
| Root `tsconfig.json` `references` | Yes — the whole build order | — |
|
|
451
|
+
| Per-package `references` | No — TypeScript drops them on `extends` | — |
|
|
452
|
+
| Per-package `composite: true` | Yes — required for project references | — |
|
|
453
|
+
| [`@xmachines/shared/tsconfig`](../api/@xmachines/shared/README.md) extends | Yes — all packages must extend it | — |
|
|
454
|
+
| [`@xmachines/shared/oxlint`](../api/@xmachines/shared/README.md) extends | Yes — all packages must extend it | — |
|
|
455
|
+
| [`@xmachines/shared/oxfmt`](../api/@xmachines/shared/README.md) extends | Yes — all packages must extend it | — |
|
|
397
456
|
|
|
398
457
|
---
|
|
399
458
|
|
|
@@ -8,11 +8,11 @@ This document describes how `@xmachines/xmachines-js` packages are built, versio
|
|
|
8
8
|
|
|
9
9
|
All `@xmachines/*` packages are published to the **public npm registry** (`registry.npmjs.org`). Every package uses `"publishConfig": { "access": "public" }` so scoped packages are accessible without an npm org subscription. See the [Published Packages](#published-packages) table for the full list.
|
|
10
10
|
|
|
11
|
-
| Target | Config File
|
|
12
|
-
| --------------- |
|
|
13
|
-
| npm registry | `release.
|
|
14
|
-
| GitLab Releases | `release.
|
|
15
|
-
| GitLab CI | `.gitlab-ci.yml`
|
|
11
|
+
| Target | Config File | Purpose |
|
|
12
|
+
| --------------- | -------------------------------------------------- | ------------------------------------------------------ |
|
|
13
|
+
| npm registry | `scripts/publish-release.mjs`, on the tag pipeline | Publish all public packages |
|
|
14
|
+
| GitLab Releases | `scripts/publish-release.mjs`, on the tag pipeline | Attach tarball artifacts to the GitLab release tag |
|
|
15
|
+
| GitLab CI | `.gitlab-ci.yml` | Trigger builds, tests, and releases on push / MR / tag |
|
|
16
16
|
|
|
17
17
|
The root `package.json` is marked `"private": true` and is **never published** to npm.
|
|
18
18
|
|
|
@@ -27,7 +27,7 @@ The following packages are published on every release (derived from the workspac
|
|
|
27
27
|
| [`@xmachines/shared`](../api/@xmachines/shared/README.md) | `packages/shared` |
|
|
28
28
|
| [`@xmachines/play`](../api/@xmachines/play/README.md) | `packages/play` |
|
|
29
29
|
| [`@xmachines/play-actor`](../api/@xmachines/play-actor/README.md) | `packages/play-actor` |
|
|
30
|
-
| [`@xmachines/play-
|
|
30
|
+
| [`@xmachines/play-atom`](../api/@xmachines/play-atom/README.md) | `packages/play-atom` |
|
|
31
31
|
| [`@xmachines/play-router`](../api/@xmachines/play-router/README.md) | `packages/play-router` |
|
|
32
32
|
| [`@xmachines/play-dom`](../api/@xmachines/play-dom/README.md) | `packages/play-dom` |
|
|
33
33
|
| [`@xmachines/play-dom-router`](../api/@xmachines/play-dom-router/README.md) | `packages/play-dom-router` |
|
|
@@ -70,20 +70,31 @@ The pipeline includes two reusable CI components, both pinned in `.gitlab-ci.yml
|
|
|
70
70
|
- **`to-be-continuous/node/gitlab-ci-node`** — handles install, lint, build, test, and audit
|
|
71
71
|
- **`to-be-continuous/semantic-release/gitlab-ci-semrel`** — runs `semantic-release` on eligible branches
|
|
72
72
|
|
|
73
|
-
The `node-build` job runs
|
|
73
|
+
The `node-build` job runs one command:
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
76
|
pnpm run build # vite build (JavaScript) && tsc --build (declarations)
|
|
77
|
-
pnpm run test:coverage # vitest run --coverage (with JUnit + Cobertura reporters)
|
|
78
77
|
```
|
|
79
78
|
|
|
80
|
-
|
|
79
|
+
It runs no test. The `test` job owns the unit suite, so `node-build` skips its own with `NODE_TEST_ARGS`. It also builds no documentation: the `docs` job below does that.
|
|
80
|
+
|
|
81
|
+
Coverage comes from the `test` job, through the regex:
|
|
81
82
|
|
|
82
83
|
```
|
|
83
84
|
/All files[^|]*\|[^|]*\s+([\d\.]+)/
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
JUnit results
|
|
87
|
+
That job publishes the JUnit results as `reports/test-results.xml` and the Cobertura coverage as `reports/cobertura-coverage.xml`. `vitest.config.ts` names both paths, and `COVERAGE_REPORTS_DIR` points them at `reports/`.
|
|
88
|
+
|
|
89
|
+
### Docs Job
|
|
90
|
+
|
|
91
|
+
The `docs` job runs `pnpm run docs` — the full build, then TypeDoc, then the formatter. It runs automatically on `main` and it waits for a click on a merge request. It declares `needs: []`, because it compiles what it documents.
|
|
92
|
+
|
|
93
|
+
TypeDoc treats a warning as an error. This job is therefore the gate that reports a `@see` or a `{@link}` that names a symbol a rename removed. Before it existed, `node-build` regenerated the reference on every push, which put a second pass over every package on a branch that is pushed to many times.
|
|
94
|
+
|
|
95
|
+
The click is a gate, not an option. The job is manual with `allow_failure: false`, so a pipeline that nobody starts it from stays BLOCKED, and the merge check "Pipelines must succeed" holds the merge request. The `release-pack-smoke` job below uses the same rules for the same reason.
|
|
96
|
+
|
|
97
|
+
The job declares `stage: test`. A blocking manual job holds every later stage until it runs, so `build` would keep the unit suite, the browser suite and `release-pack-smoke` waiting for a click. Jobs in the same stage are not affected.
|
|
87
98
|
|
|
88
99
|
### Release Job Detail
|
|
89
100
|
|
|
@@ -116,7 +127,7 @@ node scripts/release-pack-smoke.mjs
|
|
|
116
127
|
|
|
117
128
|
`scripts/release-pack-smoke.mjs`:
|
|
118
129
|
|
|
119
|
-
1.
|
|
130
|
+
1. Asks `scripts/lib/release-packages.mjs` which packages a release publishes. `publish-release.mjs` and `release.config.mjs` ask the same module, so the three cannot disagree.
|
|
120
131
|
2. For each publishable package: runs `npm pack --json` in the package directory.
|
|
121
132
|
3. Creates a temporary directory, runs `npm init -y`, and installs the local tarball with `--ignore-scripts`.
|
|
122
133
|
4. Asserts the install succeeds — any missing files, broken exports, or pack-time errors surface here.
|
|
@@ -155,6 +166,7 @@ node scripts/set-workspace-versions.mjs ${nextRelease.version}
|
|
|
155
166
|
pnpm run build
|
|
156
167
|
pnpm --filter @xmachines/docs run typedoc --gitRevision v${nextRelease.version}
|
|
157
168
|
pnpm --filter @xmachines/docs run format
|
|
169
|
+
git add -A packages/docs/api
|
|
158
170
|
```
|
|
159
171
|
|
|
160
172
|
Step by step:
|
|
@@ -165,44 +177,45 @@ Step by step:
|
|
|
165
177
|
4. **Build** — runs `vite build && tsc --build` to produce compiled `dist/` output — JavaScript then declarations — in all packages.
|
|
166
178
|
5. **Generate API docs** — runs TypeDoc to regenerate `packages/docs/api/` at the release git revision.
|
|
167
179
|
6. **Format docs** — runs `oxfmt` on the docs package to ensure consistent formatting.
|
|
180
|
+
7. **Stage the generated docs** — `git add -A packages/docs/api`. The git plugin stages what `git ls-files -m -o` reports, and that never reports a DELETION. A page that TypeDoc removed, because an export was renamed or deleted, therefore stayed in git forever while the docs tarball packed from the working tree was correct. `git add -A` stages the removals, and the git plugin commits the index.
|
|
168
181
|
|
|
169
182
|
### Publish Phase
|
|
170
183
|
|
|
171
|
-
|
|
184
|
+
semantic-release publishes nothing. It stops at the tag, and `scripts/publish-release.mjs` publishes from a pipeline that runs ON that tag:
|
|
172
185
|
|
|
173
|
-
|
|
174
|
-
|
|
186
|
+
```bash
|
|
187
|
+
node scripts/publish-release.mjs
|
|
188
|
+
```
|
|
175
189
|
|
|
176
|
-
|
|
177
|
-
hand-written):
|
|
190
|
+
The tag pipeline is what makes the provenance attestation meaningful. npm records the commit of the pipeline in the attestation. On a tag pipeline that commit IS the commit that the tag names, and it is the commit whose manifests declare this version. A publish from the branch pipeline attests the PARENT of the release commit instead: a revision that the tag does not name, and whose manifests still carry the previous version.
|
|
178
191
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
192
|
+
The script pins the internal dependencies, strips the `source` export condition, packs every workspace package into `dist/releases/`, publishes each publishable tarball with `--provenance` under the dist-tag of the version, and verifies that every one reached the registry. It then creates the GitLab release with the tarballs attached, and it restores the working tree.
|
|
193
|
+
|
|
194
|
+
The script is idempotent. It skips every package that the registry already serves at this version, so one retry of the job finishes a run that died partway — which is how the publish of 1.1.0 recovered from a credential that expired mid-run. Nothing to untag, nothing to force-push.
|
|
182
195
|
|
|
183
196
|
### Post-Release Phase
|
|
184
197
|
|
|
185
|
-
|
|
198
|
+
This phase runs on the branch, BEFORE the tag pipeline publishes.
|
|
186
199
|
|
|
187
200
|
1. **`@semantic-release/git`** commits updated files back to the repository:
|
|
188
201
|
- `CHANGELOG.md`
|
|
189
|
-
- `package.json` and `
|
|
190
|
-
- `
|
|
202
|
+
- `package.json`, `pnpm-lock.yaml` and `pnpm-workspace.yaml` (root)
|
|
203
|
+
- The `package.json` of every scanned package, and the `README.md` of every one — the release stamps the version badge of a README at the same moment as the manifest
|
|
191
204
|
- `packages/docs/api/**` (generated API documentation)
|
|
192
205
|
|
|
206
|
+
The manifest list and the README list both come from the workspace scan, and not from a glob written by hand, so a package that a new `pnpm-workspace` pattern adds cannot be published while its manifest stays behind in git. A test asserts that every scanned package appears in both lists.
|
|
207
|
+
|
|
193
208
|
Commit message format:
|
|
194
209
|
|
|
195
210
|
```
|
|
196
211
|
chore(release): <version>
|
|
197
|
-
|
|
198
|
-
<release notes>
|
|
199
|
-
|
|
200
|
-
[skip ci]
|
|
201
212
|
```
|
|
202
213
|
|
|
203
|
-
|
|
214
|
+
The release notes are NOT interpolated into the message. `@semantic-release/git` runs `git commit -m <message>`, and the notes of the first stable release aggregate about 1600 commits — an `-m` value of several megabytes overflows the argument limit of the OS. The notes land in `CHANGELOG.md`, which the same commit carries.
|
|
204
215
|
|
|
205
|
-
|
|
216
|
+
The message carries no `[skip ci]`. The release commit needs no pipeline of its own, but the TAG that points at it does: that pipeline is where the publish happens.
|
|
217
|
+
|
|
218
|
+
2. **The git plugin pushes the commit and the tag.** semantic-release stops there. The GitLab release entry, with every `dist/releases/*.tgz` attached, is created later by `scripts/publish-release.mjs` on the tag pipeline — after the publish succeeded, so a release entry never advertises a tarball that npm refused.
|
|
206
219
|
|
|
207
220
|
---
|
|
208
221
|
|
|
@@ -219,11 +232,11 @@ This means packages always depend on the exact same version of sibling packages
|
|
|
219
232
|
|
|
220
233
|
## Credentials and Protected Variables
|
|
221
234
|
|
|
222
|
-
| Variable | Source | Purpose
|
|
223
|
-
| --------------------------- | --------------------------------------- |
|
|
224
|
-
| `NPM_ID_TOKEN` | GitLab CI OIDC (auto-generated per job) | Authenticates `semantic-release` to npm registry via OIDC token exchange
|
|
225
|
-
| `GL_TOKEN` / `GITLAB_TOKEN` | GitLab CI group variable (unprotected) | Authenticates
|
|
226
|
-
| `CI_JOB_TOKEN` | GitLab CI built-in | Used by the `to-be-continuous` components for GitLab API calls
|
|
235
|
+
| Variable | Source | Purpose |
|
|
236
|
+
| --------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
237
|
+
| `NPM_ID_TOKEN` | GitLab CI OIDC (auto-generated per job) | Authenticates `semantic-release` to npm registry via OIDC token exchange |
|
|
238
|
+
| `GL_TOKEN` / `GITLAB_TOKEN` | GitLab CI group variable (unprotected) | Authenticates the git push back of semantic-release, and the GitLab release that `publish-release.mjs` creates |
|
|
239
|
+
| `CI_JOB_TOKEN` | GitLab CI built-in | Used by the `to-be-continuous` components for GitLab API calls |
|
|
227
240
|
|
|
228
241
|
**No static npm token is committed to the repository.** The `NPM_ID_TOKEN` is a short-lived OIDC token generated for each CI job with audience `npm:registry.npmjs.org`.
|
|
229
242
|
|
|
@@ -272,6 +285,71 @@ There is no automated rollback mechanism. To revert a release:
|
|
|
272
285
|
|
|
273
286
|
---
|
|
274
287
|
|
|
288
|
+
## Bootstrapping a New Package
|
|
289
|
+
|
|
290
|
+
A package that this workspace publishes for the FIRST time needs one manual publish before
|
|
291
|
+
the release, and it is the one publish that a human runs.
|
|
292
|
+
|
|
293
|
+
The release authenticates to npm through OIDC and carries no static token. npm configures
|
|
294
|
+
a trusted publisher on a package that EXISTS already, and a package exists after its first
|
|
295
|
+
version. A name that npm has never seen therefore takes no publisher, and the release fails
|
|
296
|
+
on that package alone: it publishes the rest, it creates the tag, and it leaves the new
|
|
297
|
+
package missing — the state that [Recovering a Failed Release](#recovering-a-failed-release)
|
|
298
|
+
describes.
|
|
299
|
+
|
|
300
|
+
Run this from the repository root, when the release is NEAR:
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
# Rehearse it first. It writes a tarball and publishes nothing.
|
|
304
|
+
node scripts/bootstrap-npm-package.mjs --dry-run play-pattern play-atom
|
|
305
|
+
|
|
306
|
+
node scripts/bootstrap-npm-package.mjs play-pattern play-atom
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
The script reads the real manifest of each package and publishes ONE version,
|
|
310
|
+
`0.0.0-bootstrap.0`, that holds the name, the metadata that npm shows, and a README that
|
|
311
|
+
says why the version carries no code. The version carries a prerelease identifier, so a
|
|
312
|
+
RANGE of a consumer selects it never. npm asks the maintainer for a one-time password, and
|
|
313
|
+
the script gives npm the terminal to ask on. Pass a code without a terminal through the
|
|
314
|
+
environment: `npm_config_otp=<code> node scripts/bootstrap-npm-package.mjs <package>`.
|
|
315
|
+
|
|
316
|
+
> **The bootstrap version takes the `latest` dist-tag.** A package takes its `latest` from
|
|
317
|
+
> its FIRST version, whatever `--tag` says, because npm keeps no package without one. The
|
|
318
|
+
> script asks for the `bootstrap` tag and npm sets both, so `npm install @xmachines/<name>`
|
|
319
|
+
> gives the empty version until the real release replaces the tag. This is the second
|
|
320
|
+
> reason to bootstrap a name when the release is NEAR.
|
|
321
|
+
|
|
322
|
+
The registry also answers for the new package about three minutes after the publish, so a
|
|
323
|
+
read that says "Not found" right after a publish that reported success is that delay.
|
|
324
|
+
|
|
325
|
+
Then, for EACH package:
|
|
326
|
+
|
|
327
|
+
1. Open `https://www.npmjs.com/package/<name>/access` and add a trusted publisher:
|
|
328
|
+
|
|
329
|
+
| Field | Value |
|
|
330
|
+
| ------------- | ---------------- |
|
|
331
|
+
| Namespace | `xmachin-es` |
|
|
332
|
+
| Project | `xmachines-js` |
|
|
333
|
+
| Pipeline file | `.gitlab-ci.yml` |
|
|
334
|
+
| Environment | none |
|
|
335
|
+
|
|
336
|
+
The publish job declares no environment, so leaving that field set refuses the token.
|
|
337
|
+
|
|
338
|
+
2. Cut the release, which publishes the real version through OIDC.
|
|
339
|
+
|
|
340
|
+
3. Unpublish the bootstrap version:
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
npm unpublish @xmachines/<name>@0.0.0-bootstrap.0
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
> **npm accepts an unpublish for 72 HOURS after the publish.** Bootstrap a name when the
|
|
347
|
+
> release is near, and not weeks before it, or the empty version stays on the registry for
|
|
348
|
+
> ever. [`@xmachines/play-url`](../api/@xmachines/play-url/README.md) and [`@xmachines/play-view`](../api/@xmachines/play-view/README.md) were bootstrapped this way for
|
|
349
|
+
> 4.0.0, and each one carries the release version alone today.
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
275
353
|
## Recovering a Failed Release
|
|
276
354
|
|
|
277
355
|
If the job dies partway (e.g. one package's trusted publisher isn't set up), some packages are published, the git tag is created, and the rest are missing. To finish the release:
|
|
@@ -317,7 +395,7 @@ pnpm --filter @xmachines/play run build
|
|
|
317
395
|
pnpm --filter @xmachines/play pack
|
|
318
396
|
```
|
|
319
397
|
|
|
320
|
-
**Do not run `npm publish` manually.** All publishing must go through semantic-release in CI to keep `CHANGELOG.md`, git tags, and npm versions in sync.
|
|
398
|
+
**Do not run `npm publish` manually.** All publishing must go through semantic-release in CI to keep `CHANGELOG.md`, git tags, and npm versions in sync. [Bootstrapping a New Package](#bootstrapping-a-new-package) is the ONE exception, and it publishes a version that holds no code.
|
|
321
399
|
|
|
322
400
|
---
|
|
323
401
|
|