@liquidmetal-ai/raindrop 0.0.7 → 0.1.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/README.md +89 -46
- package/dist/base-command.d.ts +2 -1
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +29 -10
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +52 -19
- package/dist/build.test.js +44 -39
- package/dist/codegen.d.ts +3 -0
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +27 -10
- package/dist/codegen.test.js +10 -1
- package/dist/commands/auth/login.d.ts.map +1 -1
- package/dist/commands/auth/login.js +2 -3
- package/dist/commands/build/branch.d.ts +4 -2
- package/dist/commands/build/branch.d.ts.map +1 -1
- package/dist/commands/build/branch.js +17 -3
- package/dist/commands/build/delete.d.ts +4 -2
- package/dist/commands/build/delete.d.ts.map +1 -1
- package/dist/commands/build/delete.js +19 -2
- package/dist/commands/build/deploy.d.ts +2 -1
- package/dist/commands/build/deploy.d.ts.map +1 -1
- package/dist/commands/build/deploy.js +20 -1
- package/dist/commands/build/env/get.d.ts +1 -0
- package/dist/commands/build/env/get.d.ts.map +1 -1
- package/dist/commands/build/env/get.js +14 -3
- package/dist/commands/build/env/set.d.ts +4 -2
- package/dist/commands/build/env/set.d.ts.map +1 -1
- package/dist/commands/build/env/set.js +22 -13
- package/dist/commands/build/find.d.ts +4 -2
- package/dist/commands/build/find.d.ts.map +1 -1
- package/dist/commands/build/find.js +19 -2
- package/dist/commands/build/generate.d.ts +1 -0
- package/dist/commands/build/generate.d.ts.map +1 -1
- package/dist/commands/build/generate.js +14 -2
- package/dist/commands/build/list.d.ts +2 -0
- package/dist/commands/build/list.d.ts.map +1 -1
- package/dist/commands/build/list.js +14 -7
- package/dist/commands/build/sandbox.d.ts +1 -0
- package/dist/commands/build/sandbox.d.ts.map +1 -1
- package/dist/commands/build/sandbox.js +5 -0
- package/dist/commands/build/start.d.ts +3 -1
- package/dist/commands/build/start.d.ts.map +1 -1
- package/dist/commands/build/start.js +13 -1
- package/dist/commands/build/status.d.ts +36 -0
- package/dist/commands/build/status.d.ts.map +1 -0
- package/dist/commands/build/status.js +149 -0
- package/dist/commands/build/stop.d.ts +4 -1
- package/dist/commands/build/stop.d.ts.map +1 -1
- package/dist/commands/build/stop.js +19 -1
- package/dist/commands/build/unsandbox.d.ts +1 -0
- package/dist/commands/build/unsandbox.d.ts.map +1 -1
- package/dist/commands/build/unsandbox.js +5 -0
- package/dist/commands/build/upload.d.ts +1 -0
- package/dist/commands/build/upload.d.ts.map +1 -1
- package/dist/commands/build/upload.js +12 -1
- package/dist/commands/build/validate.d.ts +1 -0
- package/dist/commands/build/validate.d.ts.map +1 -1
- package/dist/commands/build/validate.js +32 -0
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +16 -4
- package/dist/index.d.ts +30 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -43
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/oclif.manifest.json +430 -67
- package/package.json +2 -2
- package/templates/handlers/actor/index.ts.hbs +3 -3
- package/templates/handlers/http-service/index.ts.hbs +2 -2
- package/templates/handlers/queue-consumer/index.ts.hbs +1 -1
- package/templates/handlers/r2-event-notification/index.ts.hbs +2 -2
- package/templates/init/package.json.hbs +2 -2
- package/templates/init/tsconfig.json +1 -2
|
@@ -18,7 +18,13 @@ export default class Upload extends BaseCommand {
|
|
|
18
18
|
required: false,
|
|
19
19
|
default: 'raindrop.manifest',
|
|
20
20
|
}),
|
|
21
|
-
config: Flags.string({
|
|
21
|
+
config: Flags.string({
|
|
22
|
+
char: 'c',
|
|
23
|
+
description: 'config file',
|
|
24
|
+
required: false,
|
|
25
|
+
hidden: true,
|
|
26
|
+
default: '.raindrop/config.json',
|
|
27
|
+
}),
|
|
22
28
|
output: Flags.string({ char: 'o', description: 'output directory', required: false, default: 'dist' }),
|
|
23
29
|
versionId: Flags.string({ char: 'v', description: 'version ID', required: true }),
|
|
24
30
|
impersonate: Flags.string({
|
|
@@ -32,6 +38,11 @@ export default class Upload extends BaseCommand {
|
|
|
32
38
|
hidden: true,
|
|
33
39
|
env: 'LIQUIDMETAL_RAINBOW_AUTH_SERVICE',
|
|
34
40
|
}),
|
|
41
|
+
raindropCatalogService: Flags.string({
|
|
42
|
+
env: 'RAINDROP_CATALOG_SERVICE',
|
|
43
|
+
description: 'URL of the catalog service',
|
|
44
|
+
hidden: true,
|
|
45
|
+
}),
|
|
35
46
|
};
|
|
36
47
|
async run() {
|
|
37
48
|
const apps = await this.loadManifest();
|
|
@@ -6,6 +6,7 @@ export default class Build extends BaseCommand<typeof Build> {
|
|
|
6
6
|
static flags: {
|
|
7
7
|
root: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
manifest: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
10
|
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
11
|
};
|
|
11
12
|
run(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/build/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/build/validate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAiBpD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC1D,OAAgB,IAAI,KAAM;IAE1B,OAAgB,WAAW,SAAiD;IAE5E,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;;;MAgBnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsBlC"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import { BaseCommand } from '../../base-command.js';
|
|
4
5
|
import { buildHandlers } from '../../build.js';
|
|
6
|
+
async function runTypeCheck(root) {
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
const tsc = spawn('npx', ['tsc', '--noEmit'], {
|
|
9
|
+
cwd: root,
|
|
10
|
+
stdio: 'inherit', // Inherit stdio to show compiler output in real-time
|
|
11
|
+
shell: true,
|
|
12
|
+
});
|
|
13
|
+
tsc.on('exit', (code) => {
|
|
14
|
+
resolve(code === 0);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
}
|
|
5
18
|
export default class Build extends BaseCommand {
|
|
6
19
|
static args = {};
|
|
7
20
|
static description = 'build and validate a LiquidMetal.AI project';
|
|
@@ -14,10 +27,29 @@ export default class Build extends BaseCommand {
|
|
|
14
27
|
required: false,
|
|
15
28
|
default: 'raindrop.manifest',
|
|
16
29
|
}),
|
|
30
|
+
config: Flags.string({
|
|
31
|
+
char: 'c',
|
|
32
|
+
description: 'config file',
|
|
33
|
+
required: false,
|
|
34
|
+
hidden: true,
|
|
35
|
+
default: '.raindrop/config.json',
|
|
36
|
+
}),
|
|
17
37
|
output: Flags.string({ char: 'o', description: 'output directory', required: false, default: 'dist' }),
|
|
18
38
|
};
|
|
19
39
|
async run() {
|
|
20
40
|
const apps = await this.loadManifest();
|
|
41
|
+
const version = await this.raindropFrameworkVersion();
|
|
42
|
+
if (version === null) {
|
|
43
|
+
this.error('Failed to determine @liquidmetal-ai/raindrop-framework version; is it installed?', { exit: 1 });
|
|
44
|
+
}
|
|
45
|
+
this.log(`Using @liquidmetal-ai/raindrop-framework version ${version}`);
|
|
46
|
+
// Run TypeScript type checking
|
|
47
|
+
this.log('Running type check...');
|
|
48
|
+
const typeCheckPassed = await runTypeCheck(this.flags.root);
|
|
49
|
+
if (!typeCheckPassed) {
|
|
50
|
+
this.error('Type check failed. Please fix the TypeScript errors before building.');
|
|
51
|
+
}
|
|
52
|
+
this.log('Type check passed');
|
|
21
53
|
const buildDir = path.isAbsolute(this.flags.output)
|
|
22
54
|
? this.flags.output
|
|
23
55
|
: path.join(this.flags.root, this.flags.output);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAwC;IAE1D,MAAM,CAAC,KAAK;;;;MAiBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAwC;IAE1D,MAAM,CAAC,KAAK;;;;MAiBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
|
package/dist/commands/tail.js
CHANGED
|
@@ -29,12 +29,24 @@ export default class Tail extends BaseCommand {
|
|
|
29
29
|
organizationId,
|
|
30
30
|
userId,
|
|
31
31
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
let socket;
|
|
33
|
+
try {
|
|
34
|
+
socket = new Socket(websocketUrl, undefined, {
|
|
35
|
+
heartbeatInterval: 30000,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
const err = e;
|
|
40
|
+
if (typeof WebSocket !== 'undefined') {
|
|
41
|
+
this.error('WebSocket is unavailable in this version of node. Please upgrade before continuing.', {
|
|
42
|
+
exit: 1,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
this.error(`Failed to connect to websocket ${err.message}`, { exit: 1 });
|
|
46
|
+
}
|
|
35
47
|
socket.addEventListener('message', (e) => {
|
|
36
48
|
const msg = TailWebsocketMessage.fromJsonString(e.data);
|
|
37
|
-
console.log(msg);
|
|
49
|
+
console.log(msg.toJsonString());
|
|
38
50
|
});
|
|
39
51
|
return new Promise((resolve) => {
|
|
40
52
|
socket.on('close', () => {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { PromiseClient } from '@connectrpc/connect';
|
|
1
|
+
import { Interceptor, PromiseClient } from '@connectrpc/connect';
|
|
3
2
|
import { Application } from '@liquidmetal-ai/drizzle/appify/build';
|
|
3
|
+
import { CatalogService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_connect';
|
|
4
4
|
import { RainbowAuthService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/rainbow_auth_connect';
|
|
5
|
+
import { RainbowPublicService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/rainbow_public_connect';
|
|
5
6
|
import { RaindropState } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/raindrop_pb';
|
|
6
7
|
export { run } from '@oclif/core';
|
|
7
8
|
export declare function configFromAppFile(appFile: string): Promise<Application[]>;
|
|
8
9
|
export declare function joinPath(...parts: string[]): string;
|
|
9
|
-
export declare function
|
|
10
|
-
|
|
11
|
-
client: PromiseClient<T>;
|
|
12
|
-
userId: string;
|
|
10
|
+
export declare function selectedOrganization(configDir: string): Promise<{
|
|
11
|
+
catalogServiceBaseUrl: string;
|
|
13
12
|
organizationId: string;
|
|
13
|
+
userId: string;
|
|
14
14
|
}>;
|
|
15
|
+
export declare function createAuthenticateInterceptor(configDir: string, rainbowAuth: PromiseClient<typeof RainbowAuthService>): {
|
|
16
|
+
authenticate: Interceptor;
|
|
17
|
+
};
|
|
15
18
|
export declare function readState(configDir: string): Promise<RaindropState>;
|
|
16
19
|
export declare function replaceState(configDir: string, state: RaindropState): Promise<void>;
|
|
17
20
|
export declare function ensureDirectory(dir: string): Promise<void>;
|
|
21
|
+
export declare function catalogService({ rainbowAuth, configDir, baseUrl, }: {
|
|
22
|
+
rainbowAuth: PromiseClient<typeof RainbowAuthService>;
|
|
23
|
+
configDir: string;
|
|
24
|
+
baseUrl?: string;
|
|
25
|
+
}): Promise<{
|
|
26
|
+
client: PromiseClient<typeof CatalogService>;
|
|
27
|
+
userId: string;
|
|
28
|
+
organizationId: string;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function rainbowAuthService(baseUrl: string): Promise<{
|
|
31
|
+
client: PromiseClient<typeof RainbowAuthService>;
|
|
32
|
+
}>;
|
|
33
|
+
export declare function rainbowPublicService({ baseUrl, configDir, rainbowAuth, }: {
|
|
34
|
+
baseUrl: string;
|
|
35
|
+
configDir: string;
|
|
36
|
+
rainbowAuth: PromiseClient<typeof RainbowAuthService>;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
client: PromiseClient<typeof RainbowPublicService>;
|
|
39
|
+
organizationId: string;
|
|
40
|
+
userId: string;
|
|
41
|
+
}>;
|
|
18
42
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mEAAmE,CAAC;AAEvG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qEAAqE,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,0DAA0D,CAAC;AAKzF,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAG/E;AAGD,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAgDD,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACrE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAgBD;AAKD,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,aAAa,CAAC,OAAO,kBAAkB,CAAC,GACpD;IAAE,YAAY,EAAE,WAAW,CAAA;CAAE,CAY/B;AAID,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAUzE;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CASzF;AAGD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE;AAED,wBAAsB,cAAc,CAAC,EACnC,WAAW,EACX,SAAS,EACT,OAAO,GACR,EAAE;IACD,WAAW,EAAE,aAAa,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,CAAC,OAAO,cAAc,CAAC,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAgBD;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,MAAM,EAAE,aAAa,CAAC,OAAO,kBAAkB,CAAC,CAAC;CAClD,CAAC,CASD;AAED,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,SAAS,EACT,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,aAAa,CAAC,OAAO,kBAAkB,CAAC,CAAC;CACvD,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,CAAC,OAAO,oBAAoB,CAAC,CAAC;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAeD"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { createPromiseClient } from '@connectrpc/connect';
|
|
2
2
|
import { createConnectTransport } from '@connectrpc/connect-web';
|
|
3
3
|
import { mustManifestFromString } from '@liquidmetal-ai/drizzle/appify/index';
|
|
4
|
+
import { CatalogService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_connect';
|
|
5
|
+
import { RainbowAuthService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/rainbow_auth_connect';
|
|
6
|
+
import { RainbowPublicService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/rainbow_public_connect';
|
|
4
7
|
import { RaindropState } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/raindrop_pb';
|
|
5
8
|
import { Mutex } from 'async-mutex';
|
|
6
9
|
import * as fs from 'node:fs/promises';
|
|
@@ -14,13 +17,6 @@ export async function configFromAppFile(appFile) {
|
|
|
14
17
|
export function joinPath(...parts) {
|
|
15
18
|
return parts.join('/').replace(/\/+/g, '/');
|
|
16
19
|
}
|
|
17
|
-
// useClient returns a promise client for the given service at baseUrl.
|
|
18
|
-
export function useClient(service, baseUrl) {
|
|
19
|
-
const transport = createConnectTransport({
|
|
20
|
-
baseUrl,
|
|
21
|
-
});
|
|
22
|
-
return createPromiseClient(service, transport);
|
|
23
|
-
}
|
|
24
20
|
const accessTokenAndRefreshMutex = new Mutex();
|
|
25
21
|
// bearerTokenAndRefresh returns an access token for the currently selected
|
|
26
22
|
// organization based on the raindrop state found in the config directory. If
|
|
@@ -57,50 +53,32 @@ async function bearerTokenAndRefresh(configDir, rainbowAuth) {
|
|
|
57
53
|
return token;
|
|
58
54
|
});
|
|
59
55
|
}
|
|
56
|
+
export async function selectedOrganization(configDir) {
|
|
57
|
+
const state = await readState(configDir);
|
|
58
|
+
if (!state.currentOrganizationId) {
|
|
59
|
+
throw new Error('not logged in');
|
|
60
|
+
}
|
|
61
|
+
const token = state.organizationIdToBearerToken[state.currentOrganizationId];
|
|
62
|
+
if (!token) {
|
|
63
|
+
throw new Error('no credentials set for current organization');
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
catalogServiceBaseUrl: token.catalogServiceBaseUrl,
|
|
67
|
+
organizationId: token.organizationId,
|
|
68
|
+
userId: token.userId,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
60
71
|
// createAuthenticateInterceptor returns a connect rpc interceptor which ensures
|
|
61
72
|
// that the user is logged in with an active access token and automatically
|
|
62
73
|
// refreshes the access tokens when making requests.
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
const interceptor = (next) => async (req) => {
|
|
74
|
+
export function createAuthenticateInterceptor(configDir, rainbowAuth) {
|
|
75
|
+
const authenticate = (next) => async (req) => {
|
|
66
76
|
const { accessToken } = await bearerTokenAndRefresh(configDir, rainbowAuth);
|
|
67
77
|
req.header.set('Authorization', `Bearer ${accessToken}`);
|
|
68
78
|
return await next(req);
|
|
69
79
|
};
|
|
70
|
-
let baseUrl = '';
|
|
71
|
-
switch (service.typeName) {
|
|
72
|
-
case 'liquidmetal.v1alpha1.CatalogService':
|
|
73
|
-
baseUrl = catalogServiceBaseUrl;
|
|
74
|
-
if (process.env.RAINDROP_CATALOG_API_BASE_URL) {
|
|
75
|
-
baseUrl = process.env.RAINDROP_CATALOG_API_BASE_URL;
|
|
76
|
-
// Prepend missing protocol if missing
|
|
77
|
-
if (!baseUrl.match(/^http(s):\/\//)) {
|
|
78
|
-
baseUrl = `https://${baseUrl}`;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
break;
|
|
82
|
-
default:
|
|
83
|
-
throw new Error(`unable to determine baseUrl for service=${service.typeName}`);
|
|
84
|
-
}
|
|
85
|
-
return {
|
|
86
|
-
interceptor,
|
|
87
|
-
userId,
|
|
88
|
-
organizationId,
|
|
89
|
-
baseUrl,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
// createAuthenticatingClient should be used for instantiating any connect rpc
|
|
93
|
-
// client that needs to authenticate the requests.
|
|
94
|
-
export async function createAuthenticatingClient(service, configDir, rainbowAuth) {
|
|
95
|
-
const { interceptor: authenticate, baseUrl, userId, organizationId, } = await createAuthenticateInterceptor(service, configDir, rainbowAuth);
|
|
96
|
-
const transport = createConnectTransport({
|
|
97
|
-
baseUrl,
|
|
98
|
-
interceptors: [authenticate],
|
|
99
|
-
});
|
|
100
80
|
return {
|
|
101
|
-
|
|
102
|
-
userId,
|
|
103
|
-
organizationId,
|
|
81
|
+
authenticate,
|
|
104
82
|
};
|
|
105
83
|
}
|
|
106
84
|
const configBasename = 'raindrop.json';
|
|
@@ -138,3 +116,35 @@ export async function ensureDirectory(dir) {
|
|
|
138
116
|
}
|
|
139
117
|
}
|
|
140
118
|
}
|
|
119
|
+
export async function catalogService({ rainbowAuth, configDir, baseUrl, }) {
|
|
120
|
+
const { catalogServiceBaseUrl, organizationId, userId } = await selectedOrganization(configDir);
|
|
121
|
+
const { authenticate } = createAuthenticateInterceptor(configDir, rainbowAuth);
|
|
122
|
+
const serviceBaseUrl = baseUrl || catalogServiceBaseUrl;
|
|
123
|
+
return {
|
|
124
|
+
client: createPromiseClient(CatalogService, createConnectTransport({
|
|
125
|
+
baseUrl: serviceBaseUrl,
|
|
126
|
+
interceptors: [authenticate],
|
|
127
|
+
})),
|
|
128
|
+
userId,
|
|
129
|
+
organizationId,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export async function rainbowAuthService(baseUrl) {
|
|
133
|
+
return {
|
|
134
|
+
client: createPromiseClient(RainbowAuthService, createConnectTransport({
|
|
135
|
+
baseUrl,
|
|
136
|
+
})),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export async function rainbowPublicService({ baseUrl, configDir, rainbowAuth, }) {
|
|
140
|
+
const { organizationId, userId } = await selectedOrganization(configDir);
|
|
141
|
+
const { authenticate } = createAuthenticateInterceptor(configDir, rainbowAuth);
|
|
142
|
+
return {
|
|
143
|
+
client: createPromiseClient(RainbowPublicService, createConnectTransport({
|
|
144
|
+
baseUrl,
|
|
145
|
+
interceptors: [authenticate],
|
|
146
|
+
})),
|
|
147
|
+
organizationId,
|
|
148
|
+
userId,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/base-command.ts","../src/build.test.ts","../src/build.ts","../src/codegen.test.ts","../src/codegen.ts","../src/config.test.ts","../src/config.ts","../src/index.test.ts","../src/index.ts","../src/commands/tail.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/build/branch.ts","../src/commands/build/delete.ts","../src/commands/build/deploy.ts","../src/commands/build/find.ts","../src/commands/build/generate.ts","../src/commands/build/init.ts","../src/commands/build/list.ts","../src/commands/build/sandbox.ts","../src/commands/build/start.ts","../src/commands/build/stop.ts","../src/commands/build/token.ts","../src/commands/build/unsandbox.ts","../src/commands/build/upload.ts","../src/commands/build/validate.ts","../src/commands/build/env/get.ts","../src/commands/build/env/set.ts","../src/commands/build/tools/check.ts","../src/commands/build/tools/fmt.ts"],"version":"5.6.2"}
|
|
1
|
+
{"root":["../src/base-command.ts","../src/build.test.ts","../src/build.ts","../src/codegen.test.ts","../src/codegen.ts","../src/config.test.ts","../src/config.ts","../src/index.test.ts","../src/index.ts","../src/commands/tail.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/build/branch.ts","../src/commands/build/delete.ts","../src/commands/build/deploy.ts","../src/commands/build/find.ts","../src/commands/build/generate.ts","../src/commands/build/init.ts","../src/commands/build/list.ts","../src/commands/build/sandbox.ts","../src/commands/build/start.ts","../src/commands/build/status.ts","../src/commands/build/stop.ts","../src/commands/build/token.ts","../src/commands/build/unsandbox.ts","../src/commands/build/upload.ts","../src/commands/build/validate.ts","../src/commands/build/env/get.ts","../src/commands/build/env/set.ts","../src/commands/build/tools/check.ts","../src/commands/build/tools/fmt.ts"],"version":"5.6.2"}
|