@angular-devkit/architect
- Version 0.1802.7
- Published
- 169 kB
- 2 dependencies
- MIT license
Install
npm i @angular-devkit/architect
yarn add @angular-devkit/architect
pnpm add @angular-devkit/architect
Overview
Angular Build Facade
Index
Functions
Classes
Interfaces
Enums
Type Aliases
Namespaces
jobs
- ChannelAlreadyExistException
- createDispatcher()
- createJobFactory()
- createJobHandler()
- createLoggerJob()
- FallbackRegistry
- isJobHandler()
- Job
- JobArgumentSchemaValidationError
- JobDescription
- JobDispatcher
- JobDoesNotExistException
- JobHandler
- JobHandlerContext
- JobInboundMessage
- JobInboundMessageBase
- JobInboundMessageInput
- JobInboundMessageKind
- JobInboundMessagePing
- JobInboundMessageSchemaValidationError
- JobInboundMessageStop
- JobName
- JobNameAlreadyRegisteredException
- JobOutboundMessage
- JobOutboundMessageBase
- JobOutboundMessageChannelBase
- JobOutboundMessageChannelComplete
- JobOutboundMessageChannelCreate
- JobOutboundMessageChannelError
- JobOutboundMessageChannelMessage
- JobOutboundMessageEnd
- JobOutboundMessageKind
- JobOutboundMessageOnReady
- JobOutboundMessageOutput
- JobOutboundMessagePong
- JobOutboundMessageStart
- JobOutputSchemaValidationError
- JobState
- RegisterJobOptions
- Registry
- ScheduleJobOptions
- Scheduler
- SimpleJobHandlerContext
- SimpleJobHandlerFn
- SimpleJobRegistry
- SimpleScheduler
Functions
function createBuilder
createBuilder: <OptT = json.JsonObject, OutT extends unknown = any>( fn: BuilderHandlerFn<OptT>) => Builder<OptT & json.JsonObject>;
function fromAsyncIterable
fromAsyncIterable: <T>(iterable: AsyncIterable<T>) => Observable<T>;
function isBuilderOutput
isBuilderOutput: (obj: any) => obj is any;
function scheduleTargetAndForget
scheduleTargetAndForget: ( context: BuilderContext, target: Target, overrides?: json.JsonObject, scheduleOptions?: ScheduleOptions) => Observable<any>;
Schedule a target, and forget about its run. This will return an observable of outputs, that as a teardown will stop the target from running. This means that the Run object this returns should not be shared.
The reason this is not part of the Context interface is to keep the Context as normal form as possible. This is really an utility that people would implement in their project.
Parameter context
The context of your current execution.
Parameter target
The target to schedule.
Parameter overrides
Overrides that are used in the target.
Parameter scheduleOptions
Additional scheduling options.
function targetFromTargetString
targetFromTargetString: ( specifier: string, abbreviatedProjectName?: string, abbreviatedTargetName?: string) => Target;
Return a Target tuple from a specifier string. Supports abbreviated target specifiers (examples:
::
,::development
, or:build:production
).
function targetStringFromTarget
targetStringFromTarget: ({ project, target, configuration }: Target) => string;
Returns a string of "project:target[:configuration]" for the target object.
Classes
class Architect
class Architect {}
constructor
constructor( _host: ArchitectHost<any>, registry?: json.schema.SchemaRegistry, additionalJobRegistry?: Registry<JsonValue, JsonValue, JsonValue>);
method has
has: (name: JobName) => Observable<boolean>;
method scheduleBuilder
scheduleBuilder: ( name: string, options: json.JsonObject, scheduleOptions?: ScheduleOptions) => Promise<BuilderRun>;
method scheduleTarget
scheduleTarget: ( target: Target, overrides?: json.JsonObject, scheduleOptions?: ScheduleOptions) => Promise<BuilderRun>;
Interfaces
interface BuilderContext
interface BuilderContext {}
The context received as a second argument in your builder.
property builder
builder: BuilderInfo;
The builder info that called your function. Since the builder info is from the builder.json (or the host), it could contain information that is different than expected.
property currentDirectory
currentDirectory: string;
The current directory the user is in. This could be outside the workspace root. This is a system path and will not be normalized; ie. on Windows it will starts with
C:\\
(or whatever drive).
property id
id: number;
Unique amongst contexts. Contexts instances are not guaranteed to be the same (but it could be the same context), and all the fields in a context could be the same, yet the builder's context could be different. This is the same ID as the corresponding run.
property logger
logger: logging.LoggerApi;
A logger that appends messages to a log. This could be a separate interface or completely ignored.
console.log
could also be completely ignored.
property target
target?: Target;
The target that was used to run this builder. Target is optional if a builder was ran using
scheduleBuilder()
.
property workspaceRoot
workspaceRoot: string;
The absolute workspace root of this run. This is a system path and will not be normalized; ie. on Windows it will starts with
C:\\
(or whatever drive).
method addTeardown
addTeardown: (teardown: () => Promise<void> | void) => void;
Add teardown logic to this Context, so that when it's being stopped it will execute teardown.
method getBuilderNameForTarget
getBuilderNameForTarget: (target: Target) => Promise<string>;
Resolves and return a builder name. The exact format of the name is up to the host, so it should not be parsed to gather information (it's free form). This string can be used to validate options or schedule a builder directly.
Parameter target
The target to resolve the builder name.
method getProjectMetadata
getProjectMetadata: { (projectName: string): Promise<json.JsonObject>; (target: any): Promise<json.JsonObject>;};
method getTargetOptions
getTargetOptions: (target: Target) => Promise<json.JsonObject>;
Resolve and return options for a specified target. If the target isn't defined in the workspace this will reject the promise. This object will be read directly from the workspace but not validated against the builder of the target.
Parameter target
The target to resolve the options of. A non-validated object resolved from the workspace.
method reportProgress
reportProgress: (current: number, total?: number, status?: string) => void;
Update the progress for this builder run.
Parameter current
The current progress. This will be between 0 and total.
Parameter total
A new total to set. By default at the start of a run this is 1. If omitted it will use the same value as the last total.
Parameter status
Update the status string. If omitted the status string is not modified.
method reportRunning
reportRunning: () => void;
Set the builder to running. This should be used if an external event triggered a re-run, e.g. a file watched was changed.
method reportStatus
reportStatus: (status: string) => void;
Update the status string shown on the interface.
Parameter status
The status to set it to. An empty string can be used to remove the status.
method scheduleBuilder
scheduleBuilder: ( builderName: string, options?: json.JsonObject, scheduleOptions?: ScheduleOptions) => Promise<BuilderRun>;
Schedule a builder by its name. This can be the same builder that is being executed.
Parameter builderName
The name of the builder, ie. its
packageName:builderName
tuple.Parameter options
All options to use for the builder (by default empty object). There is no additional options added, e.g. from the workspace.
Parameter scheduleOptions
Additional optional scheduling options. A promise of a run. It will resolve when all the members of the run are available.
method scheduleTarget
scheduleTarget: ( target: Target, overrides?: json.JsonObject, scheduleOptions?: ScheduleOptions) => Promise<BuilderRun>;
Schedule a target in the same workspace. This can be the same target that is being executed right now, but targets of the same name are serialized. Running the same target and waiting for it to end will result in a deadlocking scenario. Targets are considered the same if the project, the target AND the configuration are the same.
Parameter target
The target to schedule.
Parameter overrides
A set of options to override the workspace set of options.
Parameter scheduleOptions
Additional optional scheduling options. A promise of a run. It will resolve when all the members of the run are available.
method validateOptions
validateOptions: <T extends json.JsonObject = json.JsonObject>( options: json.JsonObject, builderName: string) => Promise<T>;
Validates the options against a builder schema. This uses the same methods as the scheduleTarget and scheduleBrowser methods to validate and apply defaults to the options. It can be generically typed, if you know which interface it is supposed to validate against.
Parameter options
A generic option object to validate.
Parameter builderName
The name of a builder to use. This can be gotten for a target by using the getBuilderForTarget() method on the context.
interface BuilderHandlerFn
interface BuilderHandlerFn<A> {}
A builder handler function. The function signature passed to
createBuilder()
.
call signature
(input: A, context: BuilderContext): BuilderOutputLike;
Builders are defined by users to perform any kind of task, like building, testing or linting, and should use this interface.
Parameter input
The options (a JsonObject), validated by the schema and received by the builder. This can include resolved options from the CLI or the workspace.
Parameter context
A context that can be used to interact with the Architect framework. One or many builder output.
interface BuilderRun
interface BuilderRun {}
A Run, which is what is returned by scheduleBuilder or scheduleTarget functions. This should be reconstructed across memory boundaries (it's not serializable but all internal information are).
property id
id: number;
Unique amongst runs. This is the same ID as the context generated for the run. It can be used to identify multiple unique runs. There is no guarantee that a run is a single output; a builder can rebuild on its own and will generate multiple outputs.
property info
info: BuilderInfo;
The builder information.
property lastOutput
lastOutput: Promise<BuilderOutput>;
The last output from a builder. This is recommended when scheduling a builder and only being interested in the result of that last run.
property output
output: Observable<BuilderOutput>;
The output(s) from the builder. A builder can have multiple outputs. This always replay the last output when subscribed.
property progress
progress: Observable<BuilderProgressReport>;
The progress report. A progress also contains an ID, which can be different than this run's ID (if the builder calls scheduleBuilder or scheduleTarget). This will always replay the last progress on new subscriptions.
property result
result: Promise<BuilderOutput>;
The next output from a builder. This is recommended when scheduling a builder and only being interested in the result of that single run, not of a watch-mode builder.
method stop
stop: () => Promise<void>;
Stop the builder from running. Returns a promise that resolves when the builder is stopped. Some builders might not handle stopping properly and should have a timeout here.
interface ScheduleOptions
interface ScheduleOptions {}
property logger
logger?: logging.Logger;
Enums
enum BuilderProgressState
enum BuilderProgressState { Error = 'error', Running = 'running', Stopped = 'stopped', Waiting = 'waiting',}
Type Aliases
type BuilderInfo
type BuilderInfo = json.JsonObject & { builderName: string; description: string; optionSchema: json.schema.JsonSchema;};
A Builder general information. This is generated by the host and is expanded by the host, but the public API contains those fields.
type BuilderInput
type BuilderInput = json.JsonObject & RealBuilderInput;
Declaration of those types as JsonObject compatible. JsonObject is not compatible with optional members, so those wouldn't be directly assignable to our internal Json typings. Forcing the type to be both a JsonObject and the type from the Schema tells Typescript they are compatible (which they are). These types should be used everywhere.
type BuilderOutput
type BuilderOutput = json.JsonObject & RealBuilderOutput;
type BuilderOutputLike
type BuilderOutputLike = ObservableInput<BuilderOutput> | BuilderOutput;
An accepted return value from a builder. Can be either an Observable, a Promise or a vector.
type BuilderProgress
type BuilderProgress = json.JsonObject & RealBuilderProgress & TypedBuilderProgress;
type BuilderProgressReport
type BuilderProgressReport = BuilderProgress & { target?: Target; builder: BuilderInfo;};
A progress report is what the tooling will receive. It contains the builder info and the target. Although these are serializable, they are only exposed through the tooling interface, not the builder interface. The watch dog sends BuilderProgress and the Builder has a set of functions to manage the state.
type BuilderRegistry
type BuilderRegistry = Registry<json.JsonObject, BuilderInput, BuilderOutput>;
type Target
type Target = json.JsonObject & RealTarget;
type TypedBuilderProgress
type TypedBuilderProgress = | { state: BuilderProgressState.Stopped; } | { state: BuilderProgressState.Error; error: json.JsonValue; } | { state: BuilderProgressState.Waiting; status?: string; } | { state: BuilderProgressState.Running; status?: string; current: number; total?: number; };
An API typed BuilderProgress. The interface generated from the schema is too permissive, so this API is the one we show in our API. Please note that not all fields are in there; this is in addition to fields in the schema.
Namespaces
namespace jobs
module 'src/jobs/index.d.ts' {}
Copyright Google LLC All Rights Reserved.
Use of this source code is governed by an MIT-style license that can be found in the LICENSE file at https://angular.dev/license
function createDispatcher
createDispatcher: < A extends JsonValue, I extends JsonValue, O extends JsonValue>( options?: Partial<Readwrite<JobDescription>>) => JobDispatcher<A, I, O>;
OnReady a dispatcher that can dispatch to a sub job, depending on conditions.
Parameter options
function createJobFactory
createJobFactory: < A extends JsonValue, I extends JsonValue, O extends JsonValue>( loader: () => Promise<JobHandler<A, I, O>>, options?: Partial<JobDescription>) => JobHandler<A, I, O>;
Lazily create a job using a function.
Parameter loader
A factory function that returns a promise/observable of a JobHandler.
Parameter options
Same options as createJob.
function createJobHandler
createJobHandler: < A extends JsonValue, I extends JsonValue, O extends JsonValue>( fn: SimpleJobHandlerFn<A, I, O>, options?: Partial<JobDescription>) => JobHandler<A, I, O>;
Make a simple job handler that sets start and end from a function that's synchronous.
Parameter fn
The function to create a handler for.
Parameter options
An optional set of properties to set on the handler. Some fields might be required by registry or schedulers.
function createLoggerJob
createLoggerJob: <A extends JsonValue, I extends JsonValue, O extends JsonValue>( job: JobHandler<A, I, O>, logger: logging.LoggerApi) => JobHandler<A, I, O>;
Creates a job that logs out input/output messages of another Job. The messages are still propagated to the other job.
function isJobHandler
isJobHandler: <A extends JsonValue, I extends JsonValue, O extends JsonValue>( value: unknown) => value is JobHandler<A, I, O>;
class ChannelAlreadyExistException
class ChannelAlreadyExistException extends BaseException {}
constructor
constructor(name: string);
class FallbackRegistry
class FallbackRegistry< MinimumArgumentValueT extends JsonValue = JsonValue, MinimumInputValueT extends JsonValue = JsonValue, MinimumOutputValueT extends JsonValue = JsonValue> implements Registry<MinimumArgumentValueT, MinimumInputValueT, MinimumOutputValueT> {}
A simple job registry that keep a map of JobName => JobHandler internally.
constructor
constructor( _fallbacks?: Registry< MinimumArgumentValueT, MinimumInputValueT, MinimumOutputValueT >[]);
method addFallback
addFallback: (registry: Registry) => void;
method get
get: < A extends MinimumArgumentValueT = MinimumArgumentValueT, I extends MinimumInputValueT = MinimumInputValueT, O extends MinimumOutputValueT = MinimumOutputValueT>( name: JobName) => Observable<JobHandler<A, I, O>>;
class JobArgumentSchemaValidationError
class JobArgumentSchemaValidationError extends schema.SchemaValidationException {}
constructor
constructor(errors?: schema.SchemaValidatorError[]);
class JobDoesNotExistException
class JobDoesNotExistException extends BaseException {}
constructor
constructor(name: string);
class JobInboundMessageSchemaValidationError
class JobInboundMessageSchemaValidationError extends schema.SchemaValidationException {}
constructor
constructor(errors?: schema.SchemaValidatorError[]);
class JobNameAlreadyRegisteredException
class JobNameAlreadyRegisteredException extends BaseException {}
constructor
constructor(name: string);
class JobOutputSchemaValidationError
class JobOutputSchemaValidationError extends schema.SchemaValidationException {}
constructor
constructor(errors?: schema.SchemaValidatorError[]);
class SimpleJobRegistry
class SimpleJobRegistry< MinimumArgumentValueT extends JsonValue = JsonValue, MinimumInputValueT extends JsonValue = JsonValue, MinimumOutputValueT extends JsonValue = JsonValue> implements Registry<MinimumArgumentValueT, MinimumInputValueT, MinimumOutputValueT> {}
A simple job registry that keep a map of JobName => JobHandler internally.
method get
get: < A extends MinimumArgumentValueT = MinimumArgumentValueT, I extends MinimumInputValueT = MinimumInputValueT, O extends MinimumOutputValueT = MinimumOutputValueT>( name: JobName) => Observable<JobHandler<A, I, O>>;
method getJobNames
getJobNames: () => JobName[];
Returns the job names of all jobs.
method register
register: { < A extends MinimumArgumentValueT, I extends MinimumInputValueT, O extends MinimumOutputValueT >( name: JobName, handler: JobHandler<A, I, O>, options?: RegisterJobOptions ): void; < ArgumentT extends JsonValue, InputT extends JsonValue, OutputT extends JsonValue >( handler: JobHandler<ArgumentT, InputT, OutputT>, options?: RegisterJobOptions & { name: string } ): void;};
Register a job handler. The name must be unique.
Parameter name
The name of the job.
Parameter handler
The function that will be called for the job.
Parameter options
An optional list of options to override the handler.
Register a job handler. The name must be unique.
Parameter handler
The function that will be called for the job.
Parameter options
An optional list of options to override the handler.
class SimpleScheduler
class SimpleScheduler< MinimumArgumentT extends JsonValue = JsonValue, MinimumInputT extends JsonValue = JsonValue, MinimumOutputT extends JsonValue = JsonValue> implements Scheduler<MinimumArgumentT, MinimumInputT, MinimumOutputT> {}
Simple scheduler. Should be the base of all registries and schedulers.
constructor
constructor( _jobRegistry: Registry<MinimumArgumentT, MinimumInputT, MinimumOutputT>, _schemaRegistry?: schema.SchemaRegistry);
method getDescription
getDescription: (name: JobName) => Observable<JobDescription>;
Get a job description for a named job.
Parameter name
The name of the job.
Returns
A description, or null if the job is not registered.
method has
has: (name: JobName) => Observable<boolean>;
Returns true if the job name has been registered.
Parameter name
The name of the job.
Returns
True if the job exists, false otherwise.
method pause
pause: () => () => void;
Pause the scheduler, temporary queueing _new_ jobs. Returns a resume function that should be used to resume execution. If multiple
pause()
were called, all their resume functions must be called before the Scheduler actually starts new jobs. Additional calls to the same resume function will have no effect.Jobs already running are NOT paused. This is pausing the scheduler only.
method schedule
schedule: < A extends MinimumArgumentT, I extends MinimumInputT, O extends MinimumOutputT>( name: JobName, argument: A, options?: ScheduleJobOptions) => Job<A, I, O>;
Schedule a job to be run, using its name.
Parameter name
The name of job to be run.
Parameter argument
The argument to send to the job when starting it.
Parameter options
Scheduling options.
Returns
The Job being run.
interface Job
interface Job< ArgumentT extends JsonValue = JsonValue, InputT extends JsonValue = JsonValue, OutputT extends JsonValue = JsonValue> {}
A Job instance, returned from scheduling a job. A Job instance is _not_ serializable.
property argument
readonly argument: ArgumentT;
Argument sent when scheduling the job. This is a copy of the argument.
property description
readonly description: Observable<JobDescription>;
Description of the job. Resolving the job's description can be done asynchronously, so this is an observable that will resolve when it's ready.
property inboundBus
readonly inboundBus: Observer<JobInboundMessage<InputT>>;
The JobInboundMessage messages TO the job.
property input
readonly input: Observer<InputT>;
The input to the job. This goes through the input channel as messages.
property outboundBus
readonly outboundBus: Observable<JobOutboundMessage<OutputT>>;
The JobOutboundMessage FROM the job.
property output
readonly output: Observable<OutputT>;
Outputs of this job.
property state
readonly state: JobState;
The current state of the job.
method getChannel
getChannel: <T extends JsonValue>( name: string, schema?: schema.JsonSchema) => Observable<T>;
Get a channel that validates against the schema. Messages will be filtered by the schema.
Parameter name
The name of the channel.
Parameter schema
A schema to use to validate messages.
method ping
ping: () => Observable<never>;
Pings the job and wait for the resulting Pong before completing.
method stop
stop: () => void;
Stops the job from running. This is different than unsubscribing from the output as in it sends the JobInboundMessageKind.Stop raw input to the job.
interface JobDescription
interface JobDescription extends JsonObject {}
Metadata associated with a job.
interface JobDispatcher
interface JobDispatcher< A extends JsonValue, I extends JsonValue, O extends JsonValue> extends JobHandler<A, I, O> {}
A JobDispatcher can be used to dispatch between multiple jobs.
method addConditionalJob
addConditionalJob: (predicate: (args: A) => boolean, name: string) => void;
Add a conditional job that will be selected if the input fits a predicate.
Parameter predicate
Parameter name
method setDefaultJob
setDefaultJob: ( name: JobName | null | JobHandler<JsonValue, JsonValue, JsonValue>) => void;
Set the default job if all conditionals failed.
Parameter name
The default name if all conditions are false.
interface JobHandler
interface JobHandler< ArgT extends JsonValue, InputT extends JsonValue, OutputT extends JsonValue> {}
The job handler function, which is a method that's executed for the job.
property jobDescription
jobDescription: Partial<JobDescription>;
call signature
(argument: ArgT, context: JobHandlerContext<ArgT, InputT, OutputT>): Observable< JobOutboundMessage<OutputT>>;
interface JobHandlerContext
interface JobHandlerContext< MinimumArgumentValueT extends JsonValue = JsonValue, MinimumInputValueT extends JsonValue = JsonValue, MinimumOutputValueT extends JsonValue = JsonValue> {}
The context in which the job is run.
property dependencies
readonly dependencies: Job<JsonValue, JsonValue, JsonValue>[];
property description
readonly description: JobDescription;
property inboundBus
readonly inboundBus: Observable<JobInboundMessage<MinimumInputValueT>>;
property scheduler
readonly scheduler: Scheduler<JsonValue, JsonValue, JsonValue>;
interface JobInboundMessageBase
interface JobInboundMessageBase extends JsonObject {}
Base interface for the all job inbound messages.
property kind
readonly kind: JobInboundMessageKind;
The kind of message this is.
interface JobInboundMessageInput
interface JobInboundMessageInput<InputT extends JsonValue> extends JobInboundMessageBase {}
A Job wants to send a message to a channel. This can be marshaled, and the Job object has helpers to transform this into an observable. The context also can create RxJS subjects that marshall messages through a channel.
interface JobInboundMessagePing
interface JobInboundMessagePing extends JobInboundMessageBase {}
A ping to the job. The job should reply with a pong as soon as possible.
interface JobInboundMessageStop
interface JobInboundMessageStop extends JobInboundMessageBase {}
Stop the job. This is handled by the job itself and jobs might not handle it. It will also unsubscribe from the Observable<>. This is equivalent to SIGTERM.
property kind
readonly kind: JobInboundMessageKind.Stop;
interface JobOutboundMessageBase
interface JobOutboundMessageBase {}
Base interface for the all job messages.
property description
readonly description: JobDescription;
The job description.
property kind
readonly kind: JobOutboundMessageKind;
The kind of message this is.
interface JobOutboundMessageChannelBase
interface JobOutboundMessageChannelBase extends JobOutboundMessageBase {}
Base interface for all job message related to channels.
property name
readonly name: string;
The name of the channel.
interface JobOutboundMessageChannelComplete
interface JobOutboundMessageChannelComplete extends JobOutboundMessageChannelBase {}
A job wants to close the channel, as completed. This is done automatically when the job ends, or can be done from the job to close it. A closed channel might be reopened, but the user need to recall getChannel().
property kind
readonly kind: JobOutboundMessageKind.ChannelComplete;
interface JobOutboundMessageChannelCreate
interface JobOutboundMessageChannelCreate extends JobOutboundMessageChannelBase {}
A job wants to create a new channel.
property kind
readonly kind: JobOutboundMessageKind.ChannelCreate;
interface JobOutboundMessageChannelError
interface JobOutboundMessageChannelError extends JobOutboundMessageChannelBase {}
A job wants to send an error to one of its channel. This is the equivalent of throwing through an Observable. The side channel will not receive any more messages after this, and will not complete.
interface JobOutboundMessageChannelMessage
interface JobOutboundMessageChannelMessage extends JobOutboundMessageChannelBase {}
A job wants to send a message to a channel. This can be marshaled, and the Job object has helpers to transform this into an observable. The context also can create RxJS subjects that marshall messages through a channel.
interface JobOutboundMessageEnd
interface JobOutboundMessageEnd extends JobOutboundMessageBase {}
OnEnd of the job run.
property kind
readonly kind: JobOutboundMessageKind.End;
interface JobOutboundMessageOnReady
interface JobOutboundMessageOnReady extends JobOutboundMessageBase {}
The job has been created and will validate its input.
property kind
readonly kind: JobOutboundMessageKind.OnReady;
interface JobOutboundMessageOutput
interface JobOutboundMessageOutput<OutputT extends JsonValue> extends JobOutboundMessageBase {}
An output value is available.
interface JobOutboundMessagePong
interface JobOutboundMessagePong extends JobOutboundMessageBase {}
A pong response from a ping input. The id is the same as the one passed in.
interface JobOutboundMessageStart
interface JobOutboundMessageStart extends JobOutboundMessageBase {}
The job started. This is done by the job itself.
property kind
readonly kind: JobOutboundMessageKind.Start;
interface RegisterJobOptions
interface RegisterJobOptions extends Partial<JobDescription> {}
SimpleJobRegistry job registration options.
interface Registry
interface Registry< MinimumArgumentValueT extends JsonValue = JsonValue, MinimumInputValueT extends JsonValue = JsonValue, MinimumOutputValueT extends JsonValue = JsonValue> {}
method get
get: < A extends MinimumArgumentValueT, I extends MinimumInputValueT, O extends MinimumOutputValueT>( name: JobName) => Observable<JobHandler<A, I, O>>;
Get a job handler.
Parameter name
The name of the job to get a handler from.
interface ScheduleJobOptions
interface ScheduleJobOptions {}
Options for scheduling jobs.
property dependencies
dependencies?: Job | Job[];
Jobs that need to finish before scheduling this job. These dependencies will be passed to the job itself in its context.
interface Scheduler
interface Scheduler< MinimumArgumentValueT extends JsonValue = JsonValue, MinimumInputValueT extends JsonValue = JsonValue, MinimumOutputValueT extends JsonValue = JsonValue> {}
An interface that can schedule jobs.
method getDescription
getDescription: (name: JobName) => Observable<JobDescription>;
Get a job description for a named job.
Parameter name
The name of the job.
Returns
A description, or null if no description is available for this job.
method has
has: (name: JobName) => Observable<boolean>;
Returns true if the job name has been registered.
Parameter name
The name of the job.
Returns
True if the job exists, false otherwise.
method pause
pause: () => () => void;
Pause the scheduler, temporary queueing _new_ jobs. Returns a resume function that should be used to resume execution. If multiple
pause()
were called, all their resume functions must be called before the Scheduler actually starts new jobs. Additional calls to the same resume function will have no effect.Jobs already running are NOT paused. This is pausing the scheduler only.
Returns
A function that can be run to resume the scheduler. If multiple
pause()
calls were made, all their return function must be called (in any order) before the scheduler can resume.
method schedule
schedule: < A extends MinimumArgumentValueT, I extends MinimumInputValueT, O extends MinimumOutputValueT>( name: JobName, argument: A, options?: ScheduleJobOptions) => Job<A, I, O>;
Schedule a job to be run, using its name.
Parameter name
The name of job to be run.
Parameter argument
The argument to send to the job when starting it.
Parameter options
Scheduling options.
Returns
The job being run.
interface SimpleJobHandlerContext
interface SimpleJobHandlerContext< A extends JsonValue, I extends JsonValue, O extends JsonValue> extends JobHandlerContext<A, I, O> {}
Interface for the JobHandler context that is used when using
createJobHandler()
. It extends the basicJobHandlerContext
with additional functionality.
property createChannel
createChannel: (name: string) => Observer<JsonValue>;
property input
input: Observable<I>;
method addTeardown
addTeardown: (teardown: () => Promise<void> | void) => void;
enum JobInboundMessageKind
enum JobInboundMessageKind { Ping = 'ip', Stop = 'is', Input = 'in',}
Messages that can be sent TO a job. The job needs to listen to those.
enum JobOutboundMessageKind
enum JobOutboundMessageKind { OnReady = 'c', Start = 's', End = 'e', Pong = 'p', Output = 'o', ChannelCreate = 'cn', ChannelMessage = 'cm', ChannelError = 'ce', ChannelComplete = 'cc',}
Kind of messages that can be outputted from a job.
member ChannelComplete
ChannelComplete = 'cc'
member ChannelCreate
ChannelCreate = 'cn'
member ChannelError
ChannelError = 'ce'
member ChannelMessage
ChannelMessage = 'cm'
member End
End = 'e'
member OnReady
OnReady = 'c'
member Output
Output = 'o'
member Pong
Pong = 'p'
member Start
Start = 's'
enum JobState
enum JobState { Queued = 'queued', Ready = 'ready', Started = 'started', Ended = 'ended', Errored = 'errored',}
The state of a job. These are changed as the job reports a new state through its messages.
member Ended
Ended = 'ended'
The job has ended and is done running.
member Errored
Errored = 'errored'
An error occured and the job stopped because of internal state.
member Queued
Queued = 'queued'
The job was queued and is waiting to start.
member Ready
Ready = 'ready'
The job description was found, its dependencies (see "Synchronizing and Dependencies") are done running, and the job's argument is validated and the job's code will be executed.
member Started
Started = 'started'
The job has been started. The job implementation is expected to send this as soon as its work is starting.
type JobInboundMessage
type JobInboundMessage<InputT extends JsonValue> = | JobInboundMessagePing | JobInboundMessageStop | JobInboundMessageInput<InputT>;
type JobName
type JobName = string;
A job name is just a string (needs to be serializable).
type JobOutboundMessage
type JobOutboundMessage<OutputT extends JsonValue> = | JobOutboundMessageOnReady | JobOutboundMessageStart | JobOutboundMessageOutput<OutputT> | JobOutboundMessageChannelCreate | JobOutboundMessageChannelMessage | JobOutboundMessageChannelError | JobOutboundMessageChannelComplete | JobOutboundMessageEnd | JobOutboundMessagePong;
Generic message type.
type SimpleJobHandlerFn
type SimpleJobHandlerFn< A extends JsonValue, I extends JsonValue, O extends JsonValue> = ( input: A, context: SimpleJobHandlerContext<A, I, O>) => O | Promise<O> | Observable<O>;
A simple version of the JobHandler. This simplifies a lot of the interaction with the job scheduler and registry. For example, instead of returning a JobOutboundMessage observable, you can directly return an output.
namespace strategy
module 'src/jobs/strategy.d.ts' {}
Copyright Google LLC All Rights Reserved.
Use of this source code is governed by an MIT-style license that can be found in the LICENSE file at https://angular.dev/license
function memoize
memoize: < A extends JsonValue = JsonValue, I extends JsonValue = JsonValue, O extends JsonValue = JsonValue>( replayMessages?: boolean) => JobStrategy<A, I, O>;
Creates a JobStrategy that will reuse a running job if the argument matches.
Parameter replayMessages
Replay ALL messages if a job is reused, otherwise just hook up where it is.
function reuse
reuse: < A extends JsonValue = JsonValue, I extends JsonValue = JsonValue, O extends JsonValue = JsonValue>( replayMessages?: boolean) => JobStrategy<A, I, O>;
Creates a JobStrategy that will always reuse a running job, and restart it if the job ended.
Parameter replayMessages
Replay ALL messages if a job is reused, otherwise just hook up where it is.
function serialize
serialize: < A extends JsonValue = JsonValue, I extends JsonValue = JsonValue, O extends JsonValue = JsonValue>() => JobStrategy<A, I, O>;
Creates a JobStrategy that serializes every call. This strategy can be mixed between jobs.
type JobStrategy
type JobStrategy< A extends JsonValue = JsonValue, I extends JsonValue = JsonValue, O extends JsonValue = JsonValue> = ( handler: JobHandler<A, I, O>, options?: Partial<Readonly<JobDescription>>) => JobHandler<A, I, O>;
Package Files (14)
- src/api.d.ts
- src/architect.d.ts
- src/create-builder.d.ts
- src/index.d.ts
- src/jobs/api.d.ts
- src/jobs/create-job-handler.d.ts
- src/jobs/dispatcher.d.ts
- src/jobs/exception.d.ts
- src/jobs/fallback-registry.d.ts
- src/jobs/index.d.ts
- src/jobs/simple-registry.d.ts
- src/jobs/simple-scheduler.d.ts
- src/jobs/strategy.d.ts
- src/progress-schema.d.ts
Dependencies (2)
Dev Dependencies (0)
No dev dependencies.
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/@angular-devkit/architect
.
- Markdown[![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/@angular-devkit/architect)
- HTML<a href="https://www.jsdocs.io/package/@angular-devkit/architect"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 5320 ms. - Missing or incorrect documentation? Open an issue for this package.