ServiceStack.Common
Register Task to run in APP_TASKS=task1;task2
Asserts that the supplied arguments are not null.
AssertUtils.AreNotNull(new Dictionary<string,object>{ {"name",null} });
will throw new ArgumentNullException("name");
The field map.
An async-compatible manual-reset event.
The object used for synchronization.
The current state of the event.
The semi-unique identifier for this instance. This is 0 if the id has not yet been created.
Creates an async-compatible manual-reset event.
Whether the manual-reset event is initially set or unset.
Creates an async-compatible manual-reset event that is initially unset.
Gets a semi-unique identifier for this asynchronous manual-reset event.
Whether this event is currently set. This member is seldom used; code using this member has a high possibility of race conditions.
Asynchronously waits for this event to be set.
Asynchronously waits for this event to be set or for the wait to be canceled.
The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
Synchronously waits for this event to be set. This method may block the calling thread.
Synchronously waits for this event to be set. This method may block the calling thread.
The cancellation token used to cancel the wait. If this token is already canceled, this method will first check whether the event is set.
Sets the event, atomically completing every task returned by . If the event is already set, this method does nothing.
Resets the event. If the event is already reset, this method does nothing.
Allocates Ids for instances on demand. 0 is an invalid/unassigned Id. Ids may be non-unique in very long-running systems. This is similar to the Id system used by and .
The type for which ids are generated.
The last id generated for this type. This is 0 if no ids have been generated.
Returns the id, allocating it if necessary.
A reference to the field containing the id.
Holds the task for a cancellation token, as well as the token registration. The registration is disposed when this instance is disposed.
The cancellation token registration, if any. This is null if the registration was not necessary.
Creates a task for the specified cancellation token, registering with the token if necessary.
The cancellation token to observe.
Gets the task for the source cancellation token.
Disposes the cancellation token registration, if any. Note that this may cause to never complete.
Provides extension methods for .
Attempts to complete a , propagating the completion of .
The type of the result of the target asynchronous operation.
The type of the result of the source asynchronous operation.
The task completion source. May not be null.
The task. May not be null.
true if this method completed the task completion source; false if it was already completed.
Attempts to complete a , propagating the completion of but using the result value from if the task completed successfully.
The type of the result of the target asynchronous operation.
The task completion source. May not be null.
The task. May not be null.
A delegate that returns the result with which to complete the task completion source, if the task completed successfully. May not be null.
true if this method completed the task completion source; false if it was already completed.
Creates a new TCS for use with async code, and which forces its continuations to execute asynchronously.
The type of the result of the TCS.
Provides synchronous extension methods for tasks.
Asynchronously waits for the task to complete, or for the cancellation token to be canceled.
The task to wait for. May not be null.
The cancellation token that cancels the wait.
Waits for the task to complete, unwrapping any exceptions.
The task. May not be null.
Waits for the task to complete, unwrapping any exceptions.
The task. May not be null.
A cancellation token to observe while waiting for the task to complete.
The was cancelled before the completed, or the raised an .
Waits for the task to complete, unwrapping any exceptions.
The type of the result of the task.
The task. May not be null.
The result of the task.
Waits for the task to complete, unwrapping any exceptions.
The type of the result of the task.
The task. May not be null.
A cancellation token to observe while waiting for the task to complete.
The result of the task.
The was cancelled before the completed, or the raised an .
Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
The task. May not be null.
Waits for the task to complete, but does not raise task exceptions. The task exception (if any) is unobserved.
The task. May not be null.
A cancellation token to observe while waiting for the task to complete.
The was cancelled before the completed.
Attempts to prepare the exception for re-throwing by preserving the stack trace. The returned exception should be immediately thrown.
The exception. May not be null.
The that was passed into this method.
Provide the an option for the callee to block until all commands are executed
Constant Time byte[] comparison
Return T[0] when enumerable is null, safe to use in enumerations like foreach
Gets the textual description of the enum if it has one. e.g.
enum UserColors
{
[Description("Bright Red")]
BrightRed
}
UserColors.BrightRed.ToDescription();
Default base sleep time (milliseconds).
Default maximum back-off time before retrying a request
Maximum retry limit. Avoids integer overflow issues.
How long to sleep before next retry using Exponential BackOff delay with Full Jitter.
How long to wait before next retry using Exponential BackOff delay with Full Jitter.
Exponential BackOff Delay with Full Jitter
Exponential BackOff Delay with Full Jitter from:
https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src/main/java/com/amazonaws/retry/PredefinedBackoffStrategies.java
Calculate exponential retry back-off.
Calculate exponential retry back-off.
Calculate back-off logic for obtaining an in memory lock
Move conflicting extension methods to ServiceStack.Extensions namespace
Invokes the action provided and returns true if no exception was thrown.
Otherwise logs the exception and returns false if an exception was thrown.
The action.
AccessTokenSecret
Intercept and override GitHub JSON API requests
Create or Write Gist Text Files. Requires AccessToken
Create new Gist File. Requires AccessToken
Create or Write Gist File. Requires AccessToken
Helper utility for inspecting variables
Dump serialized values to 'vars.json'
Anonymous object with named value
Recursively prints the contents of any POCO object in a human-friendly, readable format
Print Dump to Console.WriteLine
Dump object in Ascii Markdown table
Dump object in Ascii Markdown table
Dump object in Ascii Markdown table using specified column headers
Print Dump object in Ascii Markdown table
Print Dump object in Ascii Markdown table using specified column headers
Recursively prints the contents of any POCO object to HTML
Recursively prints the contents of any POCO object to HTML
Recursively prints the contents of any POCO object to HTML with specified columns
Print htmlDump object
Print htmlDump object with specified columns
Transforms multiple data content types into a FileContents containing either a binary Stream or text string
Transform multi supported content types into FileContents containing either Stream or string.
If returning unbuffered Stream responsibility is up to callee to properly dispose
Get only files in this directory
Get only sub directories in this directory
Get All Files in current and all sub directories
Useful IPAddressExtensions from:
http://blogs.msdn.com/knom/archive/2008/12/31/ip-address-calculations-with-c-subnetmasks-networks.aspx
Gets the ipv4 addresses from all Network Interfaces that have Subnet masks.
Gets the ipv6 addresses from all Network Interfaces.
Configure ServiceStack.Text JSON Serializer to use Templates JS parsing
Parse JS Expression into an AST Token
Returns cached AST of a single expression
Returns cached AST of a script
Lightweight expression evaluator of a single JS Expression with results cached in global context cache
Creates a Console Logger, that logs all messages to: System.Console
Made public so its testable
Default logger is to Console.WriteLine
Made public so its testable
Initializes a new instance of the class.
Initializes a new instance of the class.
Logs the specified message.
Logs the format.
Logs the specified message.
Creates a Debug Logger, that logs all messages to: System.Diagnostics.Debug
Made public so its testable
Default logger is to System.Diagnostics.Debug.WriteLine
Made public so its testable
Initializes a new instance of the class.
Initializes a new instance of the class.
Logs the specified message.
Logs the format.
Logs the specified message.
Categories of sql statements.
Unknown
DML statements that alter database state, e.g. INSERT, UPDATE
Statements that return a single record
Statements that iterate over a result set
A callback for ProfiledDbConnection and family
Called when a command starts executing
Called when a reader finishes executing
Called when a reader is done iterating through the data
Called when an error happens during execution of a command
True if the profiler instance is active
Wraps a database connection, allowing sql execution timings to be collected when a session is started.
Returns a new that wraps ,
providing query execution profiling. If profiler is null, no profiling will occur.
Your provider-specific flavor of connection, e.g. SqlConnection, OracleConnection
The currently started or null.
Determines whether the ProfiledDbConnection will dispose the underlying connection.
The underlying, real database connection to your db provider.
The current profiler instance; could be null.
The raw connection this is wrapping
Wrapper for a db provider factory to enable profiling
Every provider factory must have an Instance public field
Allow to re-init the provider factory.
proxy
proxy
proxy
proxy
proxy
proxy
proxy
proxy
proxy
proxy
Runs an action for a minimum of runForMs
What to run
Minimum ms to run for
time elapsed in micro seconds
Returns average microseconds an action takes when run for the specified runForMs
What to run
How many times to run for each iteration
Minimum ms to run for
Async Process Helper
- https://gist.github.com/Indigo744/b5f3bd50df4b179651c876416bf70d0a
.NET Core / Win throws Win32Exception (193): The specified executable is not a valid application for this OS platform.
This method converts it to a cmd.exe /c execute to workaround this
Returns path of executable if exists within PATH
Run the command with the OS's command runner
Run the process and return the Standard Output, any Standard Error output will throw an Exception
Run the command with the OS's command runner
Run a Process asynchronously, returning entire captured process output, whilst streaming stdOut, stdErr callbacks
Run process result
Exit code
If NULL, process exited due to timeout
Standard error stream
Standard output stream
UTC Start
UTC End
Duration (ms)
Duration (ms)
Duplicate Params are given a unique key by appending a #1 suffix
Captures the output and assigns it to the specified variable.
Accepts an optional Object Dictionary as scope arguments when evaluating body.
Usages: {{#capture output}} {{#each args}} - [{{it}}](/path?arg={{it}}) {{/each}} {{/capture}}
{{#capture output {nums:[1,2,3]} }} {{#each nums}} {{it}} {{/each}} {{/capture}}
{{#capture appendTo output {nums:[1,2,3]} }} {{#each nums}} {{it}} {{/each}} {{/capture}}
Parse csv contents into a string dictionary List and assign to identifier
Usage: {{#csv list}}
Item,Qty
Apples,2
Oranges,3
{{/csv}}
Handlebars.js like each block
Usages: {{#each customers}} {{Name}} {{/each}}
{{#each customers}} {{it.Name}} {{/each}}
{{#each num in numbers}} {{num}} {{/each}}
{{#each num in [1,2,3]}} {{num}} {{/each}}
{{#each numbers}} {{it}} {{else}} no numbers {{/each}}
{{#each numbers}} {{it}} {{else if letters != null}} has letters {{else}} no numbers {{/each}}
{{#each n in numbers where n > 5}} {{it}} {{else}} no numbers > 5 {{/each}}
{{#each n in numbers where n > 5 orderby n skip 1 take 2}} {{it}} {{else}} no numbers > 5 {{/each}}
Special block which evaluates the rendered body as a ServiceStack Template
Usages: {{#eval}}emit {{evaluateBodyOfArg}} at {{now}} {{/eval}}
{{#eval {scopeArg:1} }}
emit {{evaluateBodyOfArg}} at {{now}} with {{scopeArg}}
{{/eval}}
{{#eval {htmlDecode:true} }}
emit htmldecoded {{evaluateBodyOfArg}} at {{now}}
{{/eval}}
{{#eval {use:{methods:'ServiceStackScripts',plugins:['MarkdownScriptPlugin']} }}
emit {{evaluateBodyOfArg}} at {{now}} in new context
{{/eval}}
{{#eval { use:{context:true} } }}
emit {{evaluateBodyOfArg}} in host context
{{/eval}}
Define a reusable function
Usage: {{#function calc(a, b) }}
a * b | to => c
a + b + c | return
{{/function}}
Usages: {{#ul {each:items, class:'nav'} }} {{it}} {{/ul}}
Handlebars.js like if block
Usages: {{#if a > b}} max {{a}} {{/if}}
{{#if a > b}} max {{a}} {{else}} max {{b}} {{/if}}
{{#if a > b}} max {{a}} {{else if b > c}} max {{b}} {{else}} max {{c}} {{/if}}
Parse text contents into a list of string Key/Value pairs and assign to specified identifier
Usage: {{#keyvalues list}}
Apples 2
Oranges 3
{{/keyvalues}}
{{#keyvalues list ':'}}
Grape Fruit: 2
Rock Melon: 3
{{/keyvalues}}
Handlebars.js like noop block
Usage: Remove {{#noop}} contents in here {{/noop}}
Partial Block doesn't emit anything it only creates and saves a partial in the PageResult
Usages: {{#partial mypartial}} contents {{/partial}}
{{#partial mypartial {format:'html'} }} contents {{/partial}}
{{#partial mypartial {format:'html', pageArg:1} }} contents {{/partial}}
Special block which captures the raw body as a string fragment
Usages: {{#raw}}emit {{ verbatim }} body{{/raw}}
{{#raw varname}}assigned to varname{{/raw}}
{{#raw appendTo varname}}appended to varname{{/raw}}
while block
Usages: {{#while times > 0}} {{times}}. {{times - 1 | to => times}} {{/while}}
{{#while b}} {{ false | to => b }} {{else}} {{b}} was false {{/while}}
Max Iterations = Context.Args[ScriptConstants.MaxQuota]
Handlebars.js like with block
Usages: {{#with person}} Hi {{name}}, I'm {{age}} years old{{/with}}
{{#with person}} Hi {{name}}, I'm {{age}} years old {{else}} no person {{/with}}
Evaluate if result can be async, if so converts async result to Task<object> otherwise wraps result in a Task
Evaluate if result can be async, if so converts async result to Task<object> otherwise wraps result in a Task
Evaluate if result can be async, if so converts async result to Task<object> otherwise wraps result in a Task
Evaluate then set asyncResult if Result was async, otherwise set result.
true if result was synchronous otherwise false
Puts value in dictionary at key
value
Returns Type from type name syntax of .NET's typeof()
Qualified Constructor Name Examples:
- Type()
- Type(string)
- GenericType<string<(System.Int32)
- Namespace.Type()
Shorter Alias for Constructor
Shorter Alias for Function
Shorter Alias for Function(name,args)
Qualified Method Name Examples:
- Console.WriteLine(string)
- Type.StaticMethod
- Type.InstanceMethod
- GenericType<string<.Method
- GenericType<string<.GenericMethod<System.Int32<
- Namespace.Type.Method
Resolve Function from qualified type name, when args Type list are unspecified fallback to use args to resolve ambiguous methods
Qualified Method Name Examples:
- Console.WriteLine ['string']
- Type.StaticMethod
- Type.InstanceMethod
- GenericType<string<.Method
- GenericType<string<.GenericMethod<System.Int32<
- Namespace.Type.Method
The Page to Render
The Code Page to Render
Use specified Layout
Use Layout with specified name
Render without any Layout
Extract Model Properties into Scope Args
Add additional Args available to all pages
Add additional script methods available to all pages
Add additional script blocks available to all pages
Add additional partials available to all pages
Return additional HTTP Headers in HTTP Requests
Specify the Content-Type of the Response
Transform the Page output using a chain of stream transformers
Transform the entire output using a chain of stream transformers
Available transformers that can transform context filter stream outputs
Don't allow access to specified filters
The last error thrown by a filter
The StackTrace where the Last Error Occured
What argument errors should be binded to
What argument captured errors should be binded to
Whether to skip execution of all page filters and just write page string fragments
Overrides Context to specify whether to Ignore or Continue executing filters on error
Whether to always rethrow Exceptions
Immediately halt execution of the page
Whether to disable buffering output and render directly to OutputStream
The Return value of the page (if any)
The Current StackDepth
The Current StackDepth of rendering partials
Can be used to track number of Evaluations
Can be used to track number of Evaluations
Parse Body using Specified Language. Uses host language if unspecified.
Rethrow fatal exceptions thrown on incorrect API usage
Where to store cached files, if unspecified falls back to configured VirtualFiles if it implements IVirtualFiles (i.e. writable)
Scan Types and auto-register any Script Methods, Blocks and Code Pages
Scan Assemblies and auto-register any Script Methods, Blocks and Code Pages
Allow scripting of Types from specified Assemblies
Allow scripting of the specified Types
Lookup Namespaces for resolving Types in Scripts
Allow scripting of all Types in loaded Assemblies
Register short Type name accessible from scripts. (Advanced, use ScriptAssemblies/ScriptTypes first)
Register long qualified Type name accessible from scripts. (Advanced, use ScriptAssemblies/ScriptTypes first)
Insert additional Methods at the start so they have priority over default Script Methods
Insert additional Blocks at the start so they have priority over default Script Blocks
Insert plugins at the start of Plugins so they're registered first
Available transformers that can transform context filter stream outputs
Whether to check for modified pages by default when not in DebugMode
How long in between checking for modified pages
Existing caches and pages created prior to specified date should be invalidated
Render render filter exceptions in-line where filter is located
What argument to assign Exceptions to
Whether to skip executing expressions if an Exception was thrown
Limit Max Iterations for Heavy Operations like rendering a Script Block (default 10K)
Limit Max number for micro ops like evaluating an AST instruction (default 1M)
Limit Recursion Max StackDepth (default 25)
Inverse of the #Script Language Template Syntax where each line is a statement
i.e. in contrast to #Script's default where text contains embedded template expressions {{ ... }}
Define and export a LISP function to the page
Usage: {{#defn calc [a, b] }}
(let ( (c (* a b)) )
(+ a b c)
)
{{/defn}}
Exception in evaluation
Stack trace of Lisp evaluation
Construct with a base message, cause, and
a flag whether to quote strings in the cause.
Return a string representation which contains
the message and the stack trace.
A Lisp interpreter written in C# 7
This is ported from Nuka Lisp in Dart
(https://github.com/nukata/lisp-in-dart) except for bignum.
It is named after ex-Nukata Town in Japan.
Allow loading of remote scripts
- https://example.org/lib.l
- gist:{gist-id}
- gist:{gist-id}/file.l
- index:{name}
- index:{name}/file.l
Gist where to resolve `index:{name}` references from
Reset Global Symbols back to default
Load Lisp into Global Symbols, a new CreateInterpreter() starts with a copy of global symbols
Load Lisp into Global Symbols, a new CreateInterpreter() starts with a copy of global symbols
Create a Lisp interpreter initialized pre-configured with Global Symbols.
Cons cell
Head part of the cons cell
Tail part of the cons cell
Construct a cons cell with its head and tail.
Make a simple string representation.
Do not invoke this for any circular list.
Length as a list
Lisp symbol
The symbol's name
Construct a symbol that is not interned.
Return the symbol's name
Return the hashcode of the symbol's name
Table of interned symbols
Return an interned symbol for the name.
If the name is not interned yet, such a symbol
will be constructed with .
Construct an interned symbol.
Is it interned?
The symbol of t
Common base class of Lisp functions
Number of arguments, made negative if the function
has &rest
Construct with Carity.
Make a frame for local variables from a list of
actual arguments.
Evaluate each expression in a frame.
Function type which represents any built-in function body
Built-in function
Name of this function
C# function as the body of this function
Construct with Name, Carity and Body.
Return a string representation in Lisp.
Invoke the built-in function with a list of
actual arguments.
Core of the Lisp interpreter
Table of the global values of symbols
Standard out
Set each built-in function/variable as the global value
of symbol.
Cache final output from load reference
Load examples:
- file.l
- virtual/path/file.l
- index:lib-calc
- index:lib-calc/lib1.l
- gist:{gist-id}
- gist:{gist-id}/single-file.l
- https://mydomain.org/file.l
Define a built-in function by a name, an arity,
and a body.
Evaluate a Lisp expression in an environment.
Expand x of any quqsi-quotation `x into
the equivalent S-expression.
Quote x so that the result evaluates to x.
Returns List of SExpression's
Returns List of SExpression's
Run Read-Eval Loop.
Reader of Lisp expressions
Token of "End Of File"
Read a Lisp expression and return it.
Return EOF if the input runs out.
Make a string representation of Lisp expression.
Lisp expression
flag whether to quote string
Run Read-Eval-Print Loop.
This never ends, use Ctrl+C to Exit. Exceptions are handled here and not thrown.
Lisp initialization script
Lisp Common Utils
Popular Clojure + nicer UX Utils
#Script Language which processes ```lang ... ``` blocks
The #Script Default Template Language (does not process ```lang ... ``` blocks)
Create SharpPage configured to use #Script
Create SharpPage configured to use #Script Templates
Render #Script output to string
Alias for EvaluateScript
Render #Script output to string
Alias for RenderScript
Render #Script output to string
Alias for RenderScript
Render #Script output to string asynchronously
Alias for RenderScriptAsync
Evaluate #Script and convert returned value to T
Evaluate #Script and return value
Evaluate #Script and convert returned value to T asynchronously
Evaluate #Script and convert returned value to T asynchronously
Resolve value from stored arguments and filters
Resolve value from stored arguments only
Try Resolve value from stored arguments and filters
Whether to evaluate as Template block or code block
Allow slugs to capture URLs, Examples:
techstacks.io => https://techstacks.io
http:techstacks.io => http://techstacks.io
techstacks.io:1000 => https://techstacks.io:1000
techstacks.io:1000:site1:site2 => https://techstacks.io:1000/site1/site2
techstacks.io:site1%7Csite2 => https://techstacks.io/site1|site2
techstacks.io:1000:site1:site2(a:1,b:"c,d",e:f) => https://techstacks.io:1000/site1/site2(a:1,b:"c,d",e:f)
Convert URL to URL-friendly slugs, Examples:
https://techstacks.io => techstacks.io
http://techstacks.io => http:techstacks.io
https://techstacks.io:1000 => techstacks.io:1000
https://techstacks.io:1000/site1/site2 => techstacks.io:1000:site1:site2
https://techstacks.io/site1|site2 => techstacks.io:site|site2
https://techstacks.io:1000/site1/site2(a:1,b:"c,d",e:f) => techstacks.io:1000:site1:site2(a:1,b:"c,d",e:f)
Multiple string replacements
Even number of old and new value pairs
Replace string contents outside of string quotes
Protect against XSS by cleaning non-standard User Input
Common functionality when creating adapters
Executes the specified expression.
Executes the specified expression.
Executes the specified expression.
Executes the specified action (for void methods).
Executes the specified action (for void methods).
Executes the specified action (for void methods).
Note: InMemoryLog keeps all logs in memory, so don't use it long running exceptions
Returns a thread-safe InMemoryLog which you can use while *TESTING*
to provide a detailed analysis of your logs.
Delegate to return a different value from an instance (e.g. member accessor)
Create the correct Invoker Delegate Type based on the type of Method
Create an Invoker for public instance methods
Create an Invoker for public static methods
Create an Invoker for public instance void methods
Create an Invoker for public static void methods
Creates a Unified Resource Name (URN) with the following formats:
- urn:{TypeName}:{IdFieldValue} e.g. urn:UserSession:1
- urn:{TypeName}:{IdFieldName}:{IdFieldValue} e.g. urn:UserSession:UserId:1
High-level Input options for rendering HTML Input controls
Display the Control inline
Label for the control
Class for Label
Override the class on the error message (default: invalid-feedback)
Small Help Text displayed with the control
Bootstrap Size of the Control: sm, lg
Multiple Value Data Source for Checkboxes, Radio boxes and Select Controls
Typed setter of Multi Input Values
Whether to preserve value state after post back
Whether to show Error Message associated with this control
Customize JS/CSS/HTML bundles
List of file and directory sources to include in this bundle, directory sources must end in `/`.
Sources can include prefixes to specify which Virtual File System Source to use, options:
'content:' (ContentRoot HostContext.VirtualFiles), 'filesystem:' (WebRoot FileSystem), 'memory:' (WebRoot Memory)
Write bundled file to this Virtual Path
If needed, use alternative OutputTo Virtual Path in html tag
If needed, include PathBase prefix in output tag
Whether to minify sources in bundle (default true)
Whether to save to disk or Memory File System (default Memory)
Whether to return cached bundle if exists (default true)
Whether to bundle and emit single or not bundle and emit multiple html tags
Whether to call AMD define for CommonJS modules
Whether to wrap JS scripts in an Immediately-Invoked Function Expression
Whether to "async" load script (default false)
Whether to "defer" loading script (default false)
Whether script should be loaded as a "module" (default false)
Generic collection of Nav Links
Single NavLink List Item
Navigation Bar Menu Items
Collection of Link Buttons (e.g. used to render /auth buttons)
User Attributes for conditional rendering, e.g:
- auth - User is Authenticated
- role:name - User Role
- perm:name - User Permission
Path Info that should set as active
Prefix to include before NavItem.Path (if any)
Custom classes applied to different navigation elements (defaults to Bootstrap classes)
Public API for ViewUtils
Shared Utils shared between different Template Filters and Razor Views/Helpers
Display a list of NavItem's
Display a `nav-link` nav-item
Display a `nav-link` nav-item
Emit HTML hidden input field for each specified Key/Value pair entry
Comma delimited field names
Show validation summary error message unless there's an error in exceptFor list of fields
as validation errors will be displayed along side the field instead
Display a "Success Alert Box"
Return an error message unless there's an error in fieldNames
Return an error message unless there are field errors
Return an error for the specified field (if any)