@stackone/connect-sdk 2.4.3 → 2.5.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/dist/index.d.mts +21 -1
- package/dist/index.d.ts +21 -1
- package/dist/index.js +5 -5
- package/dist/index.mjs +6 -6
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -370,6 +370,7 @@ type Block = {
|
|
|
370
370
|
logger?: ILogger;
|
|
371
371
|
action?: Action;
|
|
372
372
|
credentials?: Credentials;
|
|
373
|
+
scopes?: string[];
|
|
373
374
|
outputs?: unknown;
|
|
374
375
|
nextCursor?: Cursor | null;
|
|
375
376
|
response?: {
|
|
@@ -428,6 +429,7 @@ type FieldConfig = {
|
|
|
428
429
|
matcher: string | EnumMatcherExpression[];
|
|
429
430
|
};
|
|
430
431
|
properties?: FieldConfig[];
|
|
432
|
+
requiredScopes?: string[];
|
|
431
433
|
};
|
|
432
434
|
type DebugParams = {
|
|
433
435
|
custom_mappings?: 'disabled' | 'enabled';
|
|
@@ -503,6 +505,11 @@ type StepStatistics = {
|
|
|
503
505
|
declare const ReleaseStages: readonly ["preview", "beta", "ga", "deprecated"];
|
|
504
506
|
type ReleaseStage = (typeof ReleaseStages)[number];
|
|
505
507
|
type ReleaseStages = 'preview' | 'beta' | 'ga' | 'deprecated';
|
|
508
|
+
type ScopeDefinition = {
|
|
509
|
+
name: string;
|
|
510
|
+
description: string;
|
|
511
|
+
includes?: string[];
|
|
512
|
+
};
|
|
506
513
|
type Connector = {
|
|
507
514
|
title: string;
|
|
508
515
|
version: string;
|
|
@@ -512,6 +519,9 @@ type Connector = {
|
|
|
512
519
|
description: string;
|
|
513
520
|
details?: string;
|
|
514
521
|
categories?: Category[];
|
|
522
|
+
scopeDefinitions?: {
|
|
523
|
+
[scopeName: string]: ScopeDefinition;
|
|
524
|
+
};
|
|
515
525
|
authentication?: Authentication;
|
|
516
526
|
actions?: {
|
|
517
527
|
[actionId: string]: Action;
|
|
@@ -557,6 +567,7 @@ type Action = {
|
|
|
557
567
|
entrypointUrl?: string;
|
|
558
568
|
entrypointHttpMethod?: HttpMethod;
|
|
559
569
|
inputs?: Input[];
|
|
570
|
+
requiredScopes?: string[];
|
|
560
571
|
steps: {
|
|
561
572
|
[stepId: string]: Step;
|
|
562
573
|
};
|
|
@@ -630,6 +641,7 @@ type AuthenticationConfig = {
|
|
|
630
641
|
type: 'basic' | 'bearer' | 'oauth2';
|
|
631
642
|
[authParam: string]: unknown;
|
|
632
643
|
};
|
|
644
|
+
requiredScopes?: string[];
|
|
633
645
|
support?: SupportConfig;
|
|
634
646
|
configFields?: AuthenticationField[];
|
|
635
647
|
setupFields?: AuthenticationField[];
|
|
@@ -780,12 +792,19 @@ interface MetaAction {
|
|
|
780
792
|
tags?: string[];
|
|
781
793
|
schemaType: 'native' | 'unified';
|
|
782
794
|
inputs?: Input[];
|
|
795
|
+
requiredScopes?: string[];
|
|
783
796
|
[key: string]: unknown;
|
|
784
797
|
}
|
|
785
798
|
type MetaAuthenticationConfig = {
|
|
786
799
|
type: string;
|
|
787
800
|
label: string;
|
|
788
801
|
key: string;
|
|
802
|
+
required_scopes?: string[];
|
|
803
|
+
};
|
|
804
|
+
type ScopeMetaDefinition = {
|
|
805
|
+
name: string;
|
|
806
|
+
description: string;
|
|
807
|
+
includes?: string[];
|
|
789
808
|
};
|
|
790
809
|
type ConnectorMeta = {
|
|
791
810
|
version: string;
|
|
@@ -794,6 +813,7 @@ type ConnectorMeta = {
|
|
|
794
813
|
icon?: string;
|
|
795
814
|
description: string;
|
|
796
815
|
authentication: MetaAuthenticationConfig[];
|
|
816
|
+
scope_definitions?: ScopeMetaDefinition[];
|
|
797
817
|
actions: {
|
|
798
818
|
id: string;
|
|
799
819
|
label: string;
|
|
@@ -1026,4 +1046,4 @@ declare const runTestActions: ({
|
|
|
1026
1046
|
runStepActionFn?: typeof runStepAction;
|
|
1027
1047
|
}) => Promise<boolean>;
|
|
1028
1048
|
//#endregion
|
|
1029
|
-
export { ConnectSDKError, type ConnectorMeta, type ErrorType, type InputValidationError, InvalidActionInputsError, type ValidationErrorResponse, applyReleaseStageToConnector, createBlock, executeStepFunction, formatValidationErrorResponse, getActionFromUrl, getActionsMeta, getActionsMetaFromConnectors, getRefreshTokenExpiresIn, getTokenExpiresIn, isConnectorReleased, loadConnector, parseActionInputs, parseYamlConnector, runAction, runConnectorActionById, runConnectorActionByPath, runStepAction, runTestActions, supportsRefreshAuthentication, validateYamlConnector };
|
|
1049
|
+
export { ConnectSDKError, type ConnectorMeta, type ErrorType, type InputValidationError, InvalidActionInputsError, type ValidationError, type ValidationErrorResponse, applyReleaseStageToConnector, createBlock, executeStepFunction, formatValidationErrorResponse, getActionFromUrl, getActionsMeta, getActionsMetaFromConnectors, getRefreshTokenExpiresIn, getTokenExpiresIn, isConnectorReleased, loadConnector, parseActionInputs, parseYamlConnector, runAction, runConnectorActionById, runConnectorActionByPath, runStepAction, runTestActions, supportsRefreshAuthentication, validateYamlConnector };
|
package/dist/index.d.ts
CHANGED
|
@@ -370,6 +370,7 @@ type Block = {
|
|
|
370
370
|
logger?: ILogger;
|
|
371
371
|
action?: Action;
|
|
372
372
|
credentials?: Credentials;
|
|
373
|
+
scopes?: string[];
|
|
373
374
|
outputs?: unknown;
|
|
374
375
|
nextCursor?: Cursor | null;
|
|
375
376
|
response?: {
|
|
@@ -428,6 +429,7 @@ type FieldConfig = {
|
|
|
428
429
|
matcher: string | EnumMatcherExpression[];
|
|
429
430
|
};
|
|
430
431
|
properties?: FieldConfig[];
|
|
432
|
+
requiredScopes?: string[];
|
|
431
433
|
};
|
|
432
434
|
type DebugParams = {
|
|
433
435
|
custom_mappings?: 'disabled' | 'enabled';
|
|
@@ -503,6 +505,11 @@ type StepStatistics = {
|
|
|
503
505
|
declare const ReleaseStages: readonly ["preview", "beta", "ga", "deprecated"];
|
|
504
506
|
type ReleaseStage = (typeof ReleaseStages)[number];
|
|
505
507
|
type ReleaseStages = 'preview' | 'beta' | 'ga' | 'deprecated';
|
|
508
|
+
type ScopeDefinition = {
|
|
509
|
+
name: string;
|
|
510
|
+
description: string;
|
|
511
|
+
includes?: string[];
|
|
512
|
+
};
|
|
506
513
|
type Connector = {
|
|
507
514
|
title: string;
|
|
508
515
|
version: string;
|
|
@@ -512,6 +519,9 @@ type Connector = {
|
|
|
512
519
|
description: string;
|
|
513
520
|
details?: string;
|
|
514
521
|
categories?: Category[];
|
|
522
|
+
scopeDefinitions?: {
|
|
523
|
+
[scopeName: string]: ScopeDefinition;
|
|
524
|
+
};
|
|
515
525
|
authentication?: Authentication;
|
|
516
526
|
actions?: {
|
|
517
527
|
[actionId: string]: Action;
|
|
@@ -557,6 +567,7 @@ type Action = {
|
|
|
557
567
|
entrypointUrl?: string;
|
|
558
568
|
entrypointHttpMethod?: HttpMethod;
|
|
559
569
|
inputs?: Input[];
|
|
570
|
+
requiredScopes?: string[];
|
|
560
571
|
steps: {
|
|
561
572
|
[stepId: string]: Step;
|
|
562
573
|
};
|
|
@@ -630,6 +641,7 @@ type AuthenticationConfig = {
|
|
|
630
641
|
type: 'basic' | 'bearer' | 'oauth2';
|
|
631
642
|
[authParam: string]: unknown;
|
|
632
643
|
};
|
|
644
|
+
requiredScopes?: string[];
|
|
633
645
|
support?: SupportConfig;
|
|
634
646
|
configFields?: AuthenticationField[];
|
|
635
647
|
setupFields?: AuthenticationField[];
|
|
@@ -780,12 +792,19 @@ interface MetaAction {
|
|
|
780
792
|
tags?: string[];
|
|
781
793
|
schemaType: 'native' | 'unified';
|
|
782
794
|
inputs?: Input[];
|
|
795
|
+
requiredScopes?: string[];
|
|
783
796
|
[key: string]: unknown;
|
|
784
797
|
}
|
|
785
798
|
type MetaAuthenticationConfig = {
|
|
786
799
|
type: string;
|
|
787
800
|
label: string;
|
|
788
801
|
key: string;
|
|
802
|
+
required_scopes?: string[];
|
|
803
|
+
};
|
|
804
|
+
type ScopeMetaDefinition = {
|
|
805
|
+
name: string;
|
|
806
|
+
description: string;
|
|
807
|
+
includes?: string[];
|
|
789
808
|
};
|
|
790
809
|
type ConnectorMeta = {
|
|
791
810
|
version: string;
|
|
@@ -794,6 +813,7 @@ type ConnectorMeta = {
|
|
|
794
813
|
icon?: string;
|
|
795
814
|
description: string;
|
|
796
815
|
authentication: MetaAuthenticationConfig[];
|
|
816
|
+
scope_definitions?: ScopeMetaDefinition[];
|
|
797
817
|
actions: {
|
|
798
818
|
id: string;
|
|
799
819
|
label: string;
|
|
@@ -1026,4 +1046,4 @@ declare const runTestActions: ({
|
|
|
1026
1046
|
runStepActionFn?: typeof runStepAction;
|
|
1027
1047
|
}) => Promise<boolean>;
|
|
1028
1048
|
//#endregion
|
|
1029
|
-
export { ConnectSDKError, type ConnectorMeta, type ErrorType, type InputValidationError, InvalidActionInputsError, type ValidationErrorResponse, applyReleaseStageToConnector, createBlock, executeStepFunction, formatValidationErrorResponse, getActionFromUrl, getActionsMeta, getActionsMetaFromConnectors, getRefreshTokenExpiresIn, getTokenExpiresIn, isConnectorReleased, loadConnector, parseActionInputs, parseYamlConnector, runAction, runConnectorActionById, runConnectorActionByPath, runStepAction, runTestActions, supportsRefreshAuthentication, validateYamlConnector };
|
|
1049
|
+
export { ConnectSDKError, type ConnectorMeta, type ErrorType, type InputValidationError, InvalidActionInputsError, type ValidationError, type ValidationErrorResponse, applyReleaseStageToConnector, createBlock, executeStepFunction, formatValidationErrorResponse, getActionFromUrl, getActionsMeta, getActionsMetaFromConnectors, getRefreshTokenExpiresIn, getTokenExpiresIn, isConnectorReleased, loadConnector, parseActionInputs, parseYamlConnector, runAction, runConnectorActionById, runConnectorActionByPath, runStepAction, runTestActions, supportsRefreshAuthentication, validateYamlConnector };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=s(require(`@stackone/utils`)),l=s(require(`path-to-regexp`)),u=s(require(`fs`)),d=s(require(`path`)),f=s(require(`@stackone/core`)),p=s(require(`@stackone/transport`)),m=s(require(`yaml`)),h=s(require(`@stackone/expressions`)),g=async({connector:e,inputs:t,context:n,action:r,credentials:i,nextCursor:a,settings:o,logger:s,getHttpClient:l,getOlapClient:u})=>{if((0,c.isMissing)(l))throw Error(`getHttpClient function is required`);let d=await l(),f=u?await u():void 0;return{connector:e,inputs:t,fieldConfigs:[],context:n,action:r,credentials:i,nextCursor:a,httpClient:d,olapClient:f,settings:o,logger:s}},_=(e,t,n)=>{let r=n.toUpperCase();if(!e.actions)return;let i=Object.values(e.actions).filter(e=>(0,c.notMissing)(e.endpoint)).map(e=>({actionId:e.id,endpoint:e.endpoint})),a=y(t,r,i);if(a)return{action:e.actions?.[a.actionId],params:a.params}},v=e=>{let t=e.startsWith(`/`)?e.slice(1):e,n=t.endsWith(`/`)?t.slice(0,-1):t;return n},y=(e,t,n)=>{let r=v(e);for(let e of n)if(e.endpoint?.startsWith(t)){let n=e.endpoint.replace(`${t} `,``).trim(),i=(0,l.match)(v(n)),a=i(v(r));if(a!==!1)return{actionId:e.actionId,path:e.endpoint,params:a.params}}},b=(e,t)=>t?.startsWith(`${e}_`)?t:`${e}_${t}`,ee=(e,t)=>{let n=`${e.key}_`,r=t.startsWith(n)?t:`${n}${t}`;return e.actions?.[r]},te=e=>{if(!e.endsWith(`.s1.yaml`))throw Error(`File must have .s1.yaml extension`);try{let t=(0,u.readFileSync)(e,`utf8`);if(!t.includes(`:`)||!t.includes(`$ref:`))return t;let n=t.split(`
|
|
2
|
-
`),r=
|
|
3
|
-
`)}catch(e){throw Error(`Failed to process YAML file: ${e.message}`)}},
|
|
4
|
-
`).filter(e=>e.trim()!==``)}catch(t){throw Error(`Failed to load partial file '${e}': ${t.message}`)}};var C=class e extends Error{errorType;constructor(t,n){super(n),this.name=`InternalConnectSDKError`,this.errorType=t,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},w=class extends C{line;constructor(e,t){super(`INVALID_YAML_FILE_ERROR`,t),this.name=`InvalidYamlFileError`,this.line=e??1}},T=class extends C{issues;constructor(e,t){super(`SCHEMA_VALIDATION_ERROR`,t),this.name=`SchemaValidationError`,this.issues=e}},E=class extends C{actionId;stepId;functionName;functionVersion;constructor(e,t,n,r=`1`){let i=`Invalid Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the function name and version are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION`,i),this.name=`InvalidStepFunctionError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r}},D=class extends C{actionId;stepId;functionName;functionVersion;issues;constructor(e,t,n,r=`1`,i){let a=`Invalid parameters for Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the parameters are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION_PARAMS`,a),this.name=`InvalidStepFunctionParamsError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r,this.issues=i,this.message=a}},re=class extends C{actionId;exampleIndex;issues;constructor(e,t,n){let r=n.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`, `),i=`Invalid example ${t} for action '${e}': ${r}`;super(`INVALID_ACTION_EXAMPLE`,i),this.name=`InvalidActionExampleError`,this.actionId=e,this.exampleIndex=t,this.issues=n}},O=class extends C{actionId;inputName;enumRef;constructor(e,t,n){let r=`Invalid enum reference "${n}" in action "${e}", input "${t}". Check that the enum is defined in INPUT_ENUM_REGISTRY.`;super(`INVALID_ENUM_REFERENCE`,r),this.name=`InvalidEnumReferenceError`,this.actionId=e,this.inputName=t,this.enumRef=n}};const k=25,A=e=>({statusCode:400,message:`Invalid request - validation failed`,errors:e.map(e=>({property:e.field,location:e.location,expected:e.expected,received:e.received,message:e.message}))}),j=e=>{switch(e){case`list`:return{statusCode:200,description:`The list of records was retrieved.`};case`get`:return{statusCode:200,description:`The record with the given identifier was retrieved.`};case`create`:return{statusCode:201,description:`The record was created successfully.`};case`update`:return{statusCode:200,description:`The record was updated successfully.`};case`delete`:return{statusCode:204,description:`The record was deleted successfully.`};case`custom`:return{statusCode:200,description:`The action was executed successfully.`};case`refresh_token`:return{statusCode:200,description:`The refresh token action was executed successfully.`};case`unknown`:return{statusCode:200};default:throw Error(`Unknown action type: ${e}`)}},M=()=>{let e={400:{statusCode:400,description:`Invalid request.`},401:{statusCode:401,description:`Unauthorized access.`},403:{statusCode:403,description:`Forbidden.`},404:{statusCode:404,description:`Resource not found.`},500:{statusCode:500,description:`Server error while executing the request.`}};return e},ie={key:c.z.string(),label:c.z.string(),required:c.z.boolean().optional().default(!1),secret:c.z.boolean().optional().default(!1),readOnly:c.z.boolean().optional().default(!1),placeholder:c.z.string().optional(),description:c.z.string().optional(),tooltip:c.z.string().optional()},ae=c.z.discriminatedUnion(`type`,[(0,c.zStrictObject)({...ie,type:c.z.enum([`text`,`password`])}),(0,c.zStrictObject)({...ie,type:c.z.literal(`select`),options:(0,c.zStrictObject)({value:c.z.string(),label:c.z.string()}).array()})]),oe=(0,c.zStrictObject)({targetFieldKey:c.z.string(),alias:c.z.string().optional(),expression:c.z.string().optional(),values:c.z.unknown().optional(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:c.z.boolean().default(!1),custom:c.z.boolean().default(!1),hidden:c.z.boolean().default(!1),enumMapper:(0,c.zStrictObject)({matcher:c.z.enum([`country_alpha2code_by_alpha2code`,`country_alpha3code_by_alpha3code`,`country_code_by_country_code`,`country_name_by_country_name`,`country_name_by_alpha3code`,`country_name_by_alpha2code`,`country_name_by_country_code`,`country_alpha3code_by_alpha2code`,`country_alpha3code_by_country_name`,`country_alpha3code_by_country_code`,`country_alpha2code_by_alpha3code`,`country_alpha2code_by_country_name`,`country_alpha2code_by_country_code`,`country_code_by_alpha2code`,`country_code_by_alpha3code`,`country_code_by_country_name`,`country_subdivisions_by_alpha2code`,`country_subdivision_code_by_subdivision_name`,`country_alpha2code_by_citizenship`,`country_subdivision_name_by_subdivision_code`,`document_file_format_from_extension`]).or((0,c.zStrictObject)({matchExpression:c.z.string(),value:c.z.string()}).array())}).optional(),properties:c.z.lazy(()=>oe).array().optional()}),se=c.z.union([(0,c.zStrictObject)({values:c.z.string().array().min(1)}),(0,c.zStrictObject)({ref:c.z.string()})]),ce=(0,c.zStrictObject)({name:c.z.string(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`object`,`enum`]),required:c.z.boolean(),description:c.z.string(),array:c.z.boolean().optional().default(!1),in:c.z.enum([`body`,`query`,`path`,`headers`]),properties:c.z.lazy(()=>ce.omit({in:!0})).array().optional(),oneOf:se.optional()}).refine(e=>e.type!==`enum`||e.oneOf!==void 0,{message:`oneOf is required when type is 'enum'`}).refine(e=>e.type===`enum`||e.oneOf===void 0,{message:`oneOf is only allowed when type is 'enum'`}),N=(0,c.zStrictObject)({actionId:c.z.string(),categories:c.z.string().array(),actionType:c.z.enum([`list`,`get`,`create`,`update`,`delete`,`custom`,`refresh_token`,`unknown`]),schema:c.z.string().optional(),schemaType:c.z.enum([`native`,`unified`]).optional().default(`native`),entrypointUrl:c.z.string().optional(),entrypointHttpMethod:c.z.string().optional(),label:c.z.string(),description:c.z.string(),details:c.z.string().optional(),examples:c.z.record(c.z.string(),c.z.unknown()).array().optional(),tags:c.z.string().array().optional(),releaseStage:c.z.enum(f.ReleaseStages).optional(),resources:c.z.string().optional(),responses:(0,c.zStrictObject)({statusCode:c.z.number(),description:c.z.string()}).array().optional(),inputs:ce.array().optional(),cursor:(0,c.zStrictObject)({enabled:c.z.boolean(),pageSize:c.z.number()}).optional(),compositeIdentifiers:(0,c.zStrictObject)({enabled:c.z.boolean(),version:c.z.number().optional(),fields:(0,c.zStrictObject)({targetFieldKey:c.z.string(),remote:c.z.string().optional(),components:c.z.string().array()}).array().optional()}).optional(),scheduledJobs:(0,c.zStrictObject)({enabled:c.z.boolean(),type:c.z.enum([`data_sync`]),schedule:c.z.string(),description:c.z.string(),requestParams:(0,c.zStrictObject)({fields:c.z.string().array().optional(),expand:c.z.string().array().optional(),filter:c.z.record(c.z.string(),c.z.string()).optional()}).optional(),syncFilter:(0,c.zStrictObject)({name:c.z.enum([`updated_after`,`created_after`]),initialLoopbackPeriod:c.z.string(),incrementalLoopbackPeriod:c.z.string()}).optional()}).array().optional(),fieldConfigs:oe.array().optional(),steps:(0,c.zStrictObject)({stepId:c.z.string(),description:c.z.string(),stepFunction:(0,c.zStrictObject)({functionName:c.z.string(),version:c.z.string().optional(),parameters:c.z.record(c.z.string(),c.z.unknown())}),condition:c.z.string().optional(),ignoreError:c.z.boolean().optional()}).array(),result:c.z.string().or(c.z.record(c.z.string(),c.z.unknown())).optional()}),le=(0,c.zStrictObject)({schedule:c.z.string().optional(),action:N.extend({actionType:c.z.literal(`refresh_token`)})}),ue=(0,c.zStrictObject)({mainRatelimit:c.z.number(),subPools:c.z.array((0,c.zStrictObject)({subPoolKey:c.z.string(),urlPattern:c.z.string(),rateLimit:c.z.number()})).optional(),mappedRateLimitErrors:c.z.array((0,c.zStrictObject)({errorStatus:c.z.number(),errorMessage:c.z.string(),errorMessagePath:c.z.string().optional(),retryAfterPath:c.z.string().optional(),retryAfterUnit:c.z.union([c.z.literal(`seconds`),c.z.literal(`milliseconds`),c.z.literal(`date`)]).optional(),retryAfterValue:c.z.number().optional()})).optional()}),de=(0,c.zStrictObject)({mainMaxConcurrency:c.z.number(),subPools:c.z.array((0,c.zStrictObject)({subPoolKey:c.z.string(),urlPattern:c.z.string(),maxConcurrency:c.z.number()})).optional()}),P=(0,c.zStrictObject)({label:c.z.string(),authorization:f.AUTHORIZATION_SCHEMA,environments:(0,c.zStrictObject)({key:c.z.string(),name:c.z.string()}).array(),support:(0,c.zStrictObject)({link:c.z.string().optional(),description:c.z.string().optional()}).optional(),configFields:ae.array().optional(),setupFields:ae.array().optional(),refreshAuthentication:le.optional(),testActions:(0,c.zStrictObject)({action:c.z.string().or(N),condition:c.z.string().optional(),required:c.z.boolean().default(!0)}).array().optional()}),fe=P.extend({type:c.z.literal(`oauth2`),grantType:c.z.enum([`authorization_code`,`client_credentials`]).default(`authorization_code`)}),pe=P.extend({type:c.z.literal(`custom`)}),me=P.extend({type:c.z.literal(`oidc`)}),he=c.z.discriminatedUnion(`type`,[fe,pe,me]),ge=(0,c.zStrictObject)({StackOne:c.z.string(),info:(0,c.zStrictObject)({title:c.z.string(),version:c.z.string(),key:c.z.string(),assets:(0,c.zStrictObject)({icon:c.z.string()}),description:c.z.string(),details:c.z.string().optional()}),resources:c.z.string().optional(),baseUrl:c.z.string(),authentication:c.z.record(c.z.string(),he).array().optional(),actions:N.array().optional(),rateLimit:ue.optional(),concurrency:de.optional(),releaseStage:c.z.enum(f.ReleaseStages).optional()}).strict();function F(e){try{let t=(0,m.parse)(e),n=Ie(ge,t),r={title:n.info.title,version:n.info.version,key:n.info.key,assets:n.info.assets,description:n.info.description,details:n.info.details,resources:n.resources,rateLimit:n.rateLimit,concurrency:n.concurrency,releaseStage:n.releaseStage},i=be(n),a={baseUrl:n.baseUrl,authentication:_e(i)},o=Ee(n,a);return r.actions=o,ve(n.info.key,i,o,a),r.authentication=i,(0,c.notMissing)(o)&&(r.categories=ye(Object.values(o))),r}catch(e){if(e instanceof C)throw e;let t=e.message,n=t.match(/at line (\d+)/),r=n?parseInt(n[1],10):1;throw new w(r,t)}}const _e=e=>{let t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`){let{setupFields:e,configFields:i,support:a,refreshAuthentication:o,testActions:s,...c}=r;t[n]=_e(c)}else t[n]=r;return t},ve=(e,t,n,r)=>{if(!(!t||!n))for(let i of Object.values(t))for(let t of Object.values(i)){let i=t.testActions;t.testActions=i?.map(t=>{if((0,c.notMissing)(t.action))if(typeof t.action==`string`){let r=b(e,t.action),i=Object.values(n).find(e=>e.id===r);if(i)return{...t,action:i}}else{let n=b(e,t.action.actionId),i=I(n,t.action,r);return{...t,action:i}}return t})}},ye=e=>{let t=e.reduce((e,t)=>{for(let n of t.categories)e.add(n);return e},new Set);return Array.from(t)},be=e=>{let t={};for(let n of e.authentication??[]){let[r]=Object.keys(n),i=n[r].environments.reduce((t,i)=>{let{key:a,name:o}=i,{environments:s,refreshAuthentication:l,testActions:u,...d}=n[r],f=(0,c.notMissing)(l)?{schedule:l.schedule,action:I(b(e.info.key,l.action.actionId),l.action)}:void 0;return t[a]={...d,refreshAuthentication:f,envKey:a,envName:o,testActions:u},t},{});t[r]=i}return t},xe=e=>e.entrypointUrl&&e.entrypointHttpMethod?`${e.entrypointHttpMethod.toUpperCase()} ${e.entrypointUrl}`:void 0,Se=e=>e.actionType===`list`?`GET /${e.schema}`:`GET /${e.schema}/:id`,Ce=e=>{if(e.actionType!==`refresh_token`)return e.entrypointHttpMethod??`get`},we=e=>{if(!(e.actionType===`refresh_token`||(0,c.isMissing)(e.schema)))return e.actionType===`list`?`/${e.schema}`:`/${e.schema}/:id`},Te=e=>{let t={success:j(e.actionType),errors:M()},n=e.responses?.reduce((e,t)=>{let n=(0,p.isSuccessStatusCode)(t.statusCode);return n?e.success={statusCode:t.statusCode,description:t.description}:e.errors[t.statusCode]={statusCode:t.statusCode,description:t.description},e},t);return n??t},Ee=(e,t)=>{let n=e.actions?.reduce((n,r)=>{let i=xe(r),a=Se(r),o=i??a,s=b(e.info.key,r.actionId);return n[s]=I(s,r,t,o),n},{});return n},De=(e,t)=>{if(t){for(let n of t)if(n.type===`enum`&&n.oneOf&&`ref`in n.oneOf&&!(0,f.isValidEnumRef)(n.oneOf.ref))throw new O(e,n.name,n.oneOf.ref)}},Oe=(e,t,n)=>{if(!t||t.length===0)return;let r={};for(let e of n){let t=R(e);e.required||(t=t.optional()),r[e.name]=t}let i=c.z.object(r).strict();for(let n=0;n<t.length;n++){let r=t[n],{description:a,...o}=r,s=i.safeParse(o);if(!s.success){let t=s.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:[]}));throw new re(e,n,t)}}},I=(e,t,n,r)=>{let i=we(t),a=Te(t),o=Me(t),s=t.inputs||[];o.enabled&&(s?.push({type:`string`,name:`page_size`,in:`query`,required:!1,description:`Number of items to return per page`,array:!1}),s?.push({type:`string`,name:`next`,in:`query`,required:!1,description:`Token for the next page of results`,array:!1})),De(e,s),Oe(e,t.examples,s);let c=Ce(t);return{id:e,categories:t.categories,label:t.label,description:t.description,details:t.details,examples:t.examples,actionType:t.actionType,schemaType:t.schemaType??`native`,entrypointUrl:t.entrypointUrl??i,entrypointHttpMethod:c,endpoint:r,tags:t.tags,releaseStage:t.releaseStage,resources:t.resources,responses:a,cursor:o,compositeIdentifiers:Ne(t),scheduledJobs:Pe(t),inputs:s,steps:t.steps.reduce((e,r)=>{let{customErrors:i,...a}=r.stepFunction.parameters??{},o={id:r.stepId,description:r.description,condition:r.condition,ignoreError:r.ignoreError,stepFunction:{functionName:r.stepFunction.functionName,version:r.stepFunction.version,params:{...Fe({stepFunctionName:r.stepFunction.functionName,baseRequestParams:n,customErrors:i}),...r.stepFunction.functionName===`map_fields`||r.stepFunction.functionName===`typecast`?{fields:a.fields??t.fieldConfigs}:{},...a}}};return ke(t.actionId,o),e[r.stepId]=o,e},{}),result:t.result}},ke=(e,t)=>{let n=t.stepFunction.version??`1`,r=f.StepFunctionsRegistry[t.stepFunction.functionName]?.[`v${n}`];if(!r)throw new E(e,t.id,t.stepFunction.functionName,n);let i=r.inputSchema;i&&Le(i,t.stepFunction.params,e,t.id,t.stepFunction.functionName,n)},L=(e,t)=>{if(!e.inputs)return{};let n=Ae(e.inputs),r=c.z.object(n).parse(t);return{...r.headers??{},...r.query??{},...r.path??{},...r.body??{}}},Ae=e=>{let t=e.reduce((e,t)=>(e[t.in]||(e[t.in]=[]),e[t.in].push(t),e),{}),n={};for(let[e,r]of Object.entries(t)){let t={};for(let e of r){let n=R(e);e.description&&(n=n.describe(e.description)),e.required||(n=n.optional()),t[e.name]=n}Object.keys(t).length>0&&(n[e]=c.z.object(t))}return n},je=(e,t)=>{if(!t)throw Error(`Enum input "${e}" requires oneOf definition`);let n;if(`values`in t)n=t.values;else if(`ref`in t){let r=(0,f.getInputEnumValues)(t.ref);if(!r)throw Error(`Unknown enum reference "${t.ref}" in input "${e}"`);n=r}else throw Error(`Invalid oneOf definition in input "${e}"`);if(n.length===0)throw Error(`Enum input "${e}" must have at least one allowed value`);return c.z.enum(n)},R=e=>{let t;switch(e.type){case`string`:case`datetime_string`:t=c.z.string();break;case`number`:t=c.z.number();break;case`boolean`:t=c.z.boolean();break;case`enum`:t=je(e.name,e.oneOf);break;case`object`:if(e.properties&&e.properties.length>0){let n={};for(let t of e.properties){let e=R(t);t.description&&(e=e.describe(t.description)),t.required||(e=e.optional()),n[t.name]=e}t=c.z.object(n)}else t=c.z.record(c.z.string(),c.z.unknown());break;default:t=c.z.unknown()}return e.array&&(t=c.z.array(t)),t},Me=e=>{let t=e.actionType===`list`,n=e.cursor??{enabled:t,pageSize:k};return{enabled:n.enabled&&t,pageSize:n.pageSize}},Ne=e=>{if(e.actionType===`refresh_token`||(0,c.isMissing)(e.compositeIdentifiers))return{enabled:!1};let t=[];for(let n of e.compositeIdentifiers?.fields??[]){let r=n.components.map(t=>{let n=e.fieldConfigs?.find(e=>e.targetFieldKey===t);return{name:t,alias:n?.alias}});t.push({targetFieldKey:n.targetFieldKey,remote:n.remote,components:r})}return{enabled:e.compositeIdentifiers.enabled,version:e.compositeIdentifiers.version,fields:t.length>0?t:void 0}},Pe=e=>{if(!(0,c.isMissing)(e.scheduledJobs))return e.scheduledJobs},Fe=({stepFunctionName:e,baseRequestParams:t,customErrors:n={}})=>{if(e===`request`||e===`paginated_request`||e===`soap_request`||e===`soap_paginated_request`){let e=[{receivedStatus:500,targetStatus:502}],r=n&&Array.isArray(n)?n:[],i=[...r,...e];return{...t,customErrors:i}}else return{}},Ie=(e,t)=>{let n=e.safeParse(t);if(n.success)return n.data;{let e=n.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new T(e,`Invalid connector schema`)}},Le=(e,t,n,r,i,a)=>{let o=e.safeParse(t);if(o.success)return o.data;{let e=o.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new D(n,r,i,a,e)}},z=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return;let a=e.authentication?.[t]?.[n]?.refreshAuthentication?.action;if((0,c.notMissing)(a))return{action:a,params:{}}},Re=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return!1;let a=z(e,t,n);return(0,c.notMissing)(a)},ze=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenExpiresIn},Be=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenRefreshExpiresIn},Ve=(e,t=[])=>We(t,e.releaseStage),He=(e,t=[])=>{if(!Ve(e,t))return;let n={};if(e.actions)for(let[r,i]of Object.entries(e.actions))We(t,i.releaseStage)&&(n[r]=i);return{...e,actions:n}},Ue=e=>e??`ga`,We=(e=[],t)=>{let n=Ue(t);return e.includes(n)},Ge=e=>{try{let t=F(e);return{success:!0,connector:t}}catch(t){if(t instanceof T){let n=t.issues,r=[];return n.forEach(t=>{let n=t?.keys?.[0],i=(0,c.isMissing)(n)?t.path:[...t.path,n],a=Ke(i,e);r.push({line:a,message:t.message,field:i.join(`.`)})}),{success:!1,errors:r}}else if(t instanceof w)return{success:!1,errors:[{line:t.line,message:`The YAML connector file is not valid. Please check the syntax and structure.`,field:void 0}]};else if(t instanceof E){let n=qe(t.actionId,t.stepId,t.functionName,!1,e);return{success:!1,errors:[{line:n,message:t.message,field:void 0}]}}else if(t instanceof D){let n=t.issues,r=[];return n.forEach(n=>{let i=n?.keys?.[0],a=(0,c.isMissing)(i)?n.path:[...n.path,i],o=qe(t.actionId,t.stepId,t.functionName,!0,e);r.push({line:o,message:n.message,field:a.join(`.`)})}),{success:!1,errors:r}}}return{success:!1,errors:[{line:1,message:`An unknown error occurred while parsing the connector.`,field:void 0}]}},Ke=(e,t)=>{let n=t.split(`
|
|
5
|
-
`),r=0,i=-1,a=0;for(let t=0;t<n.length;t++){let o=n[t],s=o.match(/^(\s*)/)?.[1]?.length||0,l=o.replace(`- `,``).trim();if(l.startsWith(`#`)||l===``||s<=i)continue;let u=(0,c.notMissing)(e[r])?`${String(e[r])}`:``;if((0,c.isMissing)(u))return a+1;if(isNaN(Number(u))){if(l.startsWith(`${u}:`)){if(r===e.length-1)return t+1;i=s,a=t,r++}}else{let e=parseInt(u,10),i=-1;for(let o=t;o<n.length;o++){let s=n[o],c=s.trim();if(c.startsWith(`-`)&&i++,i===e){r++,a=t,t--;break}else t++}}}return a+1},
|
|
6
|
-
`),o=1,s=null,l=null;for(let i=0;i<a.length;i++){let u=a[i],d=u.trim();if((0,c.isMissing)(s)&&d===`- actionId: ${e}`){s=e,o=i+1;continue}if((0,c.notMissing)(s)&&(0,c.isMissing)(l)&&d===`- stepId: ${t}`){l=t,o=i+1;continue}if((0,c.notMissing)(s)&&(0,c.notMissing)(l)&&!r&&d.startsWith(`functionName: ${n}`)||(0,c.notMissing)(s)&&(0,c.notMissing)(l)&&r&&d===`parameters:`)return o=i+1,o}return o};var B=class e extends Error{errorType;context;constructor(t,n,r){super(r),this.name=`ConnectSDKError`,this.errorType=t,this.context=n,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},Je=class extends B{constructor(e,t){super(`CONNECTOR_PARSE_ERROR`,e,t),this.name=`ConnectorParseError`}},V=class extends B{constructor(e,t){super(`MISSING_ACTION_ERROR`,e,t),this.name=`MissingActionError`}},H=class extends B{validationErrors;constructor(e,t,n){super(`INVALID_ACTION_INPUTS_ERROR`,e,t),this.name=`InvalidActionInputsError`,this.validationErrors=n}},Ye=class extends B{constructor(e,t){super(`INVALID_CURSOR_ERROR`,e,t),this.name=`InvalidCursorError`}};const Xe=(e,t)=>{let n=Object.keys(e.authentication??{}).map(t=>({type:`custom`,label:e.authentication?.[t].production?.label||`Custom`,key:t})),r=Object.values(e?.actions??{}).map(e=>({id:e.id,description:e.description.replace(/\b\w/g,e=>e.toUpperCase()),label:e.label.replace(/\b\w/g,e=>e.toUpperCase()),schema_type:e.schemaType,tags:e.tags,authentication:n,action_details:t?.includes(`action_details`)?e:void 0}));return{version:e.version,name:e.title,key:e.key,icon:e.assets?.icon,description:e.description,authentication:n,actions:r}},Ze=(e,t)=>e.map(e=>Xe(e,t)),Qe=async({block:e,stepFunctionName:t,params:n,buildStepFunction:r=f.StepFunctionsFactory.build})=>{let i=r({functionName:t}).fn,a=await i({block:e,params:n}),o=t===f.StepFunctionName.MAP_FIELDS?{[f.StepFunctionName.MAP_FIELDS.toString()]:{output:{data:a.block.result},errors:a.errors,successful:a.successful}}:{};return{...a.block,steps:{...a?.block?.steps??{},...o}}};var U;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(U||={});var $e;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})($e||={});const et=U.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),tt=U.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]);var W=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r],a=r===i.path.length-1;a?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(t){if(!(t instanceof e))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,U.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};W.create=e=>{let t=new W(e);return t};const G=({category:e,connectorKey:t,connectorVersion:n,authConfigKey:r,environment:i=`production`,action:a,accountSecureId:o,projectSecureId:s,organizationId:l})=>({organizationId:l,projectSecureId:s,accountSecureId:o,connectorKey:t,connectorVersion:n,category:e,service:``,resource:``,schema:a?.schema?.key,actionType:a?.actionType??`unknown`,authenticationType:r,environment:i,actionRunId:(0,c.generateActionRunId)()}),nt=(e,t,n)=>e.authentication?.[t]?.[n]?.testActions,rt=e=>{let t=e.action?.compositeIdentifiers,n={...e.inputs??{}};if(!t?.enabled||(0,c.isMissing)(n))return e;let r=t.fields?.reduce((e,t)=>(t.components.forEach(t=>{t.alias&&(e[t.name]=t.alias)}),e),{}),i={version:t.version??f.COMPOSITE_ID_LATEST_VERSION,aliases:r};return K(n,i,e.logger),{...e,inputs:n}},K=(e,t,n)=>{for(let r in e){let i=e[r];if(typeof i==`string`||Array.isArray(i)&&i.every(e=>typeof e==`string`))lt(i,r,e,t,n);else if(Array.isArray(i))for(let e of i)K(e,t,n);else typeof i==`object`&&i&&K(i,t,n)}},it=(e,t,n,r)=>{let i=[],a=[];for(let o of e)try{let e=(0,f.decodeCompositeId)(o,n);i.push(e)}catch(e){r?.debug({message:`Received ${t} with invalid composite ID, assuming it is not a composite ID`,category:`processCompositeId`,context:{key:t,inputElement:o,compositeIdentifierConfig:n,error:e}}),a.push(o)}return{compositeIdComponents:i,nonCompositeIds:a}},at=(e,t,n,r)=>{let i=n.filter(e=>Object.keys(e).length>1);i.length>0&&(e.decoded_ids={...e.decoded_ids??{},[t]:r?i:i[0]})},ot=e=>{let t=Object.values(e);return t.length===1&&(typeof t[0]==`string`||typeof t[0]==`number`)},st=(e,t,n,r,i)=>{n.every(ot)&&(i?e[t]=[...n.map(e=>Object.values(e)[0]),...r]:n.length>0&&(e[t]=Object.values(n[0])[0]))},ct=(e,t,n)=>{e instanceof f.CoreError&&e.type===`COMPOSITE_ID_MISSING_HEADER_ERROR`?n?.debug({message:`Received ${t} with no composite ID header, assuming it is not a composite ID`}):n?.warning({message:`Error processing composite ID for ${t}, ignoring it`,error:e})},lt=(e,t,n,r,i)=>{try{let a=Array.isArray(e),o=a?e:[e];if(o.length===0)return;let{compositeIdComponents:s,nonCompositeIds:c}=it(o,t,r,i);at(n,t,s,a),st(n,t,s,c,a)}catch(e){ct(e,t,i)}},q=`remote_`,ut=e=>{let t=e.action?.compositeIdentifiers;if(!t?.enabled)return e;let n=`data`,r=e.outputs?.[n];if((0,c.isMissing)(r))return e;let i=Array.isArray(r)?r.map(e=>dt(e,t)):dt(r,t);return{...e,outputs:{...e.outputs??{},[n]:i}}},dt=(e,t)=>{let n=ft(e,t),r=J(n);return{...e,...(0,c.isObject)(r)?r:{}}},ft=(e,t)=>{let n=t.version??f.COMPOSITE_ID_LATEST_VERSION,r={};return t.fields?.forEach(t=>{let i={},a=[];t.components.forEach(t=>{t.alias&&(i[t.name]=t.alias),a.push({key:t.name,value:e[t.name]})});let o=a.length===1?a[0]:{identifiers:a},s={version:n,aliases:Object.keys(i).length>0?i:void 0},c=(0,f.encodeCompositeId)(o,s);r[t.targetFieldKey]=c,t.remote&&(r[`${q}${t.remote}`]=e[t.remote])}),{...e,...r}},pt=e=>e===`id`||/.+_id(s)?$/.test(e),mt=e=>Array.isArray(e)&&e.every(e=>(0,c.isString)(e)&&e.length>0),ht=(e,t)=>(0,f.isCompositeId)(e)||t.startsWith(q),gt=(e,t)=>{try{return(0,f.encodeCompositeId)({key:e,value:t},{version:f.COMPOSITE_ID_LATEST_VERSION})}catch{return t}},_t=(e,t,n)=>{let r=t.map(t=>(0,c.isString)(t)&&t.length>0&&!(0,f.isCompositeId)(t)?gt(e,t):t);n[e]=r,n[`${q}${e}`]=t},vt=(e,t,n)=>{if(ht(t,e))return;let r=(0,f.encodeCompositeId)({key:e,value:t},{version:f.COMPOSITE_ID_LATEST_VERSION});n[e]=r,n[`remote_${e}`]=t},yt=(e,t,n)=>{mt(t)?_t(e,t,n):(0,c.isString)(t)&&t.length>0&&vt(e,t,n)},J=e=>{if(Array.isArray(e))return e.map(e=>J(e));if(!(0,c.isObject)(e))return e;let t={...e};for(let[n,r]of Object.entries(e))((0,c.isObject)(r)||Array.isArray(r)&&r.length>0&&(0,c.isObject)(r[0]))&&(t[n]=J(r)),pt(n)&&yt(n,r,t);return t},bt=(e,t)=>{let n=Number(e.inputs?.page_size),r=(0,c.notMissing)(e.inputs?.page_size)&&(0,c.isNumber)(n)&&!Number.isNaN(n)?n:e.action?.cursor?.pageSize??t;return r},xt=(e,t,n,r)=>{let i=(0,c.isMissing)(e)?void 0:e.data,a=Object.keys(n).length+1,o=(0,f.isCursorEmpty)({cursor:r,ignoreStepIndex:a});if(!(0,c.isObject)(e)||(0,c.isMissing)(i)||(i?.length??0)<=t)return{result:e,next:(0,c.notMissing)(r)&&!o?(0,f.minifyCursor)(r):null};let s=r?.remote?.[a]?.pageNumber??1,l=(s-1)*t,u=l+t,d=i.slice(l,u),p=i.length>u||!o,m=(0,f.updateCursor)({cursor:r,stepIndex:a,pageNumber:s+1});return{result:{...e,data:d},next:p?(0,f.minifyCursor)(m):null}},St=e=>{let t=e.settings?.olap;return(0,c.isMissing)(t)?{}:{logs:t.logs?{enabled:t.logs.enabled}:void 0,advanced:t.advanced?{enabled:t.advanced.enabled,ttl:t.advanced.ttl,errorsOnly:t.advanced.errorsOnly}:void 0}},Y=async({block:e,buildStepFunction:t=f.StepFunctionsFactory.build,virtualPaginateResultFn:n=xt,encodeResultCompositeIds:r=ut,decodeInputCompositeIds:i=rt})=>{let a=i(e),o=await Ot({block:a,buildStepFunction:t,virtualPaginateResultFn:n});return r(o)},Ct=(e,t)=>e.condition?!(0,h.safeEvaluate)(e.condition,t):!1,wt=(e,t,n)=>{let r=e.stepFunction,i=f.StepFunctionsRegistry[e.stepFunction.functionName]?.[`v${e.stepFunction.version??1}`],a=(0,c.notMissing)(i?.inputSchema?.shape)?`cursor`in i?.inputSchema?.shape:!1;return t.action?.cursor.enabled&&a?{...r.params??{},cursor:{token:t.nextCursor?.remote?.[n]?.providerPageCursor,position:t.nextCursor?.remote?.[n]?.position}}:r.params??{}},Tt=(e,t,n,r,i)=>{let a=X({block:e,stepId:t,successful:!1,functionOutput:n}),o=r.ignoreError??!1;return o||(i.hasFatalError=!0,i.errorStatusCode??=n.output?.statusCode??500),a},Et=async(e,t,n,r,i,a)=>{let o=n[e],s=o.stepFunction,c=a.buildStepFunction({functionName:s.functionName,version:s.version,validateSchemas:!0}).fn;if(Ct(o,r))return X({block:r,stepId:e,successful:!0,skipped:!0,message:`Step skipped due to condition not met.`});if(i.hasFatalError)return X({block:r,stepId:e,successful:!1,skipped:!0,message:`Step skipped due to previous error.`});let l=wt(o,r,t),u=await c({block:r,params:l});if(u.successful===!1)return Tt(r,e,u,o,i);let d=r.action?.cursor.enabled?(0,f.updateCursor)({cursor:r.nextCursor,stepIndex:t,providerPageCursor:u.output?.next,position:u.output?.position}):void 0;return X({block:{...u.block,nextCursor:d},stepId:e,functionOutput:u})},Dt=(e,t,n,r,i)=>{let a=!n.hasFatalError,o=a?e.action?.responses.success.statusCode??200:n.errorStatusCode??500,s=(0,c.notMissing)(i)&&(0,c.isObject)(i.result)?{next:i.next,...i.result}:r;return{...t,outputs:s,response:{successful:a,statusCode:o,message:a?void 0:e.action?.responses?.errors?.[o]?.description??p.HttpErrorMessages?.[o]??`Error while processing the request`}}},Ot=async({block:e,buildStepFunction:t=f.StepFunctionsFactory.build,virtualPaginateResultFn:n=xt})=>{let r=e.action?.steps||{},i={...e},a=Object.keys(r),o=bt(e,k),s={hasFatalError:!1,errorStatusCode:null},c={block:e,buildStepFunction:t,virtualPaginateResultFn:n};for(let[e,t]of a.entries()){let n=new Date;i=await Et(t,e,r,i,s,c),At({block:i,stepId:t,startTime:n,endTime:new Date})}let l=e.action?.result?kt(e.action.result,i):void 0,u=e.action?.cursor.enabled?n(l,o,r,i.nextCursor):void 0;return Dt(e,i,s,l,u)},kt=(e,t)=>(0,c.isObject)(e)?(0,h.safeEvaluateRecord)(e,t):(0,h.safeEvaluate)(e,t),X=({block:e,stepId:t,successful:n,functionOutput:r,skipped:i,message:a})=>({...e,steps:{...e.steps,[t]:{successful:n??r?.successful??!1,errors:r?.errors,output:r?.output,skipped:i,message:a}}}),At=({block:e,stepId:t,startTime:n,endTime:r})=>{let i=e.olapClient;if((0,c.isMissing)(i?.recordStep))return;let a=St(e),o=e.context,s={actionRunId:o.actionRunId??`unknown`,stepId:t,status:e.steps?.[t]?.successful?`successful`:`failed`,skipped:e.steps?.[t]?.skipped,message:e.steps?.[t]?.message,outputs:e.steps?.[t]?.output,errors:e.steps?.[t]?.errors,startTime:n,endTime:r};i.recordStep(s,a)},Z=async e=>{let{pathParams:t={},queryParams:n={},body:r={},headers:i={},parseConnector:a=F,parseActionInputsFn:o=L,createBlockContextFn:s=G,createBlockFn:l=g,runStepActionFn:u=Y,getActionFromUrlFn:d=_,getActionForRefreshAuthenticationFn:f=z,getTestActionsFn:p=nt,mode:m,account:v,connector:y,getHttpClient:b,getOlapClient:te,settings:x,logger:S,category:ne,...C}=e,w=v.authConfigKey,T=v.environment??`production`,E=v.secureId,D=v.projectSecureId,re=v.organizationId,O=v.credentials,k=s({category:ne??`action`,connectorKey:v.providerKey,connectorVersion:v.providerVersion,authConfigKey:w,environment:T,accountSecureId:E,projectSecureId:D,organizationId:re}),A=new Date,j;try{j=(0,c.isString)(y)?a(y):y}catch{throw new Je(k,`Error while parsing connector`)}let M={connector:j,context:k,credentials:O,settings:x,logger:S,getHttpClient:b,getOlapClient:te};if(m===`action_id`){let{actionId:e}=C,a=ee(j,e);if((0,c.isMissing)(a))throw new V(k,`No matching action found`);let s=await Q({action:a,blockContext:k,queryParams:n,pathParams:t,body:r,headers:i,parseActionInputsFn:o,createBlockFn:l,createBlockParams:M,runStepActionFn:u});return s.statistics={startTime:A,endTime:new Date},$({block:s}),s}else if(m===`test_actions`){let e=p(j,w,T);if((0,c.isMissing)(e)||e.length===0){let e=await jt(l,M);return e.statistics={startTime:A,endTime:new Date},$({block:e}),e}k.actionType=`test`;for(let t of e){let e=await l({...M,inputs:void 0,action:t.action,nextCursor:void 0}),n=(0,c.notMissing)(t.condition)?(0,h.evaluate)(t.condition,e):!0;if(!n)continue;let r=await u({block:e});if(((0,c.isMissing)(r?.response?.successful)||!r.response.successful)&&t.required){S?.error({code:`TestActionFailed`,message:`Test action "${t.action.id}" failed with error: ${r?.response?.message}`});let e=await Mt(l,M);return $({block:e}),e}}let t=await jt(l,M);return t.statistics={startTime:A,endTime:new Date},$({block:t}),t}else if(m===`refresh_authentication`){let e=f(j,w,T);if((0,c.isMissing)(e))throw new V(k,`No matching action found`);let t=await Q({action:e.action,blockContext:k,queryParams:n,pathParams:e.params,body:r,headers:i,parseActionInputsFn:o,createBlockFn:l,createBlockParams:M,runStepActionFn:u});return t.statistics={startTime:A,endTime:new Date},$({block:t}),t}else if(m===`path`){let{path:e,method:t}=C,a=d(j,e,t);if((0,c.isMissing)(a))throw new V(k,`No matching action found`);let s=await Q({action:a.action,blockContext:k,queryParams:n,pathParams:a.params,body:r,headers:i,parseActionInputsFn:o,createBlockFn:l,createBlockParams:M,runStepActionFn:u});return s.statistics={startTime:A,endTime:new Date},$({block:s}),s}else{let e=await Mt(l,M);return e.statistics={startTime:A,endTime:new Date},$({block:e}),e}},Q=async e=>{let{action:t,blockContext:n,queryParams:r,pathParams:i,body:a,headers:o,parseActionInputsFn:s,createBlockFn:c,createBlockParams:l,runStepActionFn:u}=e;n.actionType=t.actionType,n.schema=t.schema?.key;let d=Nt(r,n),f;try{f=s(t,{path:i,query:r,body:a,headers:o})}catch(e){if(e instanceof W){let t=e.issues.map(e=>{let t=e.path.map(String),n=t[0]||`body`,r=t.slice(1).join(`.`);return{field:r||t[0]||`unknown`,location:n,expected:`expected`in e?String(e.expected):e.code,received:`received`in e?String(e.received):`unknown`,message:e.message}});throw new H(n,`Invalid input values provided`,t)}throw new H(n,`Error while parsing action inputs`)}let p=await c({...l,inputs:f,action:t,nextCursor:d});return await u({block:p})},jt=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!0,statusCode:200}}},Mt=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!1,statusCode:500}}},Nt=(e,t)=>{let n=e?.next,r=(0,c.notMissing)(n)&&t.actionType===`list`?(0,f.expandCursor)(n):void 0;if(r===null)throw new Ye(t,`Invalid cursor.`);return r},$=({block:e})=>{let t=e.olapClient;if((0,c.isMissing)(t?.recordAction))return;let n=St(e),r=e.context,i={actionRunId:e.context.actionRunId||`unknown`,actionId:e.action?.id||`unknown`,connectorKey:r.connectorKey,connectorVersion:r.connectorVersion,actionType:r.actionType,category:r.category,organizationId:r.organizationId||`unknown`,projectSecureId:r.projectSecureId,accountSecureId:r.accountSecureId,originOwnerId:r.originOwnerId,originOwnerName:r.originOwnerName,httpMethod:e.action?.entrypointHttpMethod,url:e.action?.entrypointUrl,sourceId:r.sourceId,sourceType:r.sourceType,sourceValue:r.sourceValue,status:e.response?.successful?`success`:`error`,message:e.response?.message,outputs:e.outputs,startTime:e.statistics?.startTime,endTime:e.statistics?.endTime};t.recordAction(i,n)},Pt=async({actionId:e,account:t,connector:n,pathParams:r={},queryParams:i={},body:a={},headers:o={},logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u=F,parseActionInputsFn:d=L,createBlockContextFn:f=G,createBlockFn:p=g,runStepActionFn:m=Y})=>Z({mode:`action_id`,actionId:e,account:t,connector:n,pathParams:r,queryParams:i,body:a,headers:o,logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u,parseActionInputsFn:d,createBlockContextFn:f,createBlockFn:p,runStepActionFn:m}),Ft=`stackone://internal//`,It=`${Ft}refresh_token`,Lt=async({account:e,connector:t,category:n,path:r,method:i=`get`,queryParams:a={},body:o,headers:s,logger:c,getHttpClient:l,parseConnector:u=F,getActionFromUrlFn:d=_,getActionForRefreshAuthenticationFn:f=z,parseActionInputsFn:p=L,createBlockContextFn:m=G,createBlockFn:h=g,runStepActionFn:v=Y})=>{let y=Rt(r),b=y?await Z({mode:`refresh_authentication`,account:e,connector:t,getActionForRefreshAuthenticationFn:f,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:v}):await Z({mode:`path`,account:e,category:n,connector:t,path:r,method:i,queryParams:a,body:o,headers:s,getActionFromUrlFn:d,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:v});return b},Rt=e=>e===It,zt=async({account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i=F,getTestActionsFn:a=nt,createBlockContextFn:o=G,createBlockFn:s=g,runStepActionFn:c=Y})=>{let l=await Z({mode:`test_actions`,account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i,getTestActionsFn:a,createBlockContextFn:o,createBlockFn:s,runStepActionFn:c});return l?.response?.successful??!1};exports.ConnectSDKError=B,exports.InvalidActionInputsError=H,exports.applyReleaseStageToConnector=He,exports.createBlock=g,exports.executeStepFunction=Qe,exports.formatValidationErrorResponse=A,exports.getActionFromUrl=_,exports.getActionsMeta=Xe,exports.getActionsMetaFromConnectors=Ze,exports.getRefreshTokenExpiresIn=Be,exports.getTokenExpiresIn=ze,exports.isConnectorReleased=Ve,exports.loadConnector=te,exports.parseActionInputs=L,exports.parseYamlConnector=F,exports.runAction=Z,exports.runConnectorActionById=Pt,exports.runConnectorActionByPath=Lt,exports.runStepAction=Y,exports.runTestActions=zt,exports.supportsRefreshAuthentication=Re,exports.validateYamlConnector=Ge;
|
|
2
|
+
`),r=ne(n,(0,d.dirname)(e));return r.join(`
|
|
3
|
+
`)}catch(e){throw Error(`Failed to process YAML file: ${e.message}`)}},ne=(e,t)=>{let n=[];for(let r of e)if(x(r)){let e=r.match(/^(\s*)/)?.[1]?.length||0,i=r.split(`:`)[1]?.trim(),a=re(i,t),o=a.map(t=>` `.repeat(e)+t);n.push(...o)}else n.push(r);return n},x=e=>e.includes(`$ref:`),re=(e,t)=>{let n=(0,d.resolve)((0,d.join)(t,`${e.replaceAll(`'`,``)}.s1.partial.yaml`));try{let e=(0,u.readFileSync)(n,`utf8`);return e.split(`
|
|
4
|
+
`).filter(e=>e.trim()!==``)}catch(t){throw Error(`Failed to load partial file '${e}': ${t.message}`)}};var S=class e extends Error{errorType;constructor(t,n){super(n),this.name=`InternalConnectSDKError`,this.errorType=t,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},C=class extends S{line;constructor(e,t){super(`INVALID_YAML_FILE_ERROR`,t),this.name=`InvalidYamlFileError`,this.line=e??1}},w=class extends S{issues;constructor(e,t){super(`SCHEMA_VALIDATION_ERROR`,t),this.name=`SchemaValidationError`,this.issues=e}},T=class extends S{actionId;stepId;functionName;functionVersion;constructor(e,t,n,r=`1`){let i=`Invalid Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the function name and version are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION`,i),this.name=`InvalidStepFunctionError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r}},E=class extends S{actionId;stepId;functionName;functionVersion;issues;constructor(e,t,n,r=`1`,i){let a=`Invalid parameters for Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the parameters are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION_PARAMS`,a),this.name=`InvalidStepFunctionParamsError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r,this.issues=i,this.message=a}},ie=class extends S{actionId;exampleIndex;issues;constructor(e,t,n){let r=n.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`, `),i=`Invalid example ${t} for action '${e}': ${r}`;super(`INVALID_ACTION_EXAMPLE`,i),this.name=`InvalidActionExampleError`,this.actionId=e,this.exampleIndex=t,this.issues=n}},ae=class extends S{actionId;inputName;enumRef;constructor(e,t,n){let r=`Invalid enum reference "${n}" in action "${e}", input "${t}". Check that the enum is defined in INPUT_ENUM_REGISTRY.`;super(`INVALID_ENUM_REFERENCE`,r),this.name=`InvalidEnumReferenceError`,this.actionId=e,this.inputName=t,this.enumRef=n}},D=class extends S{issues;constructor(e){let t=`Missing scope definition. Check that the scope is defined in the scope definitions.`;super(`MISSING_SCOPE_DEFINITION`,t),this.name=`MissingScopeDefinitionError`,this.issues=e}};const O=25,k=e=>({statusCode:400,message:`Invalid request - validation failed`,errors:e.map(e=>({property:e.field,location:e.location,expected:e.expected,received:e.received,message:e.message}))}),A=e=>{switch(e){case`list`:return{statusCode:200,description:`The list of records was retrieved.`};case`get`:return{statusCode:200,description:`The record with the given identifier was retrieved.`};case`create`:return{statusCode:201,description:`The record was created successfully.`};case`update`:return{statusCode:200,description:`The record was updated successfully.`};case`delete`:return{statusCode:204,description:`The record was deleted successfully.`};case`custom`:return{statusCode:200,description:`The action was executed successfully.`};case`refresh_token`:return{statusCode:200,description:`The refresh token action was executed successfully.`};case`unknown`:return{statusCode:200};default:throw Error(`Unknown action type: ${e}`)}},oe=()=>{let e={400:{statusCode:400,description:`Invalid request.`},401:{statusCode:401,description:`Unauthorized access.`},403:{statusCode:403,description:`Forbidden.`},404:{statusCode:404,description:`Resource not found.`},500:{statusCode:500,description:`Server error while executing the request.`}};return e},se={key:c.z.string(),label:c.z.string(),required:c.z.boolean().optional().default(!1),secret:c.z.boolean().optional().default(!1),readOnly:c.z.boolean().optional().default(!1),placeholder:c.z.string().optional(),description:c.z.string().optional(),tooltip:c.z.string().optional()},ce=c.z.discriminatedUnion(`type`,[(0,c.zStrictObject)({...se,type:c.z.enum([`text`,`password`])}),(0,c.zStrictObject)({...se,type:c.z.literal(`select`),options:(0,c.zStrictObject)({value:c.z.string(),label:c.z.string()}).array()})]),j=(0,c.zStrictObject)({targetFieldKey:c.z.string(),alias:c.z.string().optional(),expression:c.z.string().optional(),values:c.z.unknown().optional(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:c.z.boolean().default(!1),custom:c.z.boolean().default(!1),hidden:c.z.boolean().default(!1),enumMapper:(0,c.zStrictObject)({matcher:c.z.enum([`country_alpha2code_by_alpha2code`,`country_alpha3code_by_alpha3code`,`country_code_by_country_code`,`country_name_by_country_name`,`country_name_by_alpha3code`,`country_name_by_alpha2code`,`country_name_by_country_code`,`country_alpha3code_by_alpha2code`,`country_alpha3code_by_country_name`,`country_alpha3code_by_country_code`,`country_alpha2code_by_alpha3code`,`country_alpha2code_by_country_name`,`country_alpha2code_by_country_code`,`country_code_by_alpha2code`,`country_code_by_alpha3code`,`country_code_by_country_name`,`country_subdivisions_by_alpha2code`,`country_subdivision_code_by_subdivision_name`,`country_alpha2code_by_citizenship`,`country_subdivision_name_by_subdivision_code`,`document_file_format_from_extension`]).or((0,c.zStrictObject)({matchExpression:c.z.string(),value:c.z.string()}).array())}).optional(),properties:c.z.lazy(()=>j).array().optional(),requiredScopes:c.z.string().optional()}),le=c.z.union([(0,c.zStrictObject)({values:c.z.string().array().min(1)}),(0,c.zStrictObject)({ref:c.z.string()})]),M=(0,c.zStrictObject)({name:c.z.string(),type:c.z.enum([`string`,`number`,`boolean`,`datetime_string`,`object`,`enum`]),required:c.z.boolean(),description:c.z.string(),array:c.z.boolean().optional().default(!1),in:c.z.enum([`body`,`query`,`path`,`headers`]),properties:c.z.lazy(()=>M.omit({in:!0})).array().optional(),oneOf:le.optional()}).refine(e=>e.type!==`enum`||e.oneOf!==void 0,{message:`oneOf is required when type is 'enum'`}).refine(e=>e.type===`enum`||e.oneOf===void 0,{message:`oneOf is only allowed when type is 'enum'`}),N=(0,c.zStrictObject)({actionId:c.z.string(),categories:c.z.string().array(),actionType:c.z.enum([`list`,`get`,`create`,`update`,`delete`,`custom`,`refresh_token`,`unknown`]),schema:c.z.string().optional(),schemaType:c.z.enum([`native`,`unified`]).optional().default(`native`),entrypointUrl:c.z.string().optional(),entrypointHttpMethod:c.z.string().optional(),label:c.z.string(),description:c.z.string(),details:c.z.string().optional(),examples:c.z.record(c.z.string(),c.z.unknown()).array().optional(),tags:c.z.string().array().optional(),releaseStage:c.z.enum(f.ReleaseStages).optional(),resources:c.z.string().optional(),responses:(0,c.zStrictObject)({statusCode:c.z.number(),description:c.z.string()}).array().optional(),requiredScopes:c.z.string().optional(),inputs:M.array().optional(),cursor:(0,c.zStrictObject)({enabled:c.z.boolean(),pageSize:c.z.number()}).optional(),compositeIdentifiers:(0,c.zStrictObject)({enabled:c.z.boolean(),version:c.z.number().optional(),fields:(0,c.zStrictObject)({targetFieldKey:c.z.string(),remote:c.z.string().optional(),components:c.z.string().array()}).array().optional()}).optional(),scheduledJobs:(0,c.zStrictObject)({enabled:c.z.boolean(),type:c.z.enum([`data_sync`]),schedule:c.z.string(),description:c.z.string(),requestParams:(0,c.zStrictObject)({fields:c.z.string().array().optional(),expand:c.z.string().array().optional(),filter:c.z.record(c.z.string(),c.z.string()).optional()}).optional(),syncFilter:(0,c.zStrictObject)({name:c.z.enum([`updated_after`,`created_after`]),initialLoopbackPeriod:c.z.string(),incrementalLoopbackPeriod:c.z.string()}).optional()}).array().optional(),fieldConfigs:j.array().optional(),steps:(0,c.zStrictObject)({stepId:c.z.string(),description:c.z.string(),stepFunction:(0,c.zStrictObject)({functionName:c.z.string(),version:c.z.string().optional(),parameters:c.z.record(c.z.string(),c.z.unknown())}),condition:c.z.string().optional(),ignoreError:c.z.boolean().optional()}).array(),result:c.z.string().or(c.z.record(c.z.string(),c.z.unknown())).optional()}),ue=(0,c.zStrictObject)({schedule:c.z.string().optional(),action:N.extend({actionType:c.z.literal(`refresh_token`)})}),de=(0,c.zStrictObject)({mainRatelimit:c.z.number(),subPools:c.z.array((0,c.zStrictObject)({subPoolKey:c.z.string(),urlPattern:c.z.string(),rateLimit:c.z.number()})).optional(),mappedRateLimitErrors:c.z.array((0,c.zStrictObject)({errorStatus:c.z.number(),errorMessage:c.z.string(),errorMessagePath:c.z.string().optional(),retryAfterPath:c.z.string().optional(),retryAfterUnit:c.z.union([c.z.literal(`seconds`),c.z.literal(`milliseconds`),c.z.literal(`date`)]).optional(),retryAfterValue:c.z.number().optional()})).optional()}),fe=(0,c.zStrictObject)({mainMaxConcurrency:c.z.number(),subPools:c.z.array((0,c.zStrictObject)({subPoolKey:c.z.string(),urlPattern:c.z.string(),maxConcurrency:c.z.number()})).optional()}),P=(0,c.zStrictObject)({label:c.z.string(),authorization:f.AUTHORIZATION_SCHEMA,requiredScopes:c.z.string().optional(),environments:(0,c.zStrictObject)({key:c.z.string(),name:c.z.string()}).array(),support:(0,c.zStrictObject)({link:c.z.string().optional(),description:c.z.string().optional()}).optional(),configFields:ce.array().optional(),setupFields:ce.array().optional(),refreshAuthentication:ue.optional(),testActions:(0,c.zStrictObject)({action:c.z.string().or(N),condition:c.z.string().optional(),required:c.z.boolean().default(!0)}).array().optional()}),pe=P.extend({type:c.z.literal(`oauth2`),grantType:c.z.enum([`authorization_code`,`client_credentials`]).default(`authorization_code`)}),me=P.extend({type:c.z.literal(`custom`)}),he=P.extend({type:c.z.literal(`oidc`)}),ge=c.z.discriminatedUnion(`type`,[pe,me,he]),_e=(0,c.zStrictObject)({StackOne:c.z.string(),info:(0,c.zStrictObject)({title:c.z.string(),version:c.z.string(),key:c.z.string(),assets:(0,c.zStrictObject)({icon:c.z.string()}),description:c.z.string(),details:c.z.string().optional()}),resources:c.z.string().optional(),baseUrl:c.z.string(),scopeDefinitions:c.z.record(c.z.string(),(0,c.zStrictObject)({description:c.z.string(),includes:c.z.string().optional()})).optional(),authentication:c.z.record(c.z.string(),ge).array().optional(),actions:N.array().optional(),rateLimit:de.optional(),concurrency:fe.optional(),releaseStage:c.z.enum(f.ReleaseStages).optional()}).strict();function F(e){try{let t=(0,m.parse)(e),n=ze(_e,t),r=ve(n.scopeDefinitions),i={title:n.info.title,version:n.info.version,key:n.info.key,assets:n.info.assets,description:n.info.description,details:n.info.details,resources:n.resources,rateLimit:n.rateLimit,concurrency:n.concurrency,releaseStage:n.releaseStage,scopeDefinitions:r},a=Se(n),o={baseUrl:n.baseUrl,authentication:ye(a)},s=Oe(n,o);return i.actions=s,be(n,n.info.key,a,s,o),i.authentication=a,(0,c.notMissing)(s)&&(i.categories=xe(Object.values(s))),i}catch(e){if(e instanceof S)throw e;let t=e.message,n=t.match(/at line (\d+)/),r=n?parseInt(n[1],10):1;throw new C(r,t)}}const ve=e=>{if(!e)return;let t={};for(let[n,r]of Object.entries(e)){let e=r?.includes?.split(` `).filter(e=>e.trim().length>0)??void 0;t[n]={name:n,description:r.description,includes:e}}let n=new Set(Object.keys(t)),r=[];if(Object.values(t).forEach(e=>{e.includes&&e.includes.forEach(t=>{n.has(t)||r.push({message:`Scope '${t}' included in scope '${e.name}' is not defined.`,path:[`scopeDefinitions`,e.name],keys:[`includes`]})})}),r.length>0)throw new D(r);return t},ye=e=>{let t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`){let{setupFields:e,configFields:i,support:a,refreshAuthentication:o,testActions:s,requiredScopes:c,...l}=r;t[n]=ye(l)}else t[n]=r;return t},be=(e,t,n,r,i)=>{if(!n||!r)return;let a=0;for(let o of Object.values(n)){for(let n of Object.values(o)){let o=n.testActions;n.testActions=o?.map((n,o)=>{if((0,c.notMissing)(n.action))if(typeof n.action==`string`){let e=b(t,n.action),i=Object.values(r).find(t=>t.id===e);if(i)return{...n,action:i}}else{let r=[`authentication`,a,`testActions`,o],s=b(t,n.action.actionId),c=I(e,r,s,n.action,i);return{...n,action:c}}return n})}a++}},xe=e=>{let t=e.reduce((e,t)=>{for(let n of t.categories)e.add(n);return e},new Set);return Array.from(t)},Se=e=>{let t={},n=new Set(Object.keys(e.scopeDefinitions||{})),r=[];for(let[i,a]of(e.authentication??[]).entries()){let[o]=Object.keys(a),s=a[o].environments.reduce((t,s)=>{let{key:l,name:u}=s,{environments:d,refreshAuthentication:f,testActions:p,requiredScopes:m,...h}=a[o],g=m?m.split(` `).filter(e=>e.trim().length>0):void 0;Object.values(g??[]).forEach(e=>{n.has(e)||r.push({message:`Scope '${e}' included in authentication '${o}' is not defined.`,path:[`authentication`,i],keys:[`requiredScopes`]})});let _=(0,c.notMissing)(f)?{schedule:f.schedule,action:I(e,[`authentication`,i,`refreshAuthentication`,`action`],b(e.info.key,f.action.actionId),f.action)}:void 0;return t[l]={...h,refreshAuthentication:_,requiredScopes:g,envKey:l,envName:u,testActions:p},t},{});t[o]=s}if(r.length>0)throw new D(r);return t},Ce=e=>e.entrypointUrl&&e.entrypointHttpMethod?`${e.entrypointHttpMethod.toUpperCase()} ${e.entrypointUrl}`:void 0,we=e=>e.actionType===`list`?`GET /${e.schema}`:`GET /${e.schema}/:id`,Te=e=>{if(e.actionType!==`refresh_token`)return e.entrypointHttpMethod??`get`},Ee=e=>{if(!(e.actionType===`refresh_token`||(0,c.isMissing)(e.schema)))return e.actionType===`list`?`/${e.schema}`:`/${e.schema}/:id`},De=e=>{let t={success:A(e.actionType),errors:oe()},n=e.responses?.reduce((e,t)=>{let n=(0,p.isSuccessStatusCode)(t.statusCode);return n?e.success={statusCode:t.statusCode,description:t.description}:e.errors[t.statusCode]={statusCode:t.statusCode,description:t.description},e},t);return n??t},Oe=(e,t)=>{let n=e.actions?.reduce((n,r,i)=>{let a=Ce(r),o=we(r),s=a??o,c=b(e.info.key,r.actionId);return n[c]=I(e,[`actions`,i],c,r,t,s),n},{});return n},ke=(e,t)=>{if(t){for(let n of t)if(n.type===`enum`&&n.oneOf&&`ref`in n.oneOf&&!(0,f.isValidEnumRef)(n.oneOf.ref))throw new ae(e,n.name,n.oneOf.ref)}},Ae=(e,t,n)=>{if(!t||t.length===0)return;let r={};for(let e of n){let t=R(e);e.required||(t=t.optional()),r[e.name]=t}let i=c.z.object(r).strict();for(let n=0;n<t.length;n++){let r=t[n],{description:a,...o}=r,s=i.safeParse(o);if(!s.success){let t=s.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:[]}));throw new ie(e,n,t)}}},I=(e,t,n,r,i,a)=>{let o=Ee(r),s=De(r),c=Fe(r),l=r.inputs||[];c.enabled&&(l?.push({type:`string`,name:`page_size`,in:`query`,required:!1,description:`Number of items to return per page`,array:!1}),l?.push({type:`string`,name:`next`,in:`query`,required:!1,description:`Token for the next page of results`,array:!1})),ke(n,l),Ae(n,r.examples,l);let u=Te(r),d=new Set(Object.keys(e.scopeDefinitions||{})),f=[],p=r.requiredScopes?r.requiredScopes.split(` `).filter(e=>e.trim().length>0):void 0;if(Object.values(p??[]).forEach(e=>{d.has(e)||f.push({message:`Scope '${e}' included in action '${r.actionId}' is not defined.`,path:t,keys:[`requiredScopes`]})}),f.length>0)throw new D(f);return{id:n,categories:r.categories,label:r.label,description:r.description,details:r.details,examples:r.examples,actionType:r.actionType,schemaType:r.schemaType??`native`,entrypointUrl:r.entrypointUrl??o,entrypointHttpMethod:u,endpoint:a,tags:r.tags,releaseStage:r.releaseStage,resources:r.resources,responses:s,cursor:c,compositeIdentifiers:Ie(r),scheduledJobs:Le(r),requiredScopes:p,inputs:l,steps:r.steps.reduce((n,a)=>{let{customErrors:o,...s}=a.stepFunction.parameters??{},c=a.stepFunction.functionName===`map_fields`||a.stepFunction.functionName===`typecast`?s.fields??r.fieldConfigs:void 0,l=je(e,t,c),u={id:a.stepId,description:a.description,condition:a.condition,ignoreError:a.ignoreError,stepFunction:{functionName:a.stepFunction.functionName,version:a.stepFunction.version,params:{...Re({stepFunctionName:a.stepFunction.functionName,baseRequestParams:i,customErrors:o}),...l??{},...s}}};return Me(r.actionId,u),n[a.stepId]=u,n},{}),result:r.result}},je=(e,t,n)=>{if((0,c.isMissing)(n)||!Array.isArray(n))return;let r=new Set(Object.keys(e.scopeDefinitions||{})),i=[],a=n.map((e,n)=>{if(typeof e!=`object`||!e)return;let a=e.requiredScopes?e.requiredScopes.split(` `).filter(e=>e.trim().length>0):void 0;return Object.values(a??[]).forEach(a=>{r.has(a)||i.push({message:`Scope '${a}' included in field config '${e.targetFieldKey}' is not defined.`,path:[...t,`fieldConfigs`,n],keys:[`requiredScopes`]})}),{...e,requiredScopes:a}});if(i.length>0)throw new D(i);return{fields:a}},Me=(e,t)=>{let n=t.stepFunction.version??`1`,r=f.StepFunctionsRegistry[t.stepFunction.functionName]?.[`v${n}`];if(!r)throw new T(e,t.id,t.stepFunction.functionName,n);let i=r.inputSchema;i&&Be(i,t.stepFunction.params,e,t.id,t.stepFunction.functionName,n)},L=(e,t)=>{if(!e.inputs)return{};let n=Ne(e.inputs),r=c.z.object(n).parse(t);return{...r.headers??{},...r.query??{},...r.path??{},...r.body??{}}},Ne=e=>{let t=e.reduce((e,t)=>(e[t.in]||(e[t.in]=[]),e[t.in].push(t),e),{}),n={};for(let[e,r]of Object.entries(t)){let t={};for(let e of r){let n=R(e);e.description&&(n=n.describe(e.description)),e.required||(n=n.optional()),t[e.name]=n}Object.keys(t).length>0&&(n[e]=c.z.object(t))}return n},Pe=(e,t)=>{if(!t)throw Error(`Enum input "${e}" requires oneOf definition`);let n;if(`values`in t)n=t.values;else if(`ref`in t){let r=(0,f.getInputEnumValues)(t.ref);if(!r)throw Error(`Unknown enum reference "${t.ref}" in input "${e}"`);n=r}else throw Error(`Invalid oneOf definition in input "${e}"`);if(n.length===0)throw Error(`Enum input "${e}" must have at least one allowed value`);return c.z.enum(n)},R=e=>{let t;switch(e.type){case`string`:case`datetime_string`:t=c.z.string();break;case`number`:t=c.z.number();break;case`boolean`:t=c.z.boolean();break;case`enum`:t=Pe(e.name,e.oneOf);break;case`object`:if(e.properties&&e.properties.length>0){let n={};for(let t of e.properties){let e=R(t);t.description&&(e=e.describe(t.description)),t.required||(e=e.optional()),n[t.name]=e}t=c.z.object(n)}else t=c.z.record(c.z.string(),c.z.unknown());break;default:t=c.z.unknown()}return e.array&&(t=c.z.array(t)),t},Fe=e=>{let t=e.actionType===`list`,n=e.cursor??{enabled:t,pageSize:O};return{enabled:n.enabled&&t,pageSize:n.pageSize}},Ie=e=>{if(e.actionType===`refresh_token`||(0,c.isMissing)(e.compositeIdentifiers))return{enabled:!1};let t=[];for(let n of e.compositeIdentifiers?.fields??[]){let r=n.components.map(t=>{let n=e.fieldConfigs?.find(e=>e.targetFieldKey===t);return{name:t,alias:n?.alias}});t.push({targetFieldKey:n.targetFieldKey,remote:n.remote,components:r})}return{enabled:e.compositeIdentifiers.enabled,version:e.compositeIdentifiers.version,fields:t.length>0?t:void 0}},Le=e=>{if(!(0,c.isMissing)(e.scheduledJobs))return e.scheduledJobs},Re=({stepFunctionName:e,baseRequestParams:t,customErrors:n={}})=>{if(e===`request`||e===`paginated_request`||e===`soap_request`||e===`soap_paginated_request`){let e=[{receivedStatus:500,targetStatus:502}],r=n&&Array.isArray(n)?n:[],i=[...r,...e];return{...t,customErrors:i}}else return{}},ze=(e,t)=>{let n=e.safeParse(t);if(n.success)return n.data;{let e=n.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new w(e,`Invalid connector schema`)}},Be=(e,t,n,r,i,a)=>{let o=e.safeParse(t);if(o.success)return o.data;{let e=o.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new E(n,r,i,a,e)}},z=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return;let a=e.authentication?.[t]?.[n]?.refreshAuthentication?.action;if((0,c.notMissing)(a))return{action:a,params:{}}},Ve=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return!1;let a=z(e,t,n);return(0,c.notMissing)(a)},He=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenExpiresIn},Ue=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenRefreshExpiresIn},B=(e,t=[])=>Ke(t,e.releaseStage),We=(e,t=[])=>{if(!B(e,t))return;let n={};if(e.actions)for(let[r,i]of Object.entries(e.actions))Ke(t,i.releaseStage)&&(n[r]=i);return{...e,actions:n}},Ge=e=>e??`ga`,Ke=(e=[],t)=>{let n=Ge(t);return e.includes(n)},qe=e=>{try{let t=F(e);return{success:!0,connector:t}}catch(t){if(t instanceof w||t instanceof D){let n=t.issues,r=[];return n.forEach(t=>{let n=t?.keys?.[0],i=(0,c.isMissing)(n)?t.path:[...t.path,n],a=Je(i,e);r.push({line:a,message:t.message,field:i.join(`.`)})}),{success:!1,errors:r}}else if(t instanceof C)return{success:!1,errors:[{line:t.line,message:`The YAML connector file is not valid. Please check the syntax and structure.`,field:void 0}]};else if(t instanceof T){let n=Ye(t.actionId,t.stepId,t.functionName,!1,e);return{success:!1,errors:[{line:n,message:t.message,field:void 0}]}}else if(t instanceof E){let n=t.issues,r=[];return n.forEach(n=>{let i=n?.keys?.[0],a=(0,c.isMissing)(i)?n.path:[...n.path,i],o=Ye(t.actionId,t.stepId,t.functionName,!0,e);r.push({line:o,message:n.message,field:a.join(`.`)})}),{success:!1,errors:r}}}return{success:!1,errors:[{line:1,message:`An unknown error occurred while parsing the connector.`,field:void 0}]}},Je=(e,t)=>{let n=t.split(`
|
|
5
|
+
`),r=0,i=-1,a=0;for(let t=0;t<n.length;t++){let o=n[t],s=o.match(/^(\s*)/)?.[1]?.length||0,l=o.replace(`- `,``).trim();if(l.startsWith(`#`)||l===``||s<=i)continue;let u=(0,c.notMissing)(e[r])?`${String(e[r])}`:``;if((0,c.isMissing)(u))return a+1;if(isNaN(Number(u))){if(l.startsWith(`${u}:`)){if(r===e.length-1)return t+1;i=s,a=t,r++}}else{let e=parseInt(u,10),i=-1;for(let o=t;o<n.length;o++){let s=n[o],c=s.trim();if(c.startsWith(`-`)&&i++,i===e){r++,a=t,t--;break}else t++}}}return a+1},Ye=(e,t,n,r,i)=>{let a=i.split(`
|
|
6
|
+
`),o=1,s=null,l=null;for(let i=0;i<a.length;i++){let u=a[i],d=u.trim();if((0,c.isMissing)(s)&&d===`- actionId: ${e}`){s=e,o=i+1;continue}if((0,c.notMissing)(s)&&(0,c.isMissing)(l)&&d===`- stepId: ${t}`){l=t,o=i+1;continue}if((0,c.notMissing)(s)&&(0,c.notMissing)(l)&&!r&&d.startsWith(`functionName: ${n}`)||(0,c.notMissing)(s)&&(0,c.notMissing)(l)&&r&&d===`parameters:`)return o=i+1,o}return o};var V=class e extends Error{errorType;context;constructor(t,n,r){super(r),this.name=`ConnectSDKError`,this.errorType=t,this.context=n,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},Xe=class extends V{constructor(e,t){super(`CONNECTOR_PARSE_ERROR`,e,t),this.name=`ConnectorParseError`}},H=class extends V{constructor(e,t){super(`MISSING_ACTION_ERROR`,e,t),this.name=`MissingActionError`}},U=class extends V{validationErrors;constructor(e,t,n){super(`INVALID_ACTION_INPUTS_ERROR`,e,t),this.name=`InvalidActionInputsError`,this.validationErrors=n}},Ze=class extends V{constructor(e,t){super(`INVALID_CURSOR_ERROR`,e,t),this.name=`InvalidCursorError`}};const W=(e,t)=>{let n=Object.keys(e.authentication??{}).map(t=>({type:`custom`,label:e.authentication?.[t].production?.label||`Custom`,key:t,required_scopes:e.authentication?.[t].production?.requiredScopes})),r=Object.values(e?.actions??{}).map(e=>({id:e.id,description:e.description.replace(/\b\w/g,e=>e.toUpperCase()),label:e.label.replace(/\b\w/g,e=>e.toUpperCase()),schema_type:e.schemaType,tags:e.tags,required_scopes:e.requiredScopes,authentication:n,action_details:t?.includes(`action_details`)?e:void 0}));return{version:e.version,name:e.title,key:e.key,icon:e.assets?.icon,description:e.description,authentication:n,scope_definitions:Object.values(e.scopeDefinitions??{})??void 0,actions:r}},Qe=(e,t)=>e.map(e=>W(e,t)),$e=async({block:e,stepFunctionName:t,params:n,buildStepFunction:r=f.StepFunctionsFactory.build})=>{let i=r({functionName:t}).fn,a=await i({block:e,params:n}),o=t===f.StepFunctionName.MAP_FIELDS?{[f.StepFunctionName.MAP_FIELDS.toString()]:{output:{data:a.block.result},errors:a.errors,successful:a.successful}}:{};return{...a.block,steps:{...a?.block?.steps??{},...o}}},G=({category:e,connectorKey:t,connectorVersion:n,authConfigKey:r,environment:i=`production`,action:a,accountSecureId:o,projectSecureId:s,organizationId:l})=>({organizationId:l,projectSecureId:s,accountSecureId:o,connectorKey:t,connectorVersion:n,category:e,service:``,resource:``,schema:a?.schema?.key,actionType:a?.actionType??`unknown`,authenticationType:r,environment:i,actionRunId:(0,c.generateActionRunId)()}),et=(e,t,n)=>e.authentication?.[t]?.[n]?.testActions,tt=e=>{let t=e.action?.compositeIdentifiers,n={...e.inputs??{}};if(!t?.enabled||(0,c.isMissing)(n))return e;let r=t.fields?.reduce((e,t)=>(t.components.forEach(t=>{t.alias&&(e[t.name]=t.alias)}),e),{}),i={version:t.version??f.COMPOSITE_ID_LATEST_VERSION,aliases:r};return K(n,i,e.logger),{...e,inputs:n}},K=(e,t,n)=>{for(let r in e){let i=e[r];if(typeof i==`string`||Array.isArray(i)&&i.every(e=>typeof e==`string`))st(i,r,e,t,n);else if(Array.isArray(i))for(let e of i)K(e,t,n);else typeof i==`object`&&i&&K(i,t,n)}},nt=(e,t,n,r)=>{let i=[],a=[];for(let o of e)try{let e=(0,f.decodeCompositeId)(o,n);i.push(e)}catch(e){r?.debug({message:`Received ${t} with invalid composite ID, assuming it is not a composite ID`,category:`processCompositeId`,context:{key:t,inputElement:o,compositeIdentifierConfig:n,error:e}}),a.push(o)}return{compositeIdComponents:i,nonCompositeIds:a}},rt=(e,t,n,r)=>{let i=n.filter(e=>Object.keys(e).length>1);i.length>0&&(e.decoded_ids={...e.decoded_ids??{},[t]:r?i:i[0]})},it=e=>{let t=Object.values(e);return t.length===1&&(typeof t[0]==`string`||typeof t[0]==`number`)},at=(e,t,n,r,i)=>{n.every(it)&&(i?e[t]=[...n.map(e=>Object.values(e)[0]),...r]:n.length>0&&(e[t]=Object.values(n[0])[0]))},ot=(e,t,n)=>{e instanceof f.CoreError&&e.type===`COMPOSITE_ID_MISSING_HEADER_ERROR`?n?.debug({message:`Received ${t} with no composite ID header, assuming it is not a composite ID`}):n?.warning({message:`Error processing composite ID for ${t}, ignoring it`,error:e})},st=(e,t,n,r,i)=>{try{let a=Array.isArray(e),o=a?e:[e];if(o.length===0)return;let{compositeIdComponents:s,nonCompositeIds:c}=nt(o,t,r,i);rt(n,t,s,a),at(n,t,s,c,a)}catch(e){ot(e,t,i)}},q=`remote_`,ct=e=>{let t=e.action?.compositeIdentifiers;if(!t?.enabled)return e;let n=`data`,r=e.outputs?.[n];if((0,c.isMissing)(r))return e;let i=Array.isArray(r)?r.map(e=>lt(e,t)):lt(r,t);return{...e,outputs:{...e.outputs??{},[n]:i}}},lt=(e,t)=>{let n=ut(e,t),r=J(n);return{...e,...(0,c.isObject)(r)?r:{}}},ut=(e,t)=>{let n=t.version??f.COMPOSITE_ID_LATEST_VERSION,r={};return t.fields?.forEach(t=>{let i={},a=[];t.components.forEach(t=>{t.alias&&(i[t.name]=t.alias),a.push({key:t.name,value:e[t.name]})});let o=a.length===1?a[0]:{identifiers:a},s={version:n,aliases:Object.keys(i).length>0?i:void 0},c=(0,f.encodeCompositeId)(o,s);r[t.targetFieldKey]=c,t.remote&&(r[`${q}${t.remote}`]=e[t.remote])}),{...e,...r}},dt=e=>e===`id`||/.+_id(s)?$/.test(e),ft=e=>Array.isArray(e)&&e.every(e=>(0,c.isString)(e)&&e.length>0),pt=(e,t)=>(0,f.isCompositeId)(e)||t.startsWith(q),mt=(e,t)=>{try{return(0,f.encodeCompositeId)({key:e,value:t},{version:f.COMPOSITE_ID_LATEST_VERSION})}catch{return t}},ht=(e,t,n)=>{let r=t.map(t=>(0,c.isString)(t)&&t.length>0&&!(0,f.isCompositeId)(t)?mt(e,t):t);n[e]=r,n[`${q}${e}`]=t},gt=(e,t,n)=>{if(pt(t,e))return;let r=(0,f.encodeCompositeId)({key:e,value:t},{version:f.COMPOSITE_ID_LATEST_VERSION});n[e]=r,n[`remote_${e}`]=t},_t=(e,t,n)=>{ft(t)?ht(e,t,n):(0,c.isString)(t)&&t.length>0&>(e,t,n)},J=e=>{if(Array.isArray(e))return e.map(e=>J(e));if(!(0,c.isObject)(e))return e;let t={...e};for(let[n,r]of Object.entries(e))((0,c.isObject)(r)||Array.isArray(r)&&r.length>0&&(0,c.isObject)(r[0]))&&(t[n]=J(r)),dt(n)&&_t(n,r,t);return t},vt=(e,t)=>{let n=Number(e.inputs?.page_size),r=(0,c.notMissing)(e.inputs?.page_size)&&(0,c.isNumber)(n)&&!Number.isNaN(n)?n:e.action?.cursor?.pageSize??t;return r},yt=(e,t,n,r)=>{let i=(0,c.isMissing)(e)?void 0:e.data,a=Object.keys(n).length+1,o=(0,f.isCursorEmpty)({cursor:r,ignoreStepIndex:a});if(!(0,c.isObject)(e)||(0,c.isMissing)(i)||(i?.length??0)<=t)return{result:e,next:(0,c.notMissing)(r)&&!o?(0,f.minifyCursor)(r):null};let s=r?.remote?.[a]?.pageNumber??1,l=(s-1)*t,u=l+t,d=i.slice(l,u),p=i.length>u||!o,m=(0,f.updateCursor)({cursor:r,stepIndex:a,pageNumber:s+1});return{result:{...e,data:d},next:p?(0,f.minifyCursor)(m):null}},bt=e=>{let t=e.settings?.olap;return(0,c.isMissing)(t)?{}:{logs:t.logs?{enabled:t.logs.enabled}:void 0,advanced:t.advanced?{enabled:t.advanced.enabled,ttl:t.advanced.ttl,errorsOnly:t.advanced.errorsOnly}:void 0}},Y=async({block:e,buildStepFunction:t=f.StepFunctionsFactory.build,virtualPaginateResultFn:n=yt,encodeResultCompositeIds:r=ct,decodeInputCompositeIds:i=tt})=>{let a=i(e),o=await Et({block:a,buildStepFunction:t,virtualPaginateResultFn:n});return r(o)},xt=(e,t)=>e.condition?!(0,h.safeEvaluate)(e.condition,t):!1,St=(e,t,n)=>{let r=e.stepFunction,i=f.StepFunctionsRegistry[e.stepFunction.functionName]?.[`v${e.stepFunction.version??1}`],a=(0,c.notMissing)(i?.inputSchema?.shape)?`cursor`in i?.inputSchema?.shape:!1;return t.action?.cursor.enabled&&a?{...r.params??{},cursor:{token:t.nextCursor?.remote?.[n]?.providerPageCursor,position:t.nextCursor?.remote?.[n]?.position}}:r.params??{}},Ct=(e,t,n,r,i)=>{let a=X({block:e,stepId:t,successful:!1,functionOutput:n}),o=r.ignoreError??!1;return o||(i.hasFatalError=!0,i.errorStatusCode??=n.output?.statusCode??500),a},wt=async(e,t,n,r,i,a)=>{let o=n[e],s=o.stepFunction,c=a.buildStepFunction({functionName:s.functionName,version:s.version,validateSchemas:!0}).fn;if(xt(o,r))return X({block:r,stepId:e,successful:!0,skipped:!0,message:`Step skipped due to condition not met.`});if(i.hasFatalError)return X({block:r,stepId:e,successful:!1,skipped:!0,message:`Step skipped due to previous error.`});let l=St(o,r,t),u=await c({block:r,params:l});if(u.successful===!1)return Ct(r,e,u,o,i);let d=r.action?.cursor.enabled?(0,f.updateCursor)({cursor:r.nextCursor,stepIndex:t,providerPageCursor:u.output?.next,position:u.output?.position}):void 0;return X({block:{...u.block,nextCursor:d},stepId:e,functionOutput:u})},Tt=(e,t,n,r,i)=>{let a=!n.hasFatalError,o=a?e.action?.responses.success.statusCode??200:n.errorStatusCode??500,s=(0,c.notMissing)(i)&&(0,c.isObject)(i.result)?{next:i.next,...i.result}:r;return{...t,outputs:s,response:{successful:a,statusCode:o,message:a?void 0:e.action?.responses?.errors?.[o]?.description??p.HttpErrorMessages?.[o]??`Error while processing the request`}}},Et=async({block:e,buildStepFunction:t=f.StepFunctionsFactory.build,virtualPaginateResultFn:n=yt})=>{let r=e.action?.steps||{},i={...e},a=Object.keys(r),o=vt(e,O),s={hasFatalError:!1,errorStatusCode:null},c={block:e,buildStepFunction:t,virtualPaginateResultFn:n};for(let[e,t]of a.entries()){let n=new Date;i=await wt(t,e,r,i,s,c),Ot({block:i,stepId:t,startTime:n,endTime:new Date})}let l=e.action?.result?Dt(e.action.result,i):void 0,u=e.action?.cursor.enabled?n(l,o,r,i.nextCursor):void 0;return Tt(e,i,s,l,u)},Dt=(e,t)=>(0,c.isObject)(e)?(0,h.safeEvaluateRecord)(e,t):(0,h.safeEvaluate)(e,t),X=({block:e,stepId:t,successful:n,functionOutput:r,skipped:i,message:a})=>({...e,steps:{...e.steps,[t]:{successful:n??r?.successful??!1,errors:r?.errors,output:r?.output,skipped:i,message:a}}}),Ot=({block:e,stepId:t,startTime:n,endTime:r})=>{let i=e.olapClient;if((0,c.isMissing)(i?.recordStep))return;let a=bt(e),o=e.context,s={actionRunId:o.actionRunId??`unknown`,stepId:t,status:e.steps?.[t]?.successful?`successful`:`failed`,skipped:e.steps?.[t]?.skipped,message:e.steps?.[t]?.message,outputs:e.steps?.[t]?.output,errors:e.steps?.[t]?.errors,startTime:n,endTime:r};i.recordStep(s,a)},Z=async e=>{let{pathParams:t={},queryParams:n={},body:r={},headers:i={},parseConnector:a=F,parseActionInputsFn:o=L,createBlockContextFn:s=G,createBlockFn:l=g,runStepActionFn:u=Y,getActionFromUrlFn:d=_,getActionForRefreshAuthenticationFn:f=z,getTestActionsFn:p=et,mode:m,account:v,connector:y,getHttpClient:b,getOlapClient:te,settings:ne,logger:x,category:re,...S}=e,C=v.authConfigKey,w=v.environment??`production`,T=v.secureId,E=v.projectSecureId,ie=v.organizationId,ae=v.credentials,D=s({category:re??`action`,connectorKey:v.providerKey,connectorVersion:v.providerVersion,authConfigKey:C,environment:w,accountSecureId:T,projectSecureId:E,organizationId:ie}),O=new Date,k;try{k=(0,c.isString)(y)?a(y):y}catch{throw new Xe(D,`Error while parsing connector`)}let A={connector:k,context:D,credentials:ae,settings:ne,logger:x,getHttpClient:b,getOlapClient:te};if(m===`action_id`){let{actionId:e}=S,a=ee(k,e);if((0,c.isMissing)(a))throw new H(D,`No matching action found`);let s=await Q({action:a,blockContext:D,queryParams:n,pathParams:t,body:r,headers:i,parseActionInputsFn:o,createBlockFn:l,createBlockParams:A,runStepActionFn:u});return s.statistics={startTime:O,endTime:new Date},$({block:s}),s}else if(m===`test_actions`){let e=p(k,C,w);if((0,c.isMissing)(e)||e.length===0){let e=await kt(l,A);return e.statistics={startTime:O,endTime:new Date},$({block:e}),e}D.actionType=`test`;for(let t of e){let e=await l({...A,inputs:void 0,action:t.action,nextCursor:void 0}),n=(0,c.notMissing)(t.condition)?(0,h.evaluate)(t.condition,e):!0;if(!n)continue;let r=await u({block:e});if(((0,c.isMissing)(r?.response?.successful)||!r.response.successful)&&t.required){x?.error({code:`TestActionFailed`,message:`Test action "${t.action.id}" failed with error: ${r?.response?.message}`});let e=await At(l,A);return $({block:e}),e}}let t=await kt(l,A);return t.statistics={startTime:O,endTime:new Date},$({block:t}),t}else if(m===`refresh_authentication`){let e=f(k,C,w);if((0,c.isMissing)(e))throw new H(D,`No matching action found`);let t=await Q({action:e.action,blockContext:D,queryParams:n,pathParams:e.params,body:r,headers:i,parseActionInputsFn:o,createBlockFn:l,createBlockParams:A,runStepActionFn:u});return t.statistics={startTime:O,endTime:new Date},$({block:t}),t}else if(m===`path`){let{path:e,method:t}=S,a=d(k,e,t);if((0,c.isMissing)(a))throw new H(D,`No matching action found`);let s=await Q({action:a.action,blockContext:D,queryParams:n,pathParams:a.params,body:r,headers:i,parseActionInputsFn:o,createBlockFn:l,createBlockParams:A,runStepActionFn:u});return s.statistics={startTime:O,endTime:new Date},$({block:s}),s}else{let e=await At(l,A);return e.statistics={startTime:O,endTime:new Date},$({block:e}),e}},Q=async e=>{let{action:t,blockContext:n,queryParams:r,pathParams:i,body:a,headers:o,parseActionInputsFn:s,createBlockFn:c,createBlockParams:l,runStepActionFn:u}=e;n.actionType=t.actionType,n.schema=t.schema?.key;let d=jt(r,n),f;try{f=s(t,{path:i,query:r,body:a,headers:o})}catch(e){if(typeof e==`object`&&e&&`issues`in e&&Array.isArray(e.issues)){let t=e.issues.map(e=>{let t=e.path.map(String),n=t[0]||`body`,r=t.slice(1).join(`.`);return{field:r||t[0]||`unknown`,location:n,expected:`expected`in e?String(e.expected):e.code,received:`received`in e?String(e.received):`unknown`,message:e.message}});throw new U(n,`Invalid input values provided`,t)}throw new U(n,`Error while parsing action inputs`)}let p=await c({...l,inputs:f,action:t,nextCursor:d});return await u({block:p})},kt=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!0,statusCode:200}}},At=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!1,statusCode:500}}},jt=(e,t)=>{let n=e?.next,r=(0,c.notMissing)(n)&&t.actionType===`list`?(0,f.expandCursor)(n):void 0;if(r===null)throw new Ze(t,`Invalid cursor.`);return r},$=({block:e})=>{let t=e.olapClient;if((0,c.isMissing)(t?.recordAction))return;let n=bt(e),r=e.context,i={actionRunId:e.context.actionRunId||`unknown`,actionId:e.action?.id||`unknown`,connectorKey:r.connectorKey,connectorVersion:r.connectorVersion,actionType:r.actionType,category:r.category,organizationId:r.organizationId||`unknown`,projectSecureId:r.projectSecureId,accountSecureId:r.accountSecureId,originOwnerId:r.originOwnerId,originOwnerName:r.originOwnerName,httpMethod:e.action?.entrypointHttpMethod,url:e.action?.entrypointUrl,sourceId:r.sourceId,sourceType:r.sourceType,sourceValue:r.sourceValue,status:e.response?.successful?`success`:`error`,message:e.response?.message,outputs:e.outputs,startTime:e.statistics?.startTime,endTime:e.statistics?.endTime};t.recordAction(i,n)},Mt=async({actionId:e,account:t,connector:n,pathParams:r={},queryParams:i={},body:a={},headers:o={},logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u=F,parseActionInputsFn:d=L,createBlockContextFn:f=G,createBlockFn:p=g,runStepActionFn:m=Y})=>Z({mode:`action_id`,actionId:e,account:t,connector:n,pathParams:r,queryParams:i,body:a,headers:o,logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u,parseActionInputsFn:d,createBlockContextFn:f,createBlockFn:p,runStepActionFn:m}),Nt=`stackone://internal//`,Pt=`${Nt}refresh_token`,Ft=async({account:e,connector:t,category:n,path:r,method:i=`get`,queryParams:a={},body:o,headers:s,logger:c,getHttpClient:l,parseConnector:u=F,getActionFromUrlFn:d=_,getActionForRefreshAuthenticationFn:f=z,parseActionInputsFn:p=L,createBlockContextFn:m=G,createBlockFn:h=g,runStepActionFn:v=Y})=>{let y=It(r),b=y?await Z({mode:`refresh_authentication`,account:e,connector:t,getActionForRefreshAuthenticationFn:f,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:v}):await Z({mode:`path`,account:e,category:n,connector:t,path:r,method:i,queryParams:a,body:o,headers:s,getActionFromUrlFn:d,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:v});return b},It=e=>e===Pt,Lt=async({account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i=F,getTestActionsFn:a=et,createBlockContextFn:o=G,createBlockFn:s=g,runStepActionFn:c=Y})=>{let l=await Z({mode:`test_actions`,account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i,getTestActionsFn:a,createBlockContextFn:o,createBlockFn:s,runStepActionFn:c});return l?.response?.successful??!1};exports.ConnectSDKError=V,exports.InvalidActionInputsError=U,exports.applyReleaseStageToConnector=We,exports.createBlock=g,exports.executeStepFunction=$e,exports.formatValidationErrorResponse=k,exports.getActionFromUrl=_,exports.getActionsMeta=W,exports.getActionsMetaFromConnectors=Qe,exports.getRefreshTokenExpiresIn=Ue,exports.getTokenExpiresIn=He,exports.isConnectorReleased=B,exports.loadConnector=te,exports.parseActionInputs=L,exports.parseYamlConnector=F,exports.runAction=Z,exports.runConnectorActionById=Mt,exports.runConnectorActionByPath=Ft,exports.runStepAction=Y,exports.runTestActions=Lt,exports.supportsRefreshAuthentication=Ve,exports.validateYamlConnector=qe;
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{generateActionRunId as e,isMissing as t,isNumber as n,isObject as r,isString as i,notMissing as a,z as o,zStrictObject as s}from"@stackone/utils";import{match as c}from"path-to-regexp";import{readFileSync as l}from"fs";import{dirname as u,join as d,resolve as f}from"path";import{AUTHORIZATION_SCHEMA as p,COMPOSITE_ID_LATEST_VERSION as m,CoreError as h,ReleaseStages as g,StepFunctionName as _,StepFunctionsFactory as v,StepFunctionsRegistry as y,decodeCompositeId as ee,encodeCompositeId as b,expandCursor as x,getInputEnumValues as te,isCompositeId as S,isCursorEmpty as C,isValidEnumRef as w,minifyCursor as T,updateCursor as
|
|
2
|
-
`),r=
|
|
3
|
-
`)}catch(e){throw Error(`Failed to process YAML file: ${e.message}`)}},
|
|
4
|
-
`).filter(e=>e.trim()!==``)}catch(t){throw Error(`Failed to load partial file '${e}': ${t.message}`)}};var N=class e extends Error{errorType;constructor(t,n){super(n),this.name=`InternalConnectSDKError`,this.errorType=t,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},fe=class extends N{line;constructor(e,t){super(`INVALID_YAML_FILE_ERROR`,t),this.name=`InvalidYamlFileError`,this.line=e??1}},pe=class extends N{issues;constructor(e,t){super(`SCHEMA_VALIDATION_ERROR`,t),this.name=`SchemaValidationError`,this.issues=e}},me=class extends N{actionId;stepId;functionName;functionVersion;constructor(e,t,n,r=`1`){let i=`Invalid Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the function name and version are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION`,i),this.name=`InvalidStepFunctionError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r}},he=class extends N{actionId;stepId;functionName;functionVersion;issues;constructor(e,t,n,r=`1`,i){let a=`Invalid parameters for Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the parameters are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION_PARAMS`,a),this.name=`InvalidStepFunctionParamsError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r,this.issues=i,this.message=a}},ge=class extends N{actionId;exampleIndex;issues;constructor(e,t,n){let r=n.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`, `),i=`Invalid example ${t} for action '${e}': ${r}`;super(`INVALID_ACTION_EXAMPLE`,i),this.name=`InvalidActionExampleError`,this.actionId=e,this.exampleIndex=t,this.issues=n}},_e=class extends N{actionId;inputName;enumRef;constructor(e,t,n){let r=`Invalid enum reference "${n}" in action "${e}", input "${t}". Check that the enum is defined in INPUT_ENUM_REGISTRY.`;super(`INVALID_ENUM_REFERENCE`,r),this.name=`InvalidEnumReferenceError`,this.actionId=e,this.inputName=t,this.enumRef=n}};const ve=25,ye=e=>({statusCode:400,message:`Invalid request - validation failed`,errors:e.map(e=>({property:e.field,location:e.location,expected:e.expected,received:e.received,message:e.message}))}),be=e=>{switch(e){case`list`:return{statusCode:200,description:`The list of records was retrieved.`};case`get`:return{statusCode:200,description:`The record with the given identifier was retrieved.`};case`create`:return{statusCode:201,description:`The record was created successfully.`};case`update`:return{statusCode:200,description:`The record was updated successfully.`};case`delete`:return{statusCode:204,description:`The record was deleted successfully.`};case`custom`:return{statusCode:200,description:`The action was executed successfully.`};case`refresh_token`:return{statusCode:200,description:`The refresh token action was executed successfully.`};case`unknown`:return{statusCode:200};default:throw Error(`Unknown action type: ${e}`)}},xe=()=>{let e={400:{statusCode:400,description:`Invalid request.`},401:{statusCode:401,description:`Unauthorized access.`},403:{statusCode:403,description:`Forbidden.`},404:{statusCode:404,description:`Resource not found.`},500:{statusCode:500,description:`Server error while executing the request.`}};return e},Se={key:o.string(),label:o.string(),required:o.boolean().optional().default(!1),secret:o.boolean().optional().default(!1),readOnly:o.boolean().optional().default(!1),placeholder:o.string().optional(),description:o.string().optional(),tooltip:o.string().optional()},Ce=o.discriminatedUnion(`type`,[s({...Se,type:o.enum([`text`,`password`])}),s({...Se,type:o.literal(`select`),options:s({value:o.string(),label:o.string()}).array()})]),we=s({targetFieldKey:o.string(),alias:o.string().optional(),expression:o.string().optional(),values:o.unknown().optional(),type:o.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:o.boolean().default(!1),custom:o.boolean().default(!1),hidden:o.boolean().default(!1),enumMapper:s({matcher:o.enum([`country_alpha2code_by_alpha2code`,`country_alpha3code_by_alpha3code`,`country_code_by_country_code`,`country_name_by_country_name`,`country_name_by_alpha3code`,`country_name_by_alpha2code`,`country_name_by_country_code`,`country_alpha3code_by_alpha2code`,`country_alpha3code_by_country_name`,`country_alpha3code_by_country_code`,`country_alpha2code_by_alpha3code`,`country_alpha2code_by_country_name`,`country_alpha2code_by_country_code`,`country_code_by_alpha2code`,`country_code_by_alpha3code`,`country_code_by_country_name`,`country_subdivisions_by_alpha2code`,`country_subdivision_code_by_subdivision_name`,`country_alpha2code_by_citizenship`,`country_subdivision_name_by_subdivision_code`,`document_file_format_from_extension`]).or(s({matchExpression:o.string(),value:o.string()}).array())}).optional(),properties:o.lazy(()=>we).array().optional()}),Te=o.union([s({values:o.string().array().min(1)}),s({ref:o.string()})]),Ee=s({name:o.string(),type:o.enum([`string`,`number`,`boolean`,`datetime_string`,`object`,`enum`]),required:o.boolean(),description:o.string(),array:o.boolean().optional().default(!1),in:o.enum([`body`,`query`,`path`,`headers`]),properties:o.lazy(()=>Ee.omit({in:!0})).array().optional(),oneOf:Te.optional()}).refine(e=>e.type!==`enum`||e.oneOf!==void 0,{message:`oneOf is required when type is 'enum'`}).refine(e=>e.type===`enum`||e.oneOf===void 0,{message:`oneOf is only allowed when type is 'enum'`}),P=s({actionId:o.string(),categories:o.string().array(),actionType:o.enum([`list`,`get`,`create`,`update`,`delete`,`custom`,`refresh_token`,`unknown`]),schema:o.string().optional(),schemaType:o.enum([`native`,`unified`]).optional().default(`native`),entrypointUrl:o.string().optional(),entrypointHttpMethod:o.string().optional(),label:o.string(),description:o.string(),details:o.string().optional(),examples:o.record(o.string(),o.unknown()).array().optional(),tags:o.string().array().optional(),releaseStage:o.enum(g).optional(),resources:o.string().optional(),responses:s({statusCode:o.number(),description:o.string()}).array().optional(),inputs:Ee.array().optional(),cursor:s({enabled:o.boolean(),pageSize:o.number()}).optional(),compositeIdentifiers:s({enabled:o.boolean(),version:o.number().optional(),fields:s({targetFieldKey:o.string(),remote:o.string().optional(),components:o.string().array()}).array().optional()}).optional(),scheduledJobs:s({enabled:o.boolean(),type:o.enum([`data_sync`]),schedule:o.string(),description:o.string(),requestParams:s({fields:o.string().array().optional(),expand:o.string().array().optional(),filter:o.record(o.string(),o.string()).optional()}).optional(),syncFilter:s({name:o.enum([`updated_after`,`created_after`]),initialLoopbackPeriod:o.string(),incrementalLoopbackPeriod:o.string()}).optional()}).array().optional(),fieldConfigs:we.array().optional(),steps:s({stepId:o.string(),description:o.string(),stepFunction:s({functionName:o.string(),version:o.string().optional(),parameters:o.record(o.string(),o.unknown())}),condition:o.string().optional(),ignoreError:o.boolean().optional()}).array(),result:o.string().or(o.record(o.string(),o.unknown())).optional()}),De=s({schedule:o.string().optional(),action:P.extend({actionType:o.literal(`refresh_token`)})}),Oe=s({mainRatelimit:o.number(),subPools:o.array(s({subPoolKey:o.string(),urlPattern:o.string(),rateLimit:o.number()})).optional(),mappedRateLimitErrors:o.array(s({errorStatus:o.number(),errorMessage:o.string(),errorMessagePath:o.string().optional(),retryAfterPath:o.string().optional(),retryAfterUnit:o.union([o.literal(`seconds`),o.literal(`milliseconds`),o.literal(`date`)]).optional(),retryAfterValue:o.number().optional()})).optional()}),ke=s({mainMaxConcurrency:o.number(),subPools:o.array(s({subPoolKey:o.string(),urlPattern:o.string(),maxConcurrency:o.number()})).optional()}),F=s({label:o.string(),authorization:p,environments:s({key:o.string(),name:o.string()}).array(),support:s({link:o.string().optional(),description:o.string().optional()}).optional(),configFields:Ce.array().optional(),setupFields:Ce.array().optional(),refreshAuthentication:De.optional(),testActions:s({action:o.string().or(P),condition:o.string().optional(),required:o.boolean().default(!0)}).array().optional()}),Ae=F.extend({type:o.literal(`oauth2`),grantType:o.enum([`authorization_code`,`client_credentials`]).default(`authorization_code`)}),je=F.extend({type:o.literal(`custom`)}),Me=F.extend({type:o.literal(`oidc`)}),Ne=o.discriminatedUnion(`type`,[Ae,je,Me]),Pe=s({StackOne:o.string(),info:s({title:o.string(),version:o.string(),key:o.string(),assets:s({icon:o.string()}),description:o.string(),details:o.string().optional()}),resources:o.string().optional(),baseUrl:o.string(),authentication:o.record(o.string(),Ne).array().optional(),actions:P.array().optional(),rateLimit:Oe.optional(),concurrency:ke.optional(),releaseStage:o.enum(g).optional()}).strict();function I(e){try{let t=E(e),n=et(Pe,t),r={title:n.info.title,version:n.info.version,key:n.info.key,assets:n.info.assets,description:n.info.description,details:n.info.details,resources:n.resources,rateLimit:n.rateLimit,concurrency:n.concurrency,releaseStage:n.releaseStage},i=Re(n),o={baseUrl:n.baseUrl,authentication:Fe(i)},s=We(n,o);return r.actions=s,Ie(n.info.key,i,s,o),r.authentication=i,a(s)&&(r.categories=Le(Object.values(s))),r}catch(e){if(e instanceof N)throw e;let t=e.message,n=t.match(/at line (\d+)/),r=n?parseInt(n[1],10):1;throw new fe(r,t)}}const Fe=e=>{let t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`){let{setupFields:e,configFields:i,support:a,refreshAuthentication:o,testActions:s,...c}=r;t[n]=Fe(c)}else t[n]=r;return t},Ie=(e,t,n,r)=>{if(!(!t||!n))for(let i of Object.values(t))for(let t of Object.values(i)){let i=t.testActions;t.testActions=i?.map(t=>{if(a(t.action))if(typeof t.action==`string`){let r=M(e,t.action),i=Object.values(n).find(e=>e.id===r);if(i)return{...t,action:i}}else{let n=M(e,t.action.actionId),i=L(n,t.action,r);return{...t,action:i}}return t})}},Le=e=>{let t=e.reduce((e,t)=>{for(let n of t.categories)e.add(n);return e},new Set);return Array.from(t)},Re=e=>{let t={};for(let n of e.authentication??[]){let[r]=Object.keys(n),i=n[r].environments.reduce((t,i)=>{let{key:o,name:s}=i,{environments:c,refreshAuthentication:l,testActions:u,...d}=n[r],f=a(l)?{schedule:l.schedule,action:L(M(e.info.key,l.action.actionId),l.action)}:void 0;return t[o]={...d,refreshAuthentication:f,envKey:o,envName:s,testActions:u},t},{});t[r]=i}return t},ze=e=>e.entrypointUrl&&e.entrypointHttpMethod?`${e.entrypointHttpMethod.toUpperCase()} ${e.entrypointUrl}`:void 0,Be=e=>e.actionType===`list`?`GET /${e.schema}`:`GET /${e.schema}/:id`,Ve=e=>{if(e.actionType!==`refresh_token`)return e.entrypointHttpMethod??`get`},He=e=>{if(!(e.actionType===`refresh_token`||t(e.schema)))return e.actionType===`list`?`/${e.schema}`:`/${e.schema}/:id`},Ue=e=>{let t={success:be(e.actionType),errors:xe()},n=e.responses?.reduce((e,t)=>{let n=ie(t.statusCode);return n?e.success={statusCode:t.statusCode,description:t.description}:e.errors[t.statusCode]={statusCode:t.statusCode,description:t.description},e},t);return n??t},We=(e,t)=>{let n=e.actions?.reduce((n,r)=>{let i=ze(r),a=Be(r),o=i??a,s=M(e.info.key,r.actionId);return n[s]=L(s,r,t,o),n},{});return n},Ge=(e,t)=>{if(t){for(let n of t)if(n.type===`enum`&&n.oneOf&&`ref`in n.oneOf&&!w(n.oneOf.ref))throw new _e(e,n.name,n.oneOf.ref)}},Ke=(e,t,n)=>{if(!t||t.length===0)return;let r={};for(let e of n){let t=z(e);e.required||(t=t.optional()),r[e.name]=t}let i=o.object(r).strict();for(let n=0;n<t.length;n++){let r=t[n],{description:a,...o}=r,s=i.safeParse(o);if(!s.success){let t=s.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:[]}));throw new ge(e,n,t)}}},L=(e,t,n,r)=>{let i=He(t),a=Ue(t),o=Xe(t),s=t.inputs||[];o.enabled&&(s?.push({type:`string`,name:`page_size`,in:`query`,required:!1,description:`Number of items to return per page`,array:!1}),s?.push({type:`string`,name:`next`,in:`query`,required:!1,description:`Token for the next page of results`,array:!1})),Ge(e,s),Ke(e,t.examples,s);let c=Ve(t);return{id:e,categories:t.categories,label:t.label,description:t.description,details:t.details,examples:t.examples,actionType:t.actionType,schemaType:t.schemaType??`native`,entrypointUrl:t.entrypointUrl??i,entrypointHttpMethod:c,endpoint:r,tags:t.tags,releaseStage:t.releaseStage,resources:t.resources,responses:a,cursor:o,compositeIdentifiers:Ze(t),scheduledJobs:Qe(t),inputs:s,steps:t.steps.reduce((e,r)=>{let{customErrors:i,...a}=r.stepFunction.parameters??{},o={id:r.stepId,description:r.description,condition:r.condition,ignoreError:r.ignoreError,stepFunction:{functionName:r.stepFunction.functionName,version:r.stepFunction.version,params:{...$e({stepFunctionName:r.stepFunction.functionName,baseRequestParams:n,customErrors:i}),...r.stepFunction.functionName===`map_fields`||r.stepFunction.functionName===`typecast`?{fields:a.fields??t.fieldConfigs}:{},...a}}};return qe(t.actionId,o),e[r.stepId]=o,e},{}),result:t.result}},qe=(e,t)=>{let n=t.stepFunction.version??`1`,r=y[t.stepFunction.functionName]?.[`v${n}`];if(!r)throw new me(e,t.id,t.stepFunction.functionName,n);let i=r.inputSchema;i&&tt(i,t.stepFunction.params,e,t.id,t.stepFunction.functionName,n)},R=(e,t)=>{if(!e.inputs)return{};let n=Je(e.inputs),r=o.object(n).parse(t);return{...r.headers??{},...r.query??{},...r.path??{},...r.body??{}}},Je=e=>{let t=e.reduce((e,t)=>(e[t.in]||(e[t.in]=[]),e[t.in].push(t),e),{}),n={};for(let[e,r]of Object.entries(t)){let t={};for(let e of r){let n=z(e);e.description&&(n=n.describe(e.description)),e.required||(n=n.optional()),t[e.name]=n}Object.keys(t).length>0&&(n[e]=o.object(t))}return n},Ye=(e,t)=>{if(!t)throw Error(`Enum input "${e}" requires oneOf definition`);let n;if(`values`in t)n=t.values;else if(`ref`in t){let r=te(t.ref);if(!r)throw Error(`Unknown enum reference "${t.ref}" in input "${e}"`);n=r}else throw Error(`Invalid oneOf definition in input "${e}"`);if(n.length===0)throw Error(`Enum input "${e}" must have at least one allowed value`);return o.enum(n)},z=e=>{let t;switch(e.type){case`string`:case`datetime_string`:t=o.string();break;case`number`:t=o.number();break;case`boolean`:t=o.boolean();break;case`enum`:t=Ye(e.name,e.oneOf);break;case`object`:if(e.properties&&e.properties.length>0){let n={};for(let t of e.properties){let e=z(t);t.description&&(e=e.describe(t.description)),t.required||(e=e.optional()),n[t.name]=e}t=o.object(n)}else t=o.record(o.string(),o.unknown());break;default:t=o.unknown()}return e.array&&(t=o.array(t)),t},Xe=e=>{let t=e.actionType===`list`,n=e.cursor??{enabled:t,pageSize:ve};return{enabled:n.enabled&&t,pageSize:n.pageSize}},Ze=e=>{if(e.actionType===`refresh_token`||t(e.compositeIdentifiers))return{enabled:!1};let n=[];for(let t of e.compositeIdentifiers?.fields??[]){let r=t.components.map(t=>{let n=e.fieldConfigs?.find(e=>e.targetFieldKey===t);return{name:t,alias:n?.alias}});n.push({targetFieldKey:t.targetFieldKey,remote:t.remote,components:r})}return{enabled:e.compositeIdentifiers.enabled,version:e.compositeIdentifiers.version,fields:n.length>0?n:void 0}},Qe=e=>{if(!t(e.scheduledJobs))return e.scheduledJobs},$e=({stepFunctionName:e,baseRequestParams:t,customErrors:n={}})=>{if(e===`request`||e===`paginated_request`||e===`soap_request`||e===`soap_paginated_request`){let e=[{receivedStatus:500,targetStatus:502}],r=n&&Array.isArray(n)?n:[],i=[...r,...e];return{...t,customErrors:i}}else return{}},et=(e,t)=>{let n=e.safeParse(t);if(n.success)return n.data;{let e=n.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new pe(e,`Invalid connector schema`)}},tt=(e,t,n,r,i,a)=>{let o=e.safeParse(t);if(o.success)return o.data;{let e=o.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new he(n,r,i,a,e)}},B=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return;let o=e.authentication?.[t]?.[n]?.refreshAuthentication?.action;if(a(o))return{action:o,params:{}}},nt=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return!1;let o=B(e,t,n);return a(o)},rt=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenExpiresIn},it=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenRefreshExpiresIn},at=(e,t=[])=>ct(t,e.releaseStage),ot=(e,t=[])=>{if(!at(e,t))return;let n={};if(e.actions)for(let[r,i]of Object.entries(e.actions))ct(t,i.releaseStage)&&(n[r]=i);return{...e,actions:n}},st=e=>e??`ga`,ct=(e=[],t)=>{let n=st(t);return e.includes(n)},lt=e=>{try{let t=I(e);return{success:!0,connector:t}}catch(n){if(n instanceof pe){let r=n.issues,i=[];return r.forEach(n=>{let r=n?.keys?.[0],a=t(r)?n.path:[...n.path,r],o=ut(a,e);i.push({line:o,message:n.message,field:a.join(`.`)})}),{success:!1,errors:i}}else if(n instanceof fe)return{success:!1,errors:[{line:n.line,message:`The YAML connector file is not valid. Please check the syntax and structure.`,field:void 0}]};else if(n instanceof me){let t=dt(n.actionId,n.stepId,n.functionName,!1,e);return{success:!1,errors:[{line:t,message:n.message,field:void 0}]}}else if(n instanceof he){let r=n.issues,i=[];return r.forEach(r=>{let a=r?.keys?.[0],o=t(a)?r.path:[...r.path,a],s=dt(n.actionId,n.stepId,n.functionName,!0,e);i.push({line:s,message:r.message,field:o.join(`.`)})}),{success:!1,errors:i}}}return{success:!1,errors:[{line:1,message:`An unknown error occurred while parsing the connector.`,field:void 0}]}},ut=(e,n)=>{let r=n.split(`
|
|
5
|
-
`),i=0,o=-1,s=0;for(let n=0;n<r.length;n++){let c=r[n],l=c.match(/^(\s*)/)?.[1]?.length||0,u=c.replace(`- `,``).trim();if(u.startsWith(`#`)||u===``||l<=o)continue;let d=a(e[i])?`${String(e[i])}`:``;if(t(d))return s+1;if(isNaN(Number(d))){if(u.startsWith(`${d}:`)){if(i===e.length-1)return n+1;o=l,s=n,i++}}else{let e=parseInt(d,10),t=-1;for(let a=n;a<r.length;a++){let o=r[a],c=o.trim();if(c.startsWith(`-`)&&t++,t===e){i++,s=n,n--;break}else n++}}}return s+1},
|
|
6
|
-
`),c=1,l=null,u=null;for(let o=0;o<s.length;o++){let d=s[o],f=d.trim();if(t(l)&&f===`- actionId: ${e}`){l=e,c=o+1;continue}if(a(l)&&t(u)&&f===`- stepId: ${n}`){u=n,c=o+1;continue}if(a(l)&&a(u)&&!i&&f.startsWith(`functionName: ${r}`)||a(l)&&a(u)&&i&&f===`parameters:`)return c=o+1,c}return c};var V=class e extends Error{errorType;context;constructor(t,n,r){super(r),this.name=`ConnectSDKError`,this.errorType=t,this.context=n,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},ft=class extends V{constructor(e,t){super(`CONNECTOR_PARSE_ERROR`,e,t),this.name=`ConnectorParseError`}},H=class extends V{constructor(e,t){super(`MISSING_ACTION_ERROR`,e,t),this.name=`MissingActionError`}},U=class extends V{validationErrors;constructor(e,t,n){super(`INVALID_ACTION_INPUTS_ERROR`,e,t),this.name=`InvalidActionInputsError`,this.validationErrors=n}},pt=class extends V{constructor(e,t){super(`INVALID_CURSOR_ERROR`,e,t),this.name=`InvalidCursorError`}};const mt=(e,t)=>{let n=Object.keys(e.authentication??{}).map(t=>({type:`custom`,label:e.authentication?.[t].production?.label||`Custom`,key:t})),r=Object.values(e?.actions??{}).map(e=>({id:e.id,description:e.description.replace(/\b\w/g,e=>e.toUpperCase()),label:e.label.replace(/\b\w/g,e=>e.toUpperCase()),schema_type:e.schemaType,tags:e.tags,authentication:n,action_details:t?.includes(`action_details`)?e:void 0}));return{version:e.version,name:e.title,key:e.key,icon:e.assets?.icon,description:e.description,authentication:n,actions:r}},ht=(e,t)=>e.map(e=>mt(e,t)),gt=async({block:e,stepFunctionName:t,params:n,buildStepFunction:r=v.build})=>{let i=r({functionName:t}).fn,a=await i({block:e,params:n}),o=t===_.MAP_FIELDS?{[_.MAP_FIELDS.toString()]:{output:{data:a.block.result},errors:a.errors,successful:a.successful}}:{};return{...a.block,steps:{...a?.block?.steps??{},...o}}};var W;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(W||={});var _t;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(_t||={}),W.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),W.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]);var G=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r],a=r===i.path.length-1;a?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(t){if(!(t instanceof e))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,W.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};G.create=e=>{let t=new G(e);return t};const K=({category:t,connectorKey:n,connectorVersion:r,authConfigKey:i,environment:a=`production`,action:o,accountSecureId:s,projectSecureId:c,organizationId:l})=>({organizationId:l,projectSecureId:c,accountSecureId:s,connectorKey:n,connectorVersion:r,category:t,service:``,resource:``,schema:o?.schema?.key,actionType:o?.actionType??`unknown`,authenticationType:i,environment:a,actionRunId:e()}),vt=(e,t,n)=>e.authentication?.[t]?.[n]?.testActions,yt=e=>{let n=e.action?.compositeIdentifiers,r={...e.inputs??{}};if(!n?.enabled||t(r))return e;let i=n.fields?.reduce((e,t)=>(t.components.forEach(t=>{t.alias&&(e[t.name]=t.alias)}),e),{}),a={version:n.version??m,aliases:i};return q(r,a,e.logger),{...e,inputs:r}},q=(e,t,n)=>{for(let r in e){let i=e[r];if(typeof i==`string`||Array.isArray(i)&&i.every(e=>typeof e==`string`))Tt(i,r,e,t,n);else if(Array.isArray(i))for(let e of i)q(e,t,n);else typeof i==`object`&&i&&q(i,t,n)}},bt=(e,t,n,r)=>{let i=[],a=[];for(let o of e)try{let e=ee(o,n);i.push(e)}catch(e){r?.debug({message:`Received ${t} with invalid composite ID, assuming it is not a composite ID`,category:`processCompositeId`,context:{key:t,inputElement:o,compositeIdentifierConfig:n,error:e}}),a.push(o)}return{compositeIdComponents:i,nonCompositeIds:a}},xt=(e,t,n,r)=>{let i=n.filter(e=>Object.keys(e).length>1);i.length>0&&(e.decoded_ids={...e.decoded_ids??{},[t]:r?i:i[0]})},St=e=>{let t=Object.values(e);return t.length===1&&(typeof t[0]==`string`||typeof t[0]==`number`)},Ct=(e,t,n,r,i)=>{n.every(St)&&(i?e[t]=[...n.map(e=>Object.values(e)[0]),...r]:n.length>0&&(e[t]=Object.values(n[0])[0]))},wt=(e,t,n)=>{e instanceof h&&e.type===`COMPOSITE_ID_MISSING_HEADER_ERROR`?n?.debug({message:`Received ${t} with no composite ID header, assuming it is not a composite ID`}):n?.warning({message:`Error processing composite ID for ${t}, ignoring it`,error:e})},Tt=(e,t,n,r,i)=>{try{let a=Array.isArray(e),o=a?e:[e];if(o.length===0)return;let{compositeIdComponents:s,nonCompositeIds:c}=bt(o,t,r,i);xt(n,t,s,a),Ct(n,t,s,c,a)}catch(e){wt(e,t,i)}},J=`remote_`,Et=e=>{let n=e.action?.compositeIdentifiers;if(!n?.enabled)return e;let r=`data`,i=e.outputs?.[r];if(t(i))return e;let a=Array.isArray(i)?i.map(e=>Dt(e,n)):Dt(i,n);return{...e,outputs:{...e.outputs??{},[r]:a}}},Dt=(e,t)=>{let n=Ot(e,t),i=Y(n);return{...e,...r(i)?i:{}}},Ot=(e,t)=>{let n=t.version??m,r={};return t.fields?.forEach(t=>{let i={},a=[];t.components.forEach(t=>{t.alias&&(i[t.name]=t.alias),a.push({key:t.name,value:e[t.name]})});let o=a.length===1?a[0]:{identifiers:a},s={version:n,aliases:Object.keys(i).length>0?i:void 0},c=b(o,s);r[t.targetFieldKey]=c,t.remote&&(r[`${J}${t.remote}`]=e[t.remote])}),{...e,...r}},kt=e=>e===`id`||/.+_id(s)?$/.test(e),At=e=>Array.isArray(e)&&e.every(e=>i(e)&&e.length>0),jt=(e,t)=>S(e)||t.startsWith(J),Mt=(e,t)=>{try{return b({key:e,value:t},{version:m})}catch{return t}},Nt=(e,t,n)=>{let r=t.map(t=>i(t)&&t.length>0&&!S(t)?Mt(e,t):t);n[e]=r,n[`${J}${e}`]=t},Pt=(e,t,n)=>{if(jt(t,e))return;let r=b({key:e,value:t},{version:m});n[e]=r,n[`remote_${e}`]=t},Ft=(e,t,n)=>{At(t)?Nt(e,t,n):i(t)&&t.length>0&&Pt(e,t,n)},Y=e=>{if(Array.isArray(e))return e.map(e=>Y(e));if(!r(e))return e;let t={...e};for(let[n,i]of Object.entries(e))(r(i)||Array.isArray(i)&&i.length>0&&r(i[0]))&&(t[n]=Y(i)),kt(n)&&Ft(n,i,t);return t},It=(e,t)=>{let r=Number(e.inputs?.page_size),i=a(e.inputs?.page_size)&&n(r)&&!Number.isNaN(r)?r:e.action?.cursor?.pageSize??t;return i},Lt=(e,n,i,o)=>{let s=t(e)?void 0:e.data,c=Object.keys(i).length+1,l=C({cursor:o,ignoreStepIndex:c});if(!r(e)||t(s)||(s?.length??0)<=n)return{result:e,next:a(o)&&!l?T(o):null};let u=o?.remote?.[c]?.pageNumber??1,d=(u-1)*n,f=d+n,p=s.slice(d,f),m=s.length>f||!l,h=ne({cursor:o,stepIndex:c,pageNumber:u+1});return{result:{...e,data:p},next:m?T(h):null}},Rt=e=>{let n=e.settings?.olap;return t(n)?{}:{logs:n.logs?{enabled:n.logs.enabled}:void 0,advanced:n.advanced?{enabled:n.advanced.enabled,ttl:n.advanced.ttl,errorsOnly:n.advanced.errorsOnly}:void 0}},X=async({block:e,buildStepFunction:t=v.build,virtualPaginateResultFn:n=Lt,encodeResultCompositeIds:r=Et,decodeInputCompositeIds:i=yt})=>{let a=i(e),o=await Wt({block:a,buildStepFunction:t,virtualPaginateResultFn:n});return r(o)},zt=(e,t)=>e.condition?!D(e.condition,t):!1,Bt=(e,t,n)=>{let r=e.stepFunction,i=y[e.stepFunction.functionName]?.[`v${e.stepFunction.version??1}`],o=a(i?.inputSchema?.shape)?`cursor`in i?.inputSchema?.shape:!1;return t.action?.cursor.enabled&&o?{...r.params??{},cursor:{token:t.nextCursor?.remote?.[n]?.providerPageCursor,position:t.nextCursor?.remote?.[n]?.position}}:r.params??{}},Vt=(e,t,n,r,i)=>{let a=Z({block:e,stepId:t,successful:!1,functionOutput:n}),o=r.ignoreError??!1;return o||(i.hasFatalError=!0,i.errorStatusCode??=n.output?.statusCode??500),a},Ht=async(e,t,n,r,i,a)=>{let o=n[e],s=o.stepFunction,c=a.buildStepFunction({functionName:s.functionName,version:s.version,validateSchemas:!0}).fn;if(zt(o,r))return Z({block:r,stepId:e,successful:!0,skipped:!0,message:`Step skipped due to condition not met.`});if(i.hasFatalError)return Z({block:r,stepId:e,successful:!1,skipped:!0,message:`Step skipped due to previous error.`});let l=Bt(o,r,t),u=await c({block:r,params:l});if(u.successful===!1)return Vt(r,e,u,o,i);let d=r.action?.cursor.enabled?ne({cursor:r.nextCursor,stepIndex:t,providerPageCursor:u.output?.next,position:u.output?.position}):void 0;return Z({block:{...u.block,nextCursor:d},stepId:e,functionOutput:u})},Ut=(e,t,n,i,o)=>{let s=!n.hasFatalError,c=s?e.action?.responses.success.statusCode??200:n.errorStatusCode??500,l=a(o)&&r(o.result)?{next:o.next,...o.result}:i;return{...t,outputs:l,response:{successful:s,statusCode:c,message:s?void 0:e.action?.responses?.errors?.[c]?.description??re?.[c]??`Error while processing the request`}}},Wt=async({block:e,buildStepFunction:t=v.build,virtualPaginateResultFn:n=Lt})=>{let r=e.action?.steps||{},i={...e},a=Object.keys(r),o=It(e,ve),s={hasFatalError:!1,errorStatusCode:null},c={block:e,buildStepFunction:t,virtualPaginateResultFn:n};for(let[e,t]of a.entries()){let n=new Date;i=await Ht(t,e,r,i,s,c),Kt({block:i,stepId:t,startTime:n,endTime:new Date})}let l=e.action?.result?Gt(e.action.result,i):void 0,u=e.action?.cursor.enabled?n(l,o,r,i.nextCursor):void 0;return Ut(e,i,s,l,u)},Gt=(e,t)=>r(e)?O(e,t):D(e,t),Z=({block:e,stepId:t,successful:n,functionOutput:r,skipped:i,message:a})=>({...e,steps:{...e.steps,[t]:{successful:n??r?.successful??!1,errors:r?.errors,output:r?.output,skipped:i,message:a}}}),Kt=({block:e,stepId:n,startTime:r,endTime:i})=>{let a=e.olapClient;if(t(a?.recordStep))return;let o=Rt(e),s=e.context,c={actionRunId:s.actionRunId??`unknown`,stepId:n,status:e.steps?.[n]?.successful?`successful`:`failed`,skipped:e.steps?.[n]?.skipped,message:e.steps?.[n]?.message,outputs:e.steps?.[n]?.output,errors:e.steps?.[n]?.errors,startTime:r,endTime:i};a.recordStep(c,o)},Q=async e=>{let{pathParams:n={},queryParams:r={},body:o={},headers:s={},parseConnector:c=I,parseActionInputsFn:l=R,createBlockContextFn:u=K,createBlockFn:d=k,runStepActionFn:f=X,getActionFromUrlFn:p=A,getActionForRefreshAuthenticationFn:m=B,getTestActionsFn:h=vt,mode:g,account:_,connector:v,getHttpClient:y,getOlapClient:ee,settings:b,logger:x,category:te,...S}=e,C=_.authConfigKey,w=_.environment??`production`,T=_.secureId,ne=_.projectSecureId,re=_.organizationId,ie=_.credentials,E=u({category:te??`action`,connectorKey:_.providerKey,connectorVersion:_.providerVersion,authConfigKey:C,environment:w,accountSecureId:T,projectSecureId:ne,organizationId:re}),D=new Date,O;try{O=i(v)?c(v):v}catch{throw new ft(E,`Error while parsing connector`)}let j={connector:O,context:E,credentials:ie,settings:b,logger:x,getHttpClient:y,getOlapClient:ee};if(g===`action_id`){let{actionId:e}=S,i=se(O,e);if(t(i))throw new H(E,`No matching action found`);let a=await qt({action:i,blockContext:E,queryParams:r,pathParams:n,body:o,headers:s,parseActionInputsFn:l,createBlockFn:d,createBlockParams:j,runStepActionFn:f});return a.statistics={startTime:D,endTime:new Date},$({block:a}),a}else if(g===`test_actions`){let e=h(O,C,w);if(t(e)||e.length===0){let e=await Jt(d,j);return e.statistics={startTime:D,endTime:new Date},$({block:e}),e}E.actionType=`test`;for(let n of e){let e=await d({...j,inputs:void 0,action:n.action,nextCursor:void 0}),r=a(n.condition)?ae(n.condition,e):!0;if(!r)continue;let i=await f({block:e});if((t(i?.response?.successful)||!i.response.successful)&&n.required){x?.error({code:`TestActionFailed`,message:`Test action "${n.action.id}" failed with error: ${i?.response?.message}`});let e=await Yt(d,j);return $({block:e}),e}}let n=await Jt(d,j);return n.statistics={startTime:D,endTime:new Date},$({block:n}),n}else if(g===`refresh_authentication`){let e=m(O,C,w);if(t(e))throw new H(E,`No matching action found`);let n=await qt({action:e.action,blockContext:E,queryParams:r,pathParams:e.params,body:o,headers:s,parseActionInputsFn:l,createBlockFn:d,createBlockParams:j,runStepActionFn:f});return n.statistics={startTime:D,endTime:new Date},$({block:n}),n}else if(g===`path`){let{path:e,method:n}=S,i=p(O,e,n);if(t(i))throw new H(E,`No matching action found`);let a=await qt({action:i.action,blockContext:E,queryParams:r,pathParams:i.params,body:o,headers:s,parseActionInputsFn:l,createBlockFn:d,createBlockParams:j,runStepActionFn:f});return a.statistics={startTime:D,endTime:new Date},$({block:a}),a}else{let e=await Yt(d,j);return e.statistics={startTime:D,endTime:new Date},$({block:e}),e}},qt=async e=>{let{action:t,blockContext:n,queryParams:r,pathParams:i,body:a,headers:o,parseActionInputsFn:s,createBlockFn:c,createBlockParams:l,runStepActionFn:u}=e;n.actionType=t.actionType,n.schema=t.schema?.key;let d=Xt(r,n),f;try{f=s(t,{path:i,query:r,body:a,headers:o})}catch(e){if(e instanceof G){let t=e.issues.map(e=>{let t=e.path.map(String),n=t[0]||`body`,r=t.slice(1).join(`.`);return{field:r||t[0]||`unknown`,location:n,expected:`expected`in e?String(e.expected):e.code,received:`received`in e?String(e.received):`unknown`,message:e.message}});throw new U(n,`Invalid input values provided`,t)}throw new U(n,`Error while parsing action inputs`)}let p=await c({...l,inputs:f,action:t,nextCursor:d});return await u({block:p})},Jt=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!0,statusCode:200}}},Yt=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!1,statusCode:500}}},Xt=(e,t)=>{let n=e?.next,r=a(n)&&t.actionType===`list`?x(n):void 0;if(r===null)throw new pt(t,`Invalid cursor.`);return r},$=({block:e})=>{let n=e.olapClient;if(t(n?.recordAction))return;let r=Rt(e),i=e.context,a={actionRunId:e.context.actionRunId||`unknown`,actionId:e.action?.id||`unknown`,connectorKey:i.connectorKey,connectorVersion:i.connectorVersion,actionType:i.actionType,category:i.category,organizationId:i.organizationId||`unknown`,projectSecureId:i.projectSecureId,accountSecureId:i.accountSecureId,originOwnerId:i.originOwnerId,originOwnerName:i.originOwnerName,httpMethod:e.action?.entrypointHttpMethod,url:e.action?.entrypointUrl,sourceId:i.sourceId,sourceType:i.sourceType,sourceValue:i.sourceValue,status:e.response?.successful?`success`:`error`,message:e.response?.message,outputs:e.outputs,startTime:e.statistics?.startTime,endTime:e.statistics?.endTime};n.recordAction(a,r)},Zt=async({actionId:e,account:t,connector:n,pathParams:r={},queryParams:i={},body:a={},headers:o={},logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u=I,parseActionInputsFn:d=R,createBlockContextFn:f=K,createBlockFn:p=k,runStepActionFn:m=X})=>Q({mode:`action_id`,actionId:e,account:t,connector:n,pathParams:r,queryParams:i,body:a,headers:o,logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u,parseActionInputsFn:d,createBlockContextFn:f,createBlockFn:p,runStepActionFn:m}),Qt=`stackone://internal//`,$t=`${Qt}refresh_token`,en=async({account:e,connector:t,category:n,path:r,method:i=`get`,queryParams:a={},body:o,headers:s,logger:c,getHttpClient:l,parseConnector:u=I,getActionFromUrlFn:d=A,getActionForRefreshAuthenticationFn:f=B,parseActionInputsFn:p=R,createBlockContextFn:m=K,createBlockFn:h=k,runStepActionFn:g=X})=>{let _=tn(r),v=_?await Q({mode:`refresh_authentication`,account:e,connector:t,getActionForRefreshAuthenticationFn:f,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:g}):await Q({mode:`path`,account:e,category:n,connector:t,path:r,method:i,queryParams:a,body:o,headers:s,getActionFromUrlFn:d,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:g});return v},tn=e=>e===$t,nn=async({account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i=I,getTestActionsFn:a=vt,createBlockContextFn:o=K,createBlockFn:s=k,runStepActionFn:c=X})=>{let l=await Q({mode:`test_actions`,account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i,getTestActionsFn:a,createBlockContextFn:o,createBlockFn:s,runStepActionFn:c});return l?.response?.successful??!1};export{V as ConnectSDKError,U as InvalidActionInputsError,ot as applyReleaseStageToConnector,k as createBlock,gt as executeStepFunction,ye as formatValidationErrorResponse,A as getActionFromUrl,mt as getActionsMeta,ht as getActionsMetaFromConnectors,it as getRefreshTokenExpiresIn,rt as getTokenExpiresIn,at as isConnectorReleased,ce as loadConnector,R as parseActionInputs,I as parseYamlConnector,Q as runAction,Zt as runConnectorActionById,en as runConnectorActionByPath,X as runStepAction,nn as runTestActions,nt as supportsRefreshAuthentication,lt as validateYamlConnector};
|
|
1
|
+
import{generateActionRunId as e,isMissing as t,isNumber as n,isObject as r,isString as i,notMissing as a,z as o,zStrictObject as s}from"@stackone/utils";import{match as c}from"path-to-regexp";import{readFileSync as l}from"fs";import{dirname as u,join as d,resolve as f}from"path";import{AUTHORIZATION_SCHEMA as p,COMPOSITE_ID_LATEST_VERSION as m,CoreError as h,ReleaseStages as g,StepFunctionName as _,StepFunctionsFactory as v,StepFunctionsRegistry as y,decodeCompositeId as ee,encodeCompositeId as b,expandCursor as x,getInputEnumValues as te,isCompositeId as S,isCursorEmpty as C,isValidEnumRef as w,minifyCursor as T,updateCursor as E}from"@stackone/core";import{HttpErrorMessages as ne,isSuccessStatusCode as re}from"@stackone/transport";import{parse as D}from"yaml";import{evaluate as ie,safeEvaluate as O,safeEvaluateRecord as k}from"@stackone/expressions";const A=async({connector:e,inputs:n,context:r,action:i,credentials:a,nextCursor:o,settings:s,logger:c,getHttpClient:l,getOlapClient:u})=>{if(t(l))throw Error(`getHttpClient function is required`);let d=await l(),f=u?await u():void 0;return{connector:e,inputs:n,fieldConfigs:[],context:r,action:i,credentials:a,nextCursor:o,httpClient:d,olapClient:f,settings:s,logger:c}},j=(e,t,n)=>{let r=n.toUpperCase();if(!e.actions)return;let i=Object.values(e.actions).filter(e=>a(e.endpoint)).map(e=>({actionId:e.id,endpoint:e.endpoint})),o=ae(t,r,i);if(o)return{action:e.actions?.[o.actionId],params:o.params}},M=e=>{let t=e.startsWith(`/`)?e.slice(1):e,n=t.endsWith(`/`)?t.slice(0,-1):t;return n},ae=(e,t,n)=>{let r=M(e);for(let e of n)if(e.endpoint?.startsWith(t)){let n=e.endpoint.replace(`${t} `,``).trim(),i=c(M(n)),a=i(M(r));if(a!==!1)return{actionId:e.actionId,path:e.endpoint,params:a.params}}},N=(e,t)=>t?.startsWith(`${e}_`)?t:`${e}_${t}`,oe=(e,t)=>{let n=`${e.key}_`,r=t.startsWith(n)?t:`${n}${t}`;return e.actions?.[r]},se=e=>{if(!e.endsWith(`.s1.yaml`))throw Error(`File must have .s1.yaml extension`);try{let t=l(e,`utf8`);if(!t.includes(`:`)||!t.includes(`$ref:`))return t;let n=t.split(`
|
|
2
|
+
`),r=ce(n,u(e));return r.join(`
|
|
3
|
+
`)}catch(e){throw Error(`Failed to process YAML file: ${e.message}`)}},ce=(e,t)=>{let n=[];for(let r of e)if(le(r)){let e=r.match(/^(\s*)/)?.[1]?.length||0,i=r.split(`:`)[1]?.trim(),a=ue(i,t),o=a.map(t=>` `.repeat(e)+t);n.push(...o)}else n.push(r);return n},le=e=>e.includes(`$ref:`),ue=(e,t)=>{let n=f(d(t,`${e.replaceAll(`'`,``)}.s1.partial.yaml`));try{let e=l(n,`utf8`);return e.split(`
|
|
4
|
+
`).filter(e=>e.trim()!==``)}catch(t){throw Error(`Failed to load partial file '${e}': ${t.message}`)}};var P=class e extends Error{errorType;constructor(t,n){super(n),this.name=`InternalConnectSDKError`,this.errorType=t,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},de=class extends P{line;constructor(e,t){super(`INVALID_YAML_FILE_ERROR`,t),this.name=`InvalidYamlFileError`,this.line=e??1}},fe=class extends P{issues;constructor(e,t){super(`SCHEMA_VALIDATION_ERROR`,t),this.name=`SchemaValidationError`,this.issues=e}},pe=class extends P{actionId;stepId;functionName;functionVersion;constructor(e,t,n,r=`1`){let i=`Invalid Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the function name and version are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION`,i),this.name=`InvalidStepFunctionError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r}},me=class extends P{actionId;stepId;functionName;functionVersion;issues;constructor(e,t,n,r=`1`,i){let a=`Invalid parameters for Step Function: '${n}' (v${r}) on step '${t}'. Please ensure the parameters are correct in the action '${e}'.`;super(`INVALID_STEP_FUNCTION_PARAMS`,a),this.name=`InvalidStepFunctionParamsError`,this.actionId=e,this.stepId=t,this.functionName=n,this.functionVersion=r,this.issues=i,this.message=a}},he=class extends P{actionId;exampleIndex;issues;constructor(e,t,n){let r=n.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`, `),i=`Invalid example ${t} for action '${e}': ${r}`;super(`INVALID_ACTION_EXAMPLE`,i),this.name=`InvalidActionExampleError`,this.actionId=e,this.exampleIndex=t,this.issues=n}},ge=class extends P{actionId;inputName;enumRef;constructor(e,t,n){let r=`Invalid enum reference "${n}" in action "${e}", input "${t}". Check that the enum is defined in INPUT_ENUM_REGISTRY.`;super(`INVALID_ENUM_REFERENCE`,r),this.name=`InvalidEnumReferenceError`,this.actionId=e,this.inputName=t,this.enumRef=n}},F=class extends P{issues;constructor(e){let t=`Missing scope definition. Check that the scope is defined in the scope definitions.`;super(`MISSING_SCOPE_DEFINITION`,t),this.name=`MissingScopeDefinitionError`,this.issues=e}};const _e=25,ve=e=>({statusCode:400,message:`Invalid request - validation failed`,errors:e.map(e=>({property:e.field,location:e.location,expected:e.expected,received:e.received,message:e.message}))}),ye=e=>{switch(e){case`list`:return{statusCode:200,description:`The list of records was retrieved.`};case`get`:return{statusCode:200,description:`The record with the given identifier was retrieved.`};case`create`:return{statusCode:201,description:`The record was created successfully.`};case`update`:return{statusCode:200,description:`The record was updated successfully.`};case`delete`:return{statusCode:204,description:`The record was deleted successfully.`};case`custom`:return{statusCode:200,description:`The action was executed successfully.`};case`refresh_token`:return{statusCode:200,description:`The refresh token action was executed successfully.`};case`unknown`:return{statusCode:200};default:throw Error(`Unknown action type: ${e}`)}},be=()=>{let e={400:{statusCode:400,description:`Invalid request.`},401:{statusCode:401,description:`Unauthorized access.`},403:{statusCode:403,description:`Forbidden.`},404:{statusCode:404,description:`Resource not found.`},500:{statusCode:500,description:`Server error while executing the request.`}};return e},xe={key:o.string(),label:o.string(),required:o.boolean().optional().default(!1),secret:o.boolean().optional().default(!1),readOnly:o.boolean().optional().default(!1),placeholder:o.string().optional(),description:o.string().optional(),tooltip:o.string().optional()},Se=o.discriminatedUnion(`type`,[s({...xe,type:o.enum([`text`,`password`])}),s({...xe,type:o.literal(`select`),options:s({value:o.string(),label:o.string()}).array()})]),Ce=s({targetFieldKey:o.string(),alias:o.string().optional(),expression:o.string().optional(),values:o.unknown().optional(),type:o.enum([`string`,`number`,`boolean`,`datetime_string`,`enum`,`object`]),array:o.boolean().default(!1),custom:o.boolean().default(!1),hidden:o.boolean().default(!1),enumMapper:s({matcher:o.enum([`country_alpha2code_by_alpha2code`,`country_alpha3code_by_alpha3code`,`country_code_by_country_code`,`country_name_by_country_name`,`country_name_by_alpha3code`,`country_name_by_alpha2code`,`country_name_by_country_code`,`country_alpha3code_by_alpha2code`,`country_alpha3code_by_country_name`,`country_alpha3code_by_country_code`,`country_alpha2code_by_alpha3code`,`country_alpha2code_by_country_name`,`country_alpha2code_by_country_code`,`country_code_by_alpha2code`,`country_code_by_alpha3code`,`country_code_by_country_name`,`country_subdivisions_by_alpha2code`,`country_subdivision_code_by_subdivision_name`,`country_alpha2code_by_citizenship`,`country_subdivision_name_by_subdivision_code`,`document_file_format_from_extension`]).or(s({matchExpression:o.string(),value:o.string()}).array())}).optional(),properties:o.lazy(()=>Ce).array().optional(),requiredScopes:o.string().optional()}),we=o.union([s({values:o.string().array().min(1)}),s({ref:o.string()})]),Te=s({name:o.string(),type:o.enum([`string`,`number`,`boolean`,`datetime_string`,`object`,`enum`]),required:o.boolean(),description:o.string(),array:o.boolean().optional().default(!1),in:o.enum([`body`,`query`,`path`,`headers`]),properties:o.lazy(()=>Te.omit({in:!0})).array().optional(),oneOf:we.optional()}).refine(e=>e.type!==`enum`||e.oneOf!==void 0,{message:`oneOf is required when type is 'enum'`}).refine(e=>e.type===`enum`||e.oneOf===void 0,{message:`oneOf is only allowed when type is 'enum'`}),I=s({actionId:o.string(),categories:o.string().array(),actionType:o.enum([`list`,`get`,`create`,`update`,`delete`,`custom`,`refresh_token`,`unknown`]),schema:o.string().optional(),schemaType:o.enum([`native`,`unified`]).optional().default(`native`),entrypointUrl:o.string().optional(),entrypointHttpMethod:o.string().optional(),label:o.string(),description:o.string(),details:o.string().optional(),examples:o.record(o.string(),o.unknown()).array().optional(),tags:o.string().array().optional(),releaseStage:o.enum(g).optional(),resources:o.string().optional(),responses:s({statusCode:o.number(),description:o.string()}).array().optional(),requiredScopes:o.string().optional(),inputs:Te.array().optional(),cursor:s({enabled:o.boolean(),pageSize:o.number()}).optional(),compositeIdentifiers:s({enabled:o.boolean(),version:o.number().optional(),fields:s({targetFieldKey:o.string(),remote:o.string().optional(),components:o.string().array()}).array().optional()}).optional(),scheduledJobs:s({enabled:o.boolean(),type:o.enum([`data_sync`]),schedule:o.string(),description:o.string(),requestParams:s({fields:o.string().array().optional(),expand:o.string().array().optional(),filter:o.record(o.string(),o.string()).optional()}).optional(),syncFilter:s({name:o.enum([`updated_after`,`created_after`]),initialLoopbackPeriod:o.string(),incrementalLoopbackPeriod:o.string()}).optional()}).array().optional(),fieldConfigs:Ce.array().optional(),steps:s({stepId:o.string(),description:o.string(),stepFunction:s({functionName:o.string(),version:o.string().optional(),parameters:o.record(o.string(),o.unknown())}),condition:o.string().optional(),ignoreError:o.boolean().optional()}).array(),result:o.string().or(o.record(o.string(),o.unknown())).optional()}),Ee=s({schedule:o.string().optional(),action:I.extend({actionType:o.literal(`refresh_token`)})}),De=s({mainRatelimit:o.number(),subPools:o.array(s({subPoolKey:o.string(),urlPattern:o.string(),rateLimit:o.number()})).optional(),mappedRateLimitErrors:o.array(s({errorStatus:o.number(),errorMessage:o.string(),errorMessagePath:o.string().optional(),retryAfterPath:o.string().optional(),retryAfterUnit:o.union([o.literal(`seconds`),o.literal(`milliseconds`),o.literal(`date`)]).optional(),retryAfterValue:o.number().optional()})).optional()}),Oe=s({mainMaxConcurrency:o.number(),subPools:o.array(s({subPoolKey:o.string(),urlPattern:o.string(),maxConcurrency:o.number()})).optional()}),L=s({label:o.string(),authorization:p,requiredScopes:o.string().optional(),environments:s({key:o.string(),name:o.string()}).array(),support:s({link:o.string().optional(),description:o.string().optional()}).optional(),configFields:Se.array().optional(),setupFields:Se.array().optional(),refreshAuthentication:Ee.optional(),testActions:s({action:o.string().or(I),condition:o.string().optional(),required:o.boolean().default(!0)}).array().optional()}),ke=L.extend({type:o.literal(`oauth2`),grantType:o.enum([`authorization_code`,`client_credentials`]).default(`authorization_code`)}),Ae=L.extend({type:o.literal(`custom`)}),je=L.extend({type:o.literal(`oidc`)}),Me=o.discriminatedUnion(`type`,[ke,Ae,je]),Ne=s({StackOne:o.string(),info:s({title:o.string(),version:o.string(),key:o.string(),assets:s({icon:o.string()}),description:o.string(),details:o.string().optional()}),resources:o.string().optional(),baseUrl:o.string(),scopeDefinitions:o.record(o.string(),s({description:o.string(),includes:o.string().optional()})).optional(),authentication:o.record(o.string(),Me).array().optional(),actions:I.array().optional(),rateLimit:De.optional(),concurrency:Oe.optional(),releaseStage:o.enum(g).optional()}).strict();function R(e){try{let t=D(e),n=nt(Ne,t),r=Pe(n.scopeDefinitions),i={title:n.info.title,version:n.info.version,key:n.info.key,assets:n.info.assets,description:n.info.description,details:n.info.details,resources:n.resources,rateLimit:n.rateLimit,concurrency:n.concurrency,releaseStage:n.releaseStage,scopeDefinitions:r},o=Re(n),s={baseUrl:n.baseUrl,authentication:Fe(o)},c=We(n,s);return i.actions=c,Ie(n,n.info.key,o,c,s),i.authentication=o,a(c)&&(i.categories=Le(Object.values(c))),i}catch(e){if(e instanceof P)throw e;let t=e.message,n=t.match(/at line (\d+)/),r=n?parseInt(n[1],10):1;throw new de(r,t)}}const Pe=e=>{if(!e)return;let t={};for(let[n,r]of Object.entries(e)){let e=r?.includes?.split(` `).filter(e=>e.trim().length>0)??void 0;t[n]={name:n,description:r.description,includes:e}}let n=new Set(Object.keys(t)),r=[];if(Object.values(t).forEach(e=>{e.includes&&e.includes.forEach(t=>{n.has(t)||r.push({message:`Scope '${t}' included in scope '${e.name}' is not defined.`,path:[`scopeDefinitions`,e.name],keys:[`includes`]})})}),r.length>0)throw new F(r);return t},Fe=e=>{let t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`){let{setupFields:e,configFields:i,support:a,refreshAuthentication:o,testActions:s,requiredScopes:c,...l}=r;t[n]=Fe(l)}else t[n]=r;return t},Ie=(e,t,n,r,i)=>{if(!n||!r)return;let o=0;for(let s of Object.values(n)){for(let n of Object.values(s)){let s=n.testActions;n.testActions=s?.map((n,s)=>{if(a(n.action))if(typeof n.action==`string`){let e=N(t,n.action),i=Object.values(r).find(t=>t.id===e);if(i)return{...n,action:i}}else{let r=[`authentication`,o,`testActions`,s],a=N(t,n.action.actionId),c=z(e,r,a,n.action,i);return{...n,action:c}}return n})}o++}},Le=e=>{let t=e.reduce((e,t)=>{for(let n of t.categories)e.add(n);return e},new Set);return Array.from(t)},Re=e=>{let t={},n=new Set(Object.keys(e.scopeDefinitions||{})),r=[];for(let[i,o]of(e.authentication??[]).entries()){let[s]=Object.keys(o),c=o[s].environments.reduce((t,c)=>{let{key:l,name:u}=c,{environments:d,refreshAuthentication:f,testActions:p,requiredScopes:m,...h}=o[s],g=m?m.split(` `).filter(e=>e.trim().length>0):void 0;Object.values(g??[]).forEach(e=>{n.has(e)||r.push({message:`Scope '${e}' included in authentication '${s}' is not defined.`,path:[`authentication`,i],keys:[`requiredScopes`]})});let _=a(f)?{schedule:f.schedule,action:z(e,[`authentication`,i,`refreshAuthentication`,`action`],N(e.info.key,f.action.actionId),f.action)}:void 0;return t[l]={...h,refreshAuthentication:_,requiredScopes:g,envKey:l,envName:u,testActions:p},t},{});t[s]=c}if(r.length>0)throw new F(r);return t},ze=e=>e.entrypointUrl&&e.entrypointHttpMethod?`${e.entrypointHttpMethod.toUpperCase()} ${e.entrypointUrl}`:void 0,Be=e=>e.actionType===`list`?`GET /${e.schema}`:`GET /${e.schema}/:id`,Ve=e=>{if(e.actionType!==`refresh_token`)return e.entrypointHttpMethod??`get`},He=e=>{if(!(e.actionType===`refresh_token`||t(e.schema)))return e.actionType===`list`?`/${e.schema}`:`/${e.schema}/:id`},Ue=e=>{let t={success:ye(e.actionType),errors:be()},n=e.responses?.reduce((e,t)=>{let n=re(t.statusCode);return n?e.success={statusCode:t.statusCode,description:t.description}:e.errors[t.statusCode]={statusCode:t.statusCode,description:t.description},e},t);return n??t},We=(e,t)=>{let n=e.actions?.reduce((n,r,i)=>{let a=ze(r),o=Be(r),s=a??o,c=N(e.info.key,r.actionId);return n[c]=z(e,[`actions`,i],c,r,t,s),n},{});return n},Ge=(e,t)=>{if(t){for(let n of t)if(n.type===`enum`&&n.oneOf&&`ref`in n.oneOf&&!w(n.oneOf.ref))throw new ge(e,n.name,n.oneOf.ref)}},Ke=(e,t,n)=>{if(!t||t.length===0)return;let r={};for(let e of n){let t=Ze(e);e.required||(t=t.optional()),r[e.name]=t}let i=o.object(r).strict();for(let n=0;n<t.length;n++){let r=t[n],{description:a,...o}=r,s=i.safeParse(o);if(!s.success){let t=s.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:[]}));throw new he(e,n,t)}}},z=(e,t,n,r,i,a)=>{let o=He(r),s=Ue(r),c=Qe(r),l=r.inputs||[];c.enabled&&(l?.push({type:`string`,name:`page_size`,in:`query`,required:!1,description:`Number of items to return per page`,array:!1}),l?.push({type:`string`,name:`next`,in:`query`,required:!1,description:`Token for the next page of results`,array:!1})),Ge(n,l),Ke(n,r.examples,l);let u=Ve(r),d=new Set(Object.keys(e.scopeDefinitions||{})),f=[],p=r.requiredScopes?r.requiredScopes.split(` `).filter(e=>e.trim().length>0):void 0;if(Object.values(p??[]).forEach(e=>{d.has(e)||f.push({message:`Scope '${e}' included in action '${r.actionId}' is not defined.`,path:t,keys:[`requiredScopes`]})}),f.length>0)throw new F(f);return{id:n,categories:r.categories,label:r.label,description:r.description,details:r.details,examples:r.examples,actionType:r.actionType,schemaType:r.schemaType??`native`,entrypointUrl:r.entrypointUrl??o,entrypointHttpMethod:u,endpoint:a,tags:r.tags,releaseStage:r.releaseStage,resources:r.resources,responses:s,cursor:c,compositeIdentifiers:$e(r),scheduledJobs:et(r),requiredScopes:p,inputs:l,steps:r.steps.reduce((n,a)=>{let{customErrors:o,...s}=a.stepFunction.parameters??{},c=a.stepFunction.functionName===`map_fields`||a.stepFunction.functionName===`typecast`?s.fields??r.fieldConfigs:void 0,l=qe(e,t,c),u={id:a.stepId,description:a.description,condition:a.condition,ignoreError:a.ignoreError,stepFunction:{functionName:a.stepFunction.functionName,version:a.stepFunction.version,params:{...tt({stepFunctionName:a.stepFunction.functionName,baseRequestParams:i,customErrors:o}),...l??{},...s}}};return Je(r.actionId,u),n[a.stepId]=u,n},{}),result:r.result}},qe=(e,n,r)=>{if(t(r)||!Array.isArray(r))return;let i=new Set(Object.keys(e.scopeDefinitions||{})),a=[],o=r.map((e,t)=>{if(typeof e!=`object`||!e)return;let r=e.requiredScopes?e.requiredScopes.split(` `).filter(e=>e.trim().length>0):void 0;return Object.values(r??[]).forEach(r=>{i.has(r)||a.push({message:`Scope '${r}' included in field config '${e.targetFieldKey}' is not defined.`,path:[...n,`fieldConfigs`,t],keys:[`requiredScopes`]})}),{...e,requiredScopes:r}});if(a.length>0)throw new F(a);return{fields:o}},Je=(e,t)=>{let n=t.stepFunction.version??`1`,r=y[t.stepFunction.functionName]?.[`v${n}`];if(!r)throw new pe(e,t.id,t.stepFunction.functionName,n);let i=r.inputSchema;i&&rt(i,t.stepFunction.params,e,t.id,t.stepFunction.functionName,n)},B=(e,t)=>{if(!e.inputs)return{};let n=Ye(e.inputs),r=o.object(n).parse(t);return{...r.headers??{},...r.query??{},...r.path??{},...r.body??{}}},Ye=e=>{let t=e.reduce((e,t)=>(e[t.in]||(e[t.in]=[]),e[t.in].push(t),e),{}),n={};for(let[e,r]of Object.entries(t)){let t={};for(let e of r){let n=Ze(e);e.description&&(n=n.describe(e.description)),e.required||(n=n.optional()),t[e.name]=n}Object.keys(t).length>0&&(n[e]=o.object(t))}return n},Xe=(e,t)=>{if(!t)throw Error(`Enum input "${e}" requires oneOf definition`);let n;if(`values`in t)n=t.values;else if(`ref`in t){let r=te(t.ref);if(!r)throw Error(`Unknown enum reference "${t.ref}" in input "${e}"`);n=r}else throw Error(`Invalid oneOf definition in input "${e}"`);if(n.length===0)throw Error(`Enum input "${e}" must have at least one allowed value`);return o.enum(n)},Ze=e=>{let t;switch(e.type){case`string`:case`datetime_string`:t=o.string();break;case`number`:t=o.number();break;case`boolean`:t=o.boolean();break;case`enum`:t=Xe(e.name,e.oneOf);break;case`object`:if(e.properties&&e.properties.length>0){let n={};for(let t of e.properties){let e=Ze(t);t.description&&(e=e.describe(t.description)),t.required||(e=e.optional()),n[t.name]=e}t=o.object(n)}else t=o.record(o.string(),o.unknown());break;default:t=o.unknown()}return e.array&&(t=o.array(t)),t},Qe=e=>{let t=e.actionType===`list`,n=e.cursor??{enabled:t,pageSize:_e};return{enabled:n.enabled&&t,pageSize:n.pageSize}},$e=e=>{if(e.actionType===`refresh_token`||t(e.compositeIdentifiers))return{enabled:!1};let n=[];for(let t of e.compositeIdentifiers?.fields??[]){let r=t.components.map(t=>{let n=e.fieldConfigs?.find(e=>e.targetFieldKey===t);return{name:t,alias:n?.alias}});n.push({targetFieldKey:t.targetFieldKey,remote:t.remote,components:r})}return{enabled:e.compositeIdentifiers.enabled,version:e.compositeIdentifiers.version,fields:n.length>0?n:void 0}},et=e=>{if(!t(e.scheduledJobs))return e.scheduledJobs},tt=({stepFunctionName:e,baseRequestParams:t,customErrors:n={}})=>{if(e===`request`||e===`paginated_request`||e===`soap_request`||e===`soap_paginated_request`){let e=[{receivedStatus:500,targetStatus:502}],r=n&&Array.isArray(n)?n:[],i=[...r,...e];return{...t,customErrors:i}}else return{}},nt=(e,t)=>{let n=e.safeParse(t);if(n.success)return n.data;{let e=n.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new fe(e,`Invalid connector schema`)}},rt=(e,t,n,r,i,a)=>{let o=e.safeParse(t);if(o.success)return o.data;{let e=o.error.issues.map(e=>({code:e.code,message:e.message,input:e.input,path:e.path,keys:e?.keys??[]}));throw new me(n,r,i,a,e)}},V=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return;let o=e.authentication?.[t]?.[n]?.refreshAuthentication?.action;if(a(o))return{action:o,params:{}}},it=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.type;if(i!==`oauth2`)return!1;let o=V(e,t,n);return a(o)},at=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenExpiresIn},ot=(e,t,n)=>{let r=e.authentication?.[t]?.[n],i=r?.authorization,a=r?.type;if(a===`oauth2`)return i?.tokenRefreshExpiresIn},st=(e,t=[])=>ut(t,e.releaseStage),ct=(e,t=[])=>{if(!st(e,t))return;let n={};if(e.actions)for(let[r,i]of Object.entries(e.actions))ut(t,i.releaseStage)&&(n[r]=i);return{...e,actions:n}},lt=e=>e??`ga`,ut=(e=[],t)=>{let n=lt(t);return e.includes(n)},dt=e=>{try{let t=R(e);return{success:!0,connector:t}}catch(n){if(n instanceof fe||n instanceof F){let r=n.issues,i=[];return r.forEach(n=>{let r=n?.keys?.[0],a=t(r)?n.path:[...n.path,r],o=ft(a,e);i.push({line:o,message:n.message,field:a.join(`.`)})}),{success:!1,errors:i}}else if(n instanceof de)return{success:!1,errors:[{line:n.line,message:`The YAML connector file is not valid. Please check the syntax and structure.`,field:void 0}]};else if(n instanceof pe){let t=pt(n.actionId,n.stepId,n.functionName,!1,e);return{success:!1,errors:[{line:t,message:n.message,field:void 0}]}}else if(n instanceof me){let r=n.issues,i=[];return r.forEach(r=>{let a=r?.keys?.[0],o=t(a)?r.path:[...r.path,a],s=pt(n.actionId,n.stepId,n.functionName,!0,e);i.push({line:s,message:r.message,field:o.join(`.`)})}),{success:!1,errors:i}}}return{success:!1,errors:[{line:1,message:`An unknown error occurred while parsing the connector.`,field:void 0}]}},ft=(e,n)=>{let r=n.split(`
|
|
5
|
+
`),i=0,o=-1,s=0;for(let n=0;n<r.length;n++){let c=r[n],l=c.match(/^(\s*)/)?.[1]?.length||0,u=c.replace(`- `,``).trim();if(u.startsWith(`#`)||u===``||l<=o)continue;let d=a(e[i])?`${String(e[i])}`:``;if(t(d))return s+1;if(isNaN(Number(d))){if(u.startsWith(`${d}:`)){if(i===e.length-1)return n+1;o=l,s=n,i++}}else{let e=parseInt(d,10),t=-1;for(let a=n;a<r.length;a++){let o=r[a],c=o.trim();if(c.startsWith(`-`)&&t++,t===e){i++,s=n,n--;break}else n++}}}return s+1},pt=(e,n,r,i,o)=>{let s=o.split(`
|
|
6
|
+
`),c=1,l=null,u=null;for(let o=0;o<s.length;o++){let d=s[o],f=d.trim();if(t(l)&&f===`- actionId: ${e}`){l=e,c=o+1;continue}if(a(l)&&t(u)&&f===`- stepId: ${n}`){u=n,c=o+1;continue}if(a(l)&&a(u)&&!i&&f.startsWith(`functionName: ${r}`)||a(l)&&a(u)&&i&&f===`parameters:`)return c=o+1,c}return c};var H=class e extends Error{errorType;context;constructor(t,n,r){super(r),this.name=`ConnectSDKError`,this.errorType=t,this.context=n,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){return`${this.name} [${this.errorType}]: ${this.message}`}},mt=class extends H{constructor(e,t){super(`CONNECTOR_PARSE_ERROR`,e,t),this.name=`ConnectorParseError`}},U=class extends H{constructor(e,t){super(`MISSING_ACTION_ERROR`,e,t),this.name=`MissingActionError`}},W=class extends H{validationErrors;constructor(e,t,n){super(`INVALID_ACTION_INPUTS_ERROR`,e,t),this.name=`InvalidActionInputsError`,this.validationErrors=n}},ht=class extends H{constructor(e,t){super(`INVALID_CURSOR_ERROR`,e,t),this.name=`InvalidCursorError`}};const gt=(e,t)=>{let n=Object.keys(e.authentication??{}).map(t=>({type:`custom`,label:e.authentication?.[t].production?.label||`Custom`,key:t,required_scopes:e.authentication?.[t].production?.requiredScopes})),r=Object.values(e?.actions??{}).map(e=>({id:e.id,description:e.description.replace(/\b\w/g,e=>e.toUpperCase()),label:e.label.replace(/\b\w/g,e=>e.toUpperCase()),schema_type:e.schemaType,tags:e.tags,required_scopes:e.requiredScopes,authentication:n,action_details:t?.includes(`action_details`)?e:void 0}));return{version:e.version,name:e.title,key:e.key,icon:e.assets?.icon,description:e.description,authentication:n,scope_definitions:Object.values(e.scopeDefinitions??{})??void 0,actions:r}},_t=(e,t)=>e.map(e=>gt(e,t)),vt=async({block:e,stepFunctionName:t,params:n,buildStepFunction:r=v.build})=>{let i=r({functionName:t}).fn,a=await i({block:e,params:n}),o=t===_.MAP_FIELDS?{[_.MAP_FIELDS.toString()]:{output:{data:a.block.result},errors:a.errors,successful:a.successful}}:{};return{...a.block,steps:{...a?.block?.steps??{},...o}}},G=({category:t,connectorKey:n,connectorVersion:r,authConfigKey:i,environment:a=`production`,action:o,accountSecureId:s,projectSecureId:c,organizationId:l})=>({organizationId:l,projectSecureId:c,accountSecureId:s,connectorKey:n,connectorVersion:r,category:t,service:``,resource:``,schema:o?.schema?.key,actionType:o?.actionType??`unknown`,authenticationType:i,environment:a,actionRunId:e()}),yt=(e,t,n)=>e.authentication?.[t]?.[n]?.testActions,bt=e=>{let n=e.action?.compositeIdentifiers,r={...e.inputs??{}};if(!n?.enabled||t(r))return e;let i=n.fields?.reduce((e,t)=>(t.components.forEach(t=>{t.alias&&(e[t.name]=t.alias)}),e),{}),a={version:n.version??m,aliases:i};return K(r,a,e.logger),{...e,inputs:r}},K=(e,t,n)=>{for(let r in e){let i=e[r];if(typeof i==`string`||Array.isArray(i)&&i.every(e=>typeof e==`string`))Et(i,r,e,t,n);else if(Array.isArray(i))for(let e of i)K(e,t,n);else typeof i==`object`&&i&&K(i,t,n)}},xt=(e,t,n,r)=>{let i=[],a=[];for(let o of e)try{let e=ee(o,n);i.push(e)}catch(e){r?.debug({message:`Received ${t} with invalid composite ID, assuming it is not a composite ID`,category:`processCompositeId`,context:{key:t,inputElement:o,compositeIdentifierConfig:n,error:e}}),a.push(o)}return{compositeIdComponents:i,nonCompositeIds:a}},St=(e,t,n,r)=>{let i=n.filter(e=>Object.keys(e).length>1);i.length>0&&(e.decoded_ids={...e.decoded_ids??{},[t]:r?i:i[0]})},Ct=e=>{let t=Object.values(e);return t.length===1&&(typeof t[0]==`string`||typeof t[0]==`number`)},wt=(e,t,n,r,i)=>{n.every(Ct)&&(i?e[t]=[...n.map(e=>Object.values(e)[0]),...r]:n.length>0&&(e[t]=Object.values(n[0])[0]))},Tt=(e,t,n)=>{e instanceof h&&e.type===`COMPOSITE_ID_MISSING_HEADER_ERROR`?n?.debug({message:`Received ${t} with no composite ID header, assuming it is not a composite ID`}):n?.warning({message:`Error processing composite ID for ${t}, ignoring it`,error:e})},Et=(e,t,n,r,i)=>{try{let a=Array.isArray(e),o=a?e:[e];if(o.length===0)return;let{compositeIdComponents:s,nonCompositeIds:c}=xt(o,t,r,i);St(n,t,s,a),wt(n,t,s,c,a)}catch(e){Tt(e,t,i)}},q=`remote_`,Dt=e=>{let n=e.action?.compositeIdentifiers;if(!n?.enabled)return e;let r=`data`,i=e.outputs?.[r];if(t(i))return e;let a=Array.isArray(i)?i.map(e=>Ot(e,n)):Ot(i,n);return{...e,outputs:{...e.outputs??{},[r]:a}}},Ot=(e,t)=>{let n=kt(e,t),i=J(n);return{...e,...r(i)?i:{}}},kt=(e,t)=>{let n=t.version??m,r={};return t.fields?.forEach(t=>{let i={},a=[];t.components.forEach(t=>{t.alias&&(i[t.name]=t.alias),a.push({key:t.name,value:e[t.name]})});let o=a.length===1?a[0]:{identifiers:a},s={version:n,aliases:Object.keys(i).length>0?i:void 0},c=b(o,s);r[t.targetFieldKey]=c,t.remote&&(r[`${q}${t.remote}`]=e[t.remote])}),{...e,...r}},At=e=>e===`id`||/.+_id(s)?$/.test(e),jt=e=>Array.isArray(e)&&e.every(e=>i(e)&&e.length>0),Mt=(e,t)=>S(e)||t.startsWith(q),Nt=(e,t)=>{try{return b({key:e,value:t},{version:m})}catch{return t}},Pt=(e,t,n)=>{let r=t.map(t=>i(t)&&t.length>0&&!S(t)?Nt(e,t):t);n[e]=r,n[`${q}${e}`]=t},Ft=(e,t,n)=>{if(Mt(t,e))return;let r=b({key:e,value:t},{version:m});n[e]=r,n[`remote_${e}`]=t},It=(e,t,n)=>{jt(t)?Pt(e,t,n):i(t)&&t.length>0&&Ft(e,t,n)},J=e=>{if(Array.isArray(e))return e.map(e=>J(e));if(!r(e))return e;let t={...e};for(let[n,i]of Object.entries(e))(r(i)||Array.isArray(i)&&i.length>0&&r(i[0]))&&(t[n]=J(i)),At(n)&&It(n,i,t);return t},Lt=(e,t)=>{let r=Number(e.inputs?.page_size),i=a(e.inputs?.page_size)&&n(r)&&!Number.isNaN(r)?r:e.action?.cursor?.pageSize??t;return i},Rt=(e,n,i,o)=>{let s=t(e)?void 0:e.data,c=Object.keys(i).length+1,l=C({cursor:o,ignoreStepIndex:c});if(!r(e)||t(s)||(s?.length??0)<=n)return{result:e,next:a(o)&&!l?T(o):null};let u=o?.remote?.[c]?.pageNumber??1,d=(u-1)*n,f=d+n,p=s.slice(d,f),m=s.length>f||!l,h=E({cursor:o,stepIndex:c,pageNumber:u+1});return{result:{...e,data:p},next:m?T(h):null}},zt=e=>{let n=e.settings?.olap;return t(n)?{}:{logs:n.logs?{enabled:n.logs.enabled}:void 0,advanced:n.advanced?{enabled:n.advanced.enabled,ttl:n.advanced.ttl,errorsOnly:n.advanced.errorsOnly}:void 0}},Y=async({block:e,buildStepFunction:t=v.build,virtualPaginateResultFn:n=Rt,encodeResultCompositeIds:r=Dt,decodeInputCompositeIds:i=bt})=>{let a=i(e),o=await Gt({block:a,buildStepFunction:t,virtualPaginateResultFn:n});return r(o)},Bt=(e,t)=>e.condition?!O(e.condition,t):!1,Vt=(e,t,n)=>{let r=e.stepFunction,i=y[e.stepFunction.functionName]?.[`v${e.stepFunction.version??1}`],o=a(i?.inputSchema?.shape)?`cursor`in i?.inputSchema?.shape:!1;return t.action?.cursor.enabled&&o?{...r.params??{},cursor:{token:t.nextCursor?.remote?.[n]?.providerPageCursor,position:t.nextCursor?.remote?.[n]?.position}}:r.params??{}},Ht=(e,t,n,r,i)=>{let a=X({block:e,stepId:t,successful:!1,functionOutput:n}),o=r.ignoreError??!1;return o||(i.hasFatalError=!0,i.errorStatusCode??=n.output?.statusCode??500),a},Ut=async(e,t,n,r,i,a)=>{let o=n[e],s=o.stepFunction,c=a.buildStepFunction({functionName:s.functionName,version:s.version,validateSchemas:!0}).fn;if(Bt(o,r))return X({block:r,stepId:e,successful:!0,skipped:!0,message:`Step skipped due to condition not met.`});if(i.hasFatalError)return X({block:r,stepId:e,successful:!1,skipped:!0,message:`Step skipped due to previous error.`});let l=Vt(o,r,t),u=await c({block:r,params:l});if(u.successful===!1)return Ht(r,e,u,o,i);let d=r.action?.cursor.enabled?E({cursor:r.nextCursor,stepIndex:t,providerPageCursor:u.output?.next,position:u.output?.position}):void 0;return X({block:{...u.block,nextCursor:d},stepId:e,functionOutput:u})},Wt=(e,t,n,i,o)=>{let s=!n.hasFatalError,c=s?e.action?.responses.success.statusCode??200:n.errorStatusCode??500,l=a(o)&&r(o.result)?{next:o.next,...o.result}:i;return{...t,outputs:l,response:{successful:s,statusCode:c,message:s?void 0:e.action?.responses?.errors?.[c]?.description??ne?.[c]??`Error while processing the request`}}},Gt=async({block:e,buildStepFunction:t=v.build,virtualPaginateResultFn:n=Rt})=>{let r=e.action?.steps||{},i={...e},a=Object.keys(r),o=Lt(e,_e),s={hasFatalError:!1,errorStatusCode:null},c={block:e,buildStepFunction:t,virtualPaginateResultFn:n};for(let[e,t]of a.entries()){let n=new Date;i=await Ut(t,e,r,i,s,c),qt({block:i,stepId:t,startTime:n,endTime:new Date})}let l=e.action?.result?Kt(e.action.result,i):void 0,u=e.action?.cursor.enabled?n(l,o,r,i.nextCursor):void 0;return Wt(e,i,s,l,u)},Kt=(e,t)=>r(e)?k(e,t):O(e,t),X=({block:e,stepId:t,successful:n,functionOutput:r,skipped:i,message:a})=>({...e,steps:{...e.steps,[t]:{successful:n??r?.successful??!1,errors:r?.errors,output:r?.output,skipped:i,message:a}}}),qt=({block:e,stepId:n,startTime:r,endTime:i})=>{let a=e.olapClient;if(t(a?.recordStep))return;let o=zt(e),s=e.context,c={actionRunId:s.actionRunId??`unknown`,stepId:n,status:e.steps?.[n]?.successful?`successful`:`failed`,skipped:e.steps?.[n]?.skipped,message:e.steps?.[n]?.message,outputs:e.steps?.[n]?.output,errors:e.steps?.[n]?.errors,startTime:r,endTime:i};a.recordStep(c,o)},Z=async e=>{let{pathParams:n={},queryParams:r={},body:o={},headers:s={},parseConnector:c=R,parseActionInputsFn:l=B,createBlockContextFn:u=G,createBlockFn:d=A,runStepActionFn:f=Y,getActionFromUrlFn:p=j,getActionForRefreshAuthenticationFn:m=V,getTestActionsFn:h=yt,mode:g,account:_,connector:v,getHttpClient:y,getOlapClient:ee,settings:b,logger:x,category:te,...S}=e,C=_.authConfigKey,w=_.environment??`production`,T=_.secureId,E=_.projectSecureId,ne=_.organizationId,re=_.credentials,D=u({category:te??`action`,connectorKey:_.providerKey,connectorVersion:_.providerVersion,authConfigKey:C,environment:w,accountSecureId:T,projectSecureId:E,organizationId:ne}),O=new Date,k;try{k=i(v)?c(v):v}catch{throw new mt(D,`Error while parsing connector`)}let M={connector:k,context:D,credentials:re,settings:b,logger:x,getHttpClient:y,getOlapClient:ee};if(g===`action_id`){let{actionId:e}=S,i=oe(k,e);if(t(i))throw new U(D,`No matching action found`);let a=await Q({action:i,blockContext:D,queryParams:r,pathParams:n,body:o,headers:s,parseActionInputsFn:l,createBlockFn:d,createBlockParams:M,runStepActionFn:f});return a.statistics={startTime:O,endTime:new Date},$({block:a}),a}else if(g===`test_actions`){let e=h(k,C,w);if(t(e)||e.length===0){let e=await Jt(d,M);return e.statistics={startTime:O,endTime:new Date},$({block:e}),e}D.actionType=`test`;for(let n of e){let e=await d({...M,inputs:void 0,action:n.action,nextCursor:void 0}),r=a(n.condition)?ie(n.condition,e):!0;if(!r)continue;let i=await f({block:e});if((t(i?.response?.successful)||!i.response.successful)&&n.required){x?.error({code:`TestActionFailed`,message:`Test action "${n.action.id}" failed with error: ${i?.response?.message}`});let e=await Yt(d,M);return $({block:e}),e}}let n=await Jt(d,M);return n.statistics={startTime:O,endTime:new Date},$({block:n}),n}else if(g===`refresh_authentication`){let e=m(k,C,w);if(t(e))throw new U(D,`No matching action found`);let n=await Q({action:e.action,blockContext:D,queryParams:r,pathParams:e.params,body:o,headers:s,parseActionInputsFn:l,createBlockFn:d,createBlockParams:M,runStepActionFn:f});return n.statistics={startTime:O,endTime:new Date},$({block:n}),n}else if(g===`path`){let{path:e,method:n}=S,i=p(k,e,n);if(t(i))throw new U(D,`No matching action found`);let a=await Q({action:i.action,blockContext:D,queryParams:r,pathParams:i.params,body:o,headers:s,parseActionInputsFn:l,createBlockFn:d,createBlockParams:M,runStepActionFn:f});return a.statistics={startTime:O,endTime:new Date},$({block:a}),a}else{let e=await Yt(d,M);return e.statistics={startTime:O,endTime:new Date},$({block:e}),e}},Q=async e=>{let{action:t,blockContext:n,queryParams:r,pathParams:i,body:a,headers:o,parseActionInputsFn:s,createBlockFn:c,createBlockParams:l,runStepActionFn:u}=e;n.actionType=t.actionType,n.schema=t.schema?.key;let d=Xt(r,n),f;try{f=s(t,{path:i,query:r,body:a,headers:o})}catch(e){if(typeof e==`object`&&e&&`issues`in e&&Array.isArray(e.issues)){let t=e.issues.map(e=>{let t=e.path.map(String),n=t[0]||`body`,r=t.slice(1).join(`.`);return{field:r||t[0]||`unknown`,location:n,expected:`expected`in e?String(e.expected):e.code,received:`received`in e?String(e.received):`unknown`,message:e.message}});throw new W(n,`Invalid input values provided`,t)}throw new W(n,`Error while parsing action inputs`)}let p=await c({...l,inputs:f,action:t,nextCursor:d});return await u({block:p})},Jt=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!0,statusCode:200}}},Yt=async(e,t)=>{let n=await e({...t,inputs:void 0,action:void 0,nextCursor:void 0});return{...n,response:{successful:!1,statusCode:500}}},Xt=(e,t)=>{let n=e?.next,r=a(n)&&t.actionType===`list`?x(n):void 0;if(r===null)throw new ht(t,`Invalid cursor.`);return r},$=({block:e})=>{let n=e.olapClient;if(t(n?.recordAction))return;let r=zt(e),i=e.context,a={actionRunId:e.context.actionRunId||`unknown`,actionId:e.action?.id||`unknown`,connectorKey:i.connectorKey,connectorVersion:i.connectorVersion,actionType:i.actionType,category:i.category,organizationId:i.organizationId||`unknown`,projectSecureId:i.projectSecureId,accountSecureId:i.accountSecureId,originOwnerId:i.originOwnerId,originOwnerName:i.originOwnerName,httpMethod:e.action?.entrypointHttpMethod,url:e.action?.entrypointUrl,sourceId:i.sourceId,sourceType:i.sourceType,sourceValue:i.sourceValue,status:e.response?.successful?`success`:`error`,message:e.response?.message,outputs:e.outputs,startTime:e.statistics?.startTime,endTime:e.statistics?.endTime};n.recordAction(a,r)},Zt=async({actionId:e,account:t,connector:n,pathParams:r={},queryParams:i={},body:a={},headers:o={},logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u=R,parseActionInputsFn:d=B,createBlockContextFn:f=G,createBlockFn:p=A,runStepActionFn:m=Y})=>Z({mode:`action_id`,actionId:e,account:t,connector:n,pathParams:r,queryParams:i,body:a,headers:o,logger:s,getHttpClient:c,getOlapClient:l,parseConnector:u,parseActionInputsFn:d,createBlockContextFn:f,createBlockFn:p,runStepActionFn:m}),Qt=`stackone://internal//`,$t=`${Qt}refresh_token`,en=async({account:e,connector:t,category:n,path:r,method:i=`get`,queryParams:a={},body:o,headers:s,logger:c,getHttpClient:l,parseConnector:u=R,getActionFromUrlFn:d=j,getActionForRefreshAuthenticationFn:f=V,parseActionInputsFn:p=B,createBlockContextFn:m=G,createBlockFn:h=A,runStepActionFn:g=Y})=>{let _=tn(r),v=_?await Z({mode:`refresh_authentication`,account:e,connector:t,getActionForRefreshAuthenticationFn:f,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:g}):await Z({mode:`path`,account:e,category:n,connector:t,path:r,method:i,queryParams:a,body:o,headers:s,getActionFromUrlFn:d,parseConnector:u,logger:c,getHttpClient:l,parseActionInputsFn:p,createBlockContextFn:m,createBlockFn:h,runStepActionFn:g});return v},tn=e=>e===$t,nn=async({account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i=R,getTestActionsFn:a=yt,createBlockContextFn:o=G,createBlockFn:s=A,runStepActionFn:c=Y})=>{let l=await Z({mode:`test_actions`,account:e,connector:t,logger:n,getHttpClient:r,parseConnector:i,getTestActionsFn:a,createBlockContextFn:o,createBlockFn:s,runStepActionFn:c});return l?.response?.successful??!1};export{H as ConnectSDKError,W as InvalidActionInputsError,ct as applyReleaseStageToConnector,A as createBlock,vt as executeStepFunction,ve as formatValidationErrorResponse,j as getActionFromUrl,gt as getActionsMeta,_t as getActionsMetaFromConnectors,ot as getRefreshTokenExpiresIn,at as getTokenExpiresIn,st as isConnectorReleased,se as loadConnector,B as parseActionInputs,R as parseYamlConnector,Z as runAction,Zt as runConnectorActionById,en as runConnectorActionByPath,Y as runStepAction,nn as runTestActions,it as supportsRefreshAuthentication,dt as validateYamlConnector};
|