Skip to content

Class: PackDefinitionBuilder

Defined in: builder.ts:57

A class that assists in constructing a pack definition. Use newPack to create one.

Implements

Constructors

Constructor

new PackDefinitionBuilder(definition?): PackDefinitionBuilder

Defined in: builder.ts:123

Constructs a PackDefinitionBuilder. However, coda.newPack() should be used instead rather than constructing a builder directly.

Parameters

Parameter Type
definition? Partial<PackVersionDefinition>

Returns

PackDefinitionBuilder

Properties

defaultAuthentication?

optional defaultAuthentication: Authentication

Defined in: builder.ts:98

See PackVersionDefinition.defaultAuthentication.

Implementation of

PackDefinition.defaultAuthentication


formats

formats: Format[]

Defined in: builder.ts:65

See PackVersionDefinition.formats.

Implementation of

PackDefinition.formats


formulaNamespace?

optional formulaNamespace: string

Defined in: builder.ts:115

Deprecated

Implementation of

PackDefinition.formulaNamespace


formulas

formulas: Formula[]

Defined in: builder.ts:61

See PackVersionDefinition.formulas.

Implementation of

PackDefinition.formulas


networkDomains

networkDomains: string[]

Defined in: builder.ts:88

See PackVersionDefinition.networkDomains.

Implementation of

PackDefinition.networkDomains


syncTables

syncTables: SyncTable[]

Defined in: builder.ts:69

See PackVersionDefinition.syncTables.

Implementation of

PackDefinition.syncTables


systemConnectionAuthentication?

optional systemConnectionAuthentication: SystemAuthentication

Defined in: builder.ts:102

See PackVersionDefinition.systemConnectionAuthentication.

Implementation of

PackDefinition.systemConnectionAuthentication


version?

optional version: string

Defined in: builder.ts:113

See PackVersionDefinition.version.

Methods

addColumnFormat()

addColumnFormat(format): this

Defined in: builder.ts:273

Adds a column format definition to this pack.

In the web editor, the /ColumnFormat shortcut will insert a snippet of a skeleton format.

Example

pack.addColumnFormat({
  name: 'MyColumn',
  formulaName: 'MyFormula',
});

Parameters

Parameter Type
format Format

Returns

this


addDynamicSyncTable()

addDynamicSyncTable<K, L, ParamDefsT, SchemaT, ContextT, PermissionsContextT>(definition): this

Defined in: builder.ts:244

Adds a dynamic sync table definition to this pack.

In the web editor, the /DynamicSyncTable shortcut will insert a snippet of a skeleton sync table.

Example

pack.addDynamicSyncTable({
  name: "MySyncTable",
  getName: async funciton (context) => {
    const response = await context.fetcher.fetch({method: "GET", url: context.sync.dynamicUrl});
    return response.body.name;
  },
  getName: async function (context) => {
    const response = await context.fetcher.fetch({method: "GET", url: context.sync.dynamicUrl});
    return response.body.browserLink;
  },
  ...
});

Type Parameters

Type Parameter
K extends string
L extends string
ParamDefsT extends ParamDefs
SchemaT extends ObjectSchemaDefinition<K, L>
ContextT extends SyncExecutionContext<any, any, any>
PermissionsContextT extends SyncPassthroughData

Parameters

Parameter Type
definition DynamicSyncTableOptions<K, L, ParamDefsT, SchemaT, ContextT, PermissionsContextT>

Returns

this


addFormula()

addFormula<ParamDefsT, ResultT, SchemaT>(definition): this

Defined in: builder.ts:176

Adds a formula definition to this pack.

In the web editor, the /Formula shortcut will insert a snippet of a skeleton formula.

Example

pack.addFormula({
  resultType: ValueType.String,
   name: 'MyFormula',
   description: 'My description.',
   parameters: [
     makeParameter({
       type: ParameterType.String,
       name: 'myParam',
       description: 'My param description.',
     }),
   ],
   execute: async ([param]) => {
     return `Hello ${param}`;
   },
});

Type Parameters

Type Parameter
ParamDefsT extends ParamDefs
ResultT extends ValueType
SchemaT extends Schema

Parameters

Parameter Type
definition object & FormulaDefinitionOptions<ParamDefsT, ResultT, SchemaT>

Returns

this


addNetworkDomain()

addNetworkDomain(...domain): this

Defined in: builder.ts:459

Adds the domain that this pack makes HTTP requests to. For example, if your pack makes HTTP requests to "api.example.com", use "example.com" as your network domain.

If your pack make HTTP requests, it must declare a network domain, for security purposes. Coda enforces that your pack cannot make requests to any undeclared domains.

You are allowed one network domain per pack by default. If your pack needs to connect to multiple domains, contact Coda Support for approval.

Example

pack.addNetworkDomain('example.com');

Parameters

Parameter Type
...domain string[]

Returns

this


addSyncTable()

addSyncTable<K, L, ParamDefsT, SchemaT, ContextT, PermissionsContextT>(definition): this

Defined in: builder.ts:206

Adds a sync table definition to this pack.

In the web editor, the /SyncTable shortcut will insert a snippet of a skeleton sync table.

Example

pack.addSyncTable({
  name: 'MySyncTable',
  identityName: 'EntityName',
  schema: coda.makeObjectSchema({
    ...
  }),
  formula: {
    ...
  },
});

Type Parameters

Type Parameter
K extends string
L extends string
ParamDefsT extends ParamDefs
SchemaT extends ObjectSchema<K, L>
ContextT extends SyncExecutionContext<any, any, any>
PermissionsContextT extends SyncPassthroughData

Parameters

Parameter Type
definition SyncTableOptions<K, L, ParamDefsT, SchemaT, ContextT, PermissionsContextT>

Returns

this


setSystemAuthentication()

setSystemAuthentication(systemAuthentication): this

Defined in: builder.ts:419

Sets this pack to use authentication provided by you as the maker of this pack.

You will need to register credentials to use with this pack. When users use the pack, their requests will be authenticated with those system credentials, they need not register their own account.

In the web editor, the /SystemAuthentication shortcut will insert a snippet of a skeleton authentication definition.

Example

pack.setSystemAuthentication({
  type: AuthenticationType.HeaderBearerToken,
});

Parameters

Parameter Type
systemAuthentication SystemAuthenticationDef

Returns

this


setUserAuthentication()

setUserAuthentication(authDef): this

Defined in: builder.ts:387

Sets this pack to use authentication for individual users, using the authentication method is the given definition.

Each user will need to register an account in order to use this pack.

In the web editor, the /UserAuthentication shortcut will insert a snippet of a skeleton authentication definition.

By default, this will set a default connection (account) requirement, making a user account required to invoke all formulas in this pack unless you specify differently on a particular formula. To change the default, you can pass a defaultConnectionRequirement option into this method.

Example

pack.setUserAuthentication({
  type: AuthenticationType.HeaderBearerToken,
});

Parameters

Parameter Type
authDef UserAuthenticationDef

Returns

this


setVersion()

setVersion(version): this

Defined in: builder.ts:477

Sets the semantic version of this pack version, e.g. '1.2.3'.

This is optional, and you only need to provide a version if you are manually doing semantic versioning, or using the CLI. If using the web editor, you can omit this and the web editor will automatically provide an appropriate semantic version each time you build a version.

Example

pack.setVersion('1.2.3');

Parameters

Parameter Type
version string

Returns

this