From db37c82ef3cd457a1676e36190d1c4782ee33b14 Mon Sep 17 00:00:00 2001
From: taylordowns2000 Registry process to query and maintain a list of adaptors available for
writing jobs. Currently it queries NPM for all modules in the Usage Caching By default the results are cached to disk, and will be reused every start. In order to disable or configure caching pass see: The process uses Caching By default the results are cached to disk, and will be reused every start. In order to disable or configure caching pass see: The process uses Timeouts There is a 'general' timeout of 30s, this is used for GenServer calls like
Destructures an NPM style package name into module name and version. Example Destructures an NPM style package name into module name and version. Example The OpenFn CLI returns JSON formatted log lines, which are decoded and added
-to a There are two kinds of output: These are usually for general logging, and debugging. The above is the equivalent of the output of a commandapply_user_email(user, password, attrs)
Examples
-
+iex> apply_user_email(user, "valid password", %{email: ...})
-{:ok, %User{}}role: :superuser
-iex> apply_user_email(user, "invalid password", %{email: ...})
-{:error, %Ecto.Changeset{}}
iex> apply_user_email(user, "valid password", %{email: ...})
+{:ok, %User{}}role: :superuser
+iex> apply_user_email(user, "invalid password", %{email: ...})
+{:error, %Ecto.Changeset{}}
change_scheduled_deletion(user, attrs \\ %{
Examples
-
+iex> change_scheduled_deletion(user)
-%Ecto.Changeset{data: %User{}}
iex> change_scheduled_deletion(user)
+%Ecto.Changeset{data: %User{}}
change_superuser_registration(attrs \\ %{})
Examples
-
+iex> change_superuser_registration(user)
-%Ecto.Changeset{data: %User{}}
iex> change_superuser_registration(user)
+%Ecto.Changeset{data: %User{}}
change_user_email(user, attrs \\ %{})
Examples
-
+iex> change_user_email(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_email(user)
+%Ecto.Changeset{data: %User{}}
change_user_password(user, attrs \\ %{})
Examples
-
+iex> change_user_password(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_password(user)
+%Ecto.Changeset{data: %User{}}
change_user_registration(attrs \\ %{})
Examples
-
+iex> change_user_registration(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_registration(user)
+%Ecto.Changeset{data: %User{}}
delete_token(token)
Examples
-iex> delete_token(token)
-{:ok, %UserToken{}}
+
+iex> delete_token(token)
+{:error, %Ecto.Changeset{}}iex> delete_token(token)
+{:ok, %UserToken{}}
-iex> delete_token(token)
-{:error, %Ecto.Changeset{}}
delete_user(user)
Examples
-iex> delete_user(user)
-{:ok, %User{}}
+
+iex> delete_user(user)
+{:error, %Ecto.Changeset{}}iex> delete_user(user)
+{:ok, %User{}}
-iex> delete_user(user)
-{:error, %Ecto.Changeset{}}
deliver_update_email_instructions(user, cur
Examples
-
+iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
deliver_user_confirmation_instructions(user
Examples
-
iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
+
+iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:error, :already_confirmed}iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
-iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:error, :already_confirmed}
deliver_user_reset_password_instructions(us
Examples
-
+iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
get_token!(id)
Examples
-iex> get_token!(123)
-%UserToken{}
+
iex> get_token!(123)
+%UserToken{}
-iex> get_token!(456)
+iex> get_token!(456)
** (Ecto.NoResultsError)
get_user!(id)
Examples
-iex> get_user!(123)
-%User{}
+
@@ -1348,10 +1348,10 @@ iex> get_user!(123)
+%User{}
-iex> get_user!(456)
+iex> get_user!(456)
** (Ecto.NoResultsError)
get_user_by_email(email)
Examples
-iex> get_user_by_email("foo@example.com")
-%User{}
+
@@ -1380,10 +1380,10 @@ iex> get_user_by_email("foo@example.com")
+%User{}
-iex> get_user_by_email("unknown@example.com")
+iex> get_user_by_email("unknown@example.com")
nil
get_user_by_email_and_password(email, passw
Examples
-
iex> get_user_by_email_and_password("foo@example.com", "correct_password")
-%User{}
+
@@ -1412,10 +1412,10 @@ iex> get_user_by_email_and_password("foo@example.com", "correct_password")
+%User{}
-iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
+iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
nil
get_user_by_reset_password_token(token)
Examples
-iex> get_user_by_reset_password_token("validtoken")
-%User{}
+
@@ -1583,8 +1583,8 @@ iex> get_user_by_reset_password_token("validtoken")
+%User{}
-iex> get_user_by_reset_password_token("invalidtoken")
+iex> get_user_by_reset_password_token("invalidtoken")
nil
list_users()
Examples
-
+iex> list_users()
-[%User{}, ...]
iex> list_users()
+[%User{}, ...]
register_superuser(attrs)
Examples
-iex> register_superuser(%{field: value})
-{:ok, %User{}}
+
+iex> register_superuser(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> register_superuser(%{field: value})
+{:ok, %User{}}
-iex> register_superuser(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
register_user(attrs)
Examples
-iex> register_user(%{field: value})
-{:ok, %User{}}
+
+iex> register_user(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> register_user(%{field: value})
+{:ok, %User{}}
-iex> register_user(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
reset_user_password(user, attrs)
Examples
-iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
-{:ok, %User{}}
+
+iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
+{:error, %Ecto.Changeset{}}iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
+{:ok, %User{}}
-iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
-{:error, %Ecto.Changeset{}}
update_user_password(user, password, attrs)
Examples
-
iex> update_user_password(user, "valid password", %{password: ...})
-{:ok, %User{}}
+
+iex> update_user_password(user, "invalid password", %{password: ...})
+{:error, %Ecto.Changeset{}}iex> update_user_password(user, "valid password", %{password: ...})
+{:ok, %User{}}
-iex> update_user_password(user, "invalid password", %{password: ...})
-{:error, %Ecto.Changeset{}}
request(request)
Examples
-request = %HTTPoison.Request{
+
+request(request)request = %HTTPoison.Request{
method: :post,
url: "https://my.website.com",
body: "{\"foo\": 3}",
- headers: [{"Accept", "application/json"}]
-}
+ headers: [{"Accept", "application/json"}]
+}
-request(request)
request(method, url, body \\ "",
Examples
-
+request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
@openfn
organization and
filters out modules that are known not to be adaptors.# Starting the process
-AdaptorRegistry.start_link()
+AdaptorRegistry.start_link()
# Getting a list of all adaptors
-Lightning.AdaptorRegistry.AdaptorRegistry.all()
start_link/1
.:continue
to return before the adaptors have been queried.
+start_link/1
.:continue
to return before the adaptors have been queried.
This does mean that the first call to the process will be delayed until
the handle_continue/2
has finished.all/1
and also internally when the modules are being queried. NPM can
@@ -411,10 +411,10 @@ resolve_package_name(package_name)
-
+iex> resolve_package_name("@openfn/language-salesforce@1.2.3")
-{ "@openfn/language-salesforce", "1.2.3" }
-iex> resolve_package_name("@openfn/language-salesforce")
-{ "@openfn/language-salesforce", nil }
iex> resolve_package_name("@openfn/language-salesforce@1.2.3")
+{ "@openfn/language-salesforce", "1.2.3" }
+iex> resolve_package_name("@openfn/language-salesforce")
+{ "@openfn/language-salesforce", nil }
create_attempt(work_order, job, reason)
Examples
-iex> create_attempt(%{field: value})
-{:ok, %Attempt{}}
+
+iex> create_attempt(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> create_attempt(%{field: value})
+{:ok, %Attempt{}}
-iex> create_attempt(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
request(request)
Examples
-request = %HTTPoison.Request{
+
+request(request)request = %HTTPoison.Request{
method: :post,
url: "https://my.website.com",
body: "{\"foo\": 3}",
- headers: [{"Accept", "application/json"}]
-}
+ headers: [{"Accept", "application/json"}]
+}
-request(request)
request(method, url, body \\ "",
Examples
-
+request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
Logs
Result
struct.{"level":"<<level>>","name":"<<module>>","message":"..."],"time":<<timestamp>>}
{"message":["<<message|filepath|output>>"]}
Result
struct.
There are two kinds of output:
{"level":"<<level>>","name":"<<module>>","message":"..."],"time":<<timestamp>>}
These are usually for general logging, and debugging.
{"message":["<<message|filepath|output>>"]}
The above is the equivalent of the output of a command
diff --git a/Lightning.Credentials.html b/Lightning.Credentials.html index b3f7bb1969..9184c7de24 100644 --- a/Lightning.Credentials.html +++ b/Lightning.Credentials.html @@ -277,8 +277,8 @@iex> change_credential(credential)
-%Ecto.Changeset{data: %Credential{}}
+iex> change_credential(credential)
+%Ecto.Changeset{data: %Credential{}}
iex> create_credential(%{field: value})
-{:ok, %Credential{}}
+iex> create_credential(%{field: value})
+{:ok, %Credential{}}
-iex> create_credential(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_credential(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_credential(credential)
-{:ok, %Credential{}}
+iex> delete_credential(credential)
+{:ok, %Credential{}}
-iex> delete_credential(credential)
-{:error, %Ecto.Changeset{}}
+iex> delete_credential(credential)
+{:error, %Ecto.Changeset{}}
iex> get_credential!(123)
-%Credential{}
+iex> get_credential!(123)
+%Credential{}
-iex> get_credential!(456)
+iex> get_credential!(456)
** (Ecto.NoResultsError)
iex> can_credential_be_shared_to_user(credential_id, user_id)
-[]
+iex> can_credential_be_shared_to_user(credential_id, user_id)
+[]
-iex> can_credential_be_shared_to_user(credential_id, user_id)
-["52ea8758-6ce5-43d7-912f-6a1e1f11dc55"]
+iex> can_credential_be_shared_to_user(credential_id, user_id)
+["52ea8758-6ce5-43d7-912f-6a1e1f11dc55"]
iex> list_credentials()
-[%Credential{}, ...]
+iex> list_credentials()
+[%Credential{}, ...]
iex> list_credentials_for_user(123)
-[%Credential{user_id: 123}, %Credential{user_id: 123},...]
+iex> list_credentials_for_user(123)
+[%Credential{user_id: 123}, %Credential{user_id: 123},...]
iex> update_credential(credential, %{field: new_value})
-{:ok, %Credential{}}
+iex> update_credential(credential, %{field: new_value})
+{:ok, %Credential{}}
-iex> update_credential(credential, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_credential(credential, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> change_dataclip(dataclip)
-%Ecto.Changeset{data: %Dataclip{}}
+iex> change_dataclip(dataclip)
+%Ecto.Changeset{data: %Dataclip{}}
iex> change_run(run)
-%Ecto.Changeset{data: %Run{}}
+iex> change_run(run)
+%Ecto.Changeset{data: %Run{}}
iex> create_dataclip(%{field: value})
-{:ok, %Dataclip{}}
+iex> create_dataclip(%{field: value})
+{:ok, %Dataclip{}}
-iex> create_dataclip(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_dataclip(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> create_run(%{field: value})
-{:ok, %Run{}}
+iex> create_run(%{field: value})
+{:ok, %Run{}}
-iex> create_run(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_run(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_dataclip(dataclip)
-{:ok, %Dataclip{}}
+iex> delete_dataclip(dataclip)
+{:ok, %Dataclip{}}
-iex> delete_dataclip(dataclip)
-{:error, %Ecto.Changeset{}}
+iex> delete_dataclip(dataclip)
+{:error, %Ecto.Changeset{}}
iex> delete_run(run)
-{:ok, %Run{}}
+iex> delete_run(run)
+{:ok, %Run{}}
-iex> delete_run(run)
-{:error, %Ecto.Changeset{}}
+iex> delete_run(run)
+{:error, %Ecto.Changeset{}}
iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
-%Dataclip{}
+iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
+%Dataclip{}
-iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
+iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
nil
-iex> get_dataclip(%Run{id: "a uuid"})
-%Dataclip{}
+iex> get_dataclip(%Run{id: "a uuid"})
+%Dataclip{}
iex> get_dataclip!(123)
-%Dataclip{}
+iex> get_dataclip!(123)
+%Dataclip{}
-iex> get_dataclip!(456)
+iex> get_dataclip!(456)
** (Ecto.NoResultsError)
iex> get_run!(123)
-%Run{}
+iex> get_run!(123)
+%Run{}
-iex> get_run!(456)
+iex> get_run!(456)
** (Ecto.NoResultsError)
@@ -1064,8 +1064,8 @@ list_dataclips()
Examples
-iex> list_dataclips()
-[%Dataclip{}, ...]
+iex> list_dataclips()
+[%Dataclip{}, ...]
@@ -1174,8 +1174,8 @@ list_runs()
Examples
-iex> list_runs()
-[%Run{}, ...]
+iex> list_runs()
+[%Run{}, ...]
@@ -1330,11 +1330,11 @@ update_dataclip(dataclip, attrs)
Examples
-iex> update_dataclip(dataclip, %{field: new_value})
-{:ok, %Dataclip{}}
+iex> update_dataclip(dataclip, %{field: new_value})
+{:ok, %Dataclip{}}
-iex> update_dataclip(dataclip, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_dataclip(dataclip, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1362,11 +1362,11 @@ update_run(run, attrs)
Examples
-iex> update_run(run, %{field: new_value})
-{:ok, %Run{}}
+iex> update_run(run, %{field: new_value})
+{:ok, %Run{}}
-iex> update_run(run, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_run(run, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.InvocationReasons.html b/Lightning.InvocationReasons.html
index 83af502e07..c94492d93a 100644
--- a/Lightning.InvocationReasons.html
+++ b/Lightning.InvocationReasons.html
@@ -273,11 +273,11 @@ create_reason(attrs \\ %{})
Examples
-iex> create_reason(%{field: value})
-{:ok, %InvocationReason{}}
+iex> create_reason(%{field: value})
+{:ok, %InvocationReason{}}
-iex> create_reason(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_reason(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Jobs.Job.html b/Lightning.Jobs.Job.html
index 00ecd1fa85..32f9f68408 100644
--- a/Lightning.Jobs.Job.html
+++ b/Lightning.Jobs.Job.html
@@ -336,17 +336,17 @@ put_workflow(changeset, workflow)
Attaches a workflow to a job, this is useful when you have an unpersisted
Workflow changeset - and want it to be created at the same time as a Job.
Example:
workflow =
- Ecto.Changeset.cast(
- %Lightning.Workflows.Workflow{},
- %{ "project_id" => attrs[:project_id], "id" => Ecto.UUID.generate() },
- [:project_id, :id]
- )
+ Ecto.Changeset.cast(
+ %Lightning.Workflows.Workflow{},
+ %{ "project_id" => attrs[:project_id], "id" => Ecto.UUID.generate() },
+ [:project_id, :id]
+ )
job =
- %Job{}
- |> Ecto.Changeset.change()
- |> Job.put_workflow(workflow)
- |> Job.changeset(attrs)
+ %Job{}
+ |> Ecto.Changeset.change()
+ |> Job.put_workflow(workflow)
+ |> Job.changeset(attrs)
iex> change_job(job)
-%Ecto.Changeset{data: %Job{}}
+iex> change_job(job)
+%Ecto.Changeset{data: %Job{}}
iex> create_job(%{field: value})
-{:ok, %Job{}}
+iex> create_job(%{field: value})
+{:ok, %Job{}}
-iex> create_job(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_job(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_job(job)
-{:ok, %Job{}}
+iex> delete_job(job)
+{:ok, %Job{}}
-iex> delete_job(job)
-{:error, %Ecto.Changeset{}}
+iex> delete_job(job)
+{:error, %Ecto.Changeset{}}
iex> get_job!(123)
-%Job{}
+iex> get_job!(123)
+%Job{}
-iex> get_job!(456)
+iex> get_job!(456)
** (Ecto.NoResultsError)
iex> update_job(job, %{field: new_value})
-{:ok, %Job{}}
+iex> update_job(job, %{field: new_value})
+{:ok, %Job{}}
-iex> update_job(job, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_job(job, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Pipeline.StateAssembler.html b/Lightning.Pipeline.StateAssembler.html
index 1042740ebd..9b28109bde 100644
--- a/Lightning.Pipeline.StateAssembler.html
+++ b/Lightning.Pipeline.StateAssembler.html
@@ -121,7 +121,7 @@ For the most common jobs, an inbound webhook will store an :http_request
type
-dataclip. The reason that is created is associated with the dataclip.
At runtime, the initial state for a Run will be in the shape of:
{ "data": <the dataclip>, "configuration": <the job's credential> }
At runtime, the initial state for a Run will be in the shape of:
{ "data": <the dataclip>, "configuration": <the job's credential> }
saved-inputs
diff --git a/Lightning.Policies.Permissions.html b/Lightning.Policies.Permissions.html index abaece69a1..beef404233 100644 --- a/Lightning.Policies.Permissions.html +++ b/Lightning.Policies.Permissions.html @@ -115,13 +115,13 @@This module defines a unique interface managing authorizations in Lightning.
Users in Lightning have instance-wide and project-wide roles which determine their level of access to resources in the application. Fo rmore details see the documentation.
These authorizations policies are all implemented under the lib/lightning/policies
folder. In that folder you can find 3 files:
users.ex
file has all the policies for the instances wide access levelsproject_users.ex
file has all the policies for the project wide access levelspermissions.ex
file defines the Lightning.Policies.Permissions.can/4
interface. Which is a wrapper around the Bodyguard.permit/4
function.
-We use that interface to be able to harmonize the use of policies accross the entire app.All the policies are tested in the test/lightning/policies
folder. And the test are written in a way that allows the reader to quickly who can do what in the app.
We have two variants of the Lightning.Policies.Permissions.can/4
interface:
Lightning.Policies.Permissions.can(policy, action, actor, resource)
returns :ok
if the actor can perform the action on the resource and {:error, :unauthorized}
otherwise.Lightning.Policies.Permissions.can?(policy, action, actor, resource)
returns true
if the actor can perform the action on the resource and false
otherwise.Here is an example of how we the Lightning.Policies.Permissions.can/4
interface to check if the a user can edit a job or not
can_edit_job = Lightning.Policies.ProjectUsers |> Lightning.Policies.Permissions.can?(:edit_job, socket.assigns.current_user, socket.assigns.project)
+We use that interface to be able to harmonize the use of policies accross the entire app.All the policies are tested in the test/lightning/policies
folder. And the test are written in a way that allows the reader to quickly who can do what in the app.
We have two variants of the Lightning.Policies.Permissions.can/4
interface:
Lightning.Policies.Permissions.can(policy, action, actor, resource)
returns :ok
if the actor can perform the action on the resource and {:error, :unauthorized}
otherwise.Lightning.Policies.Permissions.can?(policy, action, actor, resource)
returns true
if the actor can perform the action on the resource and false
otherwise.
Here is an example of how we the Lightning.Policies.Permissions.can/4
interface to check if the a user can edit a job or not
can_edit_job = Lightning.Policies.ProjectUsers |> Lightning.Policies.Permissions.can?(:edit_job, socket.assigns.current_user, socket.assigns.project)
-if can_edit_job do
+if can_edit_job do
# allow user to edit the job
-else
+else
# quick user out
-end
+end
iex> can(Lightning.Policies.Users, :create_workflow, user, project)
+iex> can(Lightning.Policies.Users, :create_workflow, user, project)
:ok
-iex> can(Lightning.Policies.Users, :create_project, user, %{})
-{:error, :unauthorized}
+iex> can(Lightning.Policies.Users, :create_project, user, %{})
+{:error, :unauthorized}
iex> can(Lightning.Policies.Users, :create_workflow, user, project)
+iex> can(Lightning.Policies.Users, :create_workflow, user, project)
true
-iex> can(Lightning.Policies.Users, :create_project, user, %{})
+iex> can(Lightning.Policies.Users, :create_project, user, %{})
false
iex> change_project(project)
-%Ecto.Changeset{data: %Project{}}
+iex> change_project(project)
+%Ecto.Changeset{data: %Project{}}
iex> create_project(%{field: value})
-{:ok, %Project{}}
+iex> create_project(%{field: value})
+{:ok, %Project{}}
-iex> create_project(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_project(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_project(project)
-{:ok, %Project{}}
+iex> delete_project(project)
+{:ok, %Project{}}
-iex> delete_project(project)
-{:error, %Ecto.Changeset{}}
+iex> delete_project(project)
+{:error, %Ecto.Changeset{}}
iex> export_project(:yaml, project_id)
-{:ok, string}
+iex> export_project(:yaml, project_id)
+{:ok, string}
iex> get_project!(123)
-%Project{}
+iex> get_project!(123)
+%Project{}
-iex> get_project!(456)
+iex> get_project!(456)
** (Ecto.NoResultsError)
iex> get_project_user!(123)
-%ProjectUser{}
+iex> get_project_user!(123)
+%ProjectUser{}
-iex> get_project_user!(456)
+iex> get_project_user!(456)
** (Ecto.NoResultsError)
@@ -824,16 +824,16 @@ get_project_user_role(user, project)
Examples
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:admin
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:viewer
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:editor
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:owner
@@ -862,10 +862,10 @@ get_project_with_users!(id)
Examples
-iex> get_project!(123)
-%Project{}
+iex> get_project!(123)
+%Project{}
-iex> get_project!(456)
+iex> get_project!(456)
** (Ecto.NoResultsError)
@@ -976,8 +976,8 @@ list_projects()
Examples
-iex> list_projects()
-[%Project{}, ...]
+iex> list_projects()
+[%Project{}, ...]
@@ -1435,11 +1435,11 @@ update_project(project, attrs)
Examples
-iex> update_project(project, %{field: new_value})
-{:ok, %Project{}}
+iex> update_project(project, %{field: new_value})
+{:ok, %Project{}}
-iex> update_project(project, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_project(project, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1467,11 +1467,11 @@ update_project_user(project_user, attrs)
Examples
-iex> update_project_user(project_user, %{field: new_value})
-{:ok, %ProjectUser{}}
+iex> update_project_user(project_user, %{field: new_value})
+{:ok, %ProjectUser{}}
-iex> update_project_user(projectUser, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_project_user(projectUser, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1521,8 +1521,8 @@ validate_for_deletion(project, attrs)
Examples
-iex> validate_for_deletion(project)
-%Ecto.Changeset{data: %Project{}}
+iex> validate_for_deletion(project)
+%Ecto.Changeset{data: %Project{}}
diff --git a/Lightning.Runtime.LogAgent.html b/Lightning.Runtime.LogAgent.html
index 68d0563e66..cbdaf9b280 100644
--- a/Lightning.Runtime.LogAgent.html
+++ b/Lightning.Runtime.LogAgent.html
@@ -115,9 +115,9 @@
Agent facility to consume STDOUT/STDERR byte by byte.
Since it works on a byte by byte basis, you will need to perform line-splitting
-yourself.
Usage:
{:ok, log} = LogAgent.start_link()
-"foo" = LogAgent.process_chunk(log, {:stdout, "foo"})
-"foobar" = LogAgent.process_chunk(log, {:stdout, "bar"})
+yourself.Usage:
{:ok, log} = LogAgent.start_link()
+"foo" = LogAgent.process_chunk(log, {:stdout, "foo"})
+"foobar" = LogAgent.process_chunk(log, {:stdout, "bar"})
diff --git a/Lightning.Scrubber.html b/Lightning.Scrubber.html
index 98e161768b..52b35eb968 100644
--- a/Lightning.Scrubber.html
+++ b/Lightning.Scrubber.html
@@ -114,11 +114,11 @@
-Process used to scrub strings of sensitive information.
Can be started via start_link/1
.
{:ok, scrubber} =
- Lightning.Scrubber.start_link(
+Process used to scrub strings of sensitive information.
Can be started via start_link/1
.
{:ok, scrubber} =
+ Lightning.Scrubber.start_link(
samples:
- Lightning.Credentials.sensitive_values_for(credential)
- )
Takes an optional :name
key, in case you need to name the process.
+ Lightning.Credentials.sensitive_values_for(credential)
+ )
Takes an optional :name
key, in case you need to name the process.
diff --git a/Lightning.TaskWorker.html b/Lightning.TaskWorker.html
index 495dd0cc29..486ea4bc38 100644
--- a/Lightning.TaskWorker.html
+++ b/Lightning.TaskWorker.html
@@ -117,7 +117,7 @@
A TaskWorker with concurrency limits.
A simple concurrency limiter that wraps Task.Supervisor
, which already does
have the ability to specify max_children
; it throws an error when
that limit is exceeded.
To use it, start it like any other process; ideally in your supervision tree.
...,
- {Lightning.TaskWorker, name: :cli_task_worker, max_tasks: 4}
Options
:max_tasks
Defaults to the number of system schedulers available to the vm.
+ {Lightning.TaskWorker, name: :cli_task_worker, max_tasks: 4}
Options
:max_tasks
Defaults to the number of system schedulers available to the vm.
diff --git a/Lightning.Validators.html b/Lightning.Validators.html
index 2052844738..d8bcd9b0e1 100644
--- a/Lightning.Validators.html
+++ b/Lightning.Validators.html
@@ -192,10 +192,10 @@ validate_exclusive(changeset, fields, messa
Validate that only one of the fields is set at a time.
Example:
changeset
-|> validate_exclusive(
- [:source_job_id, :source_trigger_id],
+|> validate_exclusive(
+ [:source_job_id, :source_trigger_id],
"source_job_id and source_trigger_id are mutually exclusive"
-)
+)
diff --git a/Lightning.WorkOrderService.html b/Lightning.WorkOrderService.html
index e3262acddc..e0bfbd61cb 100644
--- a/Lightning.WorkOrderService.html
+++ b/Lightning.WorkOrderService.html
@@ -342,11 +342,11 @@ create_work_order(attrs \\ %{})
Examples
-iex> create_work_order(%{field: value})
-{:ok, %WorkOrder{}}
+iex> create_work_order(%{field: value})
+{:ok, %WorkOrder{}}
-iex> create_work_order(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_work_order(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Workflows.html b/Lightning.Workflows.html
index f3ff3e520c..1119e4f357 100644
--- a/Lightning.Workflows.html
+++ b/Lightning.Workflows.html
@@ -349,8 +349,8 @@ change_workflow(workflow, attrs \\ %{})
Examples
-iex> change_workflow(workflow)
-%Ecto.Changeset{data: %Workflow{}}
+iex> change_workflow(workflow)
+%Ecto.Changeset{data: %Workflow{}}
@@ -402,11 +402,11 @@ create_workflow(attrs \\ %{})
Examples
-iex> create_workflow(%{field: value})
-{:ok, %Workflow{}}
+iex> create_workflow(%{field: value})
+{:ok, %Workflow{}}
-iex> create_workflow(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_workflow(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -434,11 +434,11 @@ delete_workflow(workflow)
Examples
-iex> delete_workflow(workflow)
-{:ok, %Workflow{}}
+iex> delete_workflow(workflow)
+{:ok, %Workflow{}}
-iex> delete_workflow(workflow)
-{:error, %Ecto.Changeset{}}
+iex> delete_workflow(workflow)
+{:error, %Ecto.Changeset{}}
@@ -539,10 +539,10 @@ get_workflow!(id)
Examples
-iex> get_workflow!(123)
-%Workflow{}
+iex> get_workflow!(123)
+%Workflow{}
-iex> get_workflow!(456)
+iex> get_workflow!(456)
** (Ecto.NoResultsError)
@@ -623,8 +623,8 @@ list_workflows()
Examples
-iex> list_workflows()
-[%Workflow{}, ...]
+iex> list_workflows()
+[%Workflow{}, ...]
@@ -654,8 +654,8 @@ mark_for_deletion(workflow, attrs \\ %{})
Examples
-iex> change_request_deletion(workflow)
-%Ecto.Changeset{data: %Workflow{}}
+iex> change_request_deletion(workflow)
+%Ecto.Changeset{data: %Workflow{}}
@@ -733,11 +733,11 @@ update_workflow(workflow, attrs)
Examples
-iex> update_workflow(workflow, %{field: new_value})
-{:ok, %Workflow{}}
+iex> update_workflow(workflow, %{field: new_value})
+{:ok, %Workflow{}}
-iex> update_workflow(workflow, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_workflow(workflow, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.epub b/Lightning.epub
index 1b84c32767cda36717dbf91d6c49c04d570c0ccd..2a36e67e9ebdfca3d78e77cf9da9a924c8ee3615 100644
GIT binary patch
delta 81151
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