PulseTrade.Comm.Spa.ACL
0.1.0-alpha43
See the version list below for details.
dotnet add package PulseTrade.Comm.Spa.ACL --version 0.1.0-alpha43
NuGet\Install-Package PulseTrade.Comm.Spa.ACL -Version 0.1.0-alpha43
<PackageReference Include="PulseTrade.Comm.Spa.ACL" Version="0.1.0-alpha43" />
<PackageVersion Include="PulseTrade.Comm.Spa.ACL" Version="0.1.0-alpha43" />
<PackageReference Include="PulseTrade.Comm.Spa.ACL" />
paket add PulseTrade.Comm.Spa.ACL --version 0.1.0-alpha43
#r "nuget: PulseTrade.Comm.Spa.ACL, 0.1.0-alpha43"
#:package PulseTrade.Comm.Spa.ACL@0.1.0-alpha43
#addin nuget:?package=PulseTrade.Comm.Spa.ACL&version=0.1.0-alpha43&prerelease
#tool nuget:?package=PulseTrade.Comm.Spa.ACL&version=0.1.0-alpha43&prerelease
PulseTrade.Comm.Spa.ACL
Open PTCS ACL extension package.
This package is still small in the current extraction slice. The closed packages
PulseTrade.Comm.Spa and PulseTrade.Comm.ACL.Core still own the runtime contracts
and evaluator implementation. This open package gives NuGet consumers a stable final
boundary for ACL wiring and now also owns the browser extension manifest/script
registration used by PTCS:
#r "nuget: PulseTrade.Comm.Spa"
#r "nuget: PulseTrade.Comm.ACL.Core"
#r "nuget: PulseTrade.Comm.Spa.ACL"
open PulseTrade.Comm.Spa
open PulseTrade.Comm.Spa.ACL
let options =
ServerOptions.localRandom()
|> PtcsAclExtension.useAcl aclOptions
PtcsAclExtension.useAcl performs two actions:
- registers
PtcsAclOptionsinto the PTCS server runtime by calling the PTCS SPI; - registers extension id
pulse-trade-comm-spa-acl, script url/client-extensions/acl/PulseTrade.Comm.Spa.ACL.js, and the packagecontentFilesscript asset in the PTCS client-extension manifest; - registers the WebSharper runtime asset required by the package bundle at
/client-extensions/acl/WebSharper.Core.JavaScript/Runtime.js; - registers a browser ACL snapshot observer through
PulseTradeRegisterAclSnapshotObserver; - registers a browser ACL capability provider through
PulseTradeRegisterAclCapabilityProvider, so PTCS core can delegate browser action visibility decisions to this open extension before falling back to its closed in-core evaluator.
Command authorization target resolver
PtcsAclExtension.withCommandAuthorizationTargetResolver attaches an optional
server-side resolver to one PtcsAclOptions runtime. It is intended for host or
extension packages that understand an opaque command payload and need to refine the
generic PTCS page/extension ACL target before dispatch:
let acl =
aclOptions
|> PtcsAclExtension.withCommandAuthorizationTargetResolver (fun context ->
async {
match context.Kind, context.ExtensionId with
| PtcsAclCommandKind.ClientExtensionTransient, Some "ta-research-runtime" ->
return Ok(Some { Action = "ptcs.ta.query.execute"; Resource = taResource })
| _ -> return Ok None
})
Ok Nonepreserves the existing page/extension target and is the compatibility path.Ok(Some target)replaces only the ACL action/resource; PTCS still owns identity, same-origin checks, evaluation, audit and dispatch order.- resolver
Erroror exception fails closed before the ActorArgu provider or transient extension handler runs. - browser payload cannot supply or override
Principal,SessionId, groups or roles; those fields are derived by PTCS from the authenticated session.
Domain parsing belongs in the host/extension package. PTCS core does not understand TA, order, broker or other domain payload schemas.
This is not yet the final extraction of every ACL-owned browser behavior from PTCS core. The current package proves the open NuGet boundary, manifest/script ownership, runtime asset ownership, ACL snapshot observer hook, ACL capability provider hook, and ACL2 browser/runtime gate. Remaining work is moving any residual ACL-owned client behavior that still lives in PTCS core into this package.
PulseTrade.Comm.Spa.ACL must reference PulseTrade.Comm.ACL.Core as an exact
binary NuGet package. It must not require Core source access.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FSharp.Core (>= 10.1.301)
- PulseTrade.Comm.ACL.Core (= 0.1.0-alpha2)
- PulseTrade.Comm.Spa (= 0.2.5-beta108)
- WebSharper.FSharp (>= 10.1.5.674)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha9 | 53 | 7/2/2026 |
| 0.1.0-alpha47 | 45 | 7/15/2026 |
| 0.1.0-alpha46 | 36 | 7/14/2026 |
| 0.1.0-alpha45 | 38 | 7/14/2026 |
| 0.1.0-alpha44 | 37 | 7/14/2026 |
| 0.1.0-alpha43 | 40 | 7/14/2026 |
| 0.1.0-alpha29 | 47 | 7/13/2026 |
| 0.1.0-alpha28 | 47 | 7/13/2026 |
| 0.1.0-alpha24 | 41 | 7/13/2026 |
| 0.1.0-alpha23 | 51 | 7/13/2026 |
| 0.1.0-alpha22 | 50 | 7/12/2026 |
| 0.1.0-alpha21 | 47 | 7/12/2026 |
| 0.1.0-alpha20 | 55 | 7/10/2026 |
| 0.1.0-alpha19 | 50 | 7/10/2026 |
| 0.1.0-alpha18 | 51 | 7/10/2026 |
| 0.1.0-alpha17 | 55 | 7/9/2026 |
| 0.1.0-alpha16 | 50 | 7/9/2026 |
| 0.1.0-alpha14 | 58 | 7/7/2026 |
| 0.1.0-alpha13 | 58 | 7/6/2026 |
| 0.1.0-alpha11 | 58 | 7/3/2026 |