Nyaraka za wasanidi programu za Lingara
Ukurasa huu umetafsiriwa kutoka Kiingereza. Ikiwa hizi mbili zinatofautiana, ukurasa wa Kiingereza ndio sahihi. Soma ukurasa wa Kiingereza
Muunganisho umeundwa kwa hatua, na hatua yoyote inaweza kubeba hati. Hati ya hatua ni mwili wa kitendakazi. Hupokea thamani mbili: lingara, API iliyo kwenye ukurasa huu, na input, sehemu za hatua yenyewe pamoja na mteja wake na hatua zilizounganishwa kabla yake. Aina ya input hutegemea aina ya hatua, kwa hivyo hati ya hatua ya webhook husoma sehemu za hatua ya webhook. Hati hurudisha kitu kimoja hasa, kilichojengwa na mojawapo ya visaidizi vilivyo hapa chini.
Hati haioni kamwe siri. Pale hatua inapomhitaji mteja wake, hupata kishikio, kama vile input.client, na kisaidizi hurekodi kishikio hicho. Lingara hujaza thamani halisi unapotumia muunganisho.
Kile ambacho hati haipaswi kufanya
Hati huendeshwa katika kivinjari chako mwenyewe, ndani ya worker isiyo na mtandao wala hifadhi. Inabanwa na mipaka hii:
- Humaliza ndani ya sekunde 1.
- Mfuatano wa herufi inaorudisha una urefu wa herufi 2048 zaidi.
- Orodha inayorudisha ina vipengee 64 zaidi.
- Matokeo yake yote ni 16 KiB zaidi.
Hati inayovunja mpaka, inayotupa hitilafu, au inayorudisha kitu kingine zaidi ya matokeo ya kisaidizi kimoja hufanya hatua yake ishindwe, na “Ikague” huonyesha ni hatua ipi na kwa nini.
Ahadi ya toleo
Kila kitu kwenye ukurasa huu ni lingara.v1. Ndani ya v1 API hukua tu: kisaidizi kipya, chaguo jipya la hiari au aina mpya ya hatua vinaweza kuonekana, lakini hakuna chochote unachoweza kutumia leo kitakachoondolewa, kubadilishwa jina au kupunguzwa. Badiliko ambalo lingevunja hati ni toleo jipya kando ya hili, na v1 hubaki kama lilivyo.
Matamko
Kila tamko lililo hapa chini limetolewa kutoka kwenye faili lilelile ambalo kihariri cha hati hukamilisha dhidi yake.
NodeHandle
Kitambulisho cha hatua nyingine, kama vile "n1". Hatua tegemezi humtaja mteja wake kwa kishikio.
export type NodeHandle = string;
Scope
Ruhusa ambayo mteja wa API anaweza kuwa nayo. Seva huamua ni zipi akaunti yako inaweza kutumia.
export type Scope = 'vocab:generate' | 'lesson_plans:read' | 'lesson_plans:write' | 'tutor:converse' | 'usage:read' | 'events:read' | 'events:write' | 'embed:mint' | 'embed:play';
AppSlot
Mahali katika programu ya Lingara ambapo kadi ya programu inaweza kuonekana.
export type AppSlot = 'plans.empty_detail' | 'home.side';
ContextSlice
Sehemu ya muktadha wa mwanafunzi ambayo programu inaweza kuomba kupokea.
export type ContextSlice = 'languages' | 'plan_summary' | 'review_due' | 'tutor_topic';
ClientOptions
Chaguo za lingara.client.
export interface ClientOptions {
name: string;
scopes: readonly Scope[];
redirectUris?: readonly string[];
}
name(string) — Jina la mteja, kama Zana za wasanidi programu zinavyolionyesha.scopes(readonly Scope[]) — Ruhusa ambazo mteja huomba.redirectUris?(readonly string[]) — Mahali ambapo mtiririko wa msimbo wa uidhinishaji unaweza kumrudisha mwanafunzi. Iache kwa mteja wa seva-kwa-seva.
WebhookOptions
Chaguo za lingara.webhook.
export interface WebhookOptions {
client: NodeHandle;
url: string;
events: readonly string[];
}
client(NodeHandle) — Hatua ya mteja ambayo webhook hii ni yake:input.client.url(string) — Anwani ya HTTPS ambayo Lingara huwasilisha matukio kwake.events(readonly string[]) — Aina za matukio za kuwasilisha, kama vile"lesson_plan.ready".
ManifestOptions
Chaguo za lingara.manifest, kwa camelCase; kisaidizi huandika umbo la manifest la kusafirishwa.
export interface ManifestOptions {
name: string | Readonly<Record<string, string>>;
description: string | Readonly<Record<string, string>>;
renderUrl: string;
slots: readonly AppSlot[];
context?: readonly ContextSlice[];
scopes?: readonly Scope[];
tutorNote?: boolean;
defaultLocale?: string;
}
name(string | Readonly<Record<string, string>>) — Jina la programu: mfuatano mmoja, au mfuatano mmoja kwa kila msimbo wa lugha.description(string | Readonly<Record<string, string>>) — Sentensi moja kuhusu programu: mfuatano mmoja, au mfuatano mmoja kwa kila msimbo wa lugha.renderUrl(string) — Anwani ya HTTPS ambayo Lingara huiomba kadi ya programu.slots(readonly AppSlot[]) — Mahali ambapo kadi ya programu inaweza kuonekana.context?(readonly ContextSlice[]) — Sehemu za muktadha ambazo programu hupokea. Chaguomsingi ni hakuna.scopes?(readonly Scope[]) — Ruhusa ambazo programu humwomba mwanafunzi. Chaguomsingi ni hakuna.tutorNote?(boolean) — Kama programu inaweza kuacha dokezo kwa mkufunzi. Chaguomsingi nifalse.defaultLocale?(string) — Lugha ambayo jina au maelezo yaliyo mfuatano wa kawaida huhifadhiwa chini yake. Chaguomsingi ni"en".
AppOptions
Chaguo za lingara.app.
export interface AppOptions {
client: NodeHandle;
manifest: Manifest;
}
client(NodeHandle) — Hatua ya mteja ambayo programu hii ni yake:input.client.manifest(Manifest) — Manifest ya programu, iliyojengwa kwalingara.manifest.
ClientSpec
Kile ambacho hatua ya mteja huunda: mteja wa API.
export interface ClientSpec {
readonly kind: 'client';
readonly name: string;
readonly scopes: readonly Scope[];
readonly redirectUris?: readonly string[];
}
kind('client') — Daima"client".name(string) — Jina la mteja.scopes(readonly Scope[]) — Ruhusa ambazo mteja huomba.redirectUris?(readonly string[]) — URI za kuelekeza upya za mteja, akiwa nazo.
SecretSpec
Kile ambacho hatua ya siri huunda: siri mpya kwa mteja wake.
export interface SecretSpec {
readonly kind: 'secret';
readonly client: NodeHandle;
}
kind('secret') — Daima"secret".client(NodeHandle) — Hatua ya mteja ambayo siri ni yake.
WebhookSpec
Kile ambacho hatua ya webhook huunda: kituo cha webhook.
export interface WebhookSpec {
readonly kind: 'webhook';
readonly client: NodeHandle;
readonly url: string;
readonly events: readonly string[];
}
kind('webhook') — Daima"webhook".client(NodeHandle) — Hatua ya mteja ambayo webhook ni yake.url(string) — Anwani ambayo matukio huwasilishwa kwake.events(readonly string[]) — Aina za matukio zinazowasilishwa.
AppSpec
Kile ambacho hatua ya programu huunda: programu inayoonyesha kadi ndani ya Lingara.
export interface AppSpec {
readonly kind: 'app';
readonly client: NodeHandle;
readonly manifest: Manifest;
}
kind('app') — Daima"app".client(NodeHandle) — Hatua ya mteja ambayo programu ni yake.manifest(Manifest) — Manifest ya programu.
Manifest
Manifest ya programu katika umbo lake la kusafirishwa, kama seva inavyoihifadhi.
export interface Manifest {
readonly manifest_version: 1;
readonly default_locale: string;
readonly name: Readonly<Record<string, string>>;
readonly description: Readonly<Record<string, string>>;
readonly render_url: string;
readonly slots: readonly AppSlot[];
readonly context: readonly ContextSlice[];
readonly scopes: readonly Scope[];
readonly tutor_note: boolean;
}
manifest_version(1) — Daima1.default_locale(string) — Lugha inayoonyeshwa wakati lugha ya mwanafunzi mwenyewe haina ingizo.name(Readonly<Record<string, string>>) — Jina la programu, kwa kila msimbo wa lugha.description(Readonly<Record<string, string>>) — Sentensi moja kuhusu programu, kwa kila msimbo wa lugha.render_url(string) — Anwani ya HTTPS ambayo Lingara huiomba kadi ya programu.slots(readonly AppSlot[]) — Mahali ambapo kadi ya programu inaweza kuonekana.context(readonly ContextSlice[]) — Sehemu za muktadha ambazo programu hupokea.scopes(readonly Scope[]) — Ruhusa ambazo programu humwomba mwanafunzi.tutor_note(boolean) — Kama programu inaweza kuacha dokezo kwa mkufunzi.
Spec
Spec yoyote ambayo kisaidizi hurudisha. Hati hurudisha moja hasa.
export type Spec = ClientSpec | SecretSpec | WebhookSpec | AppSpec;
Upstream
Matokeo ya kila hatua iliyotangulia moja kwa moja, kwa kishikio.
export type Upstream = Readonly<Record<NodeHandle, Spec & {
readonly handle: NodeHandle;
}>>;
ClientInput
Ingizo la hatua ya mteja: sehemu zake, ambazo ndizo chaguo za lingara.client.
export interface ClientInput {
readonly name: string;
readonly scopes: readonly Scope[];
readonly redirectUris?: readonly string[];
readonly upstream: Upstream;
}
name(string) — Jina la mteja.scopes(readonly Scope[]) — Ruhusa ambazo mteja huomba.redirectUris?(readonly string[]) — URI za kuelekeza upya za mteja, hatua ikiwa nazo.upstream(Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.
SecretInput
Ingizo la hatua ya siri. client ni hatua moja ya mteja iliyounganishwa na hii.
export interface SecretInput {
readonly client: NodeHandle;
readonly upstream: Upstream;
}
client(NodeHandle) — Hatua ya mteja iliyounganishwa na hii.upstream(Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.
WebhookInput
Ingizo la hatua ya webhook: sehemu zake, pamoja na mteja aliyeunganishwa.
export interface WebhookInput {
readonly client: NodeHandle;
readonly url: string;
readonly events: readonly string[];
readonly upstream: Upstream;
}
client(NodeHandle) — Hatua ya mteja iliyounganishwa na hii.url(string) — Anwani ambayo sehemu za hatua zinaitaja.events(readonly string[]) — Aina za matukio ambazo sehemu za hatua zinazitaja.upstream(Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.
AppInput
Ingizo la hatua ya programu: sehemu zake za manifest, pamoja na mteja aliyeunganishwa.
export interface AppInput {
readonly client: NodeHandle;
readonly manifest: ManifestOptions;
readonly upstream: Upstream;
}
client(NodeHandle) — Hatua ya mteja iliyounganishwa na hii.manifest(ManifestOptions) — Manifest ambayo sehemu za hatua zinaieleza.upstream(Upstream) — Matokeo ya kila hatua iliyotangulia moja kwa moja.
InputFor
Ingizo ambalo hati ya aina fulani ya hatua hupokea.
export type InputFor<K extends Spec['kind']> = K extends 'client' ? ClientInput : K extends 'secret' ? SecretInput : K extends 'webhook' ? WebhookInput : AppInput;
LingaraV1
Visaidizi ambavyo hati huita. Kila kimoja hurudisha spec iliyogandishwa, na chaguo la aina isiyo sahihi hutupa TypeError inayolitaja.
export interface LingaraV1 {
readonly version: 'v1';
client(options: ClientOptions): ClientSpec;
secret(client: NodeHandle): SecretSpec;
webhook(options: WebhookOptions): WebhookSpec;
app(options: AppOptions): AppSpec;
manifest(options: ManifestOptions): Manifest;
}
version('v1') — Daima"v1".client(options: ClientOptions): ClientSpec— Mteja wa API.secret(client: NodeHandle): SecretSpec— Siri mpya kwa hatua ya mteja.webhook(options: WebhookOptions): WebhookSpec— Kituo cha webhook kwenye hatua ya mteja.app(options: AppOptions): AppSpec— Programu kwenye hatua ya mteja.manifest(options: ManifestOptions): Manifest— Manifest katika umbo lake la kusafirishwa, ikiwa chaguo ambazo v1 huziacha za hiari zimejazwa.
return lingara.client({ name: input.name, scopes: input.scopes })
return lingara.secret(input.client)
return lingara.webhook({ client: input.client, url: input.url, events: input.events })
return lingara.app({ client: input.client, manifest: lingara.manifest(input.manifest) })
NodeScript
Hati ya hatua ni mwili wa kitendakazi hiki: return lingara.webhook({ client: input.client, url: input.url, events: input.events }).
export type NodeScript<K extends Spec['kind']> = (lingara: LingaraV1, input: InputFor<K>) => Spec;