@adminide-stack/form-builder-core 5.1.8-alpha.97 → 5.1.9-alpha.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/lib/config/cdnConfig.d.ts +7 -3
- package/lib/config/cdnConfig.d.ts.map +1 -1
- package/lib/config/cdnConfig.js +17 -7
- package/lib/config/cdnConfig.js.map +1 -1
- package/lib/config/configTypes.d.ts +21 -1
- package/lib/config/configTypes.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/utils/authMetaDataSchema.d.ts +95 -2
- package/lib/utils/authMetaDataSchema.d.ts.map +1 -1
- package/lib/utils/authMetaDataSchema.js +254 -27
- package/lib/utils/authMetaDataSchema.js.map +1 -1
- package/lib/utils/integrationCommands.d.ts +14 -0
- package/lib/utils/integrationCommands.d.ts.map +1 -1
- package/lib/utils/integrationCommands.js +123 -11
- package/lib/utils/integrationCommands.js.map +1 -1
- package/package.json +3 -4
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CDN / asset-URL configuration.
|
|
2
|
+
* CDN / asset-URL configuration for connector artwork.
|
|
3
3
|
*
|
|
4
4
|
* Connector configs store only the *path* portion
|
|
5
5
|
* (e.g. `_side/thirdparty/logos/gmail.svg`); call `iurl(path)` to get the
|
|
6
6
|
* full URL at runtime.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Logos are served from the `cde-extensions` bucket (the same CDN that fronts
|
|
9
|
+
* the connector registry and pods), *not* from the tenant upload bucket that
|
|
10
|
+
* `AWS_CDN_URL` points at. Override with the `EXTENSION_CDN_URL` env var via
|
|
11
|
+
* `setCdnBase()`; browser packages do that at init time.
|
|
10
12
|
*/
|
|
13
|
+
/** `cde-extensions` bucket CDN — the default home for connector artwork. */
|
|
14
|
+
export declare const DEFAULT_EXTENSION_CDN_BASE = "https://cdn.yantra.app";
|
|
11
15
|
/** Set the CDN base URL (typically called once from env-config). */
|
|
12
16
|
export declare function setCdnBase(base: string): void;
|
|
13
17
|
/** Get the current CDN base URL. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdnConfig.d.ts","sourceRoot":"","sources":["../../src/config/cdnConfig.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cdnConfig.d.ts","sourceRoot":"","sources":["../../src/config/cdnConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAInE,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAS7C;AAED,oCAAoC;AACpC,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,0DAA0D;AAC1D,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOzC"}
|
package/lib/config/cdnConfig.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CDN / asset-URL configuration.
|
|
2
|
+
* CDN / asset-URL configuration for connector artwork.
|
|
3
3
|
*
|
|
4
4
|
* Connector configs store only the *path* portion
|
|
5
5
|
* (e.g. `_side/thirdparty/logos/gmail.svg`); call `iurl(path)` to get the
|
|
6
6
|
* full URL at runtime.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Logos are served from the `cde-extensions` bucket (the same CDN that fronts
|
|
9
|
+
* the connector registry and pods), *not* from the tenant upload bucket that
|
|
10
|
+
* `AWS_CDN_URL` points at. Override with the `EXTENSION_CDN_URL` env var via
|
|
11
|
+
* `setCdnBase()`; browser packages do that at init time.
|
|
10
12
|
*/
|
|
11
|
-
|
|
13
|
+
/** `cde-extensions` bucket CDN — the default home for connector artwork. */
|
|
14
|
+
const DEFAULT_EXTENSION_CDN_BASE = 'https://cdn.yantra.app';
|
|
15
|
+
let _cdnBase = DEFAULT_EXTENSION_CDN_BASE;
|
|
12
16
|
/** Set the CDN base URL (typically called once from env-config). */
|
|
13
17
|
function setCdnBase(base) {
|
|
14
|
-
// Strip trailing slash for consistency.
|
|
15
|
-
|
|
18
|
+
// Strip trailing slash for consistency. Empty/blank resets to the default
|
|
19
|
+
// so an unset env var can never degrade logos to host-relative 404s.
|
|
20
|
+
const trimmed = (base || '').trim();
|
|
21
|
+
if (!trimmed) {
|
|
22
|
+
_cdnBase = DEFAULT_EXTENSION_CDN_BASE;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
_cdnBase = trimmed.endsWith('/') ? trimmed.slice(0, -1) : trimmed;
|
|
16
26
|
}
|
|
17
27
|
/** Get the current CDN base URL. */
|
|
18
28
|
function getCdnBase() {
|
|
@@ -26,4 +36,4 @@ function iurl(path) {
|
|
|
26
36
|
// Strip leading slash so we don't end up with a double-slash.
|
|
27
37
|
const clean = path.startsWith('/') ? path.slice(1) : path;
|
|
28
38
|
return _cdnBase ? `${_cdnBase}/${clean}` : clean;
|
|
29
|
-
}export{getCdnBase,iurl,setCdnBase};//# sourceMappingURL=cdnConfig.js.map
|
|
39
|
+
}export{DEFAULT_EXTENSION_CDN_BASE,getCdnBase,iurl,setCdnBase};//# sourceMappingURL=cdnConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdnConfig.js","sources":["../../src/config/cdnConfig.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cdnConfig.js","sources":["../../src/config/cdnConfig.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;AAWG;AAEH;AACA,MAAA,0BAAa,GAAA;AAIb,IAAA,QAAA,GAAA,0BAAA;AACA;AAWA,SAAA,UAAA,CAAA,IAAA,EAAA;AACA;AAIA;AACA,EAAA,MAAA,OAAA,GAAA,CAAA,IAAA,MAAqB,EAAA,IAAM,EAAA;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -28,7 +28,7 @@ export type FieldType = 'string' | 'number' | 'integer' | 'boolean' | 'array' |
|
|
|
28
28
|
* - Credentials: username, password, email
|
|
29
29
|
* - Display-only: info, label_info
|
|
30
30
|
*/
|
|
31
|
-
export type GenericFieldType = 'api_key' | 'api_secret' | 'api_token' | 'access_token' | 'access_key' | 'bearer_token' | 'personal_access_token' | 'bot_token' | 'private_key' | 'secret_key' | 'jwt_token' | 'auth_token' | 'data_api_key' | 'public_api_key' | 'secret_access_key' | 'app_id' | 'app_key' | 'workspace_id' | 'project_id' | 'organization_id' | 'account_id' | 'space_id' | 'site_id' | 'dataset_id' | 'client_id' | 'tenant_id' | 'campaign_id' | 'public_id' | 'public_key' | 'user_id' | 'cloud_name' | 'business_id' | 'event_id' | 'store_id' | 'bucket_name' | 'index_name' | 'database_name' | 'collection_name' | 'table_name' | 'deployment_name' | 'base_url' | 'instance_url' | 'subdomain' | 'domain' | 'region' | 'connection_string' | 'endpoint' | 'environment' | 'username' | 'password' | 'email' | 'info' | 'label_info';
|
|
31
|
+
export type GenericFieldType = 'api_key' | 'api_secret' | 'api_token' | 'access_token' | 'access_key' | 'bearer_token' | 'personal_access_token' | 'bot_token' | 'private_key' | 'private_key_passphrase' | 'bastion_private_key' | 'secret_key' | 'jwt_token' | 'auth_token' | 'data_api_key' | 'public_api_key' | 'secret_access_key' | 'app_id' | 'app_key' | 'workspace_id' | 'project_id' | 'organization_id' | 'account_id' | 'space_id' | 'site_id' | 'dataset_id' | 'client_id' | 'tenant_id' | 'campaign_id' | 'public_id' | 'public_key' | 'user_id' | 'cloud_name' | 'business_id' | 'event_id' | 'store_id' | 'bucket_name' | 'index_name' | 'database_name' | 'collection_name' | 'table_name' | 'deployment_name' | 'base_url' | 'instance_url' | 'subdomain' | 'domain' | 'region' | 'connection_string' | 'endpoint' | 'environment' | 'port' | 'host_allowlist' | 'host_fingerprint' | 'host_verification_mode' | 'auth_method' | 'agent_socket' | 'bastion_host' | 'bastion_port' | 'bastion_host_fingerprint' | 'read_only' | 'command_denylist' | 'command_quota' | 'username' | 'password' | 'email' | 'bastion_username' | 'bastion_password' | 'info' | 'label_info';
|
|
32
32
|
/**
|
|
33
33
|
* Where the field value should be placed in the HTTP request at runtime.
|
|
34
34
|
* Standard third-party placement model for HTTP request field mapping.
|
|
@@ -89,6 +89,12 @@ export interface FormFieldConfig {
|
|
|
89
89
|
/** Custom header/query-param name when placement is 'header' or 'query'. */
|
|
90
90
|
placementKey?: string;
|
|
91
91
|
scope?: ConfigurationScope;
|
|
92
|
+
/**
|
|
93
|
+
* Tucks the field under a collapsed "Advanced settings" toggle in the connector form, for
|
|
94
|
+
* values with a working default most people never change (an IMAP host or port). The
|
|
95
|
+
* section opens by itself when one of its fields fails validation.
|
|
96
|
+
*/
|
|
97
|
+
advanced?: boolean;
|
|
92
98
|
}
|
|
93
99
|
export type ResourceSourceType = 'jsCode' | 'graphql' | 'rest-api';
|
|
94
100
|
export interface GraphQLResourceConfig {
|
|
@@ -194,6 +200,13 @@ export interface ConnectorConfig {
|
|
|
194
200
|
usePKCE?: boolean;
|
|
195
201
|
/** OAuth client authentication method */
|
|
196
202
|
clientAuthMethod?: 'client_secret_basic' | 'client_secret_post';
|
|
203
|
+
/**
|
|
204
|
+
* Query/body parameter name the provider expects for the client id (e.g. TikTok uses
|
|
205
|
+
* `client_key`). Applies to custom OAuth endpoints only. Defaults to `client_id`.
|
|
206
|
+
*/
|
|
207
|
+
clientIdParamName?: string;
|
|
208
|
+
/** Join scopes with commas instead of spaces in the authorization request (e.g. TikTok). */
|
|
209
|
+
useCommaSeparatedScopes?: boolean;
|
|
197
210
|
/** Explicit OAuth Authorization URL (if useCustomOAuthEndpoints is true) */
|
|
198
211
|
authorizationUrl?: string;
|
|
199
212
|
/** Explicit OAuth Token URL (if useCustomOAuthEndpoints is true) */
|
|
@@ -202,6 +215,13 @@ export interface ConnectorConfig {
|
|
|
202
215
|
revocationUrl?: string;
|
|
203
216
|
/** Use HTTP Basic auth for token exchange (client_secret_basic). */
|
|
204
217
|
useBasicAuth?: boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Provider issues a developer token that every API call must carry in addition to
|
|
220
|
+
* the OAuth access token (Google Ads). Declared alongside clientId/clientSecret —
|
|
221
|
+
* same scope, same vault-backed defaultValueSource, read from
|
|
222
|
+
* `<PROVIDER>_DEVELOPER_TOKEN`.
|
|
223
|
+
*/
|
|
224
|
+
requiresDeveloperToken?: boolean;
|
|
205
225
|
/** MCP endpoint (if the provider supports MCP auth) */
|
|
206
226
|
mcpUrl?: string;
|
|
207
227
|
/** Authentication methods supported by this connector */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configTypes.d.ts","sourceRoot":"","sources":["../../src/config/configTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEjG;;;;;;;;;GASG;AAMH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,gCAAgC,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GAEtB,SAAS,GACT,YAAY,GACZ,WAAW,GACX,cAAc,GACd,YAAY,GACZ,cAAc,GACd,uBAAuB,GACvB,WAAW,GACX,aAAa,GACb,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GAEnB,QAAQ,GACR,SAAS,GACT,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,UAAU,GACV,SAAS,GACT,YAAY,GACZ,WAAW,GACX,WAAW,GACX,aAAa,GACb,WAAW,GACX,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,aAAa,GACb,UAAU,GACV,UAAU,GACV,aAAa,GACb,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,iBAAiB,GAEjB,UAAU,GACV,cAAc,GACd,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,mBAAmB,GACnB,UAAU,GACV,aAAa,
|
|
1
|
+
{"version":3,"file":"configTypes.d.ts","sourceRoot":"","sources":["../../src/config/configTypes.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getCdnBase,iurl,setCdnBase}from'./config/cdnConfig.js';export{CONNECTOR_CATALOG_SAMPLE_CHUNK_SIZE,CONNECTOR_CATALOG_SAMPLE_ENTRIES,CONNECTOR_CATALOG_SAMPLE_ENTRY_BY_SCHEMA_ID}from'./config/connectorSampleOptions.generated.js';export{CONNECTOR_CATEGORIES}from'./config/configTypes.js';export{generateFunctionCode,generateHandlerBody,generateHandlerBodyWithReturn,generateStepFromFunction,generateStepFunctionsFromDB,wrapStepsInInngestFunction}from'./inngest/generateFunctionCode.js';export{getAvailableDefinitions,installLibraryForAutocomplete,setupMonacoAutocomplete,setupStepAutocomplete,updateAutocompleteConfig}from'./inngest/monacoAutocompleteIntegration.js';export{cleanStepCode,extractFunctionBody,extractStepVarName,generateFromExtractedFunctions}from'./inngest/stepGenerator.js';export{buildMetadataSchema,buildProviderConfig,buildProviderSeedFromConfig,buildProviderWithRefs,createOAuthSeedGenerator}from'./utils/authMetaDataSchema.js';export{resolveConnectorFieldTokensInString,resolveConnectorFieldTokensInValue}from'./utils/connectorFieldTokenResolver.js';export{deepMergeElements,deepMergeFormSteps}from'./utils/deepMergeFormSteps.js';export{flatten,unflatten}from'./utils/json.js';export{DatabaseType,FORM_METADATA_NODE_TYPE,FormType,SCHEMA_ID_OPTIONS,flattenSchemaWithUiContext,flattenSchemas,flattenUiSchema,isContributionSchemaId,parseSampleNodes}from'./utils/schemaHelpers.js';export{buildCommandsFromActions,buildMenusFromCommands,buildParamBindings,extractTemplateUserFields,extractUserFieldsFromStepperFormMetadata,parseInputTemplate,resolveInputTemplate}from'./utils/integrationCommands.js';//# sourceMappingURL=index.js.map
|
|
1
|
+
export{DEFAULT_EXTENSION_CDN_BASE,getCdnBase,iurl,setCdnBase}from'./config/cdnConfig.js';export{CONNECTOR_CATALOG_SAMPLE_CHUNK_SIZE,CONNECTOR_CATALOG_SAMPLE_ENTRIES,CONNECTOR_CATALOG_SAMPLE_ENTRY_BY_SCHEMA_ID}from'./config/connectorSampleOptions.generated.js';export{CONNECTOR_CATEGORIES}from'./config/configTypes.js';export{generateFunctionCode,generateHandlerBody,generateHandlerBodyWithReturn,generateStepFromFunction,generateStepFunctionsFromDB,wrapStepsInInngestFunction}from'./inngest/generateFunctionCode.js';export{getAvailableDefinitions,installLibraryForAutocomplete,setupMonacoAutocomplete,setupStepAutocomplete,updateAutocompleteConfig}from'./inngest/monacoAutocompleteIntegration.js';export{cleanStepCode,extractFunctionBody,extractStepVarName,generateFromExtractedFunctions}from'./inngest/stepGenerator.js';export{buildCredentialOAuthConfigKey,buildCredentialOAuthTokenVaultKeys,buildCredentialScopedSecretKey,buildMetadataSchema,buildNamespaceCredentialOAuthTokenVaultKeys,buildOAuthInstanceTokenVaultKeys,buildProviderConfig,buildProviderCredentialOAuthTokenVaultKeys,buildProviderSeedFromConfig,buildProviderWithRefs,createOAuthSeedGenerator,credentialIdFromOAuthConfigKey,credentialIdFromScopedSecretKey,isCredentialAccountConfigKey,isCredentialScopedSecretKey,namespaceFromOAuthConfigKey,stripCredentialAccountConfigKey,stripCredentialScopedSecretKey,toVaultPrefix}from'./utils/authMetaDataSchema.js';export{resolveConnectorFieldTokensInString,resolveConnectorFieldTokensInValue}from'./utils/connectorFieldTokenResolver.js';export{deepMergeElements,deepMergeFormSteps}from'./utils/deepMergeFormSteps.js';export{flatten,unflatten}from'./utils/json.js';export{DatabaseType,FORM_METADATA_NODE_TYPE,FormType,SCHEMA_ID_OPTIONS,flattenSchemaWithUiContext,flattenSchemas,flattenUiSchema,isContributionSchemaId,parseSampleNodes}from'./utils/schemaHelpers.js';export{buildCommandsFromActions,buildIntegrationConfigurationContribution,buildMenusFromCommands,buildParamBindings,extractTemplateUserFields,extractUserFieldsFromStepperFormMetadata,parseInputTemplate,resolveInputTemplate}from'./utils/integrationCommands.js';//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ConnectorType } from 'common';
|
|
2
2
|
import { ConnectorCategoryTuple, ConnectorConfig, CustomButtonConfig, FormFieldConfig, FormResourceConfig, MCPProviderConfig } from '../config/configTypes';
|
|
3
3
|
type SampleFormGenerator = (title?: string, formIcon?: string, formExtensionId?: string) => any[];
|
|
4
|
-
interface ProviderTemplateSeed {
|
|
4
|
+
export interface ProviderTemplateSeed {
|
|
5
5
|
key: string;
|
|
6
6
|
providerId: string;
|
|
7
7
|
title: string;
|
|
@@ -11,10 +11,14 @@ interface ProviderTemplateSeed {
|
|
|
11
11
|
useCustomOAuthEndpoints?: boolean;
|
|
12
12
|
usePKCE?: boolean;
|
|
13
13
|
clientAuthMethod?: 'client_secret_basic' | 'client_secret_post';
|
|
14
|
+
clientIdParamName?: string;
|
|
15
|
+
useCommaSeparatedScopes?: boolean;
|
|
14
16
|
authorizationUrl?: string;
|
|
15
17
|
tokenUrl?: string;
|
|
16
18
|
revocationUrl?: string;
|
|
17
19
|
useBasicAuth?: boolean;
|
|
20
|
+
/** Provider requires a developer token alongside the OAuth client credentials. */
|
|
21
|
+
requiresDeveloperToken?: boolean;
|
|
18
22
|
mcpUrl?: string;
|
|
19
23
|
connectorType: ConnectorType;
|
|
20
24
|
authMethods: string[];
|
|
@@ -179,7 +183,96 @@ export declare const buildProviderConfig: (providerConfig: CustomProviderConfigI
|
|
|
179
183
|
}[];
|
|
180
184
|
};
|
|
181
185
|
export declare function buildProviderSeedFromConfig(provider: ConnectorConfig | MCPProviderConfig, connectorType: ConnectorType): ProviderTemplateSeed;
|
|
182
|
-
|
|
186
|
+
/**
|
|
187
|
+
* Normalize a provider id or form namespace into a vault secret key prefix.
|
|
188
|
+
* e.g. `gmail-app-hk7zf7w9` → `GMAIL_APP_HK7ZF7W9`
|
|
189
|
+
*/
|
|
190
|
+
export declare const toVaultPrefix: (value: string) => string;
|
|
191
|
+
/**
|
|
192
|
+
* Per-form-instance vault keys for non-account-specific secrets (e.g. API key fields).
|
|
193
|
+
*
|
|
194
|
+
* Do NOT use these for OAuth access/refresh tokens when multiple accounts can share
|
|
195
|
+
* one published form — connecting account B would overwrite account A's vault entry.
|
|
196
|
+
* Access/refresh live under per-credential `configKey.accounts.{id}.*` and durable
|
|
197
|
+
* `CRED_<id>_*` vault keys via syncOAuthTokensToCredentialVault.
|
|
198
|
+
*
|
|
199
|
+
* Client id/secret stay provider-scoped (shared OAuth app credentials).
|
|
200
|
+
*/
|
|
201
|
+
export declare const buildOAuthInstanceTokenVaultKeys: (namespace: string) => {
|
|
202
|
+
/** @deprecated Do not wire access tokens to this shared key — use CRED_* instead. */
|
|
203
|
+
readonly accessToken: `${string}_ACCESS_TOKEN`;
|
|
204
|
+
/** @deprecated Do not wire refresh tokens to this shared key — use CRED_* instead. */
|
|
205
|
+
readonly refreshToken: `${string}_REFRESH_TOKEN`;
|
|
206
|
+
readonly apiKey: `${string}_API_KEY`;
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Credential-scoped vault key: `{BASE_KEY}_{credentialId}`.
|
|
210
|
+
*
|
|
211
|
+
* This is the platform's own convention — `preferences-service` resolves a
|
|
212
|
+
* `format: 'secret'` config key to `${defaultValueSource.secretKey}_${credentialId}`
|
|
213
|
+
* on both read and write whenever the node context carries a `credentialId`.
|
|
214
|
+
* API-key connectors reuse the exact same shape so several credentials for one
|
|
215
|
+
* provider can coexist in a project/env instead of overwriting each other's
|
|
216
|
+
* shared `PROVIDER_API_KEY` entry (the same isolation OAuth gets from its
|
|
217
|
+
* per-account configKey).
|
|
218
|
+
*
|
|
219
|
+
* Idempotent when `baseSecretKey` is already scoped to the same credential.
|
|
220
|
+
*/
|
|
221
|
+
export declare const buildCredentialScopedSecretKey: (baseSecretKey: string, credentialId: string) => string;
|
|
222
|
+
/** True when a vault key already carries a `_{credentialId}` suffix. */
|
|
223
|
+
export declare const isCredentialScopedSecretKey: (secretKey: string) => boolean;
|
|
224
|
+
/** Strip `_{credentialId}` to recover the catalog/base vault key. */
|
|
225
|
+
export declare const stripCredentialScopedSecretKey: (secretKey: string) => string;
|
|
226
|
+
/** credentialId embedded in a scoped vault key, if any. */
|
|
227
|
+
export declare const credentialIdFromScopedSecretKey: (secretKey: string) => string | null;
|
|
228
|
+
/**
|
|
229
|
+
* Durable per-credential token vault keys. Used after OAuth connect so each
|
|
230
|
+
* FormBuilderCredential keeps its own token pair even when several credentials
|
|
231
|
+
* share the same published template/configKey staging path.
|
|
232
|
+
*/
|
|
233
|
+
export declare const buildCredentialOAuthTokenVaultKeys: (credentialId: string) => {
|
|
234
|
+
readonly accessToken: `${string}_ACCESS_TOKEN`;
|
|
235
|
+
readonly refreshToken: `${string}_REFRESH_TOKEN`;
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Provider-scoped per-credential OAuth vault keys (e.g. OAuth callback writes
|
|
239
|
+
* `GOOGLE_GMAIL_ACCESS_TOKEN_{credentialId}` to Personal Vault).
|
|
240
|
+
*/
|
|
241
|
+
export declare const buildProviderCredentialOAuthTokenVaultKeys: (providerId: string, credentialId: string) => {
|
|
242
|
+
readonly accessToken: `${string}_ACCESS_TOKEN_${string}`;
|
|
243
|
+
readonly refreshToken: `${string}_REFRESH_TOKEN_${string}`;
|
|
244
|
+
};
|
|
245
|
+
/**
|
|
246
|
+
* Namespace-scoped per-credential OAuth vault keys (`google_gmail-app` → `GOOGLE_GMAIL_APP_*_{id}`).
|
|
247
|
+
*/
|
|
248
|
+
export declare const buildNamespaceCredentialOAuthTokenVaultKeys: (namespace: string, credentialId: string) => {
|
|
249
|
+
readonly accessToken: `${string}_ACCESS_TOKEN_${string}`;
|
|
250
|
+
readonly refreshToken: `${string}_REFRESH_TOKEN_${string}`;
|
|
251
|
+
};
|
|
252
|
+
/** True when configKey is already scoped to a FormBuilder credential account. */
|
|
253
|
+
export declare const isCredentialAccountConfigKey: (configKey: string) => boolean;
|
|
254
|
+
/** Strip `.accounts.{credentialId}` to recover the published template configKey. */
|
|
255
|
+
export declare const stripCredentialAccountConfigKey: (configKey: string) => string;
|
|
256
|
+
/** credentialId embedded in an account-scoped configKey, if any. */
|
|
257
|
+
export declare const credentialIdFromOAuthConfigKey: (configKey: string) => string | null;
|
|
258
|
+
/**
|
|
259
|
+
* Build the per-credential OAuth configKey used for connect / refresh / disconnect.
|
|
260
|
+
* Idempotent when `baseConfigKey` is already account-scoped for the same id.
|
|
261
|
+
*/
|
|
262
|
+
export declare const buildCredentialOAuthConfigKey: (baseConfigKey: string, credentialId: string) => string;
|
|
263
|
+
/** Extract the form namespace from an oauthConnector configKey path. */
|
|
264
|
+
export declare const namespaceFromOAuthConfigKey: (configKey: string) => string | null;
|
|
265
|
+
export interface SeedGeneratorOptions {
|
|
266
|
+
/**
|
|
267
|
+
* Exact namespace (== formId) per seed, aligned by index. Pass a published template's
|
|
268
|
+
* key to regenerate a form that is identity-compatible with it - same formId and the
|
|
269
|
+
* same `integrationSettings.settings.<type>.<ns>.oauthConnector` configuration keys -
|
|
270
|
+
* so stored credentials and OAuth writes keep resolving. Omitted entries fall back to
|
|
271
|
+
* the random-suffix default (new-form behavior).
|
|
272
|
+
*/
|
|
273
|
+
namespaces?: Array<string | undefined>;
|
|
274
|
+
}
|
|
275
|
+
export declare function createOAuthSeedGenerator(seeds: ProviderTemplateSeed[], options?: SeedGeneratorOptions): SampleFormGenerator;
|
|
183
276
|
export declare const buildProviderWithRefs: (provider: any, sampleNodes: any[]) => any;
|
|
184
277
|
export declare const buildMetadataSchema: (sampleNodes: any[]) => ({
|
|
185
278
|
schemaId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authMetaDataSchema.d.ts","sourceRoot":"","sources":["../../src/utils/authMetaDataSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,aAAa,EAAyD,MAAM,QAAQ,CAAC;AAClH,OAAO,EAEH,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAI/B,KAAK,mBAAmB,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AAElG,
|
|
1
|
+
{"version":3,"file":"authMetaDataSchema.d.ts","sourceRoot":"","sources":["../../src/utils/authMetaDataSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,10 +92,13 @@ const buildAppSeed = p => {
|
|
|
92
92
|
useCustomOAuthEndpoints: p.useCustomOAuthEndpoints,
|
|
93
93
|
usePKCE: p.usePKCE,
|
|
94
94
|
clientAuthMethod: p.clientAuthMethod,
|
|
95
|
+
clientIdParamName: p.clientIdParamName,
|
|
96
|
+
useCommaSeparatedScopes: p.useCommaSeparatedScopes,
|
|
95
97
|
authorizationUrl: p.authorizationUrl,
|
|
96
98
|
tokenUrl: p.tokenUrl,
|
|
97
99
|
revocationUrl: p.revocationUrl,
|
|
98
100
|
useBasicAuth: p.useBasicAuth,
|
|
101
|
+
requiresDeveloperToken: p.requiresDeveloperToken,
|
|
99
102
|
mcpUrl: p.mcpUrl || '',
|
|
100
103
|
connectorType: 'app',
|
|
101
104
|
authMethods,
|
|
@@ -232,7 +235,128 @@ const seedCategory = seed => seed.categories[0];
|
|
|
232
235
|
* 'app' but a `${id}:llm` key; everything else is an app connector.
|
|
233
236
|
*/
|
|
234
237
|
const seedCredentialNamespace = seed => seed.connectorType === 'mcp' ? 'mcp' : seed.key.endsWith(':llm') ? 'llm' : 'app';
|
|
238
|
+
/**
|
|
239
|
+
* Normalize a provider id or form namespace into a vault secret key prefix.
|
|
240
|
+
* e.g. `gmail-app-hk7zf7w9` → `GMAIL_APP_HK7ZF7W9`
|
|
241
|
+
*/
|
|
235
242
|
const toVaultPrefix = value => value.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase();
|
|
243
|
+
/**
|
|
244
|
+
* Per-form-instance vault keys for non-account-specific secrets (e.g. API key fields).
|
|
245
|
+
*
|
|
246
|
+
* Do NOT use these for OAuth access/refresh tokens when multiple accounts can share
|
|
247
|
+
* one published form — connecting account B would overwrite account A's vault entry.
|
|
248
|
+
* Access/refresh live under per-credential `configKey.accounts.{id}.*` and durable
|
|
249
|
+
* `CRED_<id>_*` vault keys via syncOAuthTokensToCredentialVault.
|
|
250
|
+
*
|
|
251
|
+
* Client id/secret stay provider-scoped (shared OAuth app credentials).
|
|
252
|
+
*/
|
|
253
|
+
const buildOAuthInstanceTokenVaultKeys = namespace => {
|
|
254
|
+
const prefix = toVaultPrefix(namespace);
|
|
255
|
+
return {
|
|
256
|
+
/** @deprecated Do not wire access tokens to this shared key — use CRED_* instead. */
|
|
257
|
+
accessToken: `${prefix}_ACCESS_TOKEN`,
|
|
258
|
+
/** @deprecated Do not wire refresh tokens to this shared key — use CRED_* instead. */
|
|
259
|
+
refreshToken: `${prefix}_REFRESH_TOKEN`,
|
|
260
|
+
apiKey: `${prefix}_API_KEY`
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
/** `_{24-hex}` suffix appended to a base vault key to scope it to one credential. */
|
|
264
|
+
const CREDENTIAL_SCOPED_SECRET_KEY_RE = /_([a-fA-F0-9]{24})$/;
|
|
265
|
+
/**
|
|
266
|
+
* Credential-scoped vault key: `{BASE_KEY}_{credentialId}`.
|
|
267
|
+
*
|
|
268
|
+
* This is the platform's own convention — `preferences-service` resolves a
|
|
269
|
+
* `format: 'secret'` config key to `${defaultValueSource.secretKey}_${credentialId}`
|
|
270
|
+
* on both read and write whenever the node context carries a `credentialId`.
|
|
271
|
+
* API-key connectors reuse the exact same shape so several credentials for one
|
|
272
|
+
* provider can coexist in a project/env instead of overwriting each other's
|
|
273
|
+
* shared `PROVIDER_API_KEY` entry (the same isolation OAuth gets from its
|
|
274
|
+
* per-account configKey).
|
|
275
|
+
*
|
|
276
|
+
* Idempotent when `baseSecretKey` is already scoped to the same credential.
|
|
277
|
+
*/
|
|
278
|
+
const buildCredentialScopedSecretKey = (baseSecretKey, credentialId) => {
|
|
279
|
+
const base = stripCredentialScopedSecretKey(baseSecretKey || '');
|
|
280
|
+
if (!base || !credentialId) {
|
|
281
|
+
return base || '';
|
|
282
|
+
}
|
|
283
|
+
return `${base}_${credentialId}`;
|
|
284
|
+
};
|
|
285
|
+
/** True when a vault key already carries a `_{credentialId}` suffix. */
|
|
286
|
+
const isCredentialScopedSecretKey = secretKey => CREDENTIAL_SCOPED_SECRET_KEY_RE.test(secretKey || '');
|
|
287
|
+
/** Strip `_{credentialId}` to recover the catalog/base vault key. */
|
|
288
|
+
const stripCredentialScopedSecretKey = secretKey => (secretKey || '').replace(CREDENTIAL_SCOPED_SECRET_KEY_RE, '');
|
|
289
|
+
/** credentialId embedded in a scoped vault key, if any. */
|
|
290
|
+
const credentialIdFromScopedSecretKey = secretKey => CREDENTIAL_SCOPED_SECRET_KEY_RE.exec(secretKey || '')?.[1] || null;
|
|
291
|
+
/**
|
|
292
|
+
* Durable per-credential token vault keys. Used after OAuth connect so each
|
|
293
|
+
* FormBuilderCredential keeps its own token pair even when several credentials
|
|
294
|
+
* share the same published template/configKey staging path.
|
|
295
|
+
*/
|
|
296
|
+
const buildCredentialOAuthTokenVaultKeys = credentialId => {
|
|
297
|
+
const prefix = toVaultPrefix(`cred_${credentialId}`);
|
|
298
|
+
return {
|
|
299
|
+
accessToken: `${prefix}_ACCESS_TOKEN`,
|
|
300
|
+
refreshToken: `${prefix}_REFRESH_TOKEN`
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Provider-scoped per-credential OAuth vault keys (e.g. OAuth callback writes
|
|
305
|
+
* `GOOGLE_GMAIL_ACCESS_TOKEN_{credentialId}` to Personal Vault).
|
|
306
|
+
*/
|
|
307
|
+
const buildProviderCredentialOAuthTokenVaultKeys = (providerId, credentialId) => {
|
|
308
|
+
const prefix = toVaultPrefix(providerId);
|
|
309
|
+
return {
|
|
310
|
+
accessToken: `${prefix}_ACCESS_TOKEN_${credentialId}`,
|
|
311
|
+
refreshToken: `${prefix}_REFRESH_TOKEN_${credentialId}`
|
|
312
|
+
};
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Namespace-scoped per-credential OAuth vault keys (`google_gmail-app` → `GOOGLE_GMAIL_APP_*_{id}`).
|
|
316
|
+
*/
|
|
317
|
+
const buildNamespaceCredentialOAuthTokenVaultKeys = (namespace, credentialId) => {
|
|
318
|
+
const prefix = toVaultPrefix(namespace);
|
|
319
|
+
return {
|
|
320
|
+
accessToken: `${prefix}_ACCESS_TOKEN_${credentialId}`,
|
|
321
|
+
refreshToken: `${prefix}_REFRESH_TOKEN_${credentialId}`
|
|
322
|
+
};
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Per-connected-account OAuth preferences path.
|
|
326
|
+
* Template: `….{namespace}.oauthConnector`
|
|
327
|
+
* Account: `….{namespace}.oauthConnector.accounts.{credentialId}`
|
|
328
|
+
*
|
|
329
|
+
* OAuth app settings (client id/secret, scopes, endpoints) are seeded from the
|
|
330
|
+
* template path onto each account path so ApplicationConnectorOAuthService can
|
|
331
|
+
* use a single configKey without a shared token staging slot.
|
|
332
|
+
*/
|
|
333
|
+
const CREDENTIAL_ACCOUNT_CONFIG_KEY_RE = /\.accounts\.([a-fA-F0-9]{24})$/;
|
|
334
|
+
/** True when configKey is already scoped to a FormBuilder credential account. */
|
|
335
|
+
const isCredentialAccountConfigKey = configKey => CREDENTIAL_ACCOUNT_CONFIG_KEY_RE.test(configKey || '');
|
|
336
|
+
/** Strip `.accounts.{credentialId}` to recover the published template configKey. */
|
|
337
|
+
const stripCredentialAccountConfigKey = configKey => (configKey || '').replace(CREDENTIAL_ACCOUNT_CONFIG_KEY_RE, '');
|
|
338
|
+
/** credentialId embedded in an account-scoped configKey, if any. */
|
|
339
|
+
const credentialIdFromOAuthConfigKey = configKey => {
|
|
340
|
+
const match = CREDENTIAL_ACCOUNT_CONFIG_KEY_RE.exec(configKey || '');
|
|
341
|
+
return match?.[1] || null;
|
|
342
|
+
};
|
|
343
|
+
/**
|
|
344
|
+
* Build the per-credential OAuth configKey used for connect / refresh / disconnect.
|
|
345
|
+
* Idempotent when `baseConfigKey` is already account-scoped for the same id.
|
|
346
|
+
*/
|
|
347
|
+
const buildCredentialOAuthConfigKey = (baseConfigKey, credentialId) => {
|
|
348
|
+
const base = stripCredentialAccountConfigKey(baseConfigKey || '').replace(/\.+$/, '');
|
|
349
|
+
if (!base || !credentialId) {
|
|
350
|
+
return base || '';
|
|
351
|
+
}
|
|
352
|
+
return `${base}.accounts.${credentialId}`;
|
|
353
|
+
};
|
|
354
|
+
/** Extract the form namespace from an oauthConnector configKey path. */
|
|
355
|
+
const namespaceFromOAuthConfigKey = configKey => {
|
|
356
|
+
const normalized = stripCredentialAccountConfigKey(configKey || '');
|
|
357
|
+
const match = /integrationSettings\.settings\.[^.]+\.([^.]+)\.oauthConnector(?:\.|$)/.exec(normalized);
|
|
358
|
+
return match?.[1] || null;
|
|
359
|
+
};
|
|
236
360
|
const seedAuthMethodDefault = seed => seed.authMethods.includes('oauth2') ? 'oauth' : seed.connectorType === 'mcp' ? 'mcp' : 'api_key';
|
|
237
361
|
/**
|
|
238
362
|
* Build a `genericType -> count` map for the given fields. Used by
|
|
@@ -270,7 +394,10 @@ const resolveFieldKey = (field, genericTypeCounts) => {
|
|
|
270
394
|
return field.name;
|
|
271
395
|
};
|
|
272
396
|
function buildPreGeneratedFormSteps(seed, namespace) {
|
|
273
|
-
|
|
397
|
+
// Shared OAuth app credentials (one client id/secret per provider).
|
|
398
|
+
const providerVaultPrefix = toVaultPrefix(seed.providerId);
|
|
399
|
+
// Per-form-instance tokens — unique namespace prevents multi-account overwrite.
|
|
400
|
+
const instanceTokenKeys = buildOAuthInstanceTokenVaultKeys(namespace);
|
|
274
401
|
const isApp = seed.connectorType === 'app';
|
|
275
402
|
const isApiKeyOnly = seedIsApiKeyOnly(seed);
|
|
276
403
|
const templateType = seedTemplateType(seed);
|
|
@@ -367,12 +494,13 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
367
494
|
useBasicAuth: seed.useBasicAuth ?? false,
|
|
368
495
|
connectorRedirectUri: '{{CLIENT_URL}}/{{CONNECTOR_ENDPOINT}}',
|
|
369
496
|
// connectorAuthMethod — present only for non-oauth connectors (matches reference forms)
|
|
370
|
-
...(
|
|
497
|
+
...(seedAuthMethodDefault(seed) !== 'oauth' ? {
|
|
371
498
|
connectorAuthMethod: seedAuthMethodDefault(seed)
|
|
372
499
|
} : {}),
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
500
|
+
// Always emitted, even empty: a template entry is self-describing only when a reader can
|
|
501
|
+
// tell "no extra provider fields" from "unknown", and the credential picker synthesizes
|
|
502
|
+
// the form from this entry instead of fetching the published form document.
|
|
503
|
+
connectorProviderFields: seed.fields,
|
|
376
504
|
...(seed.resources.length > 0 ? {
|
|
377
505
|
connectorProviderResources: seed.resources
|
|
378
506
|
} : {}),
|
|
@@ -407,7 +535,7 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
407
535
|
defaultValueSource: {
|
|
408
536
|
type: ContributeDefaultValueSourceType.Vault,
|
|
409
537
|
secretType: 'OAUTH_CLIENT',
|
|
410
|
-
secretKey: `${
|
|
538
|
+
secretKey: `${providerVaultPrefix}_CLIENT_ID`,
|
|
411
539
|
...(isApp ? {
|
|
412
540
|
requiredReference: true
|
|
413
541
|
} : {})
|
|
@@ -426,13 +554,30 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
426
554
|
defaultValueSource: {
|
|
427
555
|
type: ContributeDefaultValueSourceType.Vault,
|
|
428
556
|
secretType: 'OAUTH_CLIENT',
|
|
429
|
-
secretKey: `${
|
|
557
|
+
secretKey: `${providerVaultPrefix}_CLIENT_SECRET`,
|
|
430
558
|
...(isApp ? {
|
|
431
559
|
requiredReference: true
|
|
432
560
|
} : {})
|
|
433
561
|
}
|
|
434
562
|
}
|
|
435
|
-
}, {
|
|
563
|
+
}, ...(seed.requiresDeveloperToken ? [{
|
|
564
|
+
id: 'developerToken',
|
|
565
|
+
type: 'string',
|
|
566
|
+
label: 'Developer Token',
|
|
567
|
+
description: 'Provider-issued developer token, sent with every API request alongside the OAuth access token',
|
|
568
|
+
format: 'secret',
|
|
569
|
+
readOnly: true,
|
|
570
|
+
default: '',
|
|
571
|
+
scope: isApp ? 6 /* ConfigurationScope.MACHINE_OVERRIDABLE */ : 1 /* ConfigurationScope.APPLICATION */,
|
|
572
|
+
schemaExtensions: {
|
|
573
|
+
defaultValueSource: {
|
|
574
|
+
type: ContributeDefaultValueSourceType.Vault,
|
|
575
|
+
secretType: 'OAUTH_CLIENT',
|
|
576
|
+
secretKey: `${providerVaultPrefix}_DEVELOPER_TOKEN`,
|
|
577
|
+
requiredReference: true
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}] : []), {
|
|
436
581
|
id: 'apiKey',
|
|
437
582
|
type: 'string',
|
|
438
583
|
label: 'API Key',
|
|
@@ -445,7 +590,7 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
445
590
|
defaultValueSource: {
|
|
446
591
|
type: ContributeDefaultValueSourceType.Vault,
|
|
447
592
|
secretType: 'API_KEY',
|
|
448
|
-
secretKey:
|
|
593
|
+
secretKey: instanceTokenKeys.apiKey
|
|
449
594
|
}
|
|
450
595
|
}
|
|
451
596
|
}, {
|
|
@@ -457,11 +602,16 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
457
602
|
default: '',
|
|
458
603
|
readOnly: true,
|
|
459
604
|
scope: 1 /* ConfigurationScope.APPLICATION */,
|
|
605
|
+
|
|
606
|
+
// No shared vault secretKey by default — multi-account connects would overwrite.
|
|
607
|
+
// Staging still needs a vault route: writeSettings discards format:secret when
|
|
608
|
+
// defaultValueSource is missing. Instance keys are the temporary staging slot;
|
|
609
|
+
// completeOAuth / sync(force) copies them into CRED_<credentialId>_*.
|
|
460
610
|
schemaExtensions: {
|
|
461
611
|
defaultValueSource: {
|
|
462
612
|
type: ContributeDefaultValueSourceType.Vault,
|
|
463
613
|
secretType: 'OAUTH_CLIENT',
|
|
464
|
-
secretKey:
|
|
614
|
+
secretKey: instanceTokenKeys.accessToken
|
|
465
615
|
}
|
|
466
616
|
}
|
|
467
617
|
}, {
|
|
@@ -477,7 +627,7 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
477
627
|
defaultValueSource: {
|
|
478
628
|
type: ContributeDefaultValueSourceType.Vault,
|
|
479
629
|
secretType: 'OAUTH_CLIENT',
|
|
480
|
-
secretKey:
|
|
630
|
+
secretKey: instanceTokenKeys.refreshToken
|
|
481
631
|
}
|
|
482
632
|
}
|
|
483
633
|
}, {
|
|
@@ -660,6 +810,12 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
660
810
|
'ui:widget': 'hidden',
|
|
661
811
|
'ui:placeholder': 'Enter OAuth Client Secret'
|
|
662
812
|
},
|
|
813
|
+
...(seed.requiresDeveloperToken ? {
|
|
814
|
+
developerToken: {
|
|
815
|
+
'ui:widget': 'hidden',
|
|
816
|
+
'ui:placeholder': 'Enter Developer Token'
|
|
817
|
+
}
|
|
818
|
+
} : {}),
|
|
663
819
|
apiKey: {
|
|
664
820
|
'ui:widget': seed.connectorType === 'mcp' || !seed.authMethods.includes('oauth2') ? 'password' : 'hidden',
|
|
665
821
|
'ui:placeholder': 'Enter API Key'
|
|
@@ -760,12 +916,13 @@ function buildPreGeneratedFormSteps(seed, namespace) {
|
|
|
760
916
|
useBasicAuth: seed.useBasicAuth ?? false,
|
|
761
917
|
connectorRedirectUri: '{{CLIENT_URL}}/{{CONNECTOR_ENDPOINT}}',
|
|
762
918
|
// connectorAuthMethod — present only for non-oauth connectors (matches reference forms)
|
|
763
|
-
...(
|
|
919
|
+
...(seedAuthMethodDefault(seed) !== 'oauth' ? {
|
|
764
920
|
connectorAuthMethod: seedAuthMethodDefault(seed)
|
|
765
921
|
} : {}),
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
922
|
+
// Always emitted, even empty: a template entry is self-describing only when a reader can
|
|
923
|
+
// tell "no extra provider fields" from "unknown", and the credential picker synthesizes
|
|
924
|
+
// the form from this entry instead of fetching the published form document.
|
|
925
|
+
connectorProviderFields: seed.fields,
|
|
769
926
|
...(seed.resources.length > 0 ? {
|
|
770
927
|
connectorProviderResources: seed.resources
|
|
771
928
|
} : {}),
|
|
@@ -792,7 +949,8 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
792
949
|
seed,
|
|
793
950
|
namespace
|
|
794
951
|
} of seedsWithNamespaces) {
|
|
795
|
-
const
|
|
952
|
+
const providerVaultPrefix = toVaultPrefix(seed.providerId);
|
|
953
|
+
const instanceTokenKeys = buildOAuthInstanceTokenVaultKeys(namespace);
|
|
796
954
|
const isApp = seed.connectorType === 'app';
|
|
797
955
|
const isApiKeyOnly = seedIsApiKeyOnly(seed);
|
|
798
956
|
const templateType = seedTemplateType(seed);
|
|
@@ -854,7 +1012,7 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
854
1012
|
defaultValueSource: {
|
|
855
1013
|
type: ContributeDefaultValueSourceType.Vault,
|
|
856
1014
|
secretType: 'OAUTH_CLIENT',
|
|
857
|
-
secretKey: `${
|
|
1015
|
+
secretKey: `${providerVaultPrefix}_CLIENT_ID`,
|
|
858
1016
|
...(isApp ? {
|
|
859
1017
|
requiredReference: true
|
|
860
1018
|
} : {})
|
|
@@ -875,7 +1033,7 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
875
1033
|
defaultValueSource: {
|
|
876
1034
|
type: ContributeDefaultValueSourceType.Vault,
|
|
877
1035
|
secretType: 'OAUTH_CLIENT',
|
|
878
|
-
secretKey: `${
|
|
1036
|
+
secretKey: `${providerVaultPrefix}_CLIENT_SECRET`,
|
|
879
1037
|
...(isApp ? {
|
|
880
1038
|
requiredReference: true
|
|
881
1039
|
} : {})
|
|
@@ -885,6 +1043,29 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
885
1043
|
'ui:description': 'OAuth application client secret',
|
|
886
1044
|
'ui:placeholder': 'Enter OAuth Client Secret'
|
|
887
1045
|
});
|
|
1046
|
+
// ── Developer token — an extra provider credential a few APIs (Google Ads)
|
|
1047
|
+
// require on every call. Provisioned exactly like clientId/clientSecret.
|
|
1048
|
+
if (seed.requiresDeveloperToken) {
|
|
1049
|
+
addField('developerToken', {
|
|
1050
|
+
type: 'string',
|
|
1051
|
+
title: 'Developer Token',
|
|
1052
|
+
description: 'Provider-issued developer token, sent with every API request alongside the OAuth access token',
|
|
1053
|
+
format: 'secret',
|
|
1054
|
+
default: '',
|
|
1055
|
+
readOnly: true,
|
|
1056
|
+
scope: isApp ? 6 /* ConfigurationScope.MACHINE_OVERRIDABLE */ : 1 /* ConfigurationScope.APPLICATION */,
|
|
1057
|
+
defaultValueSource: {
|
|
1058
|
+
type: ContributeDefaultValueSourceType.Vault,
|
|
1059
|
+
secretType: 'OAUTH_CLIENT',
|
|
1060
|
+
secretKey: `${providerVaultPrefix}_DEVELOPER_TOKEN`,
|
|
1061
|
+
requiredReference: true
|
|
1062
|
+
}
|
|
1063
|
+
}, {
|
|
1064
|
+
'ui:widget': 'hidden',
|
|
1065
|
+
'ui:description': 'Provider-issued developer token, sent with every API request alongside the OAuth access token',
|
|
1066
|
+
'ui:placeholder': 'Enter Developer Token'
|
|
1067
|
+
});
|
|
1068
|
+
}
|
|
888
1069
|
addField('apiKey', {
|
|
889
1070
|
type: 'string',
|
|
890
1071
|
title: 'API Key',
|
|
@@ -896,7 +1077,7 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
896
1077
|
defaultValueSource: {
|
|
897
1078
|
type: ContributeDefaultValueSourceType.Vault,
|
|
898
1079
|
secretType: 'API_KEY',
|
|
899
|
-
secretKey:
|
|
1080
|
+
secretKey: instanceTokenKeys.apiKey
|
|
900
1081
|
}
|
|
901
1082
|
}, {
|
|
902
1083
|
'ui:widget': !seed.authMethods.includes('oauth2') ? 'password' : 'hidden',
|
|
@@ -912,10 +1093,13 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
912
1093
|
readOnly: true,
|
|
913
1094
|
writeOnly: true,
|
|
914
1095
|
scope: 1 /* ConfigurationScope.APPLICATION */,
|
|
1096
|
+
|
|
1097
|
+
// Staging vault route required — writeSettings drops format:secret
|
|
1098
|
+
// without defaultValueSource. Durable isolation is CRED_* via sync.
|
|
915
1099
|
defaultValueSource: {
|
|
916
1100
|
type: ContributeDefaultValueSourceType.Vault,
|
|
917
1101
|
secretType: 'OAUTH_CLIENT',
|
|
918
|
-
secretKey:
|
|
1102
|
+
secretKey: instanceTokenKeys.accessToken
|
|
919
1103
|
}
|
|
920
1104
|
}, {
|
|
921
1105
|
'ui:widget': 'hidden'
|
|
@@ -932,7 +1116,7 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
932
1116
|
defaultValueSource: {
|
|
933
1117
|
type: ContributeDefaultValueSourceType.Vault,
|
|
934
1118
|
secretType: 'OAUTH_CLIENT',
|
|
935
|
-
secretKey:
|
|
1119
|
+
secretKey: instanceTokenKeys.refreshToken
|
|
936
1120
|
}
|
|
937
1121
|
}, {
|
|
938
1122
|
'ui:widget': 'hidden'
|
|
@@ -1039,6 +1223,18 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
1039
1223
|
}, {
|
|
1040
1224
|
'ui:widget': 'hidden'
|
|
1041
1225
|
});
|
|
1226
|
+
// Without this key in the registry the connect flow cannot see the catalog's
|
|
1227
|
+
// usePKCE, and both the widget and readOAuthConfigFromRegistry fall back to
|
|
1228
|
+
// PKCE-on — silently ignoring every `usePKCE: false` in the catalog.
|
|
1229
|
+
addField('usePKCE', {
|
|
1230
|
+
type: 'boolean',
|
|
1231
|
+
title: 'Use PKCE',
|
|
1232
|
+
default: seed.usePKCE !== false,
|
|
1233
|
+
readOnly: true,
|
|
1234
|
+
scope: 2 /* ConfigurationScope.MACHINE */
|
|
1235
|
+
}, {
|
|
1236
|
+
'ui:widget': 'hidden'
|
|
1237
|
+
});
|
|
1042
1238
|
if (seed.clientAuthMethod) {
|
|
1043
1239
|
addField('clientAuthMethod', {
|
|
1044
1240
|
type: 'string',
|
|
@@ -1050,6 +1246,28 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
1050
1246
|
'ui:widget': 'hidden'
|
|
1051
1247
|
});
|
|
1052
1248
|
}
|
|
1249
|
+
if (seed.clientIdParamName) {
|
|
1250
|
+
addField('clientIdParamName', {
|
|
1251
|
+
type: 'string',
|
|
1252
|
+
title: 'Client ID Parameter Name',
|
|
1253
|
+
default: seed.clientIdParamName,
|
|
1254
|
+
readOnly: true,
|
|
1255
|
+
scope: 2 /* ConfigurationScope.MACHINE */
|
|
1256
|
+
}, {
|
|
1257
|
+
'ui:widget': 'hidden'
|
|
1258
|
+
});
|
|
1259
|
+
}
|
|
1260
|
+
if (seed.useCommaSeparatedScopes) {
|
|
1261
|
+
addField('useCommaSeparatedScopes', {
|
|
1262
|
+
type: 'boolean',
|
|
1263
|
+
title: 'Use Comma-Separated Scopes',
|
|
1264
|
+
default: true,
|
|
1265
|
+
readOnly: true,
|
|
1266
|
+
scope: 2 /* ConfigurationScope.MACHINE */
|
|
1267
|
+
}, {
|
|
1268
|
+
'ui:widget': 'hidden'
|
|
1269
|
+
});
|
|
1270
|
+
}
|
|
1053
1271
|
addField('redirectUri', {
|
|
1054
1272
|
type: 'string',
|
|
1055
1273
|
title: 'Redirect URI',
|
|
@@ -1286,15 +1504,24 @@ function buildOAuthConfigurationContribution(seedsWithNamespaces) {
|
|
|
1286
1504
|
properties: formUIProperties
|
|
1287
1505
|
}];
|
|
1288
1506
|
}
|
|
1289
|
-
function generateFromSeeds(seeds, title, formIcon, formExtensionId) {
|
|
1507
|
+
function generateFromSeeds(seeds, title, formIcon, formExtensionId, options = {}) {
|
|
1290
1508
|
const allNodes = [];
|
|
1291
1509
|
const mergedUiLayoutTemplates = {};
|
|
1292
1510
|
const mergedUiLayoutUi = {};
|
|
1293
1511
|
let uiLayoutFormMetadataNode = null;
|
|
1294
1512
|
const seedsWithNamespaces = [];
|
|
1295
1513
|
seeds.forEach((seed, idx) => {
|
|
1296
|
-
|
|
1297
|
-
|
|
1514
|
+
// The namespace doubles as the formId AND flows into every configuration key
|
|
1515
|
+
// (`integrationSettings.settings.<type>.<ns>.oauthConnector…`). An explicit
|
|
1516
|
+
// namespace lets a caller regenerate the form for an ALREADY-PUBLISHED template
|
|
1517
|
+
// so the output is identity-compatible with it (same formId, same config keys);
|
|
1518
|
+
// the random default is only safe for brand-new forms.
|
|
1519
|
+
const generatedFormId = options.namespaces?.[idx] || `${sanitizeFieldKey(seed.providerId)}-${seed.connectorType}-${Math.random().toString(36).substring(2, 10)}`;
|
|
1520
|
+
// The connector's own title, with no `(APP)` marker appended. `connectorType` is
|
|
1521
|
+
// `app` for every one of the 1166 catalog connectors, so the suffix carried no
|
|
1522
|
+
// information - it just made every row in the credential picker read "… (APP)".
|
|
1523
|
+
// The type is still contributed as `connectorType` for anything that needs it.
|
|
1524
|
+
const providerTitle = seed.title;
|
|
1298
1525
|
const namespace = generatedFormId;
|
|
1299
1526
|
seedsWithNamespaces.push({
|
|
1300
1527
|
seed,
|
|
@@ -1574,8 +1801,8 @@ function generateFromSeeds(seeds, title, formIcon, formExtensionId) {
|
|
|
1574
1801
|
if (!uiLayoutFormMetadataNode) return allNodes;
|
|
1575
1802
|
return [...allNodes, uiLayoutFormMetadataNode, uiLayoutFormNode, uiLayoutFormUINode];
|
|
1576
1803
|
}
|
|
1577
|
-
function createOAuthSeedGenerator(seeds) {
|
|
1578
|
-
return (title = '', formIcon = '', formExtensionId = '') => generateFromSeeds(seeds, title, formIcon, formExtensionId);
|
|
1804
|
+
function createOAuthSeedGenerator(seeds, options = {}) {
|
|
1805
|
+
return (title = '', formIcon = '', formExtensionId = '') => generateFromSeeds(seeds, title, formIcon, formExtensionId, options);
|
|
1579
1806
|
}
|
|
1580
1807
|
// create provider refs
|
|
1581
1808
|
const findRefPath = node => {
|
|
@@ -1633,4 +1860,4 @@ const buildMetadataSchema = sampleNodes => {
|
|
|
1633
1860
|
configurationNodes: entry.configurationNodes,
|
|
1634
1861
|
contributes: {}
|
|
1635
1862
|
}))];
|
|
1636
|
-
};export{buildMetadataSchema,buildProviderConfig,buildProviderSeedFromConfig,buildProviderWithRefs,createOAuthSeedGenerator};//# sourceMappingURL=authMetaDataSchema.js.map
|
|
1863
|
+
};export{buildCredentialOAuthConfigKey,buildCredentialOAuthTokenVaultKeys,buildCredentialScopedSecretKey,buildMetadataSchema,buildNamespaceCredentialOAuthTokenVaultKeys,buildOAuthInstanceTokenVaultKeys,buildProviderConfig,buildProviderCredentialOAuthTokenVaultKeys,buildProviderSeedFromConfig,buildProviderWithRefs,createOAuthSeedGenerator,credentialIdFromOAuthConfigKey,credentialIdFromScopedSecretKey,isCredentialAccountConfigKey,isCredentialScopedSecretKey,namespaceFromOAuthConfigKey,stripCredentialAccountConfigKey,stripCredentialScopedSecretKey,toVaultPrefix};//# sourceMappingURL=authMetaDataSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authMetaDataSchema.js","sources":["../../src/utils/authMetaDataSchema.ts"],"sourcesContent":[null],"names":[],"mappings":"6NAeA,
|
|
1
|
+
{"version":3,"file":"authMetaDataSchema.js","sources":["../../src/utils/authMetaDataSchema.ts"],"sourcesContent":[null],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -61,6 +61,9 @@ export declare function extractTemplateUserFields(node: unknown, refs?: Set<stri
|
|
|
61
61
|
* A string that is exactly one placeholder is replaced with the raw typed value; placeholders
|
|
62
62
|
* embedded in a longer string are interpolated. Everything else (including workflow-native
|
|
63
63
|
* {{...}} expressions) passes through untouched.
|
|
64
|
+
*
|
|
65
|
+
* Values that the template never references are appended to the resolved root object so callers
|
|
66
|
+
* still receive them; template-authored keys always win over a same-named extra value.
|
|
64
67
|
*/
|
|
65
68
|
export declare function resolveInputTemplate(node: unknown, values: Record<string, unknown>): unknown;
|
|
66
69
|
export declare function buildParamBindings(action: ActionBinding): Record<string, string>;
|
|
@@ -75,6 +78,17 @@ export interface IntegrationMenusContributes {
|
|
|
75
78
|
commandPalette: IntegrationMenuEntry[];
|
|
76
79
|
}
|
|
77
80
|
export declare function buildMenusFromCommands(commands: IntegrationCommand[]): IntegrationMenusContributes;
|
|
81
|
+
export interface IntegrationConfigurationIdentity {
|
|
82
|
+
title?: string;
|
|
83
|
+
formId: string;
|
|
84
|
+
/** Identifies this template independently of formId — generated fresh if not supplied. */
|
|
85
|
+
formTemplateId?: string;
|
|
86
|
+
formExtensionId?: string;
|
|
87
|
+
description?: string;
|
|
88
|
+
projectType?: string;
|
|
89
|
+
tags?: string[];
|
|
90
|
+
}
|
|
91
|
+
export declare function buildIntegrationConfigurationContribution(userFields: Record<string, UserFieldDef>, slug: string, identity?: IntegrationConfigurationIdentity): Record<string, unknown>[];
|
|
78
92
|
export declare function extractUserFieldsFromStepperFormMetadata(metadataSchema: MetadataSchemaEntry[], stepKey?: string): Record<string, UserFieldDef>;
|
|
79
93
|
export {};
|
|
80
94
|
//# sourceMappingURL=integrationCommands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrationCommands.d.ts","sourceRoot":"","sources":["../../src/utils/integrationCommands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrationCommands.d.ts","sourceRoot":"","sources":["../../src/utils/integrationCommands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function normalizeWorkflowSelection(workflow) {
|
|
1
|
+
import {v4}from'uuid';function normalizeWorkflowSelection(workflow) {
|
|
2
2
|
if (!workflow) return {};
|
|
3
3
|
if (typeof workflow === 'string') {
|
|
4
4
|
try {
|
|
@@ -30,24 +30,37 @@ function extractTemplateUserFields(node, refs = new Set()) {
|
|
|
30
30
|
}
|
|
31
31
|
return [...refs];
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
* Fills {{$user.<key>}} placeholders with end-user values by walking the parsed template.
|
|
35
|
-
* A string that is exactly one placeholder is replaced with the raw typed value; placeholders
|
|
36
|
-
* embedded in a longer string are interpolated. Everything else (including workflow-native
|
|
37
|
-
* {{...}} expressions) passes through untouched.
|
|
38
|
-
*/
|
|
39
|
-
function resolveInputTemplate(node, values) {
|
|
33
|
+
function fillTemplateNode(node, values) {
|
|
40
34
|
if (typeof node === 'string') {
|
|
41
35
|
const full = FULL_USER_REF.exec(node);
|
|
42
36
|
if (full) return values[full[1]];
|
|
43
37
|
return node.replace(USER_REF, (_, key) => String(values[key] ?? ''));
|
|
44
38
|
}
|
|
45
|
-
if (Array.isArray(node)) return node.map(item =>
|
|
39
|
+
if (Array.isArray(node)) return node.map(item => fillTemplateNode(item, values));
|
|
46
40
|
if (node && typeof node === 'object') {
|
|
47
|
-
return Object.fromEntries(Object.entries(node).map(([key, value]) => [key,
|
|
41
|
+
return Object.fromEntries(Object.entries(node).map(([key, value]) => [key, fillTemplateNode(value, values)]));
|
|
48
42
|
}
|
|
49
43
|
return node;
|
|
50
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Fills {{$user.<key>}} placeholders with end-user values by walking the parsed template.
|
|
47
|
+
* A string that is exactly one placeholder is replaced with the raw typed value; placeholders
|
|
48
|
+
* embedded in a longer string are interpolated. Everything else (including workflow-native
|
|
49
|
+
* {{...}} expressions) passes through untouched.
|
|
50
|
+
*
|
|
51
|
+
* Values that the template never references are appended to the resolved root object so callers
|
|
52
|
+
* still receive them; template-authored keys always win over a same-named extra value.
|
|
53
|
+
*/
|
|
54
|
+
function resolveInputTemplate(node, values) {
|
|
55
|
+
const resolved = fillTemplateNode(node, values);
|
|
56
|
+
if (!resolved || typeof resolved !== 'object' || Array.isArray(resolved)) return resolved;
|
|
57
|
+
const referenced = new Set(extractTemplateUserFields(node));
|
|
58
|
+
const extras = Object.entries(values).filter(([key]) => !referenced.has(key) && !(key in resolved));
|
|
59
|
+
return extras.length ? {
|
|
60
|
+
...resolved,
|
|
61
|
+
...Object.fromEntries(extras)
|
|
62
|
+
} : resolved;
|
|
63
|
+
}
|
|
51
64
|
function buildParamBindings(action) {
|
|
52
65
|
const map = {};
|
|
53
66
|
(action.fieldBindings || []).forEach(binding => {
|
|
@@ -118,6 +131,105 @@ function buildMenusFromCommands(commands) {
|
|
|
118
131
|
}))
|
|
119
132
|
};
|
|
120
133
|
}
|
|
134
|
+
function buildIntegrationConfigurationContribution(userFields, slug, identity) {
|
|
135
|
+
const formProperties = {
|
|
136
|
+
required: []
|
|
137
|
+
};
|
|
138
|
+
const formUIProperties = {};
|
|
139
|
+
const basePath = `integrationSettings.settings.integrationWorkflow.${slug}`;
|
|
140
|
+
const metaPaths = new Set();
|
|
141
|
+
const baseParts = basePath.split('.');
|
|
142
|
+
for (let i = 1; i <= baseParts.length; i++) {
|
|
143
|
+
metaPaths.add(baseParts.slice(0, i).join('.'));
|
|
144
|
+
}
|
|
145
|
+
Array.from(metaPaths).sort().forEach(path => {
|
|
146
|
+
const parts = path.split('.');
|
|
147
|
+
formProperties[`${path}.meta`] = {
|
|
148
|
+
title: parts[parts.length - 1],
|
|
149
|
+
description: '',
|
|
150
|
+
type: 'object',
|
|
151
|
+
position: 0
|
|
152
|
+
};
|
|
153
|
+
formProperties[`${path}.required`] = [];
|
|
154
|
+
});
|
|
155
|
+
if (identity) {
|
|
156
|
+
formProperties[`${basePath}.title`] = {
|
|
157
|
+
type: 'string',
|
|
158
|
+
title: 'title',
|
|
159
|
+
default: identity.title || ''
|
|
160
|
+
};
|
|
161
|
+
formProperties[`${basePath}.description`] = {
|
|
162
|
+
type: 'string',
|
|
163
|
+
title: 'description',
|
|
164
|
+
default: identity.description || ''
|
|
165
|
+
};
|
|
166
|
+
formProperties[`${basePath}.projectType`] = {
|
|
167
|
+
type: 'string',
|
|
168
|
+
title: 'projectType',
|
|
169
|
+
default: identity.projectType || 'Integration'
|
|
170
|
+
};
|
|
171
|
+
formProperties[`${basePath}.tags`] = {
|
|
172
|
+
type: 'array',
|
|
173
|
+
title: 'tags',
|
|
174
|
+
items: {
|
|
175
|
+
type: 'string'
|
|
176
|
+
},
|
|
177
|
+
uniqueItems: true,
|
|
178
|
+
default: identity.tags || ['integration']
|
|
179
|
+
};
|
|
180
|
+
formProperties[`${basePath}.formId`] = {
|
|
181
|
+
type: 'string',
|
|
182
|
+
title: 'formId',
|
|
183
|
+
default: identity.formId,
|
|
184
|
+
readOnly: true
|
|
185
|
+
};
|
|
186
|
+
formProperties[`${basePath}.formTemplateId`] = {
|
|
187
|
+
type: 'string',
|
|
188
|
+
title: 'formTemplateId',
|
|
189
|
+
default: identity.formTemplateId || v4(),
|
|
190
|
+
readOnly: true
|
|
191
|
+
};
|
|
192
|
+
formProperties[`${basePath}.formExtensionId`] = {
|
|
193
|
+
type: 'string',
|
|
194
|
+
title: 'formExtensionId',
|
|
195
|
+
default: identity.formExtensionId || '',
|
|
196
|
+
readOnly: true
|
|
197
|
+
};
|
|
198
|
+
formUIProperties[`${basePath}.formId`] = {
|
|
199
|
+
'ui:readonly': true
|
|
200
|
+
};
|
|
201
|
+
formUIProperties[`${basePath}.formTemplateId`] = {
|
|
202
|
+
'ui:readonly': true
|
|
203
|
+
};
|
|
204
|
+
formUIProperties[`${basePath}.formExtensionId`] = {
|
|
205
|
+
'ui:readonly': true
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
Object.entries(userFields).forEach(([key, def]) => {
|
|
209
|
+
formProperties[`${basePath}.${key}`] = {
|
|
210
|
+
type: def.type || 'string',
|
|
211
|
+
title: def.title || key,
|
|
212
|
+
...(def.format ? {
|
|
213
|
+
format: def.format
|
|
214
|
+
} : {}),
|
|
215
|
+
...(Array.isArray(def.enum) ? {
|
|
216
|
+
enum: def.enum
|
|
217
|
+
} : {})
|
|
218
|
+
};
|
|
219
|
+
});
|
|
220
|
+
return [{
|
|
221
|
+
type: 'form-metadata',
|
|
222
|
+
properties: {
|
|
223
|
+
schemaId: 'configuration'
|
|
224
|
+
}
|
|
225
|
+
}, {
|
|
226
|
+
type: 'form',
|
|
227
|
+
properties: formProperties
|
|
228
|
+
}, {
|
|
229
|
+
type: 'formUI',
|
|
230
|
+
properties: formUIProperties
|
|
231
|
+
}];
|
|
232
|
+
}
|
|
121
233
|
function extractUserFieldsFromStepperFormMetadata(metadataSchema, stepKey = 'userFields') {
|
|
122
234
|
const result = {};
|
|
123
235
|
const stepper = (metadataSchema || []).find(entry => entry?.schemaId === 'stepper-form');
|
|
@@ -138,4 +250,4 @@ function extractUserFieldsFromStepperFormMetadata(metadataSchema, stepKey = 'use
|
|
|
138
250
|
};
|
|
139
251
|
});
|
|
140
252
|
return result;
|
|
141
|
-
}export{buildCommandsFromActions,buildMenusFromCommands,buildParamBindings,extractTemplateUserFields,extractUserFieldsFromStepperFormMetadata,parseInputTemplate,resolveInputTemplate};//# sourceMappingURL=integrationCommands.js.map
|
|
253
|
+
}export{buildCommandsFromActions,buildIntegrationConfigurationContribution,buildMenusFromCommands,buildParamBindings,extractTemplateUserFields,extractUserFieldsFromStepperFormMetadata,parseInputTemplate,resolveInputTemplate};//# sourceMappingURL=integrationCommands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrationCommands.js","sources":["../../src/utils/integrationCommands.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrationCommands.js","sources":["../../src/utils/integrationCommands.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adminide-stack/form-builder-core",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.9-alpha.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -19,12 +19,11 @@
|
|
|
19
19
|
"watch": "npm run build:lib:watch"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"
|
|
23
|
-
"common": "5.1.8-alpha.96",
|
|
22
|
+
"common": "5.1.9-alpha.0",
|
|
24
23
|
"typescript": "^5.4.0"
|
|
25
24
|
},
|
|
26
25
|
"publishConfig": {
|
|
27
26
|
"access": "public"
|
|
28
27
|
},
|
|
29
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "5eec9299ba5babbbb2969ce812a3340ad1b2e7de"
|
|
30
29
|
}
|