@loams/client 0.1.0 → 0.1.2
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/README.md +104 -4
- package/dist/app.d.ts +149 -0
- package/dist/app.js +317 -0
- package/dist/builders/filter.d.ts +96 -0
- package/dist/builders/filter.js +190 -0
- package/dist/builders/schema.d.ts +50 -0
- package/dist/builders/schema.js +92 -0
- package/dist/builders/search.d.ts +159 -0
- package/dist/builders/search.js +307 -0
- package/dist/gen/facade.d.ts +267 -2
- package/dist/gen/facade.js +194 -0
- package/dist/handle.d.ts +67 -0
- package/dist/handle.js +107 -0
- package/dist/index.d.ts +13 -5
- package/dist/index.js +13 -3
- package/dist/loams.d.ts +78 -3
- package/dist/loams.js +84 -6
- package/dist/node.js +1 -1
- package/dist/runtime/batch.d.ts +29 -0
- package/dist/runtime/batch.js +95 -0
- package/dist/runtime/call.d.ts +63 -9
- package/dist/runtime/call.js +243 -41
- package/dist/runtime/consistency.d.ts +65 -11
- package/dist/runtime/consistency.js +212 -46
- package/dist/runtime/errors.d.ts +29 -2
- package/dist/runtime/errors.js +26 -0
- package/dist/runtime/machine-key.d.ts +33 -0
- package/dist/runtime/machine-key.js +174 -0
- package/dist/runtime/pagination.js +8 -2
- package/dist/runtime/subscribe.d.ts +37 -0
- package/dist/runtime/subscribe.js +128 -0
- package/dist/runtime/token-source.d.ts +1 -1
- package/dist/runtime/token-source.js +1 -1
- package/dist/runtime/transports.d.ts +22 -1
- package/dist/runtime/transports.js +28 -2
- package/dist/vendor/proto/collection-v1.d.ts +3 -0
- package/dist/vendor/proto/collection-v1.js +7 -0
- package/dist/vendor/proto/gen/loams/auth/v1/auth_pb.d.ts +7 -2
- package/dist/vendor/proto/gen/loams/auth/v1/auth_pb.js +5 -1
- package/dist/vendor/proto/gen/loams/collection/v1/collection_pb.d.ts +1610 -0
- package/dist/vendor/proto/gen/loams/collection/v1/collection_pb.js +399 -0
- package/dist/vendor/proto/gen/loams/collection/v1/document_pb.d.ts +1054 -0
- package/dist/vendor/proto/gen/loams/collection/v1/document_pb.js +327 -0
- package/dist/vendor/proto/gen/loams/collection/v1/query_pb.d.ts +2101 -0
- package/dist/vendor/proto/gen/loams/collection/v1/query_pb.js +608 -0
- package/dist/vendor/proto/gen/loams/graph/v1/graph_pb.d.ts +2299 -0
- package/dist/vendor/proto/gen/loams/graph/v1/graph_pb.js +596 -0
- package/dist/vendor/proto/gen/loams/instance/v1/instance_pb.d.ts +23 -7
- package/dist/vendor/proto/gen/loams/instance/v1/instance_pb.js +20 -5
- package/dist/vendor/proto/gen/loams/operations/v1/operations_pb.d.ts +399 -0
- package/dist/vendor/proto/gen/loams/operations/v1/operations_pb.js +118 -0
- package/dist/vendor/proto/gen/loams/sql/v1/sql_pb.d.ts +182 -0
- package/dist/vendor/proto/gen/loams/sql/v1/sql_pb.js +72 -0
- package/dist/vendor/proto/gen/loams/stream/v1/stream_pb.d.ts +688 -0
- package/dist/vendor/proto/gen/loams/stream/v1/stream_pb.js +180 -0
- package/package.json +2 -2
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// `streams.subscribe` (runtime contract R14, SDKP §2.5 and SDKP-2).
|
|
2
|
+
//
|
|
3
|
+
// const sub = loams.streams.subscribe({ stream: 'events', partition: 0, fromOffset: 1n });
|
|
4
|
+
// for await (const record of sub) {
|
|
5
|
+
// handle(record);
|
|
6
|
+
// if (done) break; // cancels the loop
|
|
7
|
+
// }
|
|
8
|
+
// resumeLater(sub.offset); // the next offset to read
|
|
9
|
+
//
|
|
10
|
+
// A client loop over unary `Fetch` rather than a server stream, so it works on
|
|
11
|
+
// every transport (Connect-unary included) and through every proxy:
|
|
12
|
+
//
|
|
13
|
+
// - The next offset is the last record's offset + 1.
|
|
14
|
+
// - An empty fetch backs off 100 ms, doubling, up to 1 s, and the backoff
|
|
15
|
+
// resets when a record arrives. When the caller passes `maxWaitMs`, the
|
|
16
|
+
// server long-polls instead and the backoff only applies when it answers
|
|
17
|
+
// empty at its deadline.
|
|
18
|
+
// - `offset` is always the next offset to read, so a caller can stop and
|
|
19
|
+
// resume without losing or repeating a record.
|
|
20
|
+
// - Breaking out of `for await`, calling `return()`, or aborting `signal`
|
|
21
|
+
// stops the loop; no further fetch is sent.
|
|
22
|
+
//
|
|
23
|
+
// A fetch that fails is retried by the call path as any `safe` call is; a
|
|
24
|
+
// failure that outlasts the retries ends the iteration with that error, and
|
|
25
|
+
// `offset` still says where to resume.
|
|
26
|
+
import { sleep } from './retry.js';
|
|
27
|
+
/** The first and the largest pause after an empty fetch. */
|
|
28
|
+
export const SUBSCRIBE_MIN_BACKOFF_MS = 100;
|
|
29
|
+
export const SUBSCRIBE_MAX_BACKOFF_MS = 1_000;
|
|
30
|
+
function asBigInt(value) {
|
|
31
|
+
if (value === undefined) {
|
|
32
|
+
return 0n;
|
|
33
|
+
}
|
|
34
|
+
return typeof value === 'bigint' ? value : BigInt(value);
|
|
35
|
+
}
|
|
36
|
+
/** Starts a subscription over `fetch`. Nothing is sent until the first
|
|
37
|
+
* `next()`. */
|
|
38
|
+
export function subscribe(fetch, request, options = {}) {
|
|
39
|
+
let offset = asBigInt(request.fromOffset);
|
|
40
|
+
let buffer = [];
|
|
41
|
+
let backoff = SUBSCRIBE_MIN_BACKOFF_MS;
|
|
42
|
+
let done = false;
|
|
43
|
+
const controller = new AbortController();
|
|
44
|
+
const onAbort = () => {
|
|
45
|
+
done = true;
|
|
46
|
+
controller.abort(options.signal?.reason);
|
|
47
|
+
};
|
|
48
|
+
if (options.signal?.aborted === true) {
|
|
49
|
+
onAbort();
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
options.signal?.addEventListener('abort', onAbort, { once: true });
|
|
53
|
+
}
|
|
54
|
+
const finish = () => {
|
|
55
|
+
done = true;
|
|
56
|
+
options.signal?.removeEventListener('abort', onAbort);
|
|
57
|
+
if (!controller.signal.aborted) {
|
|
58
|
+
controller.abort();
|
|
59
|
+
}
|
|
60
|
+
return { done: true, value: undefined };
|
|
61
|
+
};
|
|
62
|
+
const fetchRequest = () => {
|
|
63
|
+
const out = {
|
|
64
|
+
stream: request.stream,
|
|
65
|
+
partition: request.partition ?? 0,
|
|
66
|
+
offset,
|
|
67
|
+
};
|
|
68
|
+
for (const key of ['namespace', 'maxRecords', 'maxBytes', 'maxWaitMs']) {
|
|
69
|
+
if (request[key] !== undefined) {
|
|
70
|
+
out[key] = request[key];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
74
|
+
};
|
|
75
|
+
const subscription = {
|
|
76
|
+
get offset() {
|
|
77
|
+
return offset;
|
|
78
|
+
},
|
|
79
|
+
cancel() {
|
|
80
|
+
finish();
|
|
81
|
+
},
|
|
82
|
+
async next() {
|
|
83
|
+
while (!done) {
|
|
84
|
+
const record = buffer.shift();
|
|
85
|
+
if (record !== undefined) {
|
|
86
|
+
offset = asBigInt(record.offset) + 1n;
|
|
87
|
+
return { done: false, value: record };
|
|
88
|
+
}
|
|
89
|
+
let answer;
|
|
90
|
+
try {
|
|
91
|
+
answer = await fetch(fetchRequest(), { signal: controller.signal });
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (done) {
|
|
95
|
+
return finish();
|
|
96
|
+
}
|
|
97
|
+
finish();
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
if (done) {
|
|
101
|
+
return finish();
|
|
102
|
+
}
|
|
103
|
+
// A record below the next offset is one already yielded (a server that
|
|
104
|
+
// answers from a segment start); skipping it keeps resume exact.
|
|
105
|
+
buffer = (answer?.records ?? []).filter((r) => asBigInt(r.offset) >= offset);
|
|
106
|
+
if (buffer.length > 0) {
|
|
107
|
+
backoff = SUBSCRIBE_MIN_BACKOFF_MS;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
await sleep(backoff, controller.signal);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return finish();
|
|
115
|
+
}
|
|
116
|
+
backoff = Math.min(backoff * 2, SUBSCRIBE_MAX_BACKOFF_MS);
|
|
117
|
+
}
|
|
118
|
+
return finish();
|
|
119
|
+
},
|
|
120
|
+
return() {
|
|
121
|
+
return Promise.resolve(finish());
|
|
122
|
+
},
|
|
123
|
+
[Symbol.asyncIterator]() {
|
|
124
|
+
return this;
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
return subscription;
|
|
128
|
+
}
|
|
@@ -32,7 +32,7 @@ export declare function envToken(environment?: Record<string, string | undefined
|
|
|
32
32
|
* rather than one per request.
|
|
33
33
|
*/
|
|
34
34
|
export declare function refreshing(fetchToken: () => Promise<string>): TokenSource;
|
|
35
|
-
/** The RFC 8693 token exchange a person signed in
|
|
35
|
+
/** The RFC 8693 token exchange a person signed in at the IdP needs
|
|
36
36
|
* (design §44 §7.4, D608; §19 §5.2).
|
|
37
37
|
*
|
|
38
38
|
* The instance's `/oauth/token` protocol endpoint takes the identity token and
|
|
@@ -64,7 +64,7 @@ export function refreshing(fetchToken) {
|
|
|
64
64
|
};
|
|
65
65
|
return source;
|
|
66
66
|
}
|
|
67
|
-
/** The RFC 8693 token exchange a person signed in
|
|
67
|
+
/** The RFC 8693 token exchange a person signed in at the IdP needs
|
|
68
68
|
* (design §44 §7.4, D608; §19 §5.2).
|
|
69
69
|
*
|
|
70
70
|
* The instance's `/oauth/token` protocol endpoint takes the identity token and
|
|
@@ -33,11 +33,32 @@ export interface TransportOptions {
|
|
|
33
33
|
* it; this only tells the transport what the request will look like.
|
|
34
34
|
*/
|
|
35
35
|
interceptors?: Parameters<typeof createConnectTransport>[0]['interceptors'];
|
|
36
|
+
/**
|
|
37
|
+
* The `fetch` the transport calls, for a runtime whose `fetch` needs
|
|
38
|
+
* wrapping (a proxy, a test double, instrumentation). When set it is used
|
|
39
|
+
* as given. When unset, the global `fetch` is used, wrapped to send
|
|
40
|
+
* `redirect: "manual"` in Cloudflare Workers (see `workersFetch`).
|
|
41
|
+
*/
|
|
42
|
+
fetch?: typeof globalThis.fetch;
|
|
36
43
|
}
|
|
44
|
+
/** True in Cloudflare Workers (workerd), which identifies itself this way. */
|
|
45
|
+
export declare function isWorkerd(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Wraps `fetch` to send `redirect: "manual"`.
|
|
48
|
+
*
|
|
49
|
+
* connect-web sets `redirect: "error"` on every request, which Workers rejects
|
|
50
|
+
* ("Invalid redirect value, must be one of 'follow' or 'manual'"). Loams calls
|
|
51
|
+
* never redirect, so `manual` loses nothing there; it is applied only in
|
|
52
|
+
* workerd because in a browser `manual` turns a redirect into an opaque
|
|
53
|
+
* response that hides the failure `error` reports.
|
|
54
|
+
*/
|
|
55
|
+
export declare function workersFetch(inner: typeof globalThis.fetch): typeof globalThis.fetch;
|
|
56
|
+
/** The `fetch` a transport built from `options` uses, or undefined for connect-web's default. */
|
|
57
|
+
export declare function transportFetch(options: TransportOptions): typeof globalThis.fetch | undefined;
|
|
37
58
|
/**
|
|
38
59
|
* The default transport: Connect over `fetch`.
|
|
39
60
|
*
|
|
40
|
-
* Works in a browser, in Node 18+ (which has `fetch`)
|
|
61
|
+
* Works in a browser, in Node 18+ (which has `fetch`) and in Bun, and
|
|
41
62
|
* speaks both the Connect unary protocol and gRPC-Web, which is what the server
|
|
42
63
|
* serves on the same port (D600). This is the browser path as a first-class
|
|
43
64
|
* case, not a fallback: it is the default in every runtime.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// over `fetch`, which is what `@connectrpc/connect-web` implements. Because
|
|
8
8
|
// the API serves gRPC-Web on the same port as everything else, the same
|
|
9
9
|
// client code runs in a browser with no proxy and no sidecar.
|
|
10
|
-
// - **Node
|
|
10
|
+
// - **Node and Bun** can do HTTP/2 gRPC. `@connectrpc/connect-node`
|
|
11
11
|
// implements it over `node:http2`, and the server's plaintext listener means
|
|
12
12
|
// no ALPN to negotiate — the client asks for HTTP/2 with prior knowledge.
|
|
13
13
|
//
|
|
@@ -17,22 +17,48 @@
|
|
|
17
17
|
// HTTP/2 transport in a browser bundle would be a build error, which is the
|
|
18
18
|
// right failure.
|
|
19
19
|
import { createConnectTransport } from '@connectrpc/connect-web';
|
|
20
|
+
/** True in Cloudflare Workers (workerd), which identifies itself this way. */
|
|
21
|
+
export function isWorkerd() {
|
|
22
|
+
return typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Wraps `fetch` to send `redirect: "manual"`.
|
|
26
|
+
*
|
|
27
|
+
* connect-web sets `redirect: "error"` on every request, which Workers rejects
|
|
28
|
+
* ("Invalid redirect value, must be one of 'follow' or 'manual'"). Loams calls
|
|
29
|
+
* never redirect, so `manual` loses nothing there; it is applied only in
|
|
30
|
+
* workerd because in a browser `manual` turns a redirect into an opaque
|
|
31
|
+
* response that hides the failure `error` reports.
|
|
32
|
+
*/
|
|
33
|
+
export function workersFetch(inner) {
|
|
34
|
+
return (input, init) => inner(input, init === undefined ? init : { ...init, redirect: 'manual' });
|
|
35
|
+
}
|
|
36
|
+
/** The `fetch` a transport built from `options` uses, or undefined for connect-web's default. */
|
|
37
|
+
export function transportFetch(options) {
|
|
38
|
+
if (options.fetch !== undefined) {
|
|
39
|
+
return options.fetch;
|
|
40
|
+
}
|
|
41
|
+
// Resolve the global lazily so a later polyfill or test stub is honoured.
|
|
42
|
+
return isWorkerd() ? workersFetch((input, init) => globalThis.fetch(input, init)) : undefined;
|
|
43
|
+
}
|
|
20
44
|
/**
|
|
21
45
|
* The default transport: Connect over `fetch`.
|
|
22
46
|
*
|
|
23
|
-
* Works in a browser, in Node 18+ (which has `fetch`)
|
|
47
|
+
* Works in a browser, in Node 18+ (which has `fetch`) and in Bun, and
|
|
24
48
|
* speaks both the Connect unary protocol and gRPC-Web, which is what the server
|
|
25
49
|
* serves on the same port (D600). This is the browser path as a first-class
|
|
26
50
|
* case, not a fallback: it is the default in every runtime.
|
|
27
51
|
*/
|
|
28
52
|
export function createLoamsTransport(options = {}) {
|
|
29
53
|
const interceptors = transportInterceptors(options);
|
|
54
|
+
const fetchImpl = transportFetch(options);
|
|
30
55
|
return createConnectTransport({
|
|
31
56
|
baseUrl: options.baseUrl ?? '',
|
|
32
57
|
useBinaryFormat: options.useBinaryFormat ?? true,
|
|
33
58
|
...(options.defaultTimeoutMs === undefined
|
|
34
59
|
? {}
|
|
35
60
|
: { defaultTimeoutMs: options.defaultTimeoutMs }),
|
|
61
|
+
...(fetchImpl === undefined ? {} : { fetch: fetchImpl }),
|
|
36
62
|
...(interceptors.length === 0 ? {} : { interceptors }),
|
|
37
63
|
});
|
|
38
64
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// `loams.collection.v1` as one module: the package spans three proto files
|
|
2
|
+
// (`collection`, `document`, `query`), and the SDK facade imports a package's
|
|
3
|
+
// types from one specifier (`@loams/proto/collection-v1`), as `./admin.ts`
|
|
4
|
+
// does for `loams.admin.v1`. Each file stays importable on its own path too.
|
|
5
|
+
export * from './gen/loams/collection/v1/collection_pb.js';
|
|
6
|
+
export * from './gen/loams/collection/v1/document_pb.js';
|
|
7
|
+
export * from './gen/loams/collection/v1/query_pb.js';
|
|
@@ -110,7 +110,8 @@ export declare const ListProvidersResponseSchema: GenMessage<ListProvidersRespon
|
|
|
110
110
|
*/
|
|
111
111
|
export type CompleteSetupRequest = Message<"loams.auth.v1.CompleteSetupRequest"> & {
|
|
112
112
|
/**
|
|
113
|
-
*
|
|
113
|
+
* This engine's LOAMS_SETUP_TOKEN. Required when authentication is on;
|
|
114
|
+
* ignored with LOAMS_AUTH_MODE=off.
|
|
114
115
|
*
|
|
115
116
|
* @generated from field: string setup_token = 1;
|
|
116
117
|
*/
|
|
@@ -333,7 +334,11 @@ export declare enum OidcProviderKind {
|
|
|
333
334
|
/**
|
|
334
335
|
* @generated from enum value: OIDC_PROVIDER_KIND_GENERIC = 7;
|
|
335
336
|
*/
|
|
336
|
-
GENERIC = 7
|
|
337
|
+
GENERIC = 7,
|
|
338
|
+
/**
|
|
339
|
+
* @generated from enum value: OIDC_PROVIDER_KIND_ZITADEL = 8;
|
|
340
|
+
*/
|
|
341
|
+
ZITADEL = 8
|
|
337
342
|
}
|
|
338
343
|
/**
|
|
339
344
|
* Describes the enum loams.auth.v1.OidcProviderKind.
|
|
@@ -9,7 +9,7 @@ import { file_loams_options_v1_options } from "../../options/v1/options_pb.js";
|
|
|
9
9
|
/**
|
|
10
10
|
* Describes the file loams/auth/v1/auth.proto.
|
|
11
11
|
*/
|
|
12
|
-
export const file_loams_auth_v1_auth = /*@__PURE__*/ fileDesc("
|
|
12
|
+
export const file_loams_auth_v1_auth = /*@__PURE__*/ fileDesc("Chhsb2Ftcy9hdXRoL3YxL2F1dGgucHJvdG8SDWxvYW1zLmF1dGgudjEiVwoMT2lkY1Byb3ZpZGVyEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSLQoEa2luZBgDIAEoDjIfLmxvYW1zLmF1dGgudjEuT2lkY1Byb3ZpZGVyS2luZCK6AQoHU2Vzc2lvbhIiCgR1c2VyGAEgASgLMhQubG9hbXMuYWRtaW4udjEuVXNlchIgCgNvcmcYAiABKAsyEy5sb2Ftcy5hZG1pbi52MS5PcmcSJQoEcm9sZRgDIAEoDjIXLmxvYW1zLmFkbWluLnYxLk9yZ1JvbGUSEgoKY3NyZl90b2tlbhgEIAEoCRIuCgpleHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIWChRMaXN0UHJvdmlkZXJzUmVxdWVzdCJ0ChVMaXN0UHJvdmlkZXJzUmVzcG9uc2USEAoIcGFzc3dvcmQYASABKAgSDAoEdG90cBgCIAEoCBIQCghwYXNza2V5cxgDIAEoCBIpCgRvaWRjGAQgAygLMhsubG9hbXMuYXV0aC52MS5PaWRjUHJvdmlkZXIibAoUQ29tcGxldGVTZXR1cFJlcXVlc3QSEwoLc2V0dXBfdG9rZW4YASABKAkSEAoIb3JnX25hbWUYAiABKAkSDAoEbmFtZRgDIAEoCRINCgVlbWFpbBgEIAEoCRIQCghwYXNzd29yZBgFIAEoCSJAChVDb21wbGV0ZVNldHVwUmVzcG9uc2USJwoHc2Vzc2lvbhgBIAEoCzIWLmxvYW1zLmF1dGgudjEuU2Vzc2lvbiITChFHZXRTZXNzaW9uUmVxdWVzdCI9ChJHZXRTZXNzaW9uUmVzcG9uc2USJwoHc2Vzc2lvbhgBIAEoCzIWLmxvYW1zLmF1dGgudjEuU2Vzc2lvbiJKChRDcmVhdGVTZXNzaW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIRCgl0b3RwX2NvZGUYAyABKAkiQAoVQ3JlYXRlU2Vzc2lvblJlc3BvbnNlEicKB3Nlc3Npb24YASABKAsyFi5sb2Ftcy5hdXRoLnYxLlNlc3Npb24iFgoURGVsZXRlU2Vzc2lvblJlcXVlc3QiFwoVRGVsZXRlU2Vzc2lvblJlc3BvbnNlItgBChREZWNpZGVDb25zZW50UmVxdWVzdBIwCghkZWNpc2lvbhgBIAEoDjIeLmxvYW1zLmF1dGgudjEuQ29uc2VudERlY2lzaW9uEhEKCWNsaWVudF9pZBgCIAEoCRIUCgxyZWRpcmVjdF91cmkYAyABKAkSDQoFc2NvcGUYBCABKAkSEAoIYXVkaWVuY2UYBSABKAkSDQoFc3RhdGUYBiABKAkSFgoOY29kZV9jaGFsbGVuZ2UYByABKAkSHQoVY29kZV9jaGFsbGVuZ2VfbWV0aG9kGAggASgJIiwKFURlY2lkZUNvbnNlbnRSZXNwb25zZRITCgtyZWRpcmVjdF90bxgBIAEoCSqvAgoQT2lkY1Byb3ZpZGVyS2luZBIiCh5PSURDX1BST1ZJREVSX0tJTkRfVU5TUEVDSUZJRUQQABIfChtPSURDX1BST1ZJREVSX0tJTkRfS0VZQ0xPQUsQARIbChdPSURDX1BST1ZJREVSX0tJTkRfT0tUQRACEhwKGE9JRENfUFJPVklERVJfS0lORF9FTlRSQRADEh0KGU9JRENfUFJPVklERVJfS0lORF9HT09HTEUQBBIgChxPSURDX1BST1ZJREVSX0tJTkRfQVVUSEVOVElLEAUSGgoWT0lEQ19QUk9WSURFUl9LSU5EX0RFWBAGEh4KGk9JRENfUFJPVklERVJfS0lORF9HRU5FUklDEAcSHgoaT0lEQ19QUk9WSURFUl9LSU5EX1pJVEFERUwQCCpqCg9Db25zZW50RGVjaXNpb24SIAocQ09OU0VOVF9ERUNJU0lPTl9VTlNQRUNJRklFRBAAEhoKFkNPTlNFTlRfREVDSVNJT05fQUxMT1cQARIZChVDT05TRU5UX0RFQ0lTSU9OX0RFTlkQAjL9BQoLQXV0aFNlcnZpY2UScgoNTGlzdFByb3ZpZGVycxIjLmxvYW1zLmF1dGgudjEuTGlzdFByb3ZpZGVyc1JlcXVlc3QaJC5sb2Ftcy5hdXRoLnYxLkxpc3RQcm92aWRlcnNSZXNwb25zZSIWkAIBkrUYDxINbGlzdFByb3ZpZGVycxJvCg1Db21wbGV0ZVNldHVwEiMubG9hbXMuYXV0aC52MS5Db21wbGV0ZVNldHVwUmVxdWVzdBokLmxvYW1zLmF1dGgudjEuQ29tcGxldGVTZXR1cFJlc3BvbnNlIhOStRgPEg1jb21wbGV0ZVNldHVwEmYKCkdldFNlc3Npb24SIC5sb2Ftcy5hdXRoLnYxLkdldFNlc3Npb25SZXF1ZXN0GiEubG9hbXMuYXV0aC52MS5HZXRTZXNzaW9uUmVzcG9uc2UiE5ACAZK1GAwSCmdldFNlc3Npb24SbwoNQ3JlYXRlU2Vzc2lvbhIjLmxvYW1zLmF1dGgudjEuQ3JlYXRlU2Vzc2lvblJlcXVlc3QaJC5sb2Ftcy5hdXRoLnYxLkNyZWF0ZVNlc3Npb25SZXNwb25zZSITkrUYDxINY3JlYXRlU2Vzc2lvbhJyCg1EZWxldGVTZXNzaW9uEiMubG9hbXMuYXV0aC52MS5EZWxldGVTZXNzaW9uUmVxdWVzdBokLmxvYW1zLmF1dGgudjEuRGVsZXRlU2Vzc2lvblJlc3BvbnNlIhaQAgKStRgPEg1kZWxldGVTZXNzaW9uEm8KDURlY2lkZUNvbnNlbnQSIy5sb2Ftcy5hdXRoLnYxLkRlY2lkZUNvbnNlbnRSZXF1ZXN0GiQubG9hbXMuYXV0aC52MS5EZWNpZGVDb25zZW50UmVzcG9uc2UiE5K1GA8SDWRlY2lkZUNvbnNlbnQaS4q1GEcKBGF1dGgSP1NpZ24taW4gcHJvdmlkZXJzLCBmaXJzdC1ydW4gc2V0dXAsIHNlc3Npb25zIGFuZCBPQXV0aCBjb25zZW50LmIGcHJvdG8z", [file_google_protobuf_timestamp, file_loams_admin_v1_common, file_loams_admin_v1_org, file_loams_options_v1_options]);
|
|
13
13
|
/**
|
|
14
14
|
* Describes the message loams.auth.v1.OidcProvider.
|
|
15
15
|
* Use `create(OidcProviderSchema)` to create a new message.
|
|
@@ -119,6 +119,10 @@ export var OidcProviderKind;
|
|
|
119
119
|
* @generated from enum value: OIDC_PROVIDER_KIND_GENERIC = 7;
|
|
120
120
|
*/
|
|
121
121
|
OidcProviderKind[OidcProviderKind["GENERIC"] = 7] = "GENERIC";
|
|
122
|
+
/**
|
|
123
|
+
* @generated from enum value: OIDC_PROVIDER_KIND_ZITADEL = 8;
|
|
124
|
+
*/
|
|
125
|
+
OidcProviderKind[OidcProviderKind["ZITADEL"] = 8] = "ZITADEL";
|
|
122
126
|
})(OidcProviderKind || (OidcProviderKind = {}));
|
|
123
127
|
/**
|
|
124
128
|
* Describes the enum loams.auth.v1.OidcProviderKind.
|