@tailor-platform/sdk 2.14.2 → 2.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +108 -0
- package/bin/tailor.mjs +2 -2
- package/dist/application-Dw3t9p2f.mjs +1 -0
- package/dist/{application-BAqZFMWP.mjs → application-wYQ-ivDg.mjs} +27 -27
- package/dist/application-wYQ-ivDg.mjs.map +1 -0
- package/dist/cli/commands/deploy/app-id-lock.d.mts +97 -0
- package/dist/cli/commands/executor/jobs.d.mts +1 -0
- package/dist/cli/commands/generate/seed/bundler.d.mts +18 -0
- package/dist/cli/commands/tailordb/migrate/config.d.mts +1 -0
- package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +15 -1
- package/dist/cli/commands/tailordb/migrate/generate.d.mts +5 -2
- package/dist/cli/commands/tailordb/migrate/rename-detection.d.mts +13 -0
- package/dist/cli/commands/tailordb/migrate/snapshot-comparison.d.mts +7 -1
- package/dist/cli/commands/workflow/executions.d.mts +2 -0
- package/dist/cli/commands/workflow/waiter.d.mts +1 -0
- package/dist/cli/commands/workspace/create.d.mts +16 -1
- package/dist/cli/commands/workspace/expiry.d.mts +5 -0
- package/dist/cli/commands/workspace/get.d.mts +6 -1
- package/dist/cli/commands/workspace/list.d.mts +1 -0
- package/dist/cli/lib.d.mts +6 -3
- package/dist/cli/lib.mjs +1 -1
- package/dist/cli/lib.mjs.map +1 -1
- package/dist/cli/main.d.mts +8 -8
- package/dist/cli/main.mjs +56 -60
- package/dist/cli/main.mjs.map +1 -1
- package/dist/cli/shared/command.d.mts +1 -1
- package/dist/cli/shared/error-json.d.mts +2 -1
- package/dist/cli/shared/errors.d.mts +1 -0
- package/dist/cli/shared/function-execution.d.mts +14 -0
- package/dist/cli/shared/github-actions.d.mts +13 -0
- package/dist/completion/zsh-worker.zsh +98 -5
- package/dist/configure/config/types.d.mts +23 -6
- package/dist/configure/index.mjs +1 -1
- package/dist/configure/index.mjs.map +1 -1
- package/dist/configure/services/executor/trigger/event.d.mts +5 -2
- package/dist/crashreport-DF8YMIE5.mjs +1 -0
- package/dist/{crashreport-BN28xp5B.mjs → crashreport-Doz2Kuuq.mjs} +2 -2
- package/dist/{crashreport-BN28xp5B.mjs.map → crashreport-Doz2Kuuq.mjs.map} +1 -1
- package/dist/date-CGBZbMW5.mjs +2 -0
- package/dist/date-CGBZbMW5.mjs.map +1 -0
- package/dist/errors-BtTxkzgy.mjs +7 -0
- package/dist/errors-BtTxkzgy.mjs.map +1 -0
- package/dist/file-DKBOj5q4.mjs +2 -0
- package/dist/file-DKBOj5q4.mjs.map +1 -0
- package/dist/guards-ForsrxnH.mjs +2 -0
- package/dist/guards-ForsrxnH.mjs.map +1 -0
- package/dist/{logger-CCjs1DuH.mjs → logger-CEAxByN5.mjs} +3 -3
- package/dist/{logger-CCjs1DuH.mjs.map → logger-CEAxByN5.mjs.map} +1 -1
- package/dist/manager-E3ffRcCt.mjs +2 -0
- package/dist/manager-E3ffRcCt.mjs.map +1 -0
- package/dist/node-builtins-DYfhPBnz.mjs +2 -0
- package/dist/node-builtins-DYfhPBnz.mjs.map +1 -0
- package/dist/plugin/builtin/file-utils/index.mjs +27 -1
- package/dist/plugin/builtin/file-utils/index.mjs.map +1 -1
- package/dist/plugin/builtin/seed/index.mjs +1 -1
- package/dist/plugin/builtin/seed/seed-type-processor.d.mts +17 -0
- package/dist/plugin/get-generated-table.d.mts +13 -0
- package/dist/plugin/index.d.mts +2 -2
- package/dist/plugin/index.mjs +1 -1
- package/dist/plugin/index.mjs.map +1 -1
- package/dist/register-ts-hook-DrHS-J1k.mjs +878 -0
- package/dist/register-ts-hook-DrHS-J1k.mjs.map +1 -0
- package/dist/runtime/file.d.mts +46 -2
- package/dist/runtime/file.mjs +1 -1
- package/dist/runtime/index.mjs +1 -1
- package/dist/{schema-DMlLMsWA.mjs → schema-BTioi2dP.mjs} +2 -2
- package/dist/{schema-DMlLMsWA.mjs.map → schema-BTioi2dP.mjs.map} +1 -1
- package/dist/{seed-CCc9Xk66.mjs → seed-C3P_T_Eh.mjs} +28 -9
- package/dist/seed-C3P_T_Eh.mjs.map +1 -0
- package/dist/service-Cw7hb5HK.mjs +2 -0
- package/dist/service-Cw7hb5HK.mjs.map +1 -0
- package/dist/service-DaoW0kzo.mjs +7 -0
- package/dist/service-DaoW0kzo.mjs.map +1 -0
- package/dist/service-dn9jxC8c.mjs +1 -0
- package/dist/service_pb-DKrsO1_u.mjs +1 -0
- package/dist/service_pb-DprmLNsq.mjs +2 -0
- package/dist/{service_pb-BdzjiHfC.mjs.map → service_pb-DprmLNsq.mjs.map} +1 -1
- package/dist/types/auth.generated.d.mts +1 -19
- package/dist/types/executor.generated.d.mts +5 -3
- package/dist/types/field.generated.d.mts +40 -0
- package/dist/types/helpers.d.mts +9 -1
- package/dist/types/resolver.generated.d.mts +5 -40
- package/dist/utils/test/index.d.mts +7 -5
- package/dist/utils/test/index.mjs +1 -1
- package/dist/utils/test/index.mjs.map +1 -1
- package/dist/vitest/index.d.mts +2 -3
- package/dist/vitest/index.mjs +1 -1
- package/dist/vitest/index.mjs.map +1 -1
- package/dist/vitest/mocks/file.d.mts +2 -2
- package/dist/vitest/setup.d.mts +0 -37
- package/dist/vitest/setup.mjs +1 -1
- package/dist/vitest/setup.mjs.map +1 -1
- package/dist/{workspace_resource_pb-C4EY-Gns.mjs → workspace_resource_pb-BOoRts_z.mjs} +2 -2
- package/dist/{workspace_resource_pb-C4EY-Gns.mjs.map → workspace_resource_pb-BOoRts_z.mjs.map} +1 -1
- package/docs/cli/application.md +1 -1
- package/docs/cli/function.md +19 -6
- package/docs/cli/tailordb.md +11 -11
- package/docs/cli/workspace.md +133 -20
- package/docs/cli-reference.md +94 -25
- package/docs/configuration.md +20 -3
- package/docs/github-actions.md +45 -13
- package/docs/migration/v3.md +38 -0
- package/docs/plugin/custom.md +36 -4
- package/docs/runtime.md +39 -0
- package/docs/services/resolver.md +3 -1
- package/docs/services/tailordb-migration.md +31 -9
- package/docs/testing.md +3 -7
- package/package.json +10 -10
- package/dist/application-BAqZFMWP.mjs.map +0 -1
- package/dist/application-BKlOiD1x.mjs +0 -1
- package/dist/crashreport-By23O2k-.mjs +0 -1
- package/dist/date-DrUO8rOJ.mjs +0 -2
- package/dist/date-DrUO8rOJ.mjs.map +0 -1
- package/dist/errors-BlX4gUw5.mjs +0 -4
- package/dist/errors-BlX4gUw5.mjs.map +0 -1
- package/dist/file-COPYfju_.mjs +0 -2
- package/dist/file-COPYfju_.mjs.map +0 -1
- package/dist/node-builtins-TQHhwNzG.mjs +0 -2
- package/dist/node-builtins-TQHhwNzG.mjs.map +0 -1
- package/dist/register-ts-hook-Cphn4r8s.mjs +0 -642
- package/dist/register-ts-hook-Cphn4r8s.mjs.map +0 -1
- package/dist/seed-CCc9Xk66.mjs.map +0 -1
- package/dist/service-7SCy2bhm.mjs +0 -7
- package/dist/service-7SCy2bhm.mjs.map +0 -1
- package/dist/service-CWFQ8EVo.mjs +0 -1
- package/dist/service-CqbQXFDp.mjs +0 -2
- package/dist/service-CqbQXFDp.mjs.map +0 -1
- package/dist/service_pb-BdzjiHfC.mjs +0 -2
- package/dist/service_pb-p68oLtp9.mjs +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Jsonifiable } from "type-fest";
|
|
1
2
|
//#region src/cli/shared/error-json.d.ts
|
|
2
3
|
export interface ErrorToJsonOptions {
|
|
3
4
|
/** Include the original stack trace in the error envelope. */
|
|
@@ -10,7 +11,7 @@ export interface ErrorToJsonOptions {
|
|
|
10
11
|
* @returns JSON-compatible error envelope
|
|
11
12
|
*/
|
|
12
13
|
export declare function errorToJson(error: unknown, options?: ErrorToJsonOptions): {
|
|
13
|
-
error: Readonly<Record<string,
|
|
14
|
+
error: Readonly<Record<string, Jsonifiable | undefined>>;
|
|
14
15
|
};
|
|
15
16
|
/**
|
|
16
17
|
* Serialize a CLI failure into the stable JSON error envelope.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { Jsonifiable } from "type-fest";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import "../../tailor-proto/src/tailor/v1/function_resource_pb.mjs";
|
|
2
|
+
//#region src/cli/shared/function-execution.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* A structured log line recorded while a function execution ran.
|
|
5
|
+
*/
|
|
6
|
+
export interface FunctionLogEntryInfo {
|
|
7
|
+
/** Log message */
|
|
8
|
+
message: string;
|
|
9
|
+
/** Severity name such as `INFO`, `WARNING`, or `ERROR` */
|
|
10
|
+
severity: string;
|
|
11
|
+
/** When the line was logged, or null when unknown */
|
|
12
|
+
timestamp: Date | null;
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/cli/shared/github-actions.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Annotate the failure that ended the command, when running in GitHub Actions.
|
|
4
|
+
* @param error - Failure that ended the command
|
|
5
|
+
* @param options - JSON mode state and the suggestion shown for a plain error
|
|
6
|
+
* @param options.jsonMode - Whether the CLI is producing a JSON document
|
|
7
|
+
* @param options.suggestion - Suggestion shown for a plain error
|
|
8
|
+
*/
|
|
9
|
+
export declare function annotateTerminalError(error: unknown, options: {
|
|
10
|
+
jsonMode: boolean;
|
|
11
|
+
suggestion?: string;
|
|
12
|
+
}): void;
|
|
13
|
+
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# politty-completion-version: 1
|
|
2
|
-
# politty-bin-sig:
|
|
2
|
+
# politty-bin-sig: 1789393909
|
|
3
3
|
# politty-bin-path: /home/runner/work/sdk/sdk/node_modules/.bin/tailor
|
|
4
4
|
# program: tailor
|
|
5
5
|
# shell: zsh
|
|
@@ -593,6 +593,8 @@ __tailor_worker_opt_takes_value() {
|
|
|
593
593
|
function:logs:--profile|function:logs:-p|function:logs:--p) return 0 ;;
|
|
594
594
|
function:logs:--order) return 0 ;;
|
|
595
595
|
function:logs:--limit|function:logs:-l|function:logs:--l) return 0 ;;
|
|
596
|
+
function:logs:--interval|function:logs:-i|function:logs:--i) return 0 ;;
|
|
597
|
+
function:logs:--timeout|function:logs:-t|function:logs:--t) return 0 ;;
|
|
596
598
|
function:run:--workspace-id|function:run:--workspaceId|function:run:-w|function:run:--w) return 0 ;;
|
|
597
599
|
function:run:--profile|function:run:-p|function:run:--p) return 0 ;;
|
|
598
600
|
function:run:--name|function:run:-n|function:run:--n) return 0 ;;
|
|
@@ -821,6 +823,7 @@ __tailor_worker_opt_takes_value() {
|
|
|
821
823
|
workspace:create:--region|workspace:create:-r|workspace:create:--r) return 0 ;;
|
|
822
824
|
workspace:create:--organization-id|workspace:create:--organizationId|workspace:create:-o|workspace:create:--o) return 0 ;;
|
|
823
825
|
workspace:create:--folder-id|workspace:create:--folderId|workspace:create:-f|workspace:create:--f) return 0 ;;
|
|
826
|
+
workspace:create:--ttl) return 0 ;;
|
|
824
827
|
workspace:create:--profile-name|workspace:create:--profileName|workspace:create:-p|workspace:create:--p) return 0 ;;
|
|
825
828
|
workspace:create:--profile) return 0 ;;
|
|
826
829
|
workspace:create:--profile-user|workspace:create:--profileUser) return 0 ;;
|
|
@@ -831,7 +834,19 @@ __tailor_worker_opt_takes_value() {
|
|
|
831
834
|
workspace:list:--order) return 0 ;;
|
|
832
835
|
workspace:list:--limit|workspace:list:-l|workspace:list:--l) return 0 ;;
|
|
833
836
|
workspace:list:--profile) return 0 ;;
|
|
837
|
+
workspace:prune:--name) return 0 ;;
|
|
838
|
+
workspace:prune:--older-than|workspace:prune:--olderThan) return 0 ;;
|
|
839
|
+
workspace:prune:--organization-root|workspace:prune:--organizationRoot) return 0 ;;
|
|
840
|
+
workspace:prune:--folder-id|workspace:prune:--folderId) return 0 ;;
|
|
841
|
+
workspace:prune:--exclude) return 0 ;;
|
|
842
|
+
workspace:prune:--limit) return 0 ;;
|
|
843
|
+
workspace:prune:--profile) return 0 ;;
|
|
834
844
|
workspace:restore:--workspace-id|workspace:restore:--workspaceId|workspace:restore:-w|workspace:restore:--w) return 0 ;;
|
|
845
|
+
workspace:ttl:set:--workspace-id|workspace:ttl:set:--workspaceId|workspace:ttl:set:-w|workspace:ttl:set:--w) return 0 ;;
|
|
846
|
+
workspace:ttl:set:--profile|workspace:ttl:set:-p|workspace:ttl:set:--p) return 0 ;;
|
|
847
|
+
workspace:ttl:set:--ttl) return 0 ;;
|
|
848
|
+
workspace:ttl:clear:--workspace-id|workspace:ttl:clear:--workspaceId|workspace:ttl:clear:-w|workspace:ttl:clear:--w) return 0 ;;
|
|
849
|
+
workspace:ttl:clear:--profile|workspace:ttl:clear:-p|workspace:ttl:clear:--p) return 0 ;;
|
|
835
850
|
workspace:user:invite:--workspace-id|workspace:user:invite:--workspaceId|workspace:user:invite:-w|workspace:user:invite:--w) return 0 ;;
|
|
836
851
|
workspace:user:invite:--profile|workspace:user:invite:-p|workspace:user:invite:--p) return 0 ;;
|
|
837
852
|
workspace:user:invite:--email) return 0 ;;
|
|
@@ -989,7 +1004,11 @@ __tailor_worker_is_subcmd() {
|
|
|
989
1004
|
workspace:delete) return 0 ;;
|
|
990
1005
|
workspace:get) return 0 ;;
|
|
991
1006
|
workspace:list) return 0 ;;
|
|
1007
|
+
workspace:prune) return 0 ;;
|
|
992
1008
|
workspace:restore) return 0 ;;
|
|
1009
|
+
workspace:ttl:set) return 0 ;;
|
|
1010
|
+
workspace:ttl:clear) return 0 ;;
|
|
1011
|
+
workspace:ttl) return 0 ;;
|
|
993
1012
|
workspace:user:invite) return 0 ;;
|
|
994
1013
|
workspace:user:list) return 0 ;;
|
|
995
1014
|
workspace:user:remove) return 0 ;;
|
|
@@ -1646,6 +1665,9 @@ __tailor_worker_complete_function_logs() {
|
|
|
1646
1665
|
__tailor_worker_not_used "--profile" "-p" "--p" && _opts+=("--profile:Workspace profile")
|
|
1647
1666
|
__tailor_worker_not_used "--order" && _opts+=("--order:Sort order (asc or desc)")
|
|
1648
1667
|
__tailor_worker_not_used "--limit" "-l" "--l" && _opts+=("--limit:Maximum number of items to return (0\: unlimited)")
|
|
1668
|
+
__tailor_worker_not_used "--follow" "-f" "--f" && _opts+=("--follow:Keep polling a running execution and print new log entries as they arrive (detail mode only)")
|
|
1669
|
+
__tailor_worker_not_used "--interval" "-i" "--i" && _opts+=("--interval:Polling interval for --follow (e.g., '3s', '500ms', '1m')")
|
|
1670
|
+
__tailor_worker_not_used "--timeout" "-t" "--t" && _opts+=("--timeout:Maximum time to keep following (e.g., '30s', '10m'); unbounded by default")
|
|
1649
1671
|
__tailor_worker_not_used "--help" && _opts+=("--help:Show help")
|
|
1650
1672
|
__tailor_worker_cdescribe 'options' _opts
|
|
1651
1673
|
return 0
|
|
@@ -2965,9 +2987,9 @@ __tailor_worker_complete_tailordb_migration_generate() {
|
|
|
2965
2987
|
__tailor_worker_not_used "--init" && _opts+=("--init:Delete existing migrations and start fresh")
|
|
2966
2988
|
__tailor_worker_not_used "--data-only" "--dataOnly" && _opts+=("--data-only:Create a migration with no schema changes whose migration script runs a standalone data transformation")
|
|
2967
2989
|
__tailor_worker_not_used "--namespace" && _opts+=("--namespace:Target TailorDB namespace for --data-only (required if multiple namespaces exist)")
|
|
2968
|
-
_opts+=("--rename:Record a field or
|
|
2969
|
-
_opts+=("--drop:Confirm that a removed field or
|
|
2970
|
-
_opts+=("--expand-contract:Convert a field type through a temporary field (format\: \"Table.field\"; repeatable). Generates two migrations.")
|
|
2990
|
+
_opts+=("--rename:Record a field, table, or nested member rename instead of remove + add (format\: \"Table.oldField\:newField\", \"OldTable\:NewTable\", or \"Table.field.oldMember\:newMember\"; repeatable). Renames require a migration script that copies the data.")
|
|
2991
|
+
_opts+=("--drop:Confirm that a removed field, table, or nested member is a genuine removal, not a rename (format\: \"Table.field\", \"Table\", or \"Table.field.member\"; repeatable). Required in non-interactive runs for a removal with rename candidates.")
|
|
2992
|
+
_opts+=("--expand-contract:Convert a field type, or a single value into an array, through a temporary field (format\: \"Table.field\"; repeatable). Generates two migrations.")
|
|
2971
2993
|
__tailor_worker_not_used "--help" && _opts+=("--help:Show help")
|
|
2972
2994
|
__tailor_worker_cdescribe 'options' _opts
|
|
2973
2995
|
return 0
|
|
@@ -3874,6 +3896,7 @@ __tailor_worker_complete_workspace_create() {
|
|
|
3874
3896
|
__tailor_worker_not_used "--delete-protection" "--deleteProtection" "-d" "--d" && _opts+=("--delete-protection:Enable delete protection")
|
|
3875
3897
|
__tailor_worker_not_used "--organization-id" "--organizationId" "-o" "--o" && _opts+=("--organization-id:Organization ID to workspace associate with")
|
|
3876
3898
|
__tailor_worker_not_used "--folder-id" "--folderId" "-f" "--f" && _opts+=("--folder-id:Folder ID to workspace associate with")
|
|
3899
|
+
__tailor_worker_not_used "--ttl" && _opts+=("--ttl:Record on the workspace itself when it becomes prunable, such as 30m, 24h, or 7d. \`workspace prune --expired\` deletes it once that has passed")
|
|
3877
3900
|
__tailor_worker_not_used "--profile-name" "--profileName" "-p" "--p" && _opts+=("--profile-name:Profile name to create")
|
|
3878
3901
|
__tailor_worker_not_used "--profile" && _opts+=("--profile:Workspace profile used for authentication and Platform selection")
|
|
3879
3902
|
__tailor_worker_not_used "--profile-user" "--profileUser" && _opts+=("--profile-user:User email address or machine user client ID for the profile (defaults to current user)")
|
|
@@ -3933,6 +3956,29 @@ __tailor_worker_complete_workspace_list() {
|
|
|
3933
3956
|
fi
|
|
3934
3957
|
}
|
|
3935
3958
|
|
|
3959
|
+
__tailor_worker_complete_workspace_prune() {
|
|
3960
|
+
local -a _vals=()
|
|
3961
|
+
if __tailor_worker_opt_takes_value "workspace:prune" "${words[CURRENT-1]}"; then return 0; fi
|
|
3962
|
+
if (( _after_dd )); then return 0; fi
|
|
3963
|
+
if [[ "${words[CURRENT]}" == -* ]]; then
|
|
3964
|
+
local -a _opts=()
|
|
3965
|
+
_opts+=("--name:Select workspaces whose whole name matches this regular expression (repeatable)")
|
|
3966
|
+
__tailor_worker_not_used "--older-than" "--olderThan" && _opts+=("--older-than:Minimum age since creation, such as 30m, 24h, or 7d. 0s disables the age check and requires a location. Required unless --expired is given")
|
|
3967
|
+
__tailor_worker_not_used "--expired" && _opts+=("--expired:Select workspaces whose own --ttl expiry has passed, instead of by name and age. Requires --organization-root, --folder-id, or --personal")
|
|
3968
|
+
_opts+=("--organization-root:Consider the workspaces directly under this organization, excluding those in its folders (repeatable)")
|
|
3969
|
+
_opts+=("--folder-id:Consider the workspaces in this folder (repeatable)")
|
|
3970
|
+
__tailor_worker_not_used "--personal" && _opts+=("--personal:Consider the workspaces belonging to no organization and no folder")
|
|
3971
|
+
_opts+=("--exclude:Keep a workspace with this exact name even when it matches (repeatable)")
|
|
3972
|
+
__tailor_worker_not_used "--limit" && _opts+=("--limit:Abort when more workspaces match than this, without deleting anything. 0 removes the cap")
|
|
3973
|
+
__tailor_worker_not_used "--dry-run" "--dryRun" && _opts+=("--dry-run:List the workspaces that would be deleted without deleting them")
|
|
3974
|
+
__tailor_worker_not_used "--profile" && _opts+=("--profile:Workspace profile used for authentication and Platform selection")
|
|
3975
|
+
__tailor_worker_not_used "--yes" "-y" "--y" && _opts+=("--yes:Skip confirmation prompts")
|
|
3976
|
+
__tailor_worker_not_used "--help" && _opts+=("--help:Show help")
|
|
3977
|
+
__tailor_worker_cdescribe 'options' _opts
|
|
3978
|
+
return 0
|
|
3979
|
+
fi
|
|
3980
|
+
}
|
|
3981
|
+
|
|
3936
3982
|
__tailor_worker_complete_workspace_restore() {
|
|
3937
3983
|
local -a _vals=()
|
|
3938
3984
|
if __tailor_worker_opt_takes_value "workspace:restore" "${words[CURRENT-1]}"; then return 0; fi
|
|
@@ -3947,6 +3993,49 @@ __tailor_worker_complete_workspace_restore() {
|
|
|
3947
3993
|
fi
|
|
3948
3994
|
}
|
|
3949
3995
|
|
|
3996
|
+
__tailor_worker_complete_workspace_ttl_set() {
|
|
3997
|
+
local -a _vals=()
|
|
3998
|
+
if __tailor_worker_opt_takes_value "workspace:ttl:set" "${words[CURRENT-1]}"; then return 0; fi
|
|
3999
|
+
if (( _after_dd )); then return 0; fi
|
|
4000
|
+
if [[ "${words[CURRENT]}" == -* ]]; then
|
|
4001
|
+
local -a _opts=()
|
|
4002
|
+
__tailor_worker_not_used "--workspace-id" "--workspaceId" "-w" "--w" && _opts+=("--workspace-id:Workspace ID")
|
|
4003
|
+
__tailor_worker_not_used "--profile" "-p" "--p" && _opts+=("--profile:Workspace profile")
|
|
4004
|
+
__tailor_worker_not_used "--ttl" && _opts+=("--ttl:Time from now until the workspace becomes prunable, such as 30m, 24h, or 7d")
|
|
4005
|
+
__tailor_worker_not_used "--help" && _opts+=("--help:Show help")
|
|
4006
|
+
__tailor_worker_cdescribe 'options' _opts
|
|
4007
|
+
return 0
|
|
4008
|
+
fi
|
|
4009
|
+
}
|
|
4010
|
+
|
|
4011
|
+
__tailor_worker_complete_workspace_ttl_clear() {
|
|
4012
|
+
local -a _vals=()
|
|
4013
|
+
if __tailor_worker_opt_takes_value "workspace:ttl:clear" "${words[CURRENT-1]}"; then return 0; fi
|
|
4014
|
+
if (( _after_dd )); then return 0; fi
|
|
4015
|
+
if [[ "${words[CURRENT]}" == -* ]]; then
|
|
4016
|
+
local -a _opts=()
|
|
4017
|
+
__tailor_worker_not_used "--workspace-id" "--workspaceId" "-w" "--w" && _opts+=("--workspace-id:Workspace ID")
|
|
4018
|
+
__tailor_worker_not_used "--profile" "-p" "--p" && _opts+=("--profile:Workspace profile")
|
|
4019
|
+
__tailor_worker_not_used "--help" && _opts+=("--help:Show help")
|
|
4020
|
+
__tailor_worker_cdescribe 'options' _opts
|
|
4021
|
+
return 0
|
|
4022
|
+
fi
|
|
4023
|
+
}
|
|
4024
|
+
|
|
4025
|
+
__tailor_worker_complete_workspace_ttl() {
|
|
4026
|
+
local -a _vals=()
|
|
4027
|
+
if __tailor_worker_opt_takes_value "workspace:ttl" "${words[CURRENT-1]}"; then return 0; fi
|
|
4028
|
+
if (( _after_dd )); then return 0; fi
|
|
4029
|
+
if [[ "${words[CURRENT]}" == -* ]]; then
|
|
4030
|
+
local -a _opts=()
|
|
4031
|
+
__tailor_worker_not_used "--help" && _opts+=("--help:Show help")
|
|
4032
|
+
__tailor_worker_cdescribe 'options' _opts
|
|
4033
|
+
return 0
|
|
4034
|
+
fi
|
|
4035
|
+
local -a _subs=("set:Record when a workspace becomes prunable, replacing any expiry it already records." "clear:Drop a workspace's recorded prune expiry.")
|
|
4036
|
+
__tailor_worker_cdescribe 'subcommands' _subs
|
|
4037
|
+
}
|
|
4038
|
+
|
|
3950
4039
|
__tailor_worker_complete_workspace_user_invite() {
|
|
3951
4040
|
local -a _vals=()
|
|
3952
4041
|
case "${words[CURRENT-1]}" in
|
|
@@ -4053,7 +4142,7 @@ __tailor_worker_complete_workspace() {
|
|
|
4053
4142
|
__tailor_worker_cdescribe 'options' _opts
|
|
4054
4143
|
return 0
|
|
4055
4144
|
fi
|
|
4056
|
-
local -a _subs=("app:Manage workspace applications" "create:Create a new Tailor Platform workspace." "delete:Delete a Tailor Platform workspace." "get:Show detailed information about a workspace" "list:List all Tailor Platform workspaces." "restore:Restore a deleted workspace" "user:Manage workspace users")
|
|
4145
|
+
local -a _subs=("app:Manage workspace applications" "create:Create a new Tailor Platform workspace." "delete:Delete a Tailor Platform workspace." "get:Show detailed information about a workspace" "list:List all Tailor Platform workspaces." "prune:Delete stale temporary workspaces, by name and age or by the expiry each recorded at creation." "restore:Restore a deleted workspace" "ttl:Manage when a workspace becomes prunable." "user:Manage workspace users")
|
|
4057
4146
|
__tailor_worker_cdescribe 'subcommands' _subs
|
|
4058
4147
|
}
|
|
4059
4148
|
|
|
@@ -4341,7 +4430,11 @@ _tailor_worker_completions() {
|
|
|
4341
4430
|
workspace:delete) __tailor_worker_complete_workspace_delete ;;
|
|
4342
4431
|
workspace:get) __tailor_worker_complete_workspace_get ;;
|
|
4343
4432
|
workspace:list) __tailor_worker_complete_workspace_list ;;
|
|
4433
|
+
workspace:prune) __tailor_worker_complete_workspace_prune ;;
|
|
4344
4434
|
workspace:restore) __tailor_worker_complete_workspace_restore ;;
|
|
4435
|
+
workspace:ttl:set) __tailor_worker_complete_workspace_ttl_set ;;
|
|
4436
|
+
workspace:ttl:clear) __tailor_worker_complete_workspace_ttl_clear ;;
|
|
4437
|
+
workspace:ttl) __tailor_worker_complete_workspace_ttl ;;
|
|
4345
4438
|
workspace:user:invite) __tailor_worker_complete_workspace_user_invite ;;
|
|
4346
4439
|
workspace:user:list) __tailor_worker_complete_workspace_user_list ;;
|
|
4347
4440
|
workspace:user:remove) __tailor_worker_complete_workspace_user_remove ;;
|
|
@@ -85,12 +85,13 @@ export interface AppConfig<Auth extends AuthConfig = AuthConfig, Idp extends IdP
|
|
|
85
85
|
name: string;
|
|
86
86
|
/**
|
|
87
87
|
* Stable identifier used to track the application across renames.
|
|
88
|
-
* Managed by the SDK
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
88
|
+
* Managed by the SDK and assigned on the first local `deploy`. Projects
|
|
89
|
+
* that use `tailor setup` keep it in `.github/tailor.lock` under `appIds`
|
|
90
|
+
* and leave this field unset; other projects get it written here. Delete
|
|
91
|
+
* this field if you want the SDK to assign a new id on the next `deploy`
|
|
92
|
+
* — typical case: `tailor.config.ts` was copied from another project and
|
|
93
|
+
* the new application should not share the original's id. Existing
|
|
94
|
+
* resources are re-tagged with the new id; data is preserved.
|
|
94
95
|
*/
|
|
95
96
|
id?: string;
|
|
96
97
|
/**
|
|
@@ -108,6 +109,22 @@ export interface AppConfig<Auth extends AuthConfig = AuthConfig, Idp extends IdP
|
|
|
108
109
|
allowedIpAddresses?: string[];
|
|
109
110
|
/** Disable GraphQL introspection in production. */
|
|
110
111
|
disableIntrospection?: boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Extra labels written to the deployed application's metadata, alongside the
|
|
114
|
+
* labels the SDK writes itself. Use it to record information about the
|
|
115
|
+
* application that tooling reads back from the platform, e.g. the version of
|
|
116
|
+
* a framework the config is generated from.
|
|
117
|
+
*
|
|
118
|
+
* Keys must match `^[a-z][a-z0-9_-]{0,62}$` and must not start with `sdk-`.
|
|
119
|
+
* Values must be empty or match `^[a-z][a-z0-9_-]{0,62}$`, so a version like
|
|
120
|
+
* `1.2.3` is written as `v1-2-3`. At most 17 entries can be set.
|
|
121
|
+
*
|
|
122
|
+
* Entries are only added or overwritten: an entry removed from this config
|
|
123
|
+
* keeps its last deployed value on the platform. Those retained labels count
|
|
124
|
+
* towards the platform's limit of 20 labels per resource, so `deploy` stops
|
|
125
|
+
* before changing the application when the total would exceed it.
|
|
126
|
+
*/
|
|
127
|
+
metadata?: Record<string, string>;
|
|
111
128
|
/** TailorDB service configuration with table definition files. */
|
|
112
129
|
db?: TailorDBServiceInput;
|
|
113
130
|
/** Resolver service configuration with resolver files. */
|
package/dist/configure/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e,n as t,t as n}from"../schema-DMlLMsWA.mjs";import{t as r}from"../brand-C8nMKhJC.mjs";import{a as i,n as a,r as o}from"../registry-HlEaGvl5.mjs";import{l as s,n as c,r as l,t as u}from"../wait-point-invoker-eiP-IIux.mjs";import{a as d,i as f,o as p,r as m}from"../wait-point-registry-B-ESkTZX.mjs";function createTailorField(n,r,i,a,o){let s=o?{...o,...o.allowedValues&&{allowedValues:o.allowedValues.map(e=>({...e}))},...o.validate&&{validate:o.validate.map(e=>Array.isArray(e)?[...e]:e)}}:{required:!0};o||(r&&(r.optional===!0&&(s.required=!1),r.array===!0&&(s.array=!0)),a&&(s.allowedValues=t(a)));function parseInternal$1(t){return e({...t,field:c})}function cloneWith(e){let t=c.clone();return Object.assign(t._metadata,e),t}let c={type:n,fields:i??{},_defined:void 0,_output:void 0,_metadata:s,get metadata(){return{...this._metadata}},description(e){return cloneWith({description:e})},typeName(e){return cloneWith({typeName:e})},validate(...e){return cloneWith({validate:e})},parse(e){return parseInternal$1({value:e.value,data:e.data,invoker:e.invoker,pathArray:[]})},clone(){let e=i;if(i){let t={};for(let[e,n]of Object.entries(i))t[e]=n.clone();e=t}return createTailorField(n,r,e,a,this._metadata)}};return c}function uuid(e){return createTailorField(`uuid`,e)}function string(e){return createTailorField(`string`,e)}function bool(e){return createTailorField(`boolean`,e)}function int(e){return createTailorField(`integer`,e)}function float(e){return createTailorField(`float`,e)}function decimal(e){return createTailorField(`decimal`,e)}function date(e){let t=createTailorField(`date`,e);return e?.as===`date`&&(t._metadata.as=`date`),t}function datetime(e){return createTailorField(`datetime`,e)}function time(e){return createTailorField(`time`,e)}function _enum(e,t){return createTailorField(`enum`,t,void 0,e)}function object(e,t){return createTailorField(`nested`,t,e)}const h={uuid,string,bool,int,float,decimal,date,datetime,time,enum:_enum,object};function defineAuth(e,t){return{...t,name:e}}const g={create:[{conditions:[],permit:!0}],read:[{conditions:[],permit:!0}],update:[{conditions:[],permit:!0}],delete:[{conditions:[],permit:!0}]},_=[{conditions:[],actions:`all`,permit:!0}];function createResolver(e){let t=(e=>typeof e==`object`&&!!e&&`type`in e&&typeof e.type==`string`)(e.output)?e.output:h.object(e.output);return r({...e,output:t},`resolver`)}function createExecutor(e){return r(e,`executor`)}const v={created:`tailordb.type_record.created`,updated:`tailordb.type_record.updated`,deleted:`tailordb.type_record.deleted`};function recordCreatedTrigger(e){let{type:t,condition:n}=e;return{kind:`tailordb`,events:[`tailordb.type_record.created`],tableName:t.name,condition:n,__args:{}}}function recordUpdatedTrigger(e){let{type:t,condition:n}=e;return{kind:`tailordb`,events:[`tailordb.type_record.updated`],tableName:t.name,condition:n,__args:{}}}function recordDeletedTrigger(e){let{type:t,condition:n}=e;return{kind:`tailordb`,events:[`tailordb.type_record.deleted`],tableName:t.name,condition:n,__args:{}}}function recordTrigger(e){let{type:t,events:n,condition:r}=e;return{kind:`tailordb`,events:n.map(e=>v[e]),tableName:t.name,condition:r,__args:{}}}function resolverExecutedTrigger(e){let{resolver:t,condition:n}=e;return{kind:`resolverExecuted`,resolverName:t.name,condition:n,__args:{}}}const y={created:`idp.user.created`,updated:`idp.user.updated`,deleted:`idp.user.deleted`};function idpUserCreatedTrigger(e){return{kind:`idpUser`,events:[`idp.user.created`],...e?.idp==null?{}:{idp:e.idp},__args:{}}}function idpUserUpdatedTrigger(e){return{kind:`idpUser`,events:[`idp.user.updated`],...e?.idp==null?{}:{idp:e.idp},__args:{}}}function idpUserDeletedTrigger(e){return{kind:`idpUser`,events:[`idp.user.deleted`],...e?.idp==null?{}:{idp:e.idp},__args:{}}}function idpUserTrigger(e){let{events:t,idp:n}=e;return{kind:`idpUser`,events:t.map(e=>y[e]),...n==null?{}:{idp:n},__args:{}}}const b={issued:`auth.access_token.issued`,refreshed:`auth.access_token.refreshed`,revoked:`auth.access_token.revoked`};function authAccessTokenIssuedTrigger(){return{kind:`authAccessToken`,events:[`auth.access_token.issued`],__args:{}}}function authAccessTokenRefreshedTrigger(){return{kind:`authAccessToken`,events:[`auth.access_token.refreshed`],__args:{}}}function authAccessTokenRevokedTrigger(){return{kind:`authAccessToken`,events:[`auth.access_token.revoked`],__args:{}}}function authAccessTokenTrigger(e){let{events:t}=e;return{kind:`authAccessToken`,events:t.map(e=>b[e]),__args:{}}}const x={started:`workflow.workflow_execution.started`,completed:`workflow.workflow_execution.completed`,retried:`workflow.workflow_execution.retried`,resumed:`workflow.workflow_execution.resumed`,wait_started:`workflow.workflow_execution.wait_started`,wait_resolved:`workflow.workflow_execution.wait_resolved`};function workflowExecutionTriggerConfig(e,t){return{kind:`workflowExecution`,events:e,workflowName:t.workflow.name,condition:t.condition,__args:{}}}function workflowExecutionStartedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.started`],e)}function workflowExecutionCompletedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.completed`],e)}function workflowExecutionRetriedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.retried`],e)}function workflowExecutionResumedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.resumed`],e)}function workflowExecutionWaitStartedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.wait_started`],e)}function workflowExecutionWaitResolvedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.wait_resolved`],e)}function workflowExecutionTrigger(e){let{events:t,workflow:n,condition:r}=e;return workflowExecutionTriggerConfig(t.map(e=>x[e]),{workflow:n,condition:r})}const S={started:`workflow.workflow_execution.job_execution.started`,completed:`workflow.workflow_execution.job_execution.completed`,wait_started:`workflow.workflow_execution.job_execution.wait_started`,wait_resolved:`workflow.workflow_execution.job_execution.wait_resolved`};function workflowJobExecutionTriggerConfig(e,t){return{kind:`workflowJobExecution`,events:e,workflowName:t.workflow.name,condition:t.condition,__args:{}}}function workflowJobExecutionStartedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.started`],e)}function workflowJobExecutionCompletedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.completed`],e)}function workflowJobExecutionWaitStartedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.wait_started`],e)}function workflowJobExecutionWaitResolvedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.wait_resolved`],e)}function workflowJobExecutionTrigger(e){let{events:t,workflow:n,condition:r}=e;return workflowJobExecutionTriggerConfig(t.map(e=>S[e]),{workflow:n,condition:r})}function scheduleTrigger(e){let{cron:t,timezone:n}=e;return{kind:`schedule`,cron:t,timezone:n,__args:{}}}function incomingWebhookTrigger(e){let t=typeof e?.response==`function`?{body:e.response}:e?.response;return{kind:`incomingWebhook`,...t?{response:t}:{},__args:{}}}const C=/^[a-z0-9][a-z0-9_:.-]{0,62}[a-z0-9]$/;function createExecutionPolicyInstance(e,t,n,i,a,o,s){let c=i===`prefix`,l={name:e,key:t,matchType:i,...n&&{concurrencyPolicy:n},...c&&{keyFor:e=>{let t=`${l.key}${a}${e}`;if(!C.test(t))throw Error(`Invalid execution policy key "${t}" built by keyFor("${e}"): must match [a-z0-9_:.-] (2-64 chars; must start and end with [a-z0-9]).`);return t}}};return{instance:r(l,`execution-policy`),setName:o?e=>{l.name=e}:void 0,setKey:s?e=>{l.key=e}:void 0}}function defineWorkflowExecutionPolicy(e,t){return createExecutionPolicyInstance(e,t?.key??e,t?.concurrencyPolicy,t?.matchType??`exact`,t?.separator??`.`,!1,!1).instance}function defineWorkflowExecutionPolicies(e,t){let n=t?.separator??`.`,r=new Map,i=new Map,a=e(e=>{let t=e?.name,a=e?.key,{instance:o,setName:s,setKey:c}=createExecutionPolicyInstance(t??`__pending__`,a??t??`__pending__`,e?.concurrencyPolicy,e?.matchType??`exact`,n,t===void 0,a===void 0&&t===void 0);return s&&r.set(o,s),c&&i.set(o,c),o});for(let e of Object.keys(a)){let t=a[e];r.get(t)?.(e),i.get(t)?.(e)}return a}function createWorkflowJob(e){let t=e.body,n=process.env.__TAILOR_PLATFORM_BUNDLE?t:(e,n)=>s(n.invoker,()=>t(e,n));process.env.__TAILOR_PLATFORM_BUNDLE||i(e.name,n);let o=process.env.__TAILOR_PLATFORM_BUNDLE?()=>{throw Error(`.start() on workflow job "${e.name}" is rewritten at build time and is unavailable in the bundle`)}:function(t,n){return arguments.length>=2?a(e.name,t,n):a(e.name,t)};return r({name:e.name,start:o,body:n,...e.publishEvents===void 0?{}:{publishEvents:e.publishEvents}},`workflow-job`)}const w=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;function parseKey(e){let t=e.split(`-`);return{segments:t,paramNames:t.filter(p).map(e=>e.slice(1))}}function composeKey(e,t,n){let r=t.segments.map(t=>{if(!p(t))return t;let r=t.slice(1),i=n[r];if(typeof i!=`string`)throw Error(`Wait point "${e}" needs a string for parameter "${r}" but received ${i===void 0?`undefined`:typeof i}.`);if(!w.test(i))throw Error(`Wait point "${e}" cannot use ${JSON.stringify(i)} for parameter "${r}": values may only contain [a-z0-9-] and cannot be empty or start or end with "-".`);return i}).join(`-`);if(r.length>63)throw Error(`Wait point key "${r}" built from "${e}" is ${r.length} characters; the limit is 63.`);if(!d.test(r))throw Error(`Wait point key "${r}" built from "${e}" must match ${f}.`);return r}function createBoundWaitPoint(e,t){return{wait(n){return Promise.resolve(e.wait(t(),n))},async resolve(n,r){await e.resolve(t(),n,r)}}}function createWaitPointInstance(e){let t=e,n=l(),i=r(createBoundWaitPoint(n,()=>t),`wait-point`);return u(i,n),{instance:i,setKey:e=>{t=e}}}function createParameterizedWaitPointInstance(e,t,n){let i=l(),unbound=()=>{throw Error(n===`define`?`Wait point key "${e}" has $params, so it identifies no single suspension on its own. Bind them first: waitPoint.with({ ... }).wait(...).`:`Wait point key "${e}" has $params, which createWaitPoint cannot type. Declare it through createWaitPoints instead: createWaitPoints((define) => ({ myWaitPoint: define.for("${e}")<Payload, Result>() })).`)},a=r({with(n){let r=composeKey(e,t,n);return c(createBoundWaitPoint(i,()=>r),r)},wait:unbound,resolve:unbound},`wait-point`);return u(a,i),a}function createKeyedWaitPoint(e,t){m({key:e,declaredBy:t});let n=parseKey(e);return n.paramNames.length>0?createParameterizedWaitPointInstance(e,n,t):createWaitPointInstance(e).instance}function createWaitPoint(e){return createKeyedWaitPoint(e,`createWaitPoint`)}function createWaitPoints(e){let t=new Map,n=e(Object.assign(()=>{let{instance:e,setKey:n}=createWaitPointInstance(`__pending__`);return t.set(e,n),e},{for:e=>{let t=createKeyedWaitPoint(e,`define`);return()=>t}}));for(let e of Object.keys(n)){let r=t.get(n[e]);r&&(m({key:e,declaredBy:`property`}),r(e))}return n}function createWorkflow(e){return r({...e,start:process.env.__TAILOR_PLATFORM_BUNDLE?async()=>{throw Error(`workflow.start() is rewritten at build time and unavailable in the bundle`)}:async function(t,n){return arguments.length>=2?await o(e.name,t,n):await o(e.name,t)}},`workflow`)}function defineStaticWebSite(e,t){return{...t,name:e,get url(){return`${e}:url`}}}function defineAIGateway(e,t){return{...t,name:e}}const T={create:[{conditions:[],permit:!0}],read:[{conditions:[],permit:!0}],update:[{conditions:[],permit:!0}],delete:[{conditions:[],permit:!0}],sendPasswordResetEmail:[{conditions:[],permit:!0}],unenrollMfa:[{conditions:[],permit:!0}]};function defineIdp(e,t){return{...t,name:e,provider(t,n){return{name:t,kind:`BuiltInIdP`,namespace:e,clientName:n}}}}function defineSecretManager(e,t){let n={vaults:e,options:{ignoreNullishValues:t?.ignoreNullishValues??!1}};return Object.defineProperty(n,"get",{value:async(e,t)=>tailor.secretmanager.getSecret(e,t),enumerable:!1}),Object.defineProperty(n,"getAll",{value:async(e,t)=>{let n=await tailor.secretmanager.getSecrets(e,t);return t.map(e=>n[e])},enumerable:!1}),n}function createHttpAdapter(e){return r({...e},`http-adapter`)}function defineConfig(e){return e}function definePlugins(...e){return e}const E=h;export{authAccessTokenIssuedTrigger,authAccessTokenRefreshedTrigger,authAccessTokenRevokedTrigger,authAccessTokenTrigger,createExecutor,createHttpAdapter,createResolver,createWaitPoint,createWaitPoints,createWorkflow,createWorkflowJob,n as db,defineAIGateway,defineAuth,defineConfig,defineIdp,definePlugins,defineSecretManager,defineStaticWebSite,defineWorkflowExecutionPolicies,defineWorkflowExecutionPolicy,idpUserCreatedTrigger,idpUserDeletedTrigger,idpUserTrigger,idpUserUpdatedTrigger,incomingWebhookTrigger,recordCreatedTrigger,recordDeletedTrigger,recordTrigger,recordUpdatedTrigger,resolverExecutedTrigger,scheduleTrigger,E as t,_ as unsafeAllowAllGqlPermission,T as unsafeAllowAllIdPPermission,g as unsafeAllowAllTypePermission,workflowExecutionCompletedTrigger,workflowExecutionResumedTrigger,workflowExecutionRetriedTrigger,workflowExecutionStartedTrigger,workflowExecutionTrigger,workflowExecutionWaitResolvedTrigger,workflowExecutionWaitStartedTrigger,workflowJobExecutionCompletedTrigger,workflowJobExecutionStartedTrigger,workflowJobExecutionTrigger,workflowJobExecutionWaitResolvedTrigger,workflowJobExecutionWaitStartedTrigger};
|
|
1
|
+
import{i as e,n as t,t as n}from"../schema-BTioi2dP.mjs";import{t as r}from"../brand-C8nMKhJC.mjs";import{a as i,n as a,r as o}from"../registry-HlEaGvl5.mjs";import{l as s,n as c,r as l,t as u}from"../wait-point-invoker-eiP-IIux.mjs";import{a as d,i as f,o as p,r as m}from"../wait-point-registry-B-ESkTZX.mjs";function createTailorField(n,r,i,a,o){let s=o?{...o,...o.allowedValues&&{allowedValues:o.allowedValues.map(e=>({...e}))},...o.validate&&{validate:o.validate.map(e=>Array.isArray(e)?[...e]:e)}}:{required:!0};o||(r&&(r.optional===!0&&(s.required=!1),r.array===!0&&(s.array=!0)),a&&(s.allowedValues=t(a)));function parseInternal$1(t){return e({...t,field:c})}function cloneWith(e){let t=c.clone();return Object.assign(t._metadata,e),t}let c={type:n,fields:i??{},_defined:void 0,_output:void 0,_metadata:s,get metadata(){return{...this._metadata}},description(e){return cloneWith({description:e})},typeName(e){return cloneWith({typeName:e})},validate(...e){return cloneWith({validate:e})},parse(e){return parseInternal$1({value:e.value,data:e.data,invoker:e.invoker,pathArray:[]})},clone(){let e=i;if(i){let t={};for(let[e,n]of Object.entries(i))t[e]=n.clone();e=t}return createTailorField(n,r,e,a,this._metadata)}};return c}function uuid(e){return createTailorField(`uuid`,e)}function string(e){return createTailorField(`string`,e)}function bool(e){return createTailorField(`boolean`,e)}function int(e){return createTailorField(`integer`,e)}function float(e){return createTailorField(`float`,e)}function decimal(e){return createTailorField(`decimal`,e)}function date(e){let t=createTailorField(`date`,e);return e?.as===`date`&&(t._metadata.as=`date`),t}function datetime(e){return createTailorField(`datetime`,e)}function time(e){return createTailorField(`time`,e)}function _enum(e,t){return createTailorField(`enum`,t,void 0,e)}function object(e,t){return createTailorField(`nested`,t,e)}const h={uuid,string,bool,int,float,decimal,date,datetime,time,enum:_enum,object};function defineAuth(e,t){return{...t,name:e}}const g={create:[{conditions:[],permit:!0}],read:[{conditions:[],permit:!0}],update:[{conditions:[],permit:!0}],delete:[{conditions:[],permit:!0}]},_=[{conditions:[],actions:`all`,permit:!0}];function createResolver(e){let t=(e=>typeof e==`object`&&!!e&&`type`in e&&typeof e.type==`string`)(e.output)?e.output:h.object(e.output);return r({...e,output:t},`resolver`)}function createExecutor(e){return r(e,`executor`)}const v={created:`tailordb.type_record.created`,updated:`tailordb.type_record.updated`,deleted:`tailordb.type_record.deleted`};function recordCreatedTrigger(e){let{type:t,condition:n}=e;return{kind:`tailordb`,events:[`tailordb.type_record.created`],tableName:t.name,condition:n,__args:{}}}function recordUpdatedTrigger(e){let{type:t,condition:n}=e;return{kind:`tailordb`,events:[`tailordb.type_record.updated`],tableName:t.name,condition:n,__args:{}}}function recordDeletedTrigger(e){let{type:t,condition:n}=e;return{kind:`tailordb`,events:[`tailordb.type_record.deleted`],tableName:t.name,condition:n,__args:{}}}function recordTrigger(e){let{type:t,events:n,condition:r}=e;return{kind:`tailordb`,events:n.map(e=>v[e]),tableName:t.name,condition:r,__args:{}}}function resolverExecutedTrigger(e){let{resolver:t,condition:n}=e;return{kind:`resolverExecuted`,resolverName:t.name,condition:n,__args:{}}}const y={created:`idp.user.created`,updated:`idp.user.updated`,deleted:`idp.user.deleted`};function idpUserCreatedTrigger(e){return{kind:`idpUser`,events:[`idp.user.created`],...e?.idp==null?{}:{idp:e.idp},__args:{}}}function idpUserUpdatedTrigger(e){return{kind:`idpUser`,events:[`idp.user.updated`],...e?.idp==null?{}:{idp:e.idp},__args:{}}}function idpUserDeletedTrigger(e){return{kind:`idpUser`,events:[`idp.user.deleted`],...e?.idp==null?{}:{idp:e.idp},__args:{}}}function idpUserTrigger(e){let{events:t,idp:n}=e;return{kind:`idpUser`,events:t.map(e=>y[e]),...n==null?{}:{idp:n},__args:{}}}const b={issued:`auth.access_token.issued`,refreshed:`auth.access_token.refreshed`,revoked:`auth.access_token.revoked`};function authAccessTokenIssuedTrigger(){return{kind:`authAccessToken`,events:[`auth.access_token.issued`],__args:{}}}function authAccessTokenRefreshedTrigger(){return{kind:`authAccessToken`,events:[`auth.access_token.refreshed`],__args:{}}}function authAccessTokenRevokedTrigger(){return{kind:`authAccessToken`,events:[`auth.access_token.revoked`],__args:{}}}function authAccessTokenTrigger(e){let{events:t}=e;return{kind:`authAccessToken`,events:t.map(e=>b[e]),__args:{}}}const x={started:`workflow.workflow_execution.started`,completed:`workflow.workflow_execution.completed`,retried:`workflow.workflow_execution.retried`,resumed:`workflow.workflow_execution.resumed`,wait_started:`workflow.workflow_execution.wait_started`,wait_resolved:`workflow.workflow_execution.wait_resolved`};function workflowExecutionTriggerConfig(e,t){return{kind:`workflowExecution`,events:e,workflowName:t.workflow.name,condition:t.condition,__args:{}}}function workflowExecutionStartedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.started`],e)}function workflowExecutionCompletedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.completed`],e)}function workflowExecutionRetriedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.retried`],e)}function workflowExecutionResumedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.resumed`],e)}function workflowExecutionWaitStartedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.wait_started`],e)}function workflowExecutionWaitResolvedTrigger(e){return workflowExecutionTriggerConfig([`workflow.workflow_execution.wait_resolved`],e)}function workflowExecutionTrigger(e){let{events:t,workflow:n,condition:r}=e;return workflowExecutionTriggerConfig(t.map(e=>x[e]),{workflow:n,condition:r})}const S={started:`workflow.workflow_execution.job_execution.started`,completed:`workflow.workflow_execution.job_execution.completed`,wait_started:`workflow.workflow_execution.job_execution.wait_started`,wait_resolved:`workflow.workflow_execution.job_execution.wait_resolved`};function workflowJobExecutionTriggerConfig(e,t){return{kind:`workflowJobExecution`,events:e,workflowName:t.workflow.name,condition:t.condition,__args:{}}}function workflowJobExecutionStartedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.started`],e)}function workflowJobExecutionCompletedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.completed`],e)}function workflowJobExecutionWaitStartedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.wait_started`],e)}function workflowJobExecutionWaitResolvedTrigger(e){return workflowJobExecutionTriggerConfig([`workflow.workflow_execution.job_execution.wait_resolved`],e)}function workflowJobExecutionTrigger(e){let{events:t,workflow:n,condition:r}=e;return workflowJobExecutionTriggerConfig(t.map(e=>S[e]),{workflow:n,condition:r})}function scheduleTrigger(e){let{cron:t,timezone:n}=e;return{kind:`schedule`,cron:t,timezone:n,__args:{}}}function incomingWebhookTrigger(e){let t=typeof e?.response==`function`?{body:e.response}:e?.response;return{kind:`incomingWebhook`,...t?{response:t}:{},__args:{}}}const C=/^[a-z0-9][a-z0-9_:.-]{0,62}[a-z0-9]$/;function createExecutionPolicyInstance(e,t,n,i,a,o,s){let c=i===`prefix`,l={name:e,key:t,matchType:i,...n&&{concurrencyPolicy:n},...c&&{keyFor:e=>{let t=`${l.key}${a}${e}`;if(!C.test(t))throw Error(`Invalid execution policy key "${t}" built by keyFor("${e}"): must match [a-z0-9_:.-] (2-64 chars; must start and end with [a-z0-9]).`);return t}}};return{instance:r(l,`execution-policy`),setName:o?e=>{l.name=e}:void 0,setKey:s?e=>{l.key=e}:void 0}}function defineWorkflowExecutionPolicy(e,t){return createExecutionPolicyInstance(e,t?.key??e,t?.concurrencyPolicy,t?.matchType??`exact`,t?.separator??`.`,!1,!1).instance}function defineWorkflowExecutionPolicies(e,t){let n=t?.separator??`.`,r=new Map,i=new Map,a=e(e=>{let t=e?.name,a=e?.key,{instance:o,setName:s,setKey:c}=createExecutionPolicyInstance(t??`__pending__`,a??t??`__pending__`,e?.concurrencyPolicy,e?.matchType??`exact`,n,t===void 0,a===void 0&&t===void 0);return s&&r.set(o,s),c&&i.set(o,c),o});for(let e of Object.keys(a)){let t=a[e];r.get(t)?.(e),i.get(t)?.(e)}return a}function createWorkflowJob(e){let t=e.body,n=process.env.__TAILOR_PLATFORM_BUNDLE?t:(e,n)=>s(n.invoker,()=>t(e,n));process.env.__TAILOR_PLATFORM_BUNDLE||i(e.name,n);let o=process.env.__TAILOR_PLATFORM_BUNDLE?()=>{throw Error(`.start() on workflow job "${e.name}" is rewritten at build time and is unavailable in the bundle`)}:function(t,n){return arguments.length>=2?a(e.name,t,n):a(e.name,t)};return r({name:e.name,start:o,body:n,...e.publishEvents===void 0?{}:{publishEvents:e.publishEvents}},`workflow-job`)}const w=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;function parseKey(e){let t=e.split(`-`);return{segments:t,paramNames:t.filter(p).map(e=>e.slice(1))}}function composeKey(e,t,n){let r=t.segments.map(t=>{if(!p(t))return t;let r=t.slice(1),i=n[r];if(typeof i!=`string`)throw Error(`Wait point "${e}" needs a string for parameter "${r}" but received ${i===void 0?`undefined`:typeof i}.`);if(!w.test(i))throw Error(`Wait point "${e}" cannot use ${JSON.stringify(i)} for parameter "${r}": values may only contain [a-z0-9-] and cannot be empty or start or end with "-".`);return i}).join(`-`);if(r.length>63)throw Error(`Wait point key "${r}" built from "${e}" is ${r.length} characters; the limit is 63.`);if(!d.test(r))throw Error(`Wait point key "${r}" built from "${e}" must match ${f}.`);return r}function createBoundWaitPoint(e,t){return{wait(n){return Promise.resolve(e.wait(t(),n))},async resolve(n,r){await e.resolve(t(),n,r)}}}function createWaitPointInstance(e){let t=e,n=l(),i=r(createBoundWaitPoint(n,()=>t),`wait-point`);return u(i,n),{instance:i,setKey:e=>{t=e}}}function createParameterizedWaitPointInstance(e,t,n){let i=l(),unbound=()=>{throw Error(n===`define`?`Wait point key "${e}" has $params, so it identifies no single suspension on its own. Bind them first: waitPoint.with({ ... }).wait(...).`:`Wait point key "${e}" has $params, which createWaitPoint cannot type. Declare it through createWaitPoints instead: createWaitPoints((define) => ({ myWaitPoint: define.for("${e}")<Payload, Result>() })).`)},a=r({with(n){let r=composeKey(e,t,n);return c(createBoundWaitPoint(i,()=>r),r)},wait:unbound,resolve:unbound},`wait-point`);return u(a,i),a}function createKeyedWaitPoint(e,t){m({key:e,declaredBy:t});let n=parseKey(e);return n.paramNames.length>0?createParameterizedWaitPointInstance(e,n,t):createWaitPointInstance(e).instance}function createWaitPoint(e){return createKeyedWaitPoint(e,`createWaitPoint`)}function createWaitPoints(e){let t=new Map,n=e(Object.assign(()=>{let{instance:e,setKey:n}=createWaitPointInstance(`__pending__`);return t.set(e,n),e},{for:e=>{let t=createKeyedWaitPoint(e,`define`);return()=>t}}));for(let e of Object.keys(n)){let r=t.get(n[e]);r&&(m({key:e,declaredBy:`property`}),r(e))}return n}function createWorkflow(e){return r({...e,start:process.env.__TAILOR_PLATFORM_BUNDLE?async()=>{throw Error(`workflow.start() is rewritten at build time and unavailable in the bundle`)}:async function(t,n){return arguments.length>=2?await o(e.name,t,n):await o(e.name,t)}},`workflow`)}function defineStaticWebSite(e,t){return{...t,name:e,get url(){return`${e}:url`}}}function defineAIGateway(e,t){return{...t,name:e}}const T={create:[{conditions:[],permit:!0}],read:[{conditions:[],permit:!0}],update:[{conditions:[],permit:!0}],delete:[{conditions:[],permit:!0}],sendPasswordResetEmail:[{conditions:[],permit:!0}],unenrollMfa:[{conditions:[],permit:!0}]};function defineIdp(e,t){return{...t,name:e,provider(t,n){return{name:t,kind:`BuiltInIdP`,namespace:e,clientName:n}}}}function defineSecretManager(e,t){let n={vaults:e,options:{ignoreNullishValues:t?.ignoreNullishValues??!1}};return Object.defineProperty(n,"get",{value:async(e,t)=>tailor.secretmanager.getSecret(e,t),enumerable:!1}),Object.defineProperty(n,"getAll",{value:async(e,t)=>{let n=await tailor.secretmanager.getSecrets(e,t);return t.map(e=>n[e])},enumerable:!1}),n}function createHttpAdapter(e){return r({...e},`http-adapter`)}function defineConfig(e){return e}function definePlugins(...e){return e}const E=h;export{authAccessTokenIssuedTrigger,authAccessTokenRefreshedTrigger,authAccessTokenRevokedTrigger,authAccessTokenTrigger,createExecutor,createHttpAdapter,createResolver,createWaitPoint,createWaitPoints,createWorkflow,createWorkflowJob,n as db,defineAIGateway,defineAuth,defineConfig,defineIdp,definePlugins,defineSecretManager,defineStaticWebSite,defineWorkflowExecutionPolicies,defineWorkflowExecutionPolicy,idpUserCreatedTrigger,idpUserDeletedTrigger,idpUserTrigger,idpUserUpdatedTrigger,incomingWebhookTrigger,recordCreatedTrigger,recordDeletedTrigger,recordTrigger,recordUpdatedTrigger,resolverExecutedTrigger,scheduleTrigger,E as t,_ as unsafeAllowAllGqlPermission,T as unsafeAllowAllIdPPermission,g as unsafeAllowAllTypePermission,workflowExecutionCompletedTrigger,workflowExecutionResumedTrigger,workflowExecutionRetriedTrigger,workflowExecutionStartedTrigger,workflowExecutionTrigger,workflowExecutionWaitResolvedTrigger,workflowExecutionWaitStartedTrigger,workflowJobExecutionCompletedTrigger,workflowJobExecutionStartedTrigger,workflowJobExecutionTrigger,workflowJobExecutionWaitResolvedTrigger,workflowJobExecutionWaitStartedTrigger};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|