instant-cli 1.0.56 → 1.0.57
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/.turbo/turbo-build.log +1 -1
- package/__tests__/auth.test.ts +128 -0
- package/__tests__/config.test.ts +47 -0
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +103 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/commands/auth/client/add.d.ts +1 -1
- package/dist/commands/auth/client/delete.d.ts +1 -1
- package/dist/commands/auth/client/list.d.ts +1 -1
- package/dist/commands/auth/client/update.d.ts +1 -1
- package/dist/commands/auth/email/pull.d.ts +2 -2
- package/dist/commands/auth/email/push.d.ts +1 -1
- package/dist/commands/auth/email/reset.d.ts +1 -1
- package/dist/commands/auth/email/status.d.ts +2 -2
- package/dist/commands/auth/email/verify.d.ts +1 -1
- package/dist/commands/auth/origin/add.d.ts +1 -1
- package/dist/commands/auth/origin/delete.d.ts +1 -1
- package/dist/commands/auth/origin/list.d.ts +1 -1
- package/dist/commands/info.d.ts +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -2
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +9 -16
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/pull.d.ts +1 -1
- package/dist/commands/push.d.ts +1 -1
- package/dist/commands/query.d.ts +1 -1
- package/dist/context/authToken.d.ts +2 -3
- package/dist/context/authToken.d.ts.map +1 -1
- package/dist/context/authToken.js +4 -17
- package/dist/context/authToken.js.map +1 -1
- package/dist/context/currentApp.d.ts +1 -1
- package/dist/layer.d.ts +2 -2
- package/dist/layer.d.ts.map +1 -1
- package/dist/lib/config.d.ts +5 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +37 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/createApp.d.ts +1 -1
- package/dist/lib/email.d.ts +1 -1
- package/dist/lib/handleEnv.d.ts +1 -1
- package/dist/lib/http.d.ts +3 -6
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +3 -36
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/login.d.ts +3 -4
- package/dist/lib/login.d.ts.map +1 -1
- package/dist/lib/login.js +5 -6
- package/dist/lib/login.js.map +1 -1
- package/dist/lib/oauth.d.ts +9 -9
- package/dist/lib/pullPerms.d.ts +1 -1
- package/dist/lib/pullSchema.d.ts +1 -1
- package/dist/lib/pushPerms.d.ts +1 -1
- package/dist/lib/pushSchema.d.ts +1 -1
- package/dist/old.d.ts +1 -1
- package/dist/old.d.ts.map +1 -1
- package/dist/old.js +6 -7
- package/dist/old.js.map +1 -1
- package/dist/util/getAppName.d.ts +1 -1
- package/package.json +10 -4
- package/src/auth/index.ts +125 -0
- package/src/commands/login.ts +2 -2
- package/src/commands/logout.ts +17 -18
- package/src/context/authToken.ts +6 -21
- package/src/lib/config.ts +68 -0
- package/src/lib/http.ts +4 -68
- package/src/lib/login.ts +5 -11
- package/src/old.js +6 -10
- package/dist/util/getAuthPaths.d.ts +0 -5
- package/dist/util/getAuthPaths.d.ts.map +0 -1
- package/dist/util/getAuthPaths.js +0 -10
- package/dist/util/getAuthPaths.js.map +0 -1
- package/src/util/getAuthPaths.ts +0 -12
package/dist/commands/push.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import { Effect } from 'effect';
|
|
|
2
2
|
import { BadArgsError } from '../errors.ts';
|
|
3
3
|
import { pushDef } from '../index.ts';
|
|
4
4
|
import type { OptsFromCommand } from '../index.ts';
|
|
5
|
-
export declare const pushCommand: (arg: string | undefined, opts: OptsFromCommand<typeof pushDef>) => Effect.Effect<undefined, BadArgsError | import("effect/Cause").UnknownException | import("
|
|
5
|
+
export declare const pushCommand: (arg: string | undefined, opts: OptsFromCommand<typeof pushDef>) => Effect.Effect<undefined, BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError | import("effect/ParseResult").ParseError | import("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/HttpBody").HttpBodyError | import("../lib/pushSchema.ts").ReadSchemaFileError | import("../lib/pushSchema.ts").SchemaDiffError | import("../lib/pushSchema.ts").GetSchemaError | import("../lib/pushSchema.ts").SchemaValidationError | import("../lib/pushSchema.ts").WaitForJobsError | import("../lib/pushSchema.ts").CancelSchemaError | import("../lib/pushPerms.ts").NoPermsFileError, import("../context/globalOpts.ts").GlobalOpts | import("../context/authToken.ts").AuthToken | import("../lib/http.ts").InstantHttpAuthed | import("../context/currentApp.ts").CurrentApp>;
|
|
6
6
|
//# sourceMappingURL=push.d.ts.map
|
package/dist/commands/query.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import { queryDef } from '../index.ts';
|
|
|
3
3
|
import type { OptsFromCommand } from '../index.ts';
|
|
4
4
|
import { BadArgsError } from '../errors.ts';
|
|
5
5
|
import { HttpBody } from '@effect/platform';
|
|
6
|
-
export declare const queryCmd: (arg: string, opts: OptsFromCommand<typeof queryDef>) => Effect.Effect<undefined, BadArgsError | import("../lib/ui.ts").UIError | import("effect/Cause").UnknownException | import("../context/projectInfo.ts").ProjectInfoError | import("
|
|
6
|
+
export declare const queryCmd: (arg: string, opts: OptsFromCommand<typeof queryDef>) => Effect.Effect<undefined, BadArgsError | import("../lib/ui.ts").UIError | import("effect/Cause").UnknownException | import("../context/projectInfo.ts").ProjectInfoError | import("effect/ConfigError").ConfigError | import("effect/ParseResult").ParseError | import("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError | import("../context/authToken.ts").NotAuthedError | import("@effect/platform/Error").PlatformError | import("../context/platformApi.ts").PlatformApiError | import("../context/currentApp.ts").CurrentAppContextError | import("../context/currentApp.ts").AppNotFoundError | HttpBody.HttpBodyError, never>;
|
|
7
7
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FileSystem } from '@effect/platform';
|
|
2
1
|
import { Context, Effect, Layer, Schema } from 'effect';
|
|
3
2
|
type AuthTokenSource = 'admin' | 'env' | 'opt' | 'file';
|
|
4
3
|
declare const AuthToken_base: Context.TagClass<AuthToken, "instant-cli/new/context/authToken", {
|
|
@@ -21,10 +20,10 @@ export declare const authTokenGetEffect: (allowAdminToken?: boolean) => Effect.E
|
|
|
21
20
|
} | {
|
|
22
21
|
authToken: string;
|
|
23
22
|
source: "admin";
|
|
24
|
-
}, import("effect/ConfigError").ConfigError | NotAuthedError,
|
|
23
|
+
}, import("../errors.ts").BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError | NotAuthedError, never>;
|
|
25
24
|
export declare const AuthTokenLive: ({ coerce, allowAdminToken, }: {
|
|
26
25
|
coerce: boolean;
|
|
27
26
|
allowAdminToken: boolean;
|
|
28
|
-
}) => Layer.Layer<AuthToken, import("../errors.ts").BadArgsError | import("effect/Cause").UnknownException | import("
|
|
27
|
+
}) => Layer.Layer<AuthToken, import("../errors.ts").BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError | import("effect/ParseResult").ParseError | import("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError | NotAuthedError, import("./globalOpts.ts").GlobalOpts | import("../lib/http.ts").InstantHttp>;
|
|
29
28
|
export {};
|
|
30
29
|
//# sourceMappingURL=authToken.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/context/authToken.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"authToken.d.ts","sourceRoot":"","sources":["../../src/context/authToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,OAAO,EAAE,MAAM,EAAE,KAAK,EAAe,MAAM,EAAE,MAAM,QAAQ,CAAC;AAM7E,KAAK,eAAe,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;;kBAUtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;eACxB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;kBAC3B,CACZ,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,eAAe,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAR5B,qBAAa,SAAU,SAAQ,cAU5B;CAAG;;;;;;AAEN,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;AAEL,eAAO,MAAM,kBAAkB,GAAI,kBAAiB,OAAc;;YAMzC,KAAK,GAAG,KAAK,GAAG,MAAM;;;YAwBpB,OAAO;oJAgB9B,CAAC;AAEL,eAAO,MAAM,aAAa,GAAI,8BAG3B;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B,weAgDE,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { FileSystem } from '@effect/platform';
|
|
2
1
|
import { Config, Context, Effect, Layer, Option, Ref, Schema } from 'effect';
|
|
3
|
-
import
|
|
4
|
-
import { join } from 'node:path';
|
|
2
|
+
import { readAuthToken } from "../auth/index.js";
|
|
5
3
|
import { loginCommand } from "../commands/login.js";
|
|
4
|
+
import { getBaseUrl } from "../lib/config.js";
|
|
6
5
|
import { program } from "../program.js";
|
|
7
6
|
export class AuthToken extends Context.Tag('instant-cli/new/context/authToken')() {
|
|
8
7
|
}
|
|
@@ -32,13 +31,8 @@ export const authTokenGetEffect = (allowAdminToken = true) => Effect.gen(functio
|
|
|
32
31
|
source: 'admin',
|
|
33
32
|
};
|
|
34
33
|
}
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
const file = yield* fs
|
|
38
|
-
.readFileString(authPaths.authConfigFilePath, 'utf8')
|
|
39
|
-
.pipe(
|
|
40
|
-
// will usually fail if file not found, return null instead
|
|
41
|
-
Effect.orElseSucceed(() => null));
|
|
34
|
+
const apiURI = yield* getBaseUrl;
|
|
35
|
+
const file = yield* Effect.tryPromise(() => readAuthToken(apiURI)).pipe(Effect.orElseSucceed(() => null));
|
|
42
36
|
if (file) {
|
|
43
37
|
return {
|
|
44
38
|
authToken: file,
|
|
@@ -76,11 +70,4 @@ export const AuthTokenLive = ({ coerce, allowAdminToken = true, }) => Layer.effe
|
|
|
76
70
|
return yield* e;
|
|
77
71
|
}
|
|
78
72
|
}))));
|
|
79
|
-
const getAuthPaths = Effect.gen(function* () {
|
|
80
|
-
const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(Config.withDefault(false));
|
|
81
|
-
const key = `instantdb-${dev ? 'dev' : 'prod'}`;
|
|
82
|
-
const { config: appConfigDirPath } = envPaths(key);
|
|
83
|
-
const authConfigFilePath = join(appConfigDirPath, 'a');
|
|
84
|
-
return { authConfigFilePath, appConfigDirPath };
|
|
85
|
-
});
|
|
86
73
|
//# sourceMappingURL=authToken.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authToken.js","sourceRoot":"","sources":["../../src/context/authToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"authToken.js","sourceRoot":"","sources":["../../src/context/authToken.ts"],"names":[],"mappings":"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","sourcesContent":["import { Config, Context, Effect, Layer, Option, Ref, Schema } from 'effect';\nimport { readAuthToken } from '../auth/index.ts';\nimport { loginCommand } from '../commands/login.ts';\nimport { getBaseUrl } from '../lib/config.ts';\nimport { program } from '../program.ts';\n\ntype AuthTokenSource = 'admin' | 'env' | 'opt' | 'file';\n\ntype AuthTokenState = {\n authToken: string;\n source: AuthTokenSource;\n};\n\nexport class AuthToken extends Context.Tag('instant-cli/new/context/authToken')<\n AuthToken,\n {\n getAuthToken: Effect.Effect<string>;\n getSource: Effect.Effect<AuthTokenSource>;\n setAuthToken: (\n authToken: string,\n source?: AuthTokenSource,\n ) => Effect.Effect<void>;\n }\n>() {}\n\nexport class NotAuthedError extends Schema.TaggedError<NotAuthedError>(\n 'NotAuthedError',\n)('NotAuthedError', {\n message: Schema.String,\n}) {}\n\nexport const authTokenGetEffect = (allowAdminToken: boolean = true) =>\n Effect.gen(function* () {\n const options = program.opts() as Record<string, any>;\n if (typeof options.token === 'string') {\n return {\n authToken: options.token,\n source: 'opt' as 'env' | 'opt' | 'file',\n };\n }\n\n const env = yield* Config.string('INSTANT_CLI_AUTH_TOKEN').pipe(\n Config.option,\n Config.map(Option.getOrNull),\n );\n\n if (env) {\n return {\n authToken: env,\n source: 'env' as 'env' | 'opt' | 'file',\n };\n }\n\n const secondaryEnv = yield* Config.string('INSTANT_APP_ADMIN_TOKEN').pipe(\n Config.orElse(() => Config.string('INSTANT_ADMIN_TOKEN')),\n Config.option,\n Config.map(Option.getOrNull),\n );\n if (secondaryEnv && allowAdminToken) {\n return {\n authToken: secondaryEnv,\n source: 'admin' as 'admin',\n };\n }\n\n const apiURI = yield* getBaseUrl;\n const file = yield* Effect.tryPromise(() => readAuthToken(apiURI)).pipe(\n Effect.orElseSucceed(() => null),\n );\n if (file) {\n return {\n authToken: file,\n source: 'file' as 'env' | 'opt' | 'file',\n };\n }\n\n return yield* NotAuthedError.make({ message: 'You are not logged in' });\n });\n\nexport const AuthTokenLive = ({\n coerce,\n allowAdminToken = true,\n}: {\n coerce: boolean;\n allowAdminToken: boolean;\n}) =>\n Layer.effect(\n AuthToken,\n authTokenGetEffect(allowAdminToken).pipe(\n Effect.flatMap((tokenResult) =>\n Effect.gen(function* () {\n const authStateRef = yield* Ref.make<AuthTokenState>(tokenResult);\n return {\n getAuthToken: Ref.get(authStateRef).pipe(\n Effect.map((authState) => authState.authToken),\n ),\n getSource: Ref.get(authStateRef).pipe(\n Effect.map((authState) => authState.source),\n ),\n setAuthToken: (authToken: string, source?: AuthTokenSource) =>\n Ref.update(authStateRef, (authState) => ({\n ...authState,\n authToken,\n source: source ?? authState.source,\n })),\n };\n }),\n ),\n Effect.catchTag('NotAuthedError', (e) =>\n Effect.gen(function* () {\n if (coerce) {\n const loginResult = yield* loginCommand({});\n const authStateRef = yield* Ref.make<AuthTokenState>(loginResult);\n return {\n getAuthToken: Ref.get(authStateRef).pipe(\n Effect.map((authState) => authState.authToken),\n ),\n getSource: Ref.get(authStateRef).pipe(\n Effect.map((authState) => authState.source),\n ),\n setAuthToken: (authToken: string, source?: AuthTokenSource) =>\n Ref.update(authStateRef, (authState) => ({\n ...authState,\n authToken,\n source: source ?? authState.source,\n })),\n };\n } else {\n return yield* e;\n }\n }),\n ),\n ),\n );\n"]}
|
|
@@ -33,6 +33,6 @@ export declare const CurrentAppLive: (args: {
|
|
|
33
33
|
title?: string;
|
|
34
34
|
applyEnv?: boolean;
|
|
35
35
|
temp?: boolean;
|
|
36
|
-
}) => Layer.Layer<CurrentApp, BadArgsError | import("../lib/ui.ts").UIError | import("effect/Cause").UnknownException | import("
|
|
36
|
+
}) => Layer.Layer<CurrentApp, BadArgsError | import("../lib/ui.ts").UIError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError | import("effect/ParseResult").ParseError | import("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | import("./platformApi.ts").PlatformApiError | CurrentAppContextError | AppNotFoundError | import("@effect/platform/HttpBody").HttpBodyError, GlobalOpts | import("./projectInfo.ts").ProjectInfo | AuthToken | InstantHttpAuthed | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | PlatformApi>;
|
|
37
37
|
export {};
|
|
38
38
|
//# sourceMappingURL=currentApp.d.ts.map
|
package/dist/layer.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare const BaseLayerLive: Layer.Layer<import("./context/globalOpts.ts"
|
|
|
10
10
|
export declare const AuthLayerLive: ({ allowAdminToken, coerce, }: {
|
|
11
11
|
allowAdminToken: boolean;
|
|
12
12
|
coerce: boolean;
|
|
13
|
-
}) => Layer.Layer<import("./context/globalOpts.ts").GlobalOpts | import("./lib/http.ts").InstantHttp | import("./context/authToken.ts").AuthToken | import("./lib/http.ts").InstantHttpAuthed | PlatformApi | NodeContext.NodeContext, import("./errors.ts").BadArgsError | Cause.UnknownException |
|
|
13
|
+
}) => Layer.Layer<import("./context/globalOpts.ts").GlobalOpts | import("./lib/http.ts").InstantHttp | import("./context/authToken.ts").AuthToken | import("./lib/http.ts").InstantHttpAuthed | PlatformApi | NodeContext.NodeContext, import("./errors.ts").BadArgsError | Cause.UnknownException | import("effect/ConfigError").ConfigError | import("effect/ParseResult").ParseError | InstantHttpError | Cause.TimeoutException | RequestError | import("@effect/platform/HttpClientError").ResponseError | import("./context/authToken.ts").NotAuthedError, never>;
|
|
14
14
|
export declare const WithAppLayer: (args: {
|
|
15
15
|
appId?: string;
|
|
16
16
|
title?: string;
|
|
@@ -21,5 +21,5 @@ export declare const WithAppLayer: (args: {
|
|
|
21
21
|
allowAdminToken?: boolean;
|
|
22
22
|
applyEnv?: boolean;
|
|
23
23
|
temp?: boolean;
|
|
24
|
-
}) => Layer.Layer<import("./context/globalOpts.ts").GlobalOpts | import("./context/projectInfo.ts").ProjectInfo | import("./lib/http.ts").InstantHttp | import("./context/authToken.ts").AuthToken | import("./lib/http.ts").InstantHttpAuthed | PlatformApi | import("./context/currentApp.ts").CurrentApp | NodeContext.NodeContext, import("./errors.ts").BadArgsError | import("./lib/ui.ts").UIError | Cause.UnknownException | import("./context/projectInfo.ts").ProjectInfoError |
|
|
24
|
+
}) => Layer.Layer<import("./context/globalOpts.ts").GlobalOpts | import("./context/projectInfo.ts").ProjectInfo | import("./lib/http.ts").InstantHttp | import("./context/authToken.ts").AuthToken | import("./lib/http.ts").InstantHttpAuthed | PlatformApi | import("./context/currentApp.ts").CurrentApp | NodeContext.NodeContext, import("./errors.ts").BadArgsError | import("./lib/ui.ts").UIError | Cause.UnknownException | import("./context/projectInfo.ts").ProjectInfoError | import("effect/ConfigError").ConfigError | import("effect/ParseResult").ParseError | InstantHttpError | Cause.TimeoutException | RequestError | import("@effect/platform/HttpClientError").ResponseError | import("./context/authToken.ts").NotAuthedError | import("@effect/platform/Error").PlatformError | PlatformApiError | import("./context/currentApp.ts").CurrentAppContextError | import("./context/currentApp.ts").AppNotFoundError | import("@effect/platform/HttpBody").HttpBodyError, never>;
|
|
25
25
|
//# sourceMappingURL=layer.d.ts.map
|
package/dist/layer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../src/layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAC;AAO9D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EACL,4BAA4B,EAE7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAiBhE,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,EACpD,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,OAAO,CAAC,CAAC,CAA2D,CAAC;AAExE,eAAO,MAAM,cAAc,yFAuF1B,CAAC;AAwBF,eAAO,MAAM,aAAa,wPAGzB,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,8BAG3B;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;CACjB,
|
|
1
|
+
{"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../src/layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAC;AAO9D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EACL,4BAA4B,EAE7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAiBhE,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,EACpD,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,OAAO,CAAC,CAAC,CAA2D,CAAC;AAExE,eAAO,MAAM,cAAc,yFAuF1B,CAAC;AAwBF,eAAO,MAAM,aAAa,wPAGzB,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,8BAG3B;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;CACjB,siBAUE,CAAC;AAEJ,eAAO,MAAM,YAAY,GAAI,MAAM;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,OAAO,4BAA4B,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,o8BAwBE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { BadArgsError } from '../errors.ts';
|
|
3
|
+
export declare const getBaseUrl: Effect.Effect<string, BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError, never>;
|
|
4
|
+
export declare const getDashUrl: Effect.Effect<string, BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError, never>;
|
|
5
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAkB,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAY5C,eAAO,MAAM,UAAU,iIA0BrB,CAAC;AAEH,eAAO,MAAM,UAAU,iIA0BrB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Config, Effect, Option, Schema } from 'effect';
|
|
2
|
+
import { BadArgsError } from "../errors.js";
|
|
3
|
+
import { readInstantConfigFile } from "../util/instantConfig.js";
|
|
4
|
+
const HttpUrl = Schema.URL.pipe(Schema.filter((url) => url.protocol === 'http:' ||
|
|
5
|
+
url.protocol === 'https:' ||
|
|
6
|
+
'Expected an HTTP(S) URL'));
|
|
7
|
+
export const getBaseUrl = Effect.gen(function* () {
|
|
8
|
+
const setEnv = yield* Config.string('INSTANT_CLI_API_URI').pipe(Config.option);
|
|
9
|
+
const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(Config.withDefault(false));
|
|
10
|
+
if (Option.isSome(setEnv)) {
|
|
11
|
+
return setEnv.value;
|
|
12
|
+
}
|
|
13
|
+
const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);
|
|
14
|
+
if (instantConfig?.apiURI !== undefined) {
|
|
15
|
+
yield* Schema.decodeUnknown(HttpUrl)(instantConfig.apiURI).pipe(Effect.mapError(() => BadArgsError.make({
|
|
16
|
+
message: 'Invalid apiURI in instant.config.ts. Expected a valid HTTP(S) URL.',
|
|
17
|
+
})));
|
|
18
|
+
return instantConfig.apiURI;
|
|
19
|
+
}
|
|
20
|
+
return dev ? 'http://localhost:8888' : 'https://api.instantdb.com';
|
|
21
|
+
});
|
|
22
|
+
export const getDashUrl = Effect.gen(function* () {
|
|
23
|
+
const setEnv = yield* Config.string('INSTANT_CLI_DASH_URI').pipe(Config.option);
|
|
24
|
+
const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(Config.withDefault(false));
|
|
25
|
+
if (Option.isSome(setEnv)) {
|
|
26
|
+
return setEnv.value;
|
|
27
|
+
}
|
|
28
|
+
const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);
|
|
29
|
+
if (instantConfig?.dashURI !== undefined) {
|
|
30
|
+
yield* Schema.decodeUnknown(HttpUrl)(instantConfig.dashURI).pipe(Effect.mapError(() => BadArgsError.make({
|
|
31
|
+
message: 'Invalid dashURI in instant.config.ts. Expected a valid HTTP(S) URL.',
|
|
32
|
+
})));
|
|
33
|
+
return instantConfig.dashURI;
|
|
34
|
+
}
|
|
35
|
+
return dev ? 'http://localhost:3000' : 'https://instantdb.com';
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7B,MAAM,CAAC,MAAM,CACX,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,QAAQ,KAAK,OAAO;IACxB,GAAG,CAAC,QAAQ,KAAK,QAAQ;IACzB,yBAAyB,CAC5B,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,MAAM,CACd,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAC1B,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACtE,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CACnB,YAAY,CAAC,IAAI,CAAC;YAChB,OAAO,EACL,oEAAoE;SACvE,CAAC,CACH,CACF,CAAC;QACF,OAAO,aAAa,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,2BAA2B,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,MAAM,CACd,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAC1B,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACtE,IAAI,aAAa,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACzC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CACnB,YAAY,CAAC,IAAI,CAAC;YAChB,OAAO,EACL,qEAAqE;SACxE,CAAC,CACH,CACF,CAAC;QACF,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACjE,CAAC,CAAC,CAAC","sourcesContent":["import { Config, Effect, Option, Schema } from 'effect';\nimport { BadArgsError } from '../errors.ts';\nimport { readInstantConfigFile } from '../util/instantConfig.ts';\n\nconst HttpUrl = Schema.URL.pipe(\n Schema.filter(\n (url) =>\n url.protocol === 'http:' ||\n url.protocol === 'https:' ||\n 'Expected an HTTP(S) URL',\n ),\n);\n\nexport const getBaseUrl = Effect.gen(function* () {\n const setEnv = yield* Config.string('INSTANT_CLI_API_URI').pipe(\n Config.option,\n );\n const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(\n Config.withDefault(false),\n );\n\n if (Option.isSome(setEnv)) {\n return setEnv.value;\n }\n\n const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);\n if (instantConfig?.apiURI !== undefined) {\n yield* Schema.decodeUnknown(HttpUrl)(instantConfig.apiURI).pipe(\n Effect.mapError(() =>\n BadArgsError.make({\n message:\n 'Invalid apiURI in instant.config.ts. Expected a valid HTTP(S) URL.',\n }),\n ),\n );\n return instantConfig.apiURI;\n }\n\n return dev ? 'http://localhost:8888' : 'https://api.instantdb.com';\n});\n\nexport const getDashUrl = Effect.gen(function* () {\n const setEnv = yield* Config.string('INSTANT_CLI_DASH_URI').pipe(\n Config.option,\n );\n const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(\n Config.withDefault(false),\n );\n\n if (Option.isSome(setEnv)) {\n return setEnv.value;\n }\n\n const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);\n if (instantConfig?.dashURI !== undefined) {\n yield* Schema.decodeUnknown(HttpUrl)(instantConfig.dashURI).pipe(\n Effect.mapError(() =>\n BadArgsError.make({\n message:\n 'Invalid dashURI in instant.config.ts. Expected a valid HTTP(S) URL.',\n }),\n ),\n );\n return instantConfig.dashURI;\n }\n\n return dev ? 'http://localhost:3000' : 'https://instantdb.com';\n});\n"]}
|
package/dist/lib/createApp.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ export declare class CreateAppError extends CreateAppError_base<{
|
|
|
7
7
|
message: string;
|
|
8
8
|
}> {
|
|
9
9
|
}
|
|
10
|
-
export declare const createApp: (title: string, orgId?: string | undefined) => Effect.Effect<any, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
10
|
+
export declare const createApp: (title: string, orgId?: string | undefined) => Effect.Effect<any, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError | CreateAppError, InstantHttpAuthed>;
|
|
11
11
|
export {};
|
|
12
12
|
//# sourceMappingURL=createApp.d.ts.map
|
package/dist/lib/email.d.ts
CHANGED
|
@@ -42,6 +42,6 @@ export declare const getVerification: Effect.Effect<{
|
|
|
42
42
|
readonly DKIMTextValue: string;
|
|
43
43
|
readonly DKIMPendingHost: string;
|
|
44
44
|
} | null | undefined;
|
|
45
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
45
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
46
46
|
export {};
|
|
47
47
|
//# sourceMappingURL=email.d.ts.map
|
package/dist/lib/handleEnv.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import type { CurrentAppInfo } from '../context/currentApp.ts';
|
|
|
3
3
|
import { ProjectInfo } from '../context/projectInfo.ts';
|
|
4
4
|
import { GlobalOpts } from '../context/globalOpts.ts';
|
|
5
5
|
import { FileSystem, Path } from '@effect/platform';
|
|
6
|
-
export declare const handleEnv: (app: CurrentAppInfo) => Effect.Effect<void, import("../errors.ts").BadArgsError | import("effect/Cause").UnknownException | import("
|
|
6
|
+
export declare const handleEnv: (app: CurrentAppInfo) => Effect.Effect<void, import("../errors.ts").BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError | import("@effect/platform/Error").PlatformError, GlobalOpts | ProjectInfo | FileSystem.FileSystem | Path.Path>;
|
|
7
7
|
//# sourceMappingURL=handleEnv.d.ts.map
|
package/dist/lib/http.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { HttpClient } from '@effect/platform';
|
|
2
|
-
import { Context,
|
|
2
|
+
import { Context, Layer, Schema } from 'effect';
|
|
3
3
|
import { AuthToken } from '../context/authToken.ts';
|
|
4
4
|
import { TimeoutException } from 'effect/Cause';
|
|
5
5
|
import { RequestError } from '@effect/platform/HttpClientError';
|
|
6
|
-
|
|
6
|
+
export { getBaseUrl, getDashUrl } from './config.ts';
|
|
7
7
|
declare const InstantHttp_base: Context.TagClass<InstantHttp, "instant-cli/new/lib/http/InstantHttp", HttpClient.HttpClient.With<InstantHttpError | TimeoutException | RequestError, never>>;
|
|
8
8
|
export declare class InstantHttp extends InstantHttp_base {
|
|
9
9
|
}
|
|
@@ -25,9 +25,6 @@ declare const InstantTypicalHttpErrorResponse_base: Schema.Struct<{
|
|
|
25
25
|
}>;
|
|
26
26
|
declare class InstantTypicalHttpErrorResponse extends InstantTypicalHttpErrorResponse_base {
|
|
27
27
|
}
|
|
28
|
-
export declare const InstantHttpLive: Layer.Layer<InstantHttp, BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError, HttpClient.HttpClient>;
|
|
28
|
+
export declare const InstantHttpLive: Layer.Layer<InstantHttp, import("../errors.ts").BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError, HttpClient.HttpClient>;
|
|
29
29
|
export declare const InstantHttpAuthedLive: Layer.Layer<InstantHttpAuthed, never, InstantHttp | AuthToken>;
|
|
30
|
-
export declare const getBaseUrl: Effect.Effect<string, BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError, never>;
|
|
31
|
-
export declare const getDashUrl: Effect.Effect<string, BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError, never>;
|
|
32
|
-
export {};
|
|
33
30
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/lib/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AAEjE,OAAO,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAgB,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;;AAErD,qBAAa,WAAY,SAAQ,gBAK9B;CAAG;;AAEN,qBAAa,iBAAkB,SAAQ,sBAKpC;CAAG;;;;AAEN,qBAAa,gBAAiB,SAAQ,sBACpC;IACE,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,+BAA+B,CAAC,IAAI,CAChD;CAAG;AAGJ,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,MAEvC,QAAQ,UAAU,CAAC,UAAU,CAAC,IAAI,CAChC,gBAAgB,GAAG,gBAAgB,GAAG,YAAY,CACnD,0FAOJ,CAAC;;;;;;AAEF,cAAM,+BAAgC,SAAQ,oCAM5C;CAAG;AAEL,eAAO,MAAM,eAAe,2KAwD3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,gEAiBjC,CAAC"}
|
package/dist/lib/http.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { HttpClient, HttpClientRequest } from '@effect/platform';
|
|
2
2
|
import { version } from '@instantdb/version';
|
|
3
|
-
import {
|
|
3
|
+
import { Context, Data, Effect, Layer, Schema } from 'effect';
|
|
4
4
|
import { AuthToken } from "../context/authToken.js";
|
|
5
5
|
import { TimeoutException } from 'effect/Cause';
|
|
6
6
|
import { RequestError } from '@effect/platform/HttpClientError';
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import { getBaseUrl } from "./config.js";
|
|
8
|
+
export { getBaseUrl, getDashUrl } from "./config.js";
|
|
9
9
|
export class InstantHttp extends Context.Tag('instant-cli/new/lib/http/InstantHttp')() {
|
|
10
10
|
}
|
|
11
11
|
export class InstantHttpAuthed extends Context.Tag('instant-cli/new/lib/http/InstantHttpAuthed')() {
|
|
@@ -22,9 +22,6 @@ class InstantTypicalHttpErrorResponse extends Schema.Struct({
|
|
|
22
22
|
hint: Schema.Record({ key: Schema.String, value: Schema.Any }).pipe(Schema.optional),
|
|
23
23
|
}) {
|
|
24
24
|
}
|
|
25
|
-
const HttpUrl = Schema.URL.pipe(Schema.filter((url) => url.protocol === 'http:' ||
|
|
26
|
-
url.protocol === 'https:' ||
|
|
27
|
-
'Expected an HTTP(S) URL'));
|
|
28
25
|
export const InstantHttpLive = Layer.effect(InstantHttp, Effect.gen(function* () {
|
|
29
26
|
const client = yield* HttpClient.HttpClient;
|
|
30
27
|
const baseUrl = yield* getBaseUrl;
|
|
@@ -55,34 +52,4 @@ export const InstantHttpAuthedLive = Layer.effect(InstantHttpAuthed, Effect.gen(
|
|
|
55
52
|
const authToken = yield* AuthToken;
|
|
56
53
|
return http.pipe(HttpClient.mapRequestEffect((r) => authToken.getAuthToken.pipe(Effect.map((token) => r.pipe(HttpClientRequest.setHeader('Authorization', `Bearer ${token}`))))));
|
|
57
54
|
}));
|
|
58
|
-
export const getBaseUrl = Effect.gen(function* () {
|
|
59
|
-
const setEnv = yield* Config.string('INSTANT_CLI_API_URI').pipe(Config.option);
|
|
60
|
-
const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(Config.withDefault(false));
|
|
61
|
-
if (Option.isSome(setEnv)) {
|
|
62
|
-
return setEnv.value;
|
|
63
|
-
}
|
|
64
|
-
const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);
|
|
65
|
-
if (instantConfig?.apiURI !== undefined) {
|
|
66
|
-
yield* Schema.decodeUnknown(HttpUrl)(instantConfig.apiURI).pipe(Effect.mapError(() => BadArgsError.make({
|
|
67
|
-
message: 'Invalid apiURI in instant.config.ts. Expected a valid HTTP(S) URL.',
|
|
68
|
-
})));
|
|
69
|
-
return instantConfig.apiURI;
|
|
70
|
-
}
|
|
71
|
-
return dev ? 'http://localhost:8888' : 'https://api.instantdb.com';
|
|
72
|
-
});
|
|
73
|
-
export const getDashUrl = Effect.gen(function* () {
|
|
74
|
-
const setEnv = yield* Config.string('INSTANT_CLI_DASH_URI').pipe(Config.option);
|
|
75
|
-
const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(Config.withDefault(false));
|
|
76
|
-
if (Option.isSome(setEnv)) {
|
|
77
|
-
return setEnv.value;
|
|
78
|
-
}
|
|
79
|
-
const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);
|
|
80
|
-
if (instantConfig?.dashURI !== undefined) {
|
|
81
|
-
yield* Schema.decodeUnknown(HttpUrl)(instantConfig.dashURI).pipe(Effect.mapError(() => BadArgsError.make({
|
|
82
|
-
message: 'Invalid dashURI in instant.config.ts. Expected a valid HTTP(S) URL.',
|
|
83
|
-
})));
|
|
84
|
-
return instantConfig.dashURI;
|
|
85
|
-
}
|
|
86
|
-
return dev ? 'http://localhost:3000' : 'https://instantdb.com';
|
|
87
|
-
});
|
|
88
55
|
//# sourceMappingURL=http.js.map
|
package/dist/lib/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,GAAG,CAC1C,sCAAsC,CACvC,EAGE;CAAG;AAEN,MAAM,OAAO,iBAAkB,SAAQ,OAAO,CAAC,GAAG,CAChD,4CAA4C,CAC7C,EAGE;CAAG;AAEN,MAAM,OAAO,gBAAiB,SAAQ,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAIxE;CAAG;AAEJ,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE;IAC7C,OAAO,CACL,MAEC,EACD,EAAE,CACF,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAClE,CACF,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,+BAAgC,SAAQ,MAAM,CAAC,MAAM,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CACjE,MAAM,CAAC,QAAQ,CAChB;CACF,CAAC;CAAG;AAEL,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7B,MAAM,CAAC,MAAM,CACX,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,QAAQ,KAAK,OAAO;IACxB,GAAG,CAAC,QAAQ,KAAK,QAAQ;IACzB,yBAAyB,CAC5B,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CACzC,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;IAClC,OAAO,MAAM,CAAC,IAAI,CAChB,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,IAAI,CACJ,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,EACrC,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAC9D,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAC1D,CACF,EACD,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EACxE,UAAU,CAAC,cAAc,EAAE,iCAAiC;IAC5D,2DAA2D;IAC3D,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,CAAC,CAAC,IAAI,CACJ,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,YAAY,EAAE,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CACrD,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,aAAa,CAAC,+BAA+B,CAAC,CACtD,EACD,MAAM,CAAC,QAAQ,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,gBAAgB,CAAC;YACnB,OAAO,EACL,0BAA0B,GAAG,YAAY,CAAC,YAAY;YACxD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,YAAY,EAAE,YAAY,CAAC,YAAY;SACxC,CAAC,CACL,CACF,CAAC;QAEF,mDAAmD;QACnD,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,IACE,QAAQ,CAAC,IAAI,EAAE,OAAO;YACtB,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,EACzC,CAAC;YACD,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAClC,CAAC;QAED,OAAO,KAAK,CAAC,CAAC,IAAI,gBAAgB,CAAC;YACjC,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,YAAY,CAAC,YAAY;YACvC,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,cAAc;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CACF,CACF,CACF,CAAC;AACJ,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAC/C,iBAAiB,EACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;IACnC,OAAO,IAAI,CAAC,IAAI,CACd,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,SAAS,CAAC,YAAY,CAAC,IAAI,CACzB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,CAAC,CAAC,IAAI,CACJ,iBAAiB,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAChE,CACF,CACF,CACF,CACF,CAAC;AACJ,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,MAAM,CACd,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAC1B,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACtE,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CACnB,YAAY,CAAC,IAAI,CAAC;YAChB,OAAO,EACL,oEAAoE;SACvE,CAAC,CACH,CACF,CAAC;QACF,OAAO,aAAa,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,2BAA2B,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,MAAM,CACd,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAC1B,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACtE,IAAI,aAAa,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACzC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CACnB,YAAY,CAAC,IAAI,CAAC;YAChB,OAAO,EACL,qEAAqE;SACxE,CAAC,CACH,CACF,CAAC;QACF,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACjE,CAAC,CAAC,CAAC","sourcesContent":["import { HttpClient, HttpClientRequest } from '@effect/platform';\nimport { version } from '@instantdb/version';\nimport { Config, Context, Data, Effect, Layer, Option, Schema } from 'effect';\nimport { AuthToken } from '../context/authToken.ts';\nimport { TimeoutException } from 'effect/Cause';\nimport { RequestError } from '@effect/platform/HttpClientError';\nimport { readInstantConfigFile } from '../util/instantConfig.ts';\nimport { BadArgsError } from '../errors.ts';\n\nexport class InstantHttp extends Context.Tag(\n 'instant-cli/new/lib/http/InstantHttp',\n)<\n InstantHttp,\n HttpClient.HttpClient.With<InstantHttpError | TimeoutException | RequestError>\n>() {}\n\nexport class InstantHttpAuthed extends Context.Tag(\n 'instant-cli/new/lib/http/InstantHttpAuthed',\n)<\n InstantHttpAuthed,\n HttpClient.HttpClient.With<InstantHttpError | TimeoutException | RequestError>\n>() {}\n\nexport class InstantHttpError extends Data.TaggedError('InstantHttpError')<\n {\n methodAndUrl: string;\n } & typeof InstantTypicalHttpErrorResponse.Type\n> {}\n\n// Pipe on an http client to set the command header\nexport const withCommand = (command: string) => {\n return (\n client: HttpClient.HttpClient.With<\n InstantHttpError | TimeoutException | RequestError\n >,\n ) =>\n client.pipe(\n HttpClient.mapRequest((r) =>\n r.pipe(HttpClientRequest.setHeader(`X-Instant-Command`, command)),\n ),\n );\n};\n\nclass InstantTypicalHttpErrorResponse extends Schema.Struct({\n message: Schema.String,\n type: Schema.String.pipe(Schema.optional),\n hint: Schema.Record({ key: Schema.String, value: Schema.Any }).pipe(\n Schema.optional,\n ),\n}) {}\n\nconst HttpUrl = Schema.URL.pipe(\n Schema.filter(\n (url) =>\n url.protocol === 'http:' ||\n url.protocol === 'https:' ||\n 'Expected an HTTP(S) URL',\n ),\n);\n\nexport const InstantHttpLive = Layer.effect(\n InstantHttp,\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient;\n const baseUrl = yield* getBaseUrl;\n return client.pipe(\n HttpClient.mapRequest((r) =>\n r.pipe(\n HttpClientRequest.prependUrl(baseUrl),\n HttpClientRequest.setHeader('X-Instant-Source', 'instant-cli'),\n HttpClientRequest.setHeader('X-Instant-Version', version),\n ),\n ),\n HttpClient.transformResponse((r) => r.pipe(Effect.timeout('5 minutes'))),\n HttpClient.filterStatusOk, // makes non 2xx http codes error\n // parses the non 2xx errors into known instant error shape\n HttpClient.transformResponse((r) =>\n r.pipe(\n Effect.catchTag('ResponseError', (requestError) =>\n Effect.gen(function* () {\n const jsonBody = yield* requestError.response.json.pipe(\n Effect.andThen(\n Schema.decodeUnknown(InstantTypicalHttpErrorResponse),\n ),\n Effect.mapError(\n (e) =>\n new InstantHttpError({\n message:\n 'Error making request to ' + requestError.methodAndUrl,\n type: e._tag,\n methodAndUrl: requestError.methodAndUrl,\n }),\n ),\n );\n\n // The hint.message is usually better error message\n let message = jsonBody.message;\n if (\n jsonBody.hint?.message &&\n typeof jsonBody.hint.message === 'string'\n ) {\n message = jsonBody.hint.message;\n }\n\n return yield* new InstantHttpError({\n message: message,\n methodAndUrl: requestError.methodAndUrl,\n hint: jsonBody.hint,\n type: jsonBody.type || 'Unknown type',\n });\n }),\n ),\n ),\n ),\n );\n }),\n);\n\nexport const InstantHttpAuthedLive = Layer.effect(\n InstantHttpAuthed,\n Effect.gen(function* () {\n const http = yield* InstantHttp;\n const authToken = yield* AuthToken;\n return http.pipe(\n HttpClient.mapRequestEffect((r) =>\n authToken.getAuthToken.pipe(\n Effect.map((token) =>\n r.pipe(\n HttpClientRequest.setHeader('Authorization', `Bearer ${token}`),\n ),\n ),\n ),\n ),\n );\n }),\n);\n\nexport const getBaseUrl = Effect.gen(function* () {\n const setEnv = yield* Config.string('INSTANT_CLI_API_URI').pipe(\n Config.option,\n );\n const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(\n Config.withDefault(false),\n );\n\n if (Option.isSome(setEnv)) {\n return setEnv.value;\n }\n\n const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);\n if (instantConfig?.apiURI !== undefined) {\n yield* Schema.decodeUnknown(HttpUrl)(instantConfig.apiURI).pipe(\n Effect.mapError(() =>\n BadArgsError.make({\n message:\n 'Invalid apiURI in instant.config.ts. Expected a valid HTTP(S) URL.',\n }),\n ),\n );\n return instantConfig.apiURI;\n }\n\n return dev ? 'http://localhost:8888' : 'https://api.instantdb.com';\n});\n\nexport const getDashUrl = Effect.gen(function* () {\n const setEnv = yield* Config.string('INSTANT_CLI_DASH_URI').pipe(\n Config.option,\n );\n const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(\n Config.withDefault(false),\n );\n\n if (Option.isSome(setEnv)) {\n return setEnv.value;\n }\n\n const instantConfig = yield* Effect.tryPromise(readInstantConfigFile);\n if (instantConfig?.dashURI !== undefined) {\n yield* Schema.decodeUnknown(HttpUrl)(instantConfig.dashURI).pipe(\n Effect.mapError(() =>\n BadArgsError.make({\n message:\n 'Invalid dashURI in instant.config.ts. Expected a valid HTTP(S) URL.',\n }),\n ),\n );\n return instantConfig.dashURI;\n }\n\n return dev ? 'http://localhost:3000' : 'https://instantdb.com';\n});\n"]}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpClient, HttpClientRequest } from '@effect/platform';\nimport { version } from '@instantdb/version';\nimport { Context, Data, Effect, Layer, Schema } from 'effect';\nimport { AuthToken } from '../context/authToken.ts';\nimport { TimeoutException } from 'effect/Cause';\nimport { RequestError } from '@effect/platform/HttpClientError';\nimport { getBaseUrl } from './config.ts';\n\nexport { getBaseUrl, getDashUrl } from './config.ts';\n\nexport class InstantHttp extends Context.Tag(\n 'instant-cli/new/lib/http/InstantHttp',\n)<\n InstantHttp,\n HttpClient.HttpClient.With<InstantHttpError | TimeoutException | RequestError>\n>() {}\n\nexport class InstantHttpAuthed extends Context.Tag(\n 'instant-cli/new/lib/http/InstantHttpAuthed',\n)<\n InstantHttpAuthed,\n HttpClient.HttpClient.With<InstantHttpError | TimeoutException | RequestError>\n>() {}\n\nexport class InstantHttpError extends Data.TaggedError('InstantHttpError')<\n {\n methodAndUrl: string;\n } & typeof InstantTypicalHttpErrorResponse.Type\n> {}\n\n// Pipe on an http client to set the command header\nexport const withCommand = (command: string) => {\n return (\n client: HttpClient.HttpClient.With<\n InstantHttpError | TimeoutException | RequestError\n >,\n ) =>\n client.pipe(\n HttpClient.mapRequest((r) =>\n r.pipe(HttpClientRequest.setHeader(`X-Instant-Command`, command)),\n ),\n );\n};\n\nclass InstantTypicalHttpErrorResponse extends Schema.Struct({\n message: Schema.String,\n type: Schema.String.pipe(Schema.optional),\n hint: Schema.Record({ key: Schema.String, value: Schema.Any }).pipe(\n Schema.optional,\n ),\n}) {}\n\nexport const InstantHttpLive = Layer.effect(\n InstantHttp,\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient;\n const baseUrl = yield* getBaseUrl;\n return client.pipe(\n HttpClient.mapRequest((r) =>\n r.pipe(\n HttpClientRequest.prependUrl(baseUrl),\n HttpClientRequest.setHeader('X-Instant-Source', 'instant-cli'),\n HttpClientRequest.setHeader('X-Instant-Version', version),\n ),\n ),\n HttpClient.transformResponse((r) => r.pipe(Effect.timeout('5 minutes'))),\n HttpClient.filterStatusOk, // makes non 2xx http codes error\n // parses the non 2xx errors into known instant error shape\n HttpClient.transformResponse((r) =>\n r.pipe(\n Effect.catchTag('ResponseError', (requestError) =>\n Effect.gen(function* () {\n const jsonBody = yield* requestError.response.json.pipe(\n Effect.andThen(\n Schema.decodeUnknown(InstantTypicalHttpErrorResponse),\n ),\n Effect.mapError(\n (e) =>\n new InstantHttpError({\n message:\n 'Error making request to ' + requestError.methodAndUrl,\n type: e._tag,\n methodAndUrl: requestError.methodAndUrl,\n }),\n ),\n );\n\n // The hint.message is usually better error message\n let message = jsonBody.message;\n if (\n jsonBody.hint?.message &&\n typeof jsonBody.hint.message === 'string'\n ) {\n message = jsonBody.hint.message;\n }\n\n return yield* new InstantHttpError({\n message: message,\n methodAndUrl: requestError.methodAndUrl,\n hint: jsonBody.hint,\n type: jsonBody.type || 'Unknown type',\n });\n }),\n ),\n ),\n ),\n );\n }),\n);\n\nexport const InstantHttpAuthedLive = Layer.effect(\n InstantHttpAuthed,\n Effect.gen(function* () {\n const http = yield* InstantHttp;\n const authToken = yield* AuthToken;\n return http.pipe(\n HttpClient.mapRequestEffect((r) =>\n authToken.getAuthToken.pipe(\n Effect.map((token) =>\n r.pipe(\n HttpClientRequest.setHeader('Authorization', `Bearer ${token}`),\n ),\n ),\n ),\n ),\n );\n }),\n);\n"]}
|
package/dist/lib/login.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Effect } from 'effect';
|
|
2
2
|
import { InstantHttp } from './http.ts';
|
|
3
|
-
import { FileSystem } from '@effect/platform';
|
|
4
3
|
export declare const getLoginTicketAndSecret: Effect.Effect<{
|
|
5
4
|
readonly secret: string;
|
|
6
5
|
readonly ticket: string;
|
|
7
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
6
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttp>;
|
|
8
7
|
export declare const waitForAuthToken: (secret: string) => Effect.Effect<{
|
|
9
8
|
readonly token: string;
|
|
10
9
|
readonly email: string;
|
|
11
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
12
|
-
export declare const saveConfigAuthToken: (token: string) => Effect.Effect<void, import("
|
|
10
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttp>;
|
|
11
|
+
export declare const saveConfigAuthToken: (token: string) => Effect.Effect<void, import("../errors.ts").BadArgsError | import("effect/Cause").UnknownException | import("effect/ConfigError").ConfigError, never>;
|
|
13
12
|
//# sourceMappingURL=login.d.ts.map
|
package/dist/lib/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/lib/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAe,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/lib/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAe,MAAM,WAAW,CAAC;AAerD,eAAO,MAAM,uBAAuB;;;8PAOlC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;8PAiB3B,CAAC;AAEH,eAAO,MAAM,mBAAmB,yKAG9B,CAAC"}
|
package/dist/lib/login.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Effect, Schedule, Schema } from 'effect';
|
|
2
2
|
import { InstantHttp, withCommand } from "./http.js";
|
|
3
|
-
import { HttpClientRequest, HttpClientResponse
|
|
4
|
-
import {
|
|
3
|
+
import { HttpClientRequest, HttpClientResponse } from '@effect/platform';
|
|
4
|
+
import { writeAuthToken } from "../auth/index.js";
|
|
5
|
+
import { getBaseUrl } from "./config.js";
|
|
5
6
|
const LoginInfo = Schema.Struct({
|
|
6
7
|
secret: Schema.String,
|
|
7
8
|
ticket: Schema.String,
|
|
@@ -31,9 +32,7 @@ export const waitForAuthToken = Effect.fn(function* (secret) {
|
|
|
31
32
|
return res;
|
|
32
33
|
});
|
|
33
34
|
export const saveConfigAuthToken = Effect.fn(function* (token) {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
yield* fs.makeDirectory(authPaths.appConfigDirPath, { recursive: true });
|
|
37
|
-
yield* fs.writeFileString(authPaths.authConfigFilePath, token);
|
|
35
|
+
const apiURI = yield* getBaseUrl;
|
|
36
|
+
yield* Effect.tryPromise(() => writeAuthToken(apiURI, token));
|
|
38
37
|
});
|
|
39
38
|
//# sourceMappingURL=login.js.map
|
package/dist/lib/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/lib/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/lib/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAChC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI;SACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC1B,IAAI,CAAC,yBAAyB,CAAC;SAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAc;IACjE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CACpE,iBAAiB,CAAC,cAAc,CAAC;QAC/B,MAAM;KACP,CAAC,EACF,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAC9D,MAAM,CAAC,KAAK,CAAC;QACX,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,CAAC,CAAC,IAAI,KAAK,kBAAkB;YAC7B,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,kBAAkB;QACrD,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;QACrC,KAAK,EAAE,GAAG;KACX,CAAC,CACH,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAa;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;IACjC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC","sourcesContent":["import { Effect, Schedule, Schema } from 'effect';\nimport { InstantHttp, withCommand } from './http.ts';\nimport { HttpClientRequest, HttpClientResponse } from '@effect/platform';\nimport { writeAuthToken } from '../auth/index.ts';\nimport { getBaseUrl } from './config.ts';\n\nconst LoginInfo = Schema.Struct({\n secret: Schema.String,\n ticket: Schema.String,\n});\n\nconst TokenResult = Schema.Struct({\n token: Schema.String,\n email: Schema.String,\n});\n\nexport const getLoginTicketAndSecret = Effect.gen(function* () {\n const http = yield* InstantHttp;\n const res = yield* http\n .pipe(withCommand('login'))\n .post('/dash/cli/auth/register')\n .pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(LoginInfo)));\n return res;\n});\n\nexport const waitForAuthToken = Effect.fn(function* (secret: string) {\n const http = (yield* InstantHttp).pipe(withCommand('login'));\n const res = yield* HttpClientRequest.post('/dash/cli/auth/check').pipe(\n HttpClientRequest.bodyUnsafeJson({\n secret,\n }),\n http.execute,\n Effect.flatMap(HttpClientResponse.schemaBodyJson(TokenResult)),\n Effect.retry({\n while: (e) =>\n e._tag === 'InstantHttpError' &&\n e.hint?.errors?.at(0)?.issue === 'waiting-for-user',\n schedule: Schedule.fixed('1 seconds'),\n times: 120,\n }),\n );\n return res;\n});\n\nexport const saveConfigAuthToken = Effect.fn(function* (token: string) {\n const apiURI = yield* getBaseUrl;\n yield* Effect.tryPromise(() => writeAuthToken(apiURI, token));\n});\n"]}
|
package/dist/lib/oauth.d.ts
CHANGED
|
@@ -131,7 +131,7 @@ export declare const getAppsAuth: () => Effect.Effect<{
|
|
|
131
131
|
}) | null | undefined;
|
|
132
132
|
readonly use_shared_credentials?: boolean | null | undefined;
|
|
133
133
|
}[] | null | undefined;
|
|
134
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
134
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
135
135
|
export declare const addOAuthProvider: (params: {
|
|
136
136
|
appId?: string;
|
|
137
137
|
providerName: string;
|
|
@@ -140,7 +140,7 @@ export declare const addOAuthProvider: (params: {
|
|
|
140
140
|
readonly id: string;
|
|
141
141
|
readonly provider_name: string;
|
|
142
142
|
};
|
|
143
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
143
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
144
144
|
export declare const addOAuthClient: (params: {
|
|
145
145
|
appId?: string;
|
|
146
146
|
providerId: string;
|
|
@@ -170,7 +170,7 @@ export declare const addOAuthClient: (params: {
|
|
|
170
170
|
}) | null | undefined;
|
|
171
171
|
readonly use_shared_credentials?: boolean | null | undefined;
|
|
172
172
|
};
|
|
173
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
173
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
174
174
|
export declare const updateOAuthClient: (params: {
|
|
175
175
|
oauthClientId: string;
|
|
176
176
|
clientId?: string | null;
|
|
@@ -196,7 +196,7 @@ export declare const updateOAuthClient: (params: {
|
|
|
196
196
|
}) | null | undefined;
|
|
197
197
|
readonly use_shared_credentials?: boolean | null | undefined;
|
|
198
198
|
};
|
|
199
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
199
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
200
200
|
export declare const promptForRedirectURI: (existingValue?: string | undefined) => Effect.Effect<string | undefined, BadArgsError, never>;
|
|
201
201
|
export declare const getOrCreateProvider: (type: "google" | "github" | "apple" | "linkedin" | "clerk" | "firebase") => Effect.Effect<{
|
|
202
202
|
auth: {
|
|
@@ -230,7 +230,7 @@ export declare const getOrCreateProvider: (type: "google" | "github" | "apple" |
|
|
|
230
230
|
readonly id: string;
|
|
231
231
|
readonly provider_name: string;
|
|
232
232
|
};
|
|
233
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
233
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
234
234
|
export declare const findName: (prefix: string, used: Set<string>) => string;
|
|
235
235
|
export declare const getClientNameAndProvider: (providerType: "google" | "github" | "apple" | "linkedin" | "clerk" | "firebase", opts: Record<string, unknown>) => Effect.Effect<{
|
|
236
236
|
provider: {
|
|
@@ -238,7 +238,7 @@ export declare const getClientNameAndProvider: (providerType: "google" | "github
|
|
|
238
238
|
readonly provider_name: string;
|
|
239
239
|
};
|
|
240
240
|
clientName: string;
|
|
241
|
-
}, BadArgsError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
241
|
+
}, BadArgsError | import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, import("../context/globalOpts.ts").GlobalOpts | InstantHttpAuthed | CurrentApp>;
|
|
242
242
|
export declare const findClientByIdOrName: (params: {
|
|
243
243
|
id?: string;
|
|
244
244
|
name?: string;
|
|
@@ -286,14 +286,14 @@ export declare const findClientByIdOrName: (params: {
|
|
|
286
286
|
}) | null | undefined;
|
|
287
287
|
readonly use_shared_credentials?: boolean | null | undefined;
|
|
288
288
|
};
|
|
289
|
-
}, BadArgsError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
289
|
+
}, BadArgsError | import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
290
290
|
export declare const removeAuthorizedOrigin: (originId: string) => Effect.Effect<{
|
|
291
291
|
readonly origin: {
|
|
292
292
|
readonly id: string;
|
|
293
293
|
readonly service: "generic" | "vercel" | "netlify" | "custom-scheme";
|
|
294
294
|
readonly params: string[];
|
|
295
295
|
};
|
|
296
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
296
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
297
297
|
export declare const addAuthorizedOrigin: (params: {
|
|
298
298
|
service: Schema.Schema.Type<typeof AuthorizedOriginService>;
|
|
299
299
|
params: string[];
|
|
@@ -303,5 +303,5 @@ export declare const addAuthorizedOrigin: (params: {
|
|
|
303
303
|
readonly service: "generic" | "vercel" | "netlify" | "custom-scheme";
|
|
304
304
|
readonly params: string[];
|
|
305
305
|
};
|
|
306
|
-
}, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
306
|
+
}, import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
|
|
307
307
|
//# sourceMappingURL=oauth.d.ts.map
|
package/dist/lib/pullPerms.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import { CurrentApp } from '../context/currentApp.ts';
|
|
|
3
3
|
import { InstantHttpAuthed } from './http.ts';
|
|
4
4
|
import { ProjectInfo } from '../context/projectInfo.ts';
|
|
5
5
|
import { Path } from '@effect/platform';
|
|
6
|
-
export declare const pullPerms: Effect.Effect<void, import("effect/Cause").UnknownException | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
6
|
+
export declare const pullPerms: Effect.Effect<void, import("effect/Cause").UnknownException | import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError, import("../context/globalOpts.ts").GlobalOpts | ProjectInfo | InstantHttpAuthed | import("@effect/platform/FileSystem").FileSystem | Path.Path | CurrentApp>;
|
|
7
7
|
//# sourceMappingURL=pullPerms.d.ts.map
|
package/dist/lib/pullSchema.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ import { ReadSchemaFileError } from './pushSchema.ts';
|
|
|
7
7
|
import { MergeSchemaError } from '../util/mergeSchema.ts';
|
|
8
8
|
export declare const pullSchema: ({ experimentalTypePreservation, }: {
|
|
9
9
|
experimentalTypePreservation?: boolean;
|
|
10
|
-
}) => Effect.Effect<void, import("effect/Cause").UnknownException | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("
|
|
10
|
+
}) => Effect.Effect<void, import("effect/Cause").UnknownException | import("effect/ParseResult").ParseError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | ReadSchemaFileError | MergeSchemaError, import("../context/globalOpts.ts").GlobalOpts | ProjectInfo | InstantHttpAuthed | FileSystem.FileSystem | Path.Path | CurrentApp>;
|
|
11
11
|
export declare const writeTypescript: (path: string, content: string) => Effect.Effect<void, import("effect/Cause").UnknownException | import("@effect/platform/Error").PlatformError, FileSystem.FileSystem>;
|
|
12
12
|
//# sourceMappingURL=pullSchema.d.ts.map
|