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.
Files changed (78) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/__tests__/auth.test.ts +128 -0
  3. package/__tests__/config.test.ts +47 -0
  4. package/dist/auth/index.d.ts +4 -0
  5. package/dist/auth/index.d.ts.map +1 -0
  6. package/dist/auth/index.js +103 -0
  7. package/dist/auth/index.js.map +1 -0
  8. package/dist/commands/auth/client/add.d.ts +1 -1
  9. package/dist/commands/auth/client/delete.d.ts +1 -1
  10. package/dist/commands/auth/client/list.d.ts +1 -1
  11. package/dist/commands/auth/client/update.d.ts +1 -1
  12. package/dist/commands/auth/email/pull.d.ts +2 -2
  13. package/dist/commands/auth/email/push.d.ts +1 -1
  14. package/dist/commands/auth/email/reset.d.ts +1 -1
  15. package/dist/commands/auth/email/status.d.ts +2 -2
  16. package/dist/commands/auth/email/verify.d.ts +1 -1
  17. package/dist/commands/auth/origin/add.d.ts +1 -1
  18. package/dist/commands/auth/origin/delete.d.ts +1 -1
  19. package/dist/commands/auth/origin/list.d.ts +1 -1
  20. package/dist/commands/info.d.ts +1 -1
  21. package/dist/commands/init.d.ts +1 -1
  22. package/dist/commands/login.d.ts +1 -1
  23. package/dist/commands/login.d.ts.map +1 -1
  24. package/dist/commands/login.js +2 -2
  25. package/dist/commands/login.js.map +1 -1
  26. package/dist/commands/logout.d.ts +1 -2
  27. package/dist/commands/logout.d.ts.map +1 -1
  28. package/dist/commands/logout.js +9 -16
  29. package/dist/commands/logout.js.map +1 -1
  30. package/dist/commands/pull.d.ts +1 -1
  31. package/dist/commands/push.d.ts +1 -1
  32. package/dist/commands/query.d.ts +1 -1
  33. package/dist/context/authToken.d.ts +2 -3
  34. package/dist/context/authToken.d.ts.map +1 -1
  35. package/dist/context/authToken.js +4 -17
  36. package/dist/context/authToken.js.map +1 -1
  37. package/dist/context/currentApp.d.ts +1 -1
  38. package/dist/layer.d.ts +2 -2
  39. package/dist/layer.d.ts.map +1 -1
  40. package/dist/lib/config.d.ts +5 -0
  41. package/dist/lib/config.d.ts.map +1 -0
  42. package/dist/lib/config.js +37 -0
  43. package/dist/lib/config.js.map +1 -0
  44. package/dist/lib/createApp.d.ts +1 -1
  45. package/dist/lib/email.d.ts +1 -1
  46. package/dist/lib/handleEnv.d.ts +1 -1
  47. package/dist/lib/http.d.ts +3 -6
  48. package/dist/lib/http.d.ts.map +1 -1
  49. package/dist/lib/http.js +3 -36
  50. package/dist/lib/http.js.map +1 -1
  51. package/dist/lib/login.d.ts +3 -4
  52. package/dist/lib/login.d.ts.map +1 -1
  53. package/dist/lib/login.js +5 -6
  54. package/dist/lib/login.js.map +1 -1
  55. package/dist/lib/oauth.d.ts +9 -9
  56. package/dist/lib/pullPerms.d.ts +1 -1
  57. package/dist/lib/pullSchema.d.ts +1 -1
  58. package/dist/lib/pushPerms.d.ts +1 -1
  59. package/dist/lib/pushSchema.d.ts +1 -1
  60. package/dist/old.d.ts +1 -1
  61. package/dist/old.d.ts.map +1 -1
  62. package/dist/old.js +6 -7
  63. package/dist/old.js.map +1 -1
  64. package/dist/util/getAppName.d.ts +1 -1
  65. package/package.json +10 -4
  66. package/src/auth/index.ts +125 -0
  67. package/src/commands/login.ts +2 -2
  68. package/src/commands/logout.ts +17 -18
  69. package/src/context/authToken.ts +6 -21
  70. package/src/lib/config.ts +68 -0
  71. package/src/lib/http.ts +4 -68
  72. package/src/lib/login.ts +5 -11
  73. package/src/old.js +6 -10
  74. package/dist/util/getAuthPaths.d.ts +0 -5
  75. package/dist/util/getAuthPaths.d.ts.map +0 -1
  76. package/dist/util/getAuthPaths.js +0 -10
  77. package/dist/util/getAuthPaths.js.map +0 -1
  78. package/src/util/getAuthPaths.ts +0 -12
