From 03da1b2d7c1117925d2c3353805dc6a868ad2708 Mon Sep 17 00:00:00 2001
From: stuartc 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{}
+
@@ -1452,10 +1452,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{}
+
@@ -1484,10 +1484,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{}
+
@@ -1516,10 +1516,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{}
+
@@ -1716,8 +1716,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 4cccc51ccd..adddc5249f 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 b5522a0ebb..d3cf35bb2b 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 592be5e63f..0249112f2d 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 b23313177d..55f3d6a4a3 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 4e338c6941..ae289bc35a 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 3b3cb4be16..aa7f589e40 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 c3c70dfcd5..464c57df8b 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 063fdaabde..dc9b61e824 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 930bf747b2..14c980d243 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.VersionControl.GithubClient.html b/Lightning.VersionControl.GithubClient.html
index 435a5f6c8e..7218372db8 100644
--- a/Lightning.VersionControl.GithubClient.html
+++ b/Lightning.VersionControl.GithubClient.html
@@ -446,11 +446,11 @@ delete(client, url, opts)
-Perform a DELETE request.
See request/1
or request/2
for options definition.
delete("/users")
-delete("/users", query: [scope: "admin"])
-delete(client, "/users")
-delete(client, "/users", query: [scope: "admin"])
-delete(client, "/users", body: %{name: "Jon"})
+Perform a DELETE request.
See request/1
or request/2
for options definition.
delete("/users")
+delete("/users", query: [scope: "admin"])
+delete(client, "/users")
+delete(client, "/users", query: [scope: "admin"])
+delete(client, "/users", body: %{name: "Jon"})
@@ -479,11 +479,11 @@ delete!(client, url, opts)
-Perform a DELETE request.
See request!/1
or request!/2
for options definition.
delete!("/users")
-delete!("/users", query: [scope: "admin"])
-delete!(client, "/users")
-delete!(client, "/users", query: [scope: "admin"])
-delete!(client, "/users", body: %{name: "Jon"})
+Perform a DELETE request.
See request!/1
or request!/2
for options definition.
delete!("/users")
+delete!("/users", query: [scope: "admin"])
+delete!(client, "/users")
+delete!(client, "/users", query: [scope: "admin"])
+delete!(client, "/users", body: %{name: "Jon"})
@@ -533,11 +533,11 @@ get(client, url, opts)
-Perform a GET request.
See request/1
or request/2
for options definition.
get("/users")
-get("/users", query: [scope: "admin"])
-get(client, "/users")
-get(client, "/users", query: [scope: "admin"])
-get(client, "/users", body: %{name: "Jon"})
+Perform a GET request.
See request/1
or request/2
for options definition.
get("/users")
+get("/users", query: [scope: "admin"])
+get(client, "/users")
+get(client, "/users", query: [scope: "admin"])
+get(client, "/users", body: %{name: "Jon"})
@@ -566,11 +566,11 @@ get!(client, url, opts)
-Perform a GET request.
See request!/1
or request!/2
for options definition.
get!("/users")
-get!("/users", query: [scope: "admin"])
-get!(client, "/users")
-get!(client, "/users", query: [scope: "admin"])
-get!(client, "/users", body: %{name: "Jon"})
+Perform a GET request.
See request!/1
or request!/2
for options definition.
get!("/users")
+get!("/users", query: [scope: "admin"])
+get!(client, "/users")
+get!(client, "/users", query: [scope: "admin"])
+get!(client, "/users", body: %{name: "Jon"})
@@ -620,11 +620,11 @@ head(client, url, opts)
-Perform a HEAD request.
See request/1
or request/2
for options definition.
head("/users")
-head("/users", query: [scope: "admin"])
-head(client, "/users")
-head(client, "/users", query: [scope: "admin"])
-head(client, "/users", body: %{name: "Jon"})
+Perform a HEAD request.
See request/1
or request/2
for options definition.
head("/users")
+head("/users", query: [scope: "admin"])
+head(client, "/users")
+head(client, "/users", query: [scope: "admin"])
+head(client, "/users", body: %{name: "Jon"})
@@ -653,11 +653,11 @@ head!(client, url, opts)
-Perform a HEAD request.
See request!/1
or request!/2
for options definition.
head!("/users")
-head!("/users", query: [scope: "admin"])
-head!(client, "/users")
-head!(client, "/users", query: [scope: "admin"])
-head!(client, "/users", body: %{name: "Jon"})
+Perform a HEAD request.
See request!/1
or request!/2
for options definition.
head!("/users")
+head!("/users", query: [scope: "admin"])
+head!(client, "/users")
+head!(client, "/users", query: [scope: "admin"])
+head!(client, "/users", body: %{name: "Jon"})
@@ -707,11 +707,11 @@ options(client, url, opts)
-Perform a OPTIONS request.
See request/1
or request/2
for options definition.
options("/users")
-options("/users", query: [scope: "admin"])
-options(client, "/users")
-options(client, "/users", query: [scope: "admin"])
-options(client, "/users", body: %{name: "Jon"})
+Perform a OPTIONS request.
See request/1
or request/2
for options definition.
options("/users")
+options("/users", query: [scope: "admin"])
+options(client, "/users")
+options(client, "/users", query: [scope: "admin"])
+options(client, "/users", body: %{name: "Jon"})
@@ -740,11 +740,11 @@ options!(client, url, opts)
-Perform a OPTIONS request.
See request!/1
or request!/2
for options definition.
options!("/users")
-options!("/users", query: [scope: "admin"])
-options!(client, "/users")
-options!(client, "/users", query: [scope: "admin"])
-options!(client, "/users", body: %{name: "Jon"})
+Perform a OPTIONS request.
See request!/1
or request!/2
for options definition.
options!("/users")
+options!("/users", query: [scope: "admin"])
+options!(client, "/users")
+options!(client, "/users", query: [scope: "admin"])
+options!(client, "/users", body: %{name: "Jon"})
@@ -773,10 +773,10 @@ patch(client, url, body, opts)
-Perform a PATCH request.
See request/1
or request/2
for options definition.
patch("/users", %{name: "Jon"})
-patch("/users", %{name: "Jon"}, query: [scope: "admin"])
-patch(client, "/users", %{name: "Jon"})
-patch(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PATCH request.
See request/1
or request/2
for options definition.
patch("/users", %{name: "Jon"})
+patch("/users", %{name: "Jon"}, query: [scope: "admin"])
+patch(client, "/users", %{name: "Jon"})
+patch(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -805,10 +805,10 @@ patch!(client, url, body, opts)
-Perform a PATCH request.
See request!/1
or request!/2
for options definition.
patch!("/users", %{name: "Jon"})
-patch!("/users", %{name: "Jon"}, query: [scope: "admin"])
-patch!(client, "/users", %{name: "Jon"})
-patch!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PATCH request.
See request!/1
or request!/2
for options definition.
patch!("/users", %{name: "Jon"})
+patch!("/users", %{name: "Jon"}, query: [scope: "admin"])
+patch!(client, "/users", %{name: "Jon"})
+patch!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -837,10 +837,10 @@ post(client, url, body, opts)
-Perform a POST request.
See request/1
or request/2
for options definition.
post("/users", %{name: "Jon"})
-post("/users", %{name: "Jon"}, query: [scope: "admin"])
-post(client, "/users", %{name: "Jon"})
-post(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a POST request.
See request/1
or request/2
for options definition.
post("/users", %{name: "Jon"})
+post("/users", %{name: "Jon"}, query: [scope: "admin"])
+post(client, "/users", %{name: "Jon"})
+post(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -869,10 +869,10 @@ post!(client, url, body, opts)
-Perform a POST request.
See request!/1
or request!/2
for options definition.
post!("/users", %{name: "Jon"})
-post!("/users", %{name: "Jon"}, query: [scope: "admin"])
-post!(client, "/users", %{name: "Jon"})
-post!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a POST request.
See request!/1
or request!/2
for options definition.
post!("/users", %{name: "Jon"})
+post!("/users", %{name: "Jon"}, query: [scope: "admin"])
+post!(client, "/users", %{name: "Jon"})
+post!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -901,10 +901,10 @@ put(client, url, body, opts)
-Perform a PUT request.
See request/1
or request/2
for options definition.
put("/users", %{name: "Jon"})
-put("/users", %{name: "Jon"}, query: [scope: "admin"])
-put(client, "/users", %{name: "Jon"})
-put(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PUT request.
See request/1
or request/2
for options definition.
put("/users", %{name: "Jon"})
+put("/users", %{name: "Jon"}, query: [scope: "admin"])
+put(client, "/users", %{name: "Jon"})
+put(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -933,10 +933,10 @@ put!(client, url, body, opts)
-Perform a PUT request.
See request!/1
or request!/2
for options definition.
put!("/users", %{name: "Jon"})
-put!("/users", %{name: "Jon"}, query: [scope: "admin"])
-put!(client, "/users", %{name: "Jon"})
-put!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PUT request.
See request!/1
or request!/2
for options definition.
put!("/users", %{name: "Jon"})
+put!("/users", %{name: "Jon"}, query: [scope: "admin"])
+put!(client, "/users", %{name: "Jon"})
+put!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -978,11 +978,11 @@ request(client \\ %Tesla.Client{}, options)
Examples
-ExampleApi.request(method: :get, url: "/users/path")
+ExampleApi.request(method: :get, url: "/users/path")
# use shortcut methods
-ExampleApi.get("/users/1")
-ExampleApi.post(client, "/users", %{name: "Jon"})
+ExampleApi.get("/users/1")
+ExampleApi.post(client, "/users", %{name: "Jon"})
@@ -1064,11 +1064,11 @@ trace(client, url, opts)
-Perform a TRACE request.
See request/1
or request/2
for options definition.
trace("/users")
-trace("/users", query: [scope: "admin"])
-trace(client, "/users")
-trace(client, "/users", query: [scope: "admin"])
-trace(client, "/users", body: %{name: "Jon"})
+Perform a TRACE request.
See request/1
or request/2
for options definition.
trace("/users")
+trace("/users", query: [scope: "admin"])
+trace(client, "/users")
+trace(client, "/users", query: [scope: "admin"])
+trace(client, "/users", body: %{name: "Jon"})
@@ -1097,11 +1097,11 @@ trace!(client, url, opts)
-Perform a TRACE request.
See request!/1
or request!/2
for options definition.
trace!("/users")
-trace!("/users", query: [scope: "admin"])
-trace!(client, "/users")
-trace!(client, "/users", query: [scope: "admin"])
-trace!(client, "/users", body: %{name: "Jon"})
+Perform a TRACE request.
See request!/1
or request!/2
for options definition.
trace!("/users")
+trace!("/users", query: [scope: "admin"])
+trace!(client, "/users")
+trace!(client, "/users", query: [scope: "admin"])
+trace!(client, "/users", body: %{name: "Jon"})
diff --git a/Lightning.WorkOrderService.html b/Lightning.WorkOrderService.html
index e3f0157d9e..d951122346 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 473e1f3fea..6cf1069c14 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 b0cd9d83da056db9864faf78b32e3c1d5933a4c1..7e345e7c3203558ba8e9ad715e8b6b7abe460b3f 100644
GIT binary patch
delta 104114
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