@@ -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("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("effect/ConfigError").ConfigError | 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>;
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
@@ -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("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError | import("../context/authToken.ts").NotAuthedError | import("../context/platformApi.ts").PlatformApiError | import("../context/currentApp.ts").CurrentAppContextError | import("../context/currentApp.ts").AppNotFoundError | HttpBody.HttpBodyError, never>;
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, FileSystem.FileSystem>;
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("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError | NotAuthedError, import("./globalOpts.ts").GlobalOpts | import("../lib/http.ts").InstantHttp | FileSystem.FileSystem>;
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,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,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;oFAoB9B,CAAC;AAEL,eAAO,MAAM,aAAa,GAAI,8BAG3B;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B,ijBAgDE,CAAC"}
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 envPaths from 'env-paths';
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 authPaths = yield* getAuthPaths;
36
- const fs = yield* FileSystem.FileSystem;
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":"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","sourcesContent":["import { FileSystem } from '@effect/platform';\nimport { Config, Context, Effect, Layer, Option, Ref, Schema } from 'effect';\nimport envPaths from 'env-paths';\nimport { join } from 'node:path';\nimport { loginCommand } from '../commands/login.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 authPaths = yield* getAuthPaths;\n const fs = yield* FileSystem.FileSystem;\n const file = yield* fs\n .readFileString(authPaths.authConfigFilePath, 'utf8')\n .pipe(\n // will usually fail if file not found, return null instead\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\nconst getAuthPaths = Effect.gen(function* () {\n const dev = yield* Config.boolean('INSTANT_CLI_DEV').pipe(\n Config.withDefault(false),\n );\n const key = `instantdb-${dev ? 'dev' : 'prod'}`;\n const { config: appConfigDirPath } = envPaths(key);\n const authConfigFilePath = join(appConfigDirPath, 'a');\n return { authConfigFilePath, appConfigDirPath };\n});\n"]}
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("../lib/http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError | import("./platformApi.ts").PlatformApiError | CurrentAppContextError | AppNotFoundError | import("@effect/platform/HttpBody").HttpBodyError, GlobalOpts | import("./projectInfo.ts").ProjectInfo | import("@effect/platform/FileSystem").FileSystem | AuthToken | InstantHttpAuthed | import("@effect/platform/Path").Path | PlatformApi>;
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 | InstantHttpError | Cause.TimeoutException | RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError | import("./context/authToken.ts").NotAuthedError, never>;
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 | InstantHttpError | Cause.TimeoutException | RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError | import("./context/authToken.ts").NotAuthedError | PlatformApiError | import("./context/currentApp.ts").CurrentAppContextError | import("./context/currentApp.ts").AppNotFoundError | import("@effect/platform/HttpBody").HttpBodyError, never>;
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
@@ -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,ulBAUE,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"}
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"]}
@@ -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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | CreateAppError, InstantHttpAuthed>;
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
@@ -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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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
@@ -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("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError, GlobalOpts | ProjectInfo | FileSystem.FileSystem | Path.Path>;
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
@@ -1,9 +1,9 @@
1
1
  import { HttpClient } from '@effect/platform';
2
- import { Context, Effect, Layer, Schema } from 'effect';
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
- import { BadArgsError } from '../errors.ts';
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
@@ -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,EAAU,OAAO,EAAQ,MAAM,EAAE,KAAK,EAAU,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;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;;AAE5C,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;AAWL,eAAO,MAAM,eAAe,oJAwD3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,gEAiBjC,CAAC;AAEF,eAAO,MAAM,UAAU,iIA0BrB,CAAC;AAEH,eAAO,MAAM,UAAU,iIA0BrB,CAAC"}
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 { Config, Context, Data, Effect, Layer, Option, Schema } from 'effect';
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 { readInstantConfigFile } from "../util/instantConfig.js";
8
- import { BadArgsError } from "../errors.js";
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
@@ -1 +1 @@
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 { 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"]}
@@ -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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttp>;
12
- export declare const saveConfigAuthToken: (token: string) => Effect.Effect<void, import("@effect/platform/Error").PlatformError, FileSystem.FileSystem>;
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
@@ -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;AACrD,OAAO,EAGL,UAAU,EACX,MAAM,kBAAkB,CAAC;AAa1B,eAAO,MAAM,uBAAuB;;;8PAOlC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;8PAiB3B,CAAC;AAEH,eAAO,MAAM,mBAAmB,+GAM9B,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, FileSystem, } from '@effect/platform';
4
- import { getAuthPaths } from "../util/getAuthPaths.js";
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 authPaths = getAuthPaths();
35
- const fs = yield* FileSystem.FileSystem;
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
@@ -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,EACL,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,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,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC","sourcesContent":["import { Effect, Schedule, Schema } from 'effect';\nimport { InstantHttp, withCommand } from './http.ts';\nimport {\n HttpClientRequest,\n HttpClientResponse,\n FileSystem,\n} from '@effect/platform';\nimport { getAuthPaths } from '../util/getAuthPaths.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 authPaths = getAuthPaths();\n\n const fs = yield* FileSystem.FileSystem;\n yield* fs.makeDirectory(authPaths.appConfigDirPath, { recursive: true });\n yield* fs.writeFileString(authPaths.authConfigFilePath, token);\n});\n"]}
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"]}
@@ -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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, import("../context/globalOpts.ts").GlobalOpts | InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
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
@@ -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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError, import("../context/globalOpts.ts").GlobalOpts | ProjectInfo | import("@effect/platform/FileSystem").FileSystem | InstantHttpAuthed | Path.Path | CurrentApp>;
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
@@ -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("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError | ReadSchemaFileError | MergeSchemaError, import("../context/globalOpts.ts").GlobalOpts | ProjectInfo | FileSystem.FileSystem | InstantHttpAuthed | Path.Path | CurrentApp>;
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