instant-cli 0.22.119-experimental.drewh-clief.21533757490.1 → 0.22.119-experimental.drewh-admin-db-warn.21600913731.1

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 (103) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/ui/index.d.ts +1 -1
  5. package/dist/ui/index.d.ts.map +1 -1
  6. package/dist/ui/index.js.map +1 -1
  7. package/dist/util/getAuthPaths.d.ts.map +1 -1
  8. package/dist/util/getAuthPaths.js.map +1 -1
  9. package/package.json +5 -14
  10. package/src/index.js +1 -1
  11. package/src/ui/index.ts +1 -1
  12. package/src/util/getAuthPaths.ts +0 -1
  13. package/tsconfig.json +2 -7
  14. package/dist/new/commands/init.d.ts +0 -9
  15. package/dist/new/commands/init.d.ts.map +0 -1
  16. package/dist/new/commands/init.js +0 -9
  17. package/dist/new/commands/init.js.map +0 -1
  18. package/dist/new/commands/initWithoutFiles.d.ts +0 -10
  19. package/dist/new/commands/initWithoutFiles.d.ts.map +0 -1
  20. package/dist/new/commands/initWithoutFiles.js +0 -36
  21. package/dist/new/commands/initWithoutFiles.js.map +0 -1
  22. package/dist/new/commands/login.d.ts +0 -9
  23. package/dist/new/commands/login.d.ts.map +0 -1
  24. package/dist/new/commands/login.js +0 -51
  25. package/dist/new/commands/login.js.map +0 -1
  26. package/dist/new/commands/logout.d.ts +0 -4
  27. package/dist/new/commands/logout.d.ts.map +0 -1
  28. package/dist/new/commands/logout.js +0 -22
  29. package/dist/new/commands/logout.js.map +0 -1
  30. package/dist/new/context/authToken.d.ts +0 -19
  31. package/dist/new/context/authToken.d.ts.map +0 -1
  32. package/dist/new/context/authToken.js +0 -51
  33. package/dist/new/context/authToken.js.map +0 -1
  34. package/dist/new/context/currentApp.d.ts +0 -36
  35. package/dist/new/context/currentApp.d.ts.map +0 -1
  36. package/dist/new/context/currentApp.js +0 -145
  37. package/dist/new/context/currentApp.js.map +0 -1
  38. package/dist/new/context/globalOpts.d.ts +0 -11
  39. package/dist/new/context/globalOpts.d.ts.map +0 -1
  40. package/dist/new/context/globalOpts.js +0 -10
  41. package/dist/new/context/globalOpts.js.map +0 -1
  42. package/dist/new/context/platformApi.d.ts +0 -19
  43. package/dist/new/context/platformApi.d.ts.map +0 -1
  44. package/dist/new/context/platformApi.js +0 -24
  45. package/dist/new/context/platformApi.js.map +0 -1
  46. package/dist/new/context/projectInfo.d.ts +0 -25
  47. package/dist/new/context/projectInfo.d.ts.map +0 -1
  48. package/dist/new/context/projectInfo.js +0 -120
  49. package/dist/new/context/projectInfo.js.map +0 -1
  50. package/dist/new/errors.d.ts +0 -10
  51. package/dist/new/errors.d.ts.map +0 -1
  52. package/dist/new/errors.js +0 -6
  53. package/dist/new/errors.js.map +0 -1
  54. package/dist/new/index.d.ts +0 -17
  55. package/dist/new/index.d.ts.map +0 -1
  56. package/dist/new/index.js +0 -159
  57. package/dist/new/index.js.map +0 -1
  58. package/dist/new/layer.d.ts +0 -15
  59. package/dist/new/layer.d.ts.map +0 -1
  60. package/dist/new/layer.js +0 -41
  61. package/dist/new/layer.js.map +0 -1
  62. package/dist/new/lib/createApp.d.ts +0 -4
  63. package/dist/new/lib/createApp.d.ts.map +0 -1
  64. package/dist/new/lib/createApp.js +0 -13
  65. package/dist/new/lib/createApp.js.map +0 -1
  66. package/dist/new/lib/handleEnv.d.ts +0 -7
  67. package/dist/new/lib/handleEnv.d.ts.map +0 -1
  68. package/dist/new/lib/handleEnv.js +0 -88
  69. package/dist/new/lib/handleEnv.js.map +0 -1
  70. package/dist/new/lib/http.d.ts +0 -15
  71. package/dist/new/lib/http.d.ts.map +0 -1
  72. package/dist/new/lib/http.js +0 -32
  73. package/dist/new/lib/http.js.map +0 -1
  74. package/dist/new/lib/login.d.ts +0 -13
  75. package/dist/new/lib/login.d.ts.map +0 -1
  76. package/dist/new/lib/login.js +0 -36
  77. package/dist/new/lib/login.js.map +0 -1
  78. package/dist/new/lib/ui.d.ts +0 -16
  79. package/dist/new/lib/ui.d.ts.map +0 -1
  80. package/dist/new/lib/ui.js +0 -30
  81. package/dist/new/lib/ui.js.map +0 -1
  82. package/dist/new/logging.d.ts +0 -3
  83. package/dist/new/logging.d.ts.map +0 -1
  84. package/dist/new/logging.js +0 -8
  85. package/dist/new/logging.js.map +0 -1
  86. package/src/new/commands/init.ts +0 -12
  87. package/src/new/commands/initWithoutFiles.ts +0 -44
  88. package/src/new/commands/login.ts +0 -73
  89. package/src/new/commands/logout.ts +0 -23
  90. package/src/new/context/authToken.ts +0 -77
  91. package/src/new/context/currentApp.ts +0 -207
  92. package/src/new/context/globalOpts.ts +0 -22
  93. package/src/new/context/platformApi.ts +0 -35
  94. package/src/new/context/projectInfo.ts +0 -172
  95. package/src/new/errors.ts +0 -7
  96. package/src/new/index.ts +0 -245
  97. package/src/new/layer.ts +0 -78
  98. package/src/new/lib/createApp.ts +0 -18
  99. package/src/new/lib/handleEnv.ts +0 -107
  100. package/src/new/lib/http.ts +0 -63
  101. package/src/new/lib/login.ts +0 -50
  102. package/src/new/lib/ui.ts +0 -45
  103. package/src/new/logging.ts +0 -9
@@ -1,120 +0,0 @@
1
- import { Context, Data, Effect, Layer } from 'effect';
2
- import { detect } from 'package-manager-detector/detect';
3
- import { readPackage } from 'pkg-types';
4
- import { exec } from 'child_process';
5
- import { promisify } from 'util';
6
- import { UI } from '../../ui/index.js';
7
- import { findProjectDir } from '../../util/projectDir.js';
8
- import { runUIEffect } from '../lib/ui.js';
9
- export class ProjectInfo extends Context.Tag('instant-cli/new/context/projectInfo')() {
10
- }
11
- const execAsync = promisify(exec);
12
- export const PACKAGE_ALIAS_AND_FULL_NAMES = {
13
- react: '@instantdb/react',
14
- 'react-native': '@instantdb/react-native',
15
- core: '@instantdb/core',
16
- admin: '@instantdb/admin',
17
- };
18
- export class ProjectInfoError extends Data.TaggedError('ProjectInfoError') {
19
- }
20
- const getProjectInfo = (coerce = true, packageName) => Effect.gen(function* () {
21
- const projectDir = yield* Effect.tryPromise({
22
- try: () => findProjectDir(),
23
- catch: (e) => new ProjectInfoError({ message: "Couldn't get project dir" }),
24
- });
25
- if (!projectDir) {
26
- return yield* new ProjectInfoError({
27
- message: "Couldn't find a project directory (package.json)",
28
- });
29
- }
30
- if (projectDir.type === 'deno') {
31
- return {
32
- pkgDir: projectDir.dir,
33
- projectType: projectDir.type,
34
- instantModuleName: '@instantdb/core',
35
- };
36
- }
37
- const pkgJson = yield* Effect.tryPromise({
38
- try: () => readPackage(),
39
- catch: () => new ProjectInfoError({ message: "Couldn't read package.json" }),
40
- });
41
- let moduleName = getInstantModuleName(pkgJson);
42
- if (!moduleName && !coerce) {
43
- return yield* new ProjectInfoError({
44
- message: 'No instant client library installed',
45
- });
46
- }
47
- // TODO: Clean up with option
48
- const packageManager = yield* Effect.tryPromise(() => detect()).pipe(Effect.flatMap(Effect.fromNullable), Effect.mapError(() => new ProjectInfoError({
49
- message: 'Failed to detect package manager',
50
- })));
51
- if (!moduleName && coerce) {
52
- // install the packages
53
- if (packageName) {
54
- moduleName = PACKAGE_ALIAS_AND_FULL_NAMES[packageName];
55
- }
56
- else {
57
- moduleName = yield* runUIEffect(new UI.Select({
58
- promptText: 'Which package would you like to use?',
59
- options: [
60
- { label: '@instantdb/react', value: '@instantdb/react' },
61
- {
62
- label: '@instantdb/react-native',
63
- value: '@instantdb/react-native',
64
- },
65
- { label: '@instantdb/core', value: '@instantdb/core' },
66
- { label: '@instantdb/admin', value: '@instantdb/admin' },
67
- ],
68
- })).pipe(Effect.flatMap(Effect.fromNullable), Effect.mapError(() => new ProjectInfoError({
69
- message: 'Failed to select package',
70
- })));
71
- }
72
- const packagesToInstall = [moduleName];
73
- if (moduleName === '@instantdb/react-native') {
74
- packagesToInstall.push('react-native-get-random-values', '@react-native-async-storage/async-storage');
75
- }
76
- const installCommand = getInstallCommand(packageManager.agent, packagesToInstall.join(' '));
77
- console.log(installCommand);
78
- yield* runUIEffect(new UI.Spinner({
79
- promise: execAsync(installCommand, {
80
- cwd: projectDir.dir,
81
- }),
82
- errorText: 'Failed to install packages',
83
- workingText: `Installing ${packagesToInstall.join(', ')} using ${packageManager.agent}...`,
84
- doneText: `Installed ${packagesToInstall.join(', ')} using ${packageManager.agent}.`,
85
- }));
86
- return {
87
- pkgDir: projectDir.dir,
88
- projectType: projectDir.type,
89
- instantModuleName: moduleName,
90
- };
91
- }
92
- else {
93
- return {
94
- pkgDir: projectDir.dir,
95
- projectType: projectDir.type,
96
- instantModuleName: moduleName,
97
- };
98
- }
99
- });
100
- export const ProjectInfoLive = (coerce = true, packageName) => Layer.effect(ProjectInfo, getProjectInfo(coerce, packageName));
101
- function getInstantModuleName(pkgJson) {
102
- const deps = pkgJson.dependencies || {};
103
- const devDeps = pkgJson.devDependencies || {};
104
- const instantModuleName = [
105
- '@instantdb/react',
106
- '@instantdb/react-native',
107
- '@instantdb/core',
108
- '@instantdb/admin',
109
- ].find((name) => deps[name] || devDeps[name]);
110
- return instantModuleName;
111
- }
112
- function getInstallCommand(packageManager, moduleName) {
113
- if (packageManager === 'npm') {
114
- return `npm install ${moduleName}`;
115
- }
116
- else {
117
- return `${packageManager} add ${moduleName}`;
118
- }
119
- }
120
- //# sourceMappingURL=projectInfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectInfo.js","sourceRoot":"","sources":["../../../src/new/context/projectInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Data, Effect, Layer } from 'effect';\nimport { detect } from 'package-manager-detector/detect';\nimport { PackageJson, readPackage } from 'pkg-types';\n\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport { UI } from '../../ui/index.js';\nimport { findProjectDir } from '../../util/projectDir.js';\nimport { runUIEffect } from '../lib/ui.js';\n\nexport class ProjectInfo extends Context.Tag(\n 'instant-cli/new/context/projectInfo',\n)<\n ProjectInfo,\n {\n pkgDir: string;\n projectType: 'node' | 'deno';\n instantModuleName: string;\n }\n>() {}\n\nconst execAsync = promisify(exec);\n\nexport const PACKAGE_ALIAS_AND_FULL_NAMES = {\n react: '@instantdb/react',\n 'react-native': '@instantdb/react-native',\n core: '@instantdb/core',\n admin: '@instantdb/admin',\n};\n\nexport class ProjectInfoError extends Data.TaggedError('ProjectInfoError')<{\n message: string;\n cause?: unknown;\n}> {}\n\nconst getProjectInfo = (\n coerce: boolean = true,\n packageName?: keyof typeof PACKAGE_ALIAS_AND_FULL_NAMES,\n) =>\n Effect.gen(function* () {\n const projectDir = yield* Effect.tryPromise({\n try: () => findProjectDir(),\n catch: (e) =>\n new ProjectInfoError({ message: \"Couldn't get project dir\" }),\n });\n\n if (!projectDir) {\n return yield* new ProjectInfoError({\n message: \"Couldn't find a project directory (package.json)\",\n });\n }\n\n if (projectDir.type === 'deno') {\n return {\n pkgDir: projectDir.dir,\n projectType: projectDir.type,\n instantModuleName: '@instantdb/core',\n };\n }\n\n const pkgJson = yield* Effect.tryPromise({\n try: () => readPackage(),\n catch: () =>\n new ProjectInfoError({ message: \"Couldn't read package.json\" }),\n });\n\n let moduleName = getInstantModuleName(pkgJson);\n if (!moduleName && !coerce) {\n return yield* new ProjectInfoError({\n message: 'No instant client library installed',\n });\n }\n\n // TODO: Clean up with option\n const packageManager = yield* Effect.tryPromise(() => detect()).pipe(\n Effect.flatMap(Effect.fromNullable),\n Effect.mapError(\n () =>\n new ProjectInfoError({\n message: 'Failed to detect package manager',\n }),\n ),\n );\n\n if (!moduleName && coerce) {\n // install the packages\n if (packageName) {\n moduleName = PACKAGE_ALIAS_AND_FULL_NAMES[packageName];\n } else {\n moduleName = yield* runUIEffect(\n new UI.Select({\n promptText: 'Which package would you like to use?',\n options: [\n { label: '@instantdb/react', value: '@instantdb/react' },\n {\n label: '@instantdb/react-native',\n value: '@instantdb/react-native',\n },\n { label: '@instantdb/core', value: '@instantdb/core' },\n { label: '@instantdb/admin', value: '@instantdb/admin' },\n ],\n }),\n ).pipe(\n Effect.flatMap(Effect.fromNullable),\n Effect.mapError(\n () =>\n new ProjectInfoError({\n message: 'Failed to select package',\n }),\n ),\n );\n }\n const packagesToInstall = [moduleName];\n if (moduleName === '@instantdb/react-native') {\n packagesToInstall.push(\n 'react-native-get-random-values',\n '@react-native-async-storage/async-storage',\n );\n }\n const installCommand = getInstallCommand(\n packageManager.agent,\n packagesToInstall.join(' '),\n );\n console.log(installCommand);\n yield* runUIEffect(\n new UI.Spinner({\n promise: execAsync(installCommand, {\n cwd: projectDir.dir,\n }),\n errorText: 'Failed to install packages',\n workingText: `Installing ${packagesToInstall.join(', ')} using ${packageManager.agent}...`,\n doneText: `Installed ${packagesToInstall.join(', ')} using ${packageManager.agent}.`,\n }),\n );\n return {\n pkgDir: projectDir.dir,\n projectType: projectDir.type,\n instantModuleName: moduleName,\n };\n } else {\n return {\n pkgDir: projectDir.dir,\n projectType: projectDir.type,\n instantModuleName: moduleName!,\n };\n }\n });\n\nexport const ProjectInfoLive = (\n coerce: boolean = true,\n packageName?: keyof typeof PACKAGE_ALIAS_AND_FULL_NAMES,\n) => Layer.effect(ProjectInfo, getProjectInfo(coerce, packageName));\n\nfunction getInstantModuleName(pkgJson: PackageJson) {\n const deps = pkgJson.dependencies || {};\n const devDeps = pkgJson.devDependencies || {};\n const instantModuleName = [\n '@instantdb/react',\n '@instantdb/react-native',\n '@instantdb/core',\n '@instantdb/admin',\n ].find((name) => deps[name] || devDeps[name]);\n return instantModuleName;\n}\n\nfunction getInstallCommand(packageManager: string, moduleName: string) {\n if (packageManager === 'npm') {\n return `npm install ${moduleName}`;\n } else {\n return `${packageManager} add ${moduleName}`;\n }\n}\n"]}
@@ -1,10 +0,0 @@
1
- import { Schema } from 'effect';
2
- declare const BadArgsError_base: Schema.TaggedErrorClass<BadArgsError, "BadArgsError", {
3
- readonly _tag: Schema.tag<"BadArgsError">;
4
- } & {
5
- message: typeof Schema.String;
6
- }>;
7
- export declare class BadArgsError extends BadArgsError_base {
8
- }
9
- export {};
10
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/new/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;AAEhC,qBAAa,YAAa,SAAQ,iBAIhC;CAAG"}
@@ -1,6 +0,0 @@
1
- import { Schema } from 'effect';
2
- export class BadArgsError extends Schema.TaggedError('BadArgsError')('BadArgsError', {
3
- message: Schema.String,
4
- }) {
5
- }
6
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/new/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,CAClD,cAAc,CACf,CAAC,cAAc,EAAE;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG","sourcesContent":["import { Schema } from 'effect';\n\nexport class BadArgsError extends Schema.TaggedError<BadArgsError>(\n 'BadArgsError',\n)('BadArgsError', {\n message: Schema.String,\n}) {}\n"]}
@@ -1,17 +0,0 @@
1
- import { Command } from '@commander-js/extra-typings';
2
- export type ArgsFromCommand<C> = C extends Command<any, infer R, any> ? R : never;
3
- export declare const initDef: Command<[], {
4
- app?: string | undefined;
5
- package?: string | undefined;
6
- title?: string | undefined;
7
- }, {}>;
8
- export declare const initWithoutFilesDef: Command<[], {
9
- title?: string | undefined;
10
- orgId?: string | undefined;
11
- temp?: true | undefined;
12
- }, {}>;
13
- export declare const loginDef: Command<[], {
14
- print?: true | undefined;
15
- headless?: true | undefined;
16
- }, {}>;
17
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/new/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAmB,MAAM,6BAA6B,CAAC;AAkBvE,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAiBnD,eAAO,MAAM,OAAO;;;;MA2BhB,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;MAmB5B,CAAC;AAEL,eAAO,MAAM,QAAQ;;;MAYjB,CAAC"}
package/dist/new/index.js DELETED
@@ -1,159 +0,0 @@
1
- import { Option, program } from '@commander-js/extra-typings';
2
- import chalk from 'chalk';
3
- import { Effect } from 'effect';
4
- import version from '../version.js';
5
- import { initCommand } from './commands/init.js';
6
- import { initWithoutFilesCommand } from './commands/initWithoutFiles.js';
7
- import { loginCommand } from './commands/login.js';
8
- import { logoutCommand } from './commands/logout.js';
9
- import { loadEnv } from '../util/loadEnv.js';
10
- import { AuthLayerLive, BaseLayerLive, printRedErrors, WithAppLayer, } from './layer.js';
11
- loadEnv();
12
- program
13
- .name('instant-cli')
14
- .addOption(globalOption('-t --token <token>', 'Auth token override'))
15
- .addOption(globalOption('-y --yes', "Answer 'yes' to all prompts"))
16
- .addOption(globalOption('--env <file>', 'Use a specific .env file'))
17
- .addOption(globalOption('-v --version', 'Print the version number', () => {
18
- console.log(version);
19
- process.exit(0);
20
- }))
21
- .addHelpOption(globalOption('-h --help', 'Print the help text for a command'))
22
- .usage(`<command> ${chalk.dim('[options] [args]')}`);
23
- // Command List
24
- export const initDef = program
25
- .command('init')
26
- .description('Set up a new project.')
27
- .option('-a --app <app-id>', 'If you have an existing app ID, we can pull schema and perms from there.')
28
- .option('-p --package <react|react-native|core|admin>', 'Which package to automatically install if there is not one installed already.')
29
- .option('--title <title>', 'Title for the created app')
30
- .action((options) => {
31
- return Effect.runPromise(initCommand(options).pipe(Effect.provide(WithAppLayer({
32
- coerce: true,
33
- title: options.title,
34
- appId: options.app,
35
- packageName: options.package,
36
- applyEnv: true,
37
- })), printRedErrors));
38
- });
39
- export const initWithoutFilesDef = program
40
- .command('init-without-files')
41
- .description('Generate a new app id and admin token pair without any files.')
42
- .option('--title <title>', 'Title for the created app.')
43
- .option('--org-id <org-id>', 'Organization id for app. Cannot be used with --temp flag.')
44
- .option('--temp', 'Create a temporary app which will automatically delete itself after >24 hours.')
45
- .action((opts) => {
46
- return Effect.runPromise(initWithoutFilesCommand(opts).pipe(Effect.provide(AuthLayerLive), printRedErrors));
47
- });
48
- export const loginDef = program
49
- .command('login')
50
- .description('Log into your account')
51
- .option('-p --print', 'Prints the auth token into the console.')
52
- .option('--headless', 'Print the login URL instead of trying to open the browser')
53
- .action(async (opts) => {
54
- Effect.runPromise(loginCommand(opts).pipe(Effect.provide(BaseLayerLive), printRedErrors));
55
- });
56
- const _logoutDef = program
57
- .command('logout')
58
- .description('Log out of your Instant account')
59
- .action(async () => {
60
- Effect.runPromise(logoutCommand().pipe(Effect.provide(BaseLayerLive), printRedErrors));
61
- });
62
- //// Program setup /////
63
- function globalOption(flags, description, argParser) {
64
- const opt = new Option(flags, description);
65
- if (argParser) {
66
- opt.argParser(argParser);
67
- }
68
- // @ts-ignore
69
- // __global does not exist on `Option`,
70
- // but we use it in `getLocalAndGlobalOptions`, to produce
71
- // our own custom list of local and global options.
72
- // For more info, see the original PR:
73
- // https://github.com/instantdb/instant/pull/505
74
- opt.__global = true;
75
- return opt;
76
- }
77
- function getLocalAndGlobalOptions(cmd, helper) {
78
- const mixOfLocalAndGlobal = helper.visibleOptions(cmd);
79
- const localOptionsFromMix = mixOfLocalAndGlobal.filter((option) => !option.__global);
80
- const globalOptionsFromMix = mixOfLocalAndGlobal.filter((option) => option.__global);
81
- const globalOptions = helper.visibleGlobalOptions(cmd);
82
- return [localOptionsFromMix, globalOptionsFromMix.concat(globalOptions)];
83
- }
84
- function formatHelp(cmd, helper) {
85
- const termWidth = helper.padWidth(cmd, helper);
86
- const helpWidth = helper.helpWidth || 80;
87
- const itemIndentWidth = 2;
88
- const itemSeparatorWidth = 2; // between term and description
89
- function formatItem(term, description) {
90
- if (description) {
91
- const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;
92
- return helper.wrap(fullText, helpWidth - itemIndentWidth, termWidth + itemSeparatorWidth);
93
- }
94
- return term;
95
- }
96
- function formatList(textArray) {
97
- return textArray.join('\n').replace(/^/gm, ' '.repeat(itemIndentWidth));
98
- }
99
- // Usage
100
- let output = [`${helper.commandUsage(cmd)}`, ''];
101
- // Description
102
- const commandDescription = helper.commandDescription(cmd);
103
- if (commandDescription.length > 0) {
104
- output = output.concat([helper.wrap(commandDescription, helpWidth, 0), '']);
105
- }
106
- // Arguments
107
- const argumentList = helper.visibleArguments(cmd).map((argument) => {
108
- return formatItem(helper.argumentTerm(argument), helper.argumentDescription(argument));
109
- });
110
- if (argumentList.length > 0) {
111
- output = output.concat([
112
- chalk.dim.bold('Arguments'),
113
- formatList(argumentList),
114
- '',
115
- ]);
116
- }
117
- const [visibleOptions, visibleGlobalOptions] = getLocalAndGlobalOptions(cmd, helper);
118
- // Options
119
- const optionList = visibleOptions.map((option) => {
120
- return formatItem(helper.optionTerm(option), helper.optionDescription(option));
121
- });
122
- if (optionList.length > 0) {
123
- output = output.concat([
124
- chalk.dim.bold('Options'),
125
- formatList(optionList),
126
- '',
127
- ]);
128
- }
129
- // Commands
130
- const commandList = helper.visibleCommands(cmd).map((cmd) => {
131
- return formatItem(helper.subcommandTerm(cmd), helper.subcommandDescription(cmd));
132
- });
133
- if (commandList.length > 0) {
134
- output = output.concat([
135
- chalk.dim.bold('Commands'),
136
- formatList(commandList),
137
- '',
138
- ]);
139
- }
140
- if (this.showGlobalOptions) {
141
- const globalOptionList = visibleGlobalOptions.map((option) => {
142
- return formatItem(helper.optionTerm(option), helper.optionDescription(option));
143
- });
144
- if (globalOptionList.length > 0) {
145
- output = output.concat([
146
- chalk.dim.bold('Global Options'),
147
- formatList(globalOptionList),
148
- '',
149
- ]);
150
- }
151
- }
152
- return output.join('\n');
153
- }
154
- program.configureHelp({
155
- showGlobalOptions: true,
156
- formatHelp,
157
- });
158
- program.parse(process.argv);
159
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/new/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, Option, program } from '@commander-js/extra-typings';\nimport chalk from 'chalk';\nimport { Effect } from 'effect';\nimport version from '../version.js';\nimport { initCommand } from './commands/init.js';\nimport { initWithoutFilesCommand } from './commands/initWithoutFiles.js';\nimport { loginCommand } from './commands/login.js';\nimport { logoutCommand } from './commands/logout.js';\nimport { loadEnv } from '../util/loadEnv.js';\nimport {\n AuthLayerLive,\n BaseLayerLive,\n printRedErrors,\n WithAppLayer,\n} from './layer.js';\n\nloadEnv();\n\nexport type ArgsFromCommand<C> =\n C extends Command<any, infer R, any> ? R : never;\n\nprogram\n .name('instant-cli')\n .addOption(globalOption('-t --token <token>', 'Auth token override'))\n .addOption(globalOption('-y --yes', \"Answer 'yes' to all prompts\"))\n .addOption(globalOption('--env <file>', 'Use a specific .env file'))\n .addOption(\n globalOption('-v --version', 'Print the version number', () => {\n console.log(version);\n process.exit(0);\n }),\n )\n .addHelpOption(globalOption('-h --help', 'Print the help text for a command'))\n .usage(`<command> ${chalk.dim('[options] [args]')}`);\n\n// Command List\nexport const initDef = program\n .command('init')\n .description('Set up a new project.')\n .option(\n '-a --app <app-id>',\n 'If you have an existing app ID, we can pull schema and perms from there.',\n )\n .option(\n '-p --package <react|react-native|core|admin>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option('--title <title>', 'Title for the created app')\n .action((options) => {\n return Effect.runPromise(\n initCommand(options).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: true,\n title: options.title,\n appId: options.app,\n packageName: options.package as any,\n applyEnv: true,\n }),\n ),\n printRedErrors,\n ),\n );\n });\n\nexport const initWithoutFilesDef = program\n .command('init-without-files')\n .description('Generate a new app id and admin token pair without any files.')\n .option('--title <title>', 'Title for the created app.')\n .option(\n '--org-id <org-id>',\n 'Organization id for app. Cannot be used with --temp flag.',\n )\n .option(\n '--temp',\n 'Create a temporary app which will automatically delete itself after >24 hours.',\n )\n .action((opts) => {\n return Effect.runPromise(\n initWithoutFilesCommand(opts).pipe(\n Effect.provide(AuthLayerLive),\n printRedErrors,\n ),\n );\n });\n\nexport const loginDef = program\n .command('login')\n .description('Log into your account')\n .option('-p --print', 'Prints the auth token into the console.')\n .option(\n '--headless',\n 'Print the login URL instead of trying to open the browser',\n )\n .action(async (opts) => {\n Effect.runPromise(\n loginCommand(opts).pipe(Effect.provide(BaseLayerLive), printRedErrors),\n );\n });\n\nconst _logoutDef = program\n .command('logout')\n .description('Log out of your Instant account')\n .action(async () => {\n Effect.runPromise(\n logoutCommand().pipe(Effect.provide(BaseLayerLive), printRedErrors),\n );\n });\n\n//// Program setup /////\n\nfunction globalOption(\n flags: string,\n description?: string,\n argParser?: (value: string, prev?: unknown) => unknown,\n) {\n const opt = new Option(flags, description);\n if (argParser) {\n opt.argParser(argParser);\n }\n // @ts-ignore\n // __global does not exist on `Option`,\n // but we use it in `getLocalAndGlobalOptions`, to produce\n // our own custom list of local and global options.\n // For more info, see the original PR:\n // https://github.com/instantdb/instant/pull/505\n opt.__global = true;\n return opt;\n}\n\nfunction getLocalAndGlobalOptions(cmd, helper) {\n const mixOfLocalAndGlobal = helper.visibleOptions(cmd);\n const localOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option) => !option.__global,\n );\n const globalOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option) => option.__global,\n );\n const globalOptions = helper.visibleGlobalOptions(cmd);\n\n return [localOptionsFromMix, globalOptionsFromMix.concat(globalOptions)];\n}\n\nfunction formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term, description) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.wrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([helper.wrap(commandDescription, helpWidth, 0), '']);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Arguments'),\n formatList(argumentList),\n '',\n ]);\n }\n const [visibleOptions, visibleGlobalOptions] = getLocalAndGlobalOptions(\n cmd,\n helper,\n );\n\n // Options\n const optionList = visibleOptions.map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Options'),\n formatList(optionList),\n '',\n ]);\n }\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Commands'),\n formatList(commandList),\n '',\n ]);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = visibleGlobalOptions.map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Global Options'),\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n return output.join('\\n');\n}\n\nprogram.configureHelp({\n showGlobalOptions: true,\n formatHelp,\n});\n\nprogram.parse(process.argv);\n"]}
@@ -1,15 +0,0 @@
1
- import { NodeContext } from '@effect/platform-node';
2
- import { Effect, Layer } from 'effect';
3
- import { PlatformApi } from './context/platformApi.js';
4
- import { PACKAGE_ALIAS_AND_FULL_NAMES } from './context/projectInfo.js';
5
- export declare const printRedErrors: <A, R>(self: Effect.Effect<A, unknown, R>) => Effect.Effect<void | A, never, R>;
6
- export declare const BaseLayerLive: Layer.Layer<import("./context/globalOpts.js").GlobalOpts | import("./lib/http.js").InstantHttp | PlatformApi | NodeContext.NodeContext, import("effect/ConfigError").ConfigError, never>;
7
- export declare const AuthLayerLive: Layer.Layer<import("./context/globalOpts.js").GlobalOpts | import("./lib/http.js").InstantHttp | import("./context/authToken.js").AuthToken | import("./lib/http.js").InstantHttpAuthed | PlatformApi | NodeContext.NodeContext, import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError | import("./context/authToken.js").NotAuthedError, never>;
8
- export declare const WithAppLayer: (args: {
9
- appId?: string;
10
- title?: string;
11
- coerce: boolean;
12
- packageName: keyof typeof PACKAGE_ALIAS_AND_FULL_NAMES;
13
- applyEnv?: boolean;
14
- }) => Layer.Layer<import("./context/globalOpts.js").GlobalOpts | import("./context/projectInfo.js").ProjectInfo | import("./lib/http.js").InstantHttp | import("./context/authToken.js").AuthToken | import("./lib/http.js").InstantHttpAuthed | PlatformApi | import("./context/currentApp.js").CurrentApp | NodeContext.NodeContext, import("./lib/ui.js").UIError | import("./context/projectInfo.js").ProjectInfoError | import("@effect/platform/HttpClientError").HttpClientError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpBody").HttpBodyError | import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError | import("./context/authToken.js").NotAuthedError | import("./context/currentApp.js").CurrentAppContextError | import("./context/currentApp.js").AppNotFoundError, never>;
15
- //# sourceMappingURL=layer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../src/new/layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAkB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EACL,4BAA4B,EAE7B,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,cAAc,iFAkBzB,CAAC;AAcH,eAAO,MAAM,aAAa,0LAGzB,CAAC;AAGF,eAAO,MAAM,aAAa,sXAMzB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,OAAO,4BAA4B,CAAC;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,0zBAYE,CAAC"}
package/dist/new/layer.js DELETED
@@ -1,41 +0,0 @@
1
- import { NodeContext, NodeHttpClient } from '@effect/platform-node';
2
- import chalk from 'chalk';
3
- import { Cause, Console, Effect, Layer } from 'effect';
4
- import { InstantHttpAuthedLive, InstantHttpLive } from './lib/http.js';
5
- import { AuthTokenLive } from './context/authToken.js';
6
- import { PlatformApi } from './context/platformApi.js';
7
- import { GlobalOptsLive } from './context/globalOpts.js';
8
- import { ProjectInfoLive, } from './context/projectInfo.js';
9
- import { CurrentAppLive } from './context/currentApp.js';
10
- export const printRedErrors = Effect.catchAllCause((cause) => {
11
- const failure = Cause.failureOption(cause);
12
- // Print just the message if the error has a message attribute and no cause
13
- if (failure._tag === 'Some' &&
14
- typeof failure.value === 'object' &&
15
- failure.value !== null &&
16
- 'message' in failure.value &&
17
- !('cause' in failure.value)) {
18
- return Console.error(chalk.red(failure.value.message));
19
- }
20
- return Console.error(chalk.red(Cause.pretty(cause, { renderErrorCause: true })));
21
- });
22
- /**
23
- * Note:
24
- Avoid Duplicate Layer Creation
25
-
26
- Layers are memoized using reference equality. Therefore, if you have a layer that is created by calling a function like f(), you should only call that f once and re-use the resulting layer so that you are always using the same instance.
27
- */
28
- // Base layers
29
- const AuthTokenLayer = Layer.provide(AuthTokenLive, NodeContext.layer);
30
- const InstantHttpLayer = Layer.provide(InstantHttpLive, NodeHttpClient.layer);
31
- // Unauthenticated layer with InstantHttp + PlatformApi + GlobalOpts + NodeContext
32
- export const BaseLayerLive = Layer.provideMerge(Layer.mergeAll(InstantHttpLayer, PlatformApi.Default, GlobalOptsLive), NodeContext.layer);
33
- // Authenticated layer extends BaseLayerLive with InstantHttpAuthed
34
- export const AuthLayerLive = Layer.provideMerge(Layer.provideMerge(InstantHttpAuthedLive, Layer.merge(AuthTokenLayer, InstantHttpLayer)), BaseLayerLive);
35
- export const WithAppLayer = (args) => Layer.mergeAll(CurrentAppLive({
36
- coerce: args.coerce,
37
- appId: args.appId,
38
- title: args.title,
39
- applyEnv: args.applyEnv,
40
- })).pipe(Layer.provideMerge(GlobalOptsLive), Layer.provideMerge(AuthLayerLive), Layer.provideMerge(ProjectInfoLive(args.coerce, args.packageName)));
41
- //# sourceMappingURL=layer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layer.js","sourceRoot":"","sources":["../../src/new/layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAEL,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAE3C,2EAA2E;IAC3E,IACE,OAAO,CAAC,IAAI,KAAK,MAAM;QACvB,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;QACjC,OAAO,CAAC,KAAK,KAAK,IAAI;QACtB,SAAS,IAAI,OAAO,CAAC,KAAK;QAC1B,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAC3B,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAE,OAAO,CAAC,KAA6B,CAAC,OAAO,CAAC,CAC1D,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAC3D,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AAEH,cAAc;AACd,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AACvE,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAE9E,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAC7C,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,EACrE,WAAW,CAAC,KAAK,CAClB,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAC7C,KAAK,CAAC,YAAY,CAChB,qBAAqB,EACrB,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAC9C,EACD,aAAa,CACd,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAM5B,EAAE,EAAE,CACH,KAAK,CAAC,QAAQ,CACZ,cAAc,CAAC;IACb,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;CACxB,CAAC,CACH,CAAC,IAAI,CACJ,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,EAClC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,EACjC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CACnE,CAAC","sourcesContent":["import { NodeContext, NodeHttpClient } from '@effect/platform-node';\nimport chalk from 'chalk';\nimport { Cause, Console, Effect, Layer } from 'effect';\nimport { InstantHttpAuthedLive, InstantHttpLive } from './lib/http.js';\nimport { AuthTokenLive } from './context/authToken.js';\nimport { PlatformApi } from './context/platformApi.js';\nimport { GlobalOptsLive } from './context/globalOpts.js';\nimport {\n PACKAGE_ALIAS_AND_FULL_NAMES,\n ProjectInfoLive,\n} from './context/projectInfo.js';\nimport { CurrentAppLive } from './context/currentApp.js';\n\nexport const printRedErrors = Effect.catchAllCause((cause) => {\n const failure = Cause.failureOption(cause);\n\n // Print just the message if the error has a message attribute and no cause\n if (\n failure._tag === 'Some' &&\n typeof failure.value === 'object' &&\n failure.value !== null &&\n 'message' in failure.value &&\n !('cause' in failure.value)\n ) {\n return Console.error(\n chalk.red((failure.value as { message: string }).message),\n );\n }\n return Console.error(\n chalk.red(Cause.pretty(cause, { renderErrorCause: true })),\n );\n});\n\n/**\n * Note:\n Avoid Duplicate Layer Creation\n\n Layers are memoized using reference equality. Therefore, if you have a layer that is created by calling a function like f(), you should only call that f once and re-use the resulting layer so that you are always using the same instance.\n */\n\n// Base layers\nconst AuthTokenLayer = Layer.provide(AuthTokenLive, NodeContext.layer);\nconst InstantHttpLayer = Layer.provide(InstantHttpLive, NodeHttpClient.layer);\n\n// Unauthenticated layer with InstantHttp + PlatformApi + GlobalOpts + NodeContext\nexport const BaseLayerLive = Layer.provideMerge(\n Layer.mergeAll(InstantHttpLayer, PlatformApi.Default, GlobalOptsLive),\n NodeContext.layer,\n);\n\n// Authenticated layer extends BaseLayerLive with InstantHttpAuthed\nexport const AuthLayerLive = Layer.provideMerge(\n Layer.provideMerge(\n InstantHttpAuthedLive,\n Layer.merge(AuthTokenLayer, InstantHttpLayer),\n ),\n BaseLayerLive,\n);\n\nexport const WithAppLayer = (args: {\n appId?: string;\n title?: string;\n coerce: boolean;\n packageName: keyof typeof PACKAGE_ALIAS_AND_FULL_NAMES;\n applyEnv?: boolean;\n}) =>\n Layer.mergeAll(\n CurrentAppLive({\n coerce: args.coerce,\n appId: args.appId,\n title: args.title,\n applyEnv: args.applyEnv,\n }),\n ).pipe(\n Layer.provideMerge(GlobalOptsLive),\n Layer.provideMerge(AuthLayerLive),\n Layer.provideMerge(ProjectInfoLive(args.coerce, args.packageName)),\n );\n"]}
@@ -1,4 +0,0 @@
1
- import { Effect } from 'effect';
2
- import { InstantHttpAuthed } from './http.js';
3
- export declare const createApp: (title: string, orgId?: string | undefined) => Effect.Effect<unknown, import("@effect/platform/HttpClientError").HttpClientError | import("@effect/platform/HttpBody").HttpBodyError, InstantHttpAuthed>;
4
- //# sourceMappingURL=createApp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../../../src/new/lib/createApp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,eAAO,MAAM,SAAS,0MAYpB,CAAC"}
@@ -1,13 +0,0 @@
1
- import { randomUUID } from 'crypto';
2
- import { Effect } from 'effect';
3
- import { InstantHttpAuthed } from './http.js';
4
- import { HttpClientRequest } from '@effect/platform';
5
- export const createApp = Effect.fn(function* (title, orgId) {
6
- const http = yield* InstantHttpAuthed;
7
- const id = randomUUID();
8
- const token = randomUUID();
9
- const app = { id, title, admin_token: token, org_id: orgId };
10
- const res = yield* HttpClientRequest.post('/dash/apps').pipe(HttpClientRequest.bodyJson(app), Effect.flatMap(http.execute), Effect.flatMap((res) => res.json));
11
- return res;
12
- });
13
- //# sourceMappingURL=createApp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createApp.js","sourceRoot":"","sources":["../../../src/new/lib/createApp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAa,EAAE,KAAc;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;IACtC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAE7D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAC1D,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAClC,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC","sourcesContent":["import { randomUUID } from 'crypto';\nimport { Effect } from 'effect';\nimport { InstantHttpAuthed } from './http.js';\nimport { HttpClientRequest } from '@effect/platform';\n\nexport const createApp = Effect.fn(function* (title: string, orgId?: string) {\n const http = yield* InstantHttpAuthed;\n const id = randomUUID();\n const token = randomUUID();\n const app = { id, title, admin_token: token, org_id: orgId };\n\n const res = yield* HttpClientRequest.post('/dash/apps').pipe(\n HttpClientRequest.bodyJson(app),\n Effect.flatMap(http.execute),\n Effect.flatMap((res) => res.json),\n );\n return res;\n});\n"]}
@@ -1,7 +0,0 @@
1
- import { Effect } from 'effect';
2
- import { CurrentAppInfo } from '../context/currentApp.js';
3
- import { ProjectInfo } from '../context/projectInfo.js';
4
- import { GlobalOpts } from '../context/globalOpts.js';
5
- import { FileSystem, Path } from '@effect/platform';
6
- export declare const handleEnv: (app: CurrentAppInfo) => Effect.Effect<void, import("@effect/platform/Error").PlatformError | import("effect/ConfigError").ConfigError, GlobalOpts | ProjectInfo | FileSystem.FileSystem | Path.Path>;
7
- //# sourceMappingURL=handleEnv.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleEnv.d.ts","sourceRoot":"","sources":["../../../src/new/lib/handleEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAoB,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAMpD,eAAO,MAAM,SAAS,uMAmDpB,CAAC"}
@@ -1,88 +0,0 @@
1
- import { Effect } from 'effect';
2
- import { potentialEnvs } from '../context/currentApp.js';
3
- import { ProjectInfo, ProjectInfoError } from '../context/projectInfo.js';
4
- import { readPackage } from 'pkg-types';
5
- import { GlobalOpts } from '../context/globalOpts.js';
6
- import { FileSystem, Path } from '@effect/platform';
7
- import chalk from 'chalk';
8
- import terminalLink from 'terminal-link';
9
- import { getDashUrl } from './http.js';
10
- import { promptOk } from './ui.js';
11
- export const handleEnv = Effect.fn(function* (app) {
12
- const opts = yield* GlobalOpts;
13
- const { pkgDir } = yield* ProjectInfo;
14
- const envType = yield* detectEnvType;
15
- const envName = potentialEnvs[envType];
16
- const envFile = opts.env ?? '.env';
17
- const fs = yield* FileSystem.FileSystem;
18
- const path = yield* Path.Path;
19
- const hasEnvFile = yield* fs.exists(path.join(pkgDir, envFile));
20
- const dashOrigin = yield* getDashUrl;
21
- if (hasEnvFile) {
22
- return printDotEnvInfo(envType, app.appId, dashOrigin);
23
- }
24
- console.log(`\nLooks like you don't have a ${chalk.green(`\`${envFile}\``)} file yet.`);
25
- console.log(`If we set ${chalk.green(envName)} & ${chalk.green('INSTANT_APP_ADMIN_TOKEN')}, we can remember the app that you chose for all future commands.`);
26
- const saveExtraInfo = envFile !== '.env' ? chalk.green(' (will create `' + envFile + '`)') : '';
27
- const ok = yield* promptOk({
28
- inline: true,
29
- promptText: 'Want us to create this env file for you?' + saveExtraInfo,
30
- modifyOutput: (a) => a,
31
- }, true);
32
- if (!ok) {
33
- console.log(`No .env file created. You can always set ${chalk.green('`' + envName + '`')} later. \n`);
34
- return;
35
- }
36
- const content = [
37
- [envName, app.appId],
38
- ['INSTANT_APP_ADMIN_TOKEN', app.adminToken],
39
- ]
40
- .map(([k, v]) => `${k}=${v}`)
41
- .join('\n') + '\n';
42
- yield* fs.writeFileString(path.join(pkgDir, envFile), content);
43
- if (envFile !== '.env') {
44
- console.log(`Created ${chalk.green(envFile)}!`);
45
- }
46
- else {
47
- console.log(`Created ${chalk.green('.env')} file!`);
48
- }
49
- });
50
- const detectEnvType = Effect.gen(function* () {
51
- const pkgJson = yield* Effect.tryPromise({
52
- try: () => readPackage(),
53
- catch: () => new ProjectInfoError({ message: "Couldn't read package.json" }),
54
- });
55
- if (pkgJson.dependencies?.next) {
56
- return 'next';
57
- }
58
- if (pkgJson.devDependencies?.svelte) {
59
- return 'svelte';
60
- }
61
- if (pkgJson.devDependencies?.vite) {
62
- return 'vite';
63
- }
64
- if (pkgJson.dependencies?.expo) {
65
- return 'expo';
66
- }
67
- if (pkgJson.dependencies?.nuxt) {
68
- return 'nuxt';
69
- }
70
- return 'catchall';
71
- }).pipe(Effect.catchTag('ProjectInfoError', () => Effect.succeed('catchall')));
72
- function printDotEnvInfo(envType, appId, dashOrigin) {
73
- console.log(`\nPicked app ${chalk.green(appId)}!\n`);
74
- console.log(`To use this app automatically from now on, update your ${chalk.green('`.env`')} file:`);
75
- const picked = potentialEnvs[envType];
76
- const rest = { ...potentialEnvs };
77
- delete rest[envType];
78
- console.log(` ${chalk.green(picked)}=${appId}`);
79
- const otherEnvs = Object.values(rest);
80
- otherEnvs.sort();
81
- const otherEnvStr = otherEnvs.map((x) => ' ' + chalk.green(x)).join('\n');
82
- console.log(`Alternative names: \n${otherEnvStr} \n`);
83
- console.log(terminalLink('Dashboard:', appDashUrl(appId, dashOrigin)) + '\n');
84
- }
85
- function appDashUrl(id, instantOrigin) {
86
- return `${instantOrigin}/dash?s=main&t=home&app=${id}`;
87
- }
88
- //# sourceMappingURL=handleEnv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleEnv.js","sourceRoot":"","sources":["../../../src/new/lib/handleEnv.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from 'effect';\nimport { CurrentAppInfo, potentialEnvs } from '../context/currentApp.js';\nimport { ProjectInfo, ProjectInfoError } from '../context/projectInfo.js';\nimport { readPackage } from 'pkg-types';\nimport { GlobalOpts } from '../context/globalOpts.js';\nimport { FileSystem, Path } from '@effect/platform';\nimport chalk from 'chalk';\nimport terminalLink from 'terminal-link';\nimport { getDashUrl } from './http.js';\nimport { promptOk } from './ui.js';\n\nexport const handleEnv = Effect.fn(function* (app: CurrentAppInfo) {\n const opts = yield* GlobalOpts;\n const { pkgDir } = yield* ProjectInfo;\n const envType = yield* detectEnvType;\n const envName = potentialEnvs[envType];\n const envFile = opts.env ?? '.env';\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n const hasEnvFile = yield* fs.exists(path.join(pkgDir, envFile));\n const dashOrigin = yield* getDashUrl;\n if (hasEnvFile) {\n return printDotEnvInfo(envType, app.appId, dashOrigin);\n }\n console.log(\n `\\nLooks like you don't have a ${chalk.green(`\\`${envFile}\\``)} file yet.`,\n );\n console.log(\n `If we set ${chalk.green(envName)} & ${chalk.green('INSTANT_APP_ADMIN_TOKEN')}, we can remember the app that you chose for all future commands.`,\n );\n const saveExtraInfo =\n envFile !== '.env' ? chalk.green(' (will create `' + envFile + '`)') : '';\n\n const ok = yield* promptOk(\n {\n inline: true,\n promptText: 'Want us to create this env file for you?' + saveExtraInfo,\n modifyOutput: (a) => a,\n },\n true,\n );\n if (!ok) {\n console.log(\n `No .env file created. You can always set ${chalk.green('`' + envName + '`')} later. \\n`,\n );\n return;\n }\n const content =\n [\n [envName, app.appId],\n ['INSTANT_APP_ADMIN_TOKEN', app.adminToken],\n ]\n .map(([k, v]) => `${k}=${v}`)\n .join('\\n') + '\\n';\n\n yield* fs.writeFileString(path.join(pkgDir, envFile), content);\n\n if (envFile !== '.env') {\n console.log(`Created ${chalk.green(envFile)}!`);\n } else {\n console.log(`Created ${chalk.green('.env')} file!`);\n }\n});\n\nconst detectEnvType = Effect.gen(function* () {\n const pkgJson = yield* Effect.tryPromise({\n try: () => readPackage(),\n catch: () =>\n new ProjectInfoError({ message: \"Couldn't read package.json\" }),\n });\n if (pkgJson.dependencies?.next) {\n return 'next';\n }\n if (pkgJson.devDependencies?.svelte) {\n return 'svelte';\n }\n if (pkgJson.devDependencies?.vite) {\n return 'vite';\n }\n if (pkgJson.dependencies?.expo) {\n return 'expo';\n }\n if (pkgJson.dependencies?.nuxt) {\n return 'nuxt';\n }\n return 'catchall';\n}).pipe(Effect.catchTag('ProjectInfoError', () => Effect.succeed('catchall')));\n\nfunction printDotEnvInfo(envType, appId, dashOrigin: string) {\n console.log(`\\nPicked app ${chalk.green(appId)}!\\n`);\n console.log(\n `To use this app automatically from now on, update your ${chalk.green('`.env`')} file:`,\n );\n const picked = potentialEnvs[envType];\n const rest = { ...potentialEnvs };\n delete rest[envType];\n console.log(` ${chalk.green(picked)}=${appId}`);\n const otherEnvs = Object.values(rest);\n otherEnvs.sort();\n const otherEnvStr = otherEnvs.map((x) => ' ' + chalk.green(x)).join('\\n');\n console.log(`Alternative names: \\n${otherEnvStr} \\n`);\n console.log(terminalLink('Dashboard:', appDashUrl(appId, dashOrigin)) + '\\n');\n}\n\nfunction appDashUrl(id, instantOrigin: string) {\n return `${instantOrigin}/dash?s=main&t=home&app=${id}`;\n}\n"]}
@@ -1,15 +0,0 @@
1
- import { HttpClient } from '@effect/platform';
2
- import { Context, Effect, Layer } from 'effect';
3
- import { AuthToken } from '../context/authToken.js';
4
- declare const InstantHttp_base: Context.TagClass<InstantHttp, "instant-cli/new/lib/http/InstantHttp", HttpClient.HttpClient>;
5
- export declare class InstantHttp extends InstantHttp_base {
6
- }
7
- declare const InstantHttpAuthed_base: Context.TagClass<InstantHttpAuthed, "instant-cli/new/lib/http/InstantHttpAuthed", HttpClient.HttpClient>;
8
- export declare class InstantHttpAuthed extends InstantHttpAuthed_base {
9
- }
10
- export declare const InstantHttpLive: Layer.Layer<InstantHttp, import("effect/ConfigError").ConfigError, HttpClient.HttpClient>;
11
- export declare const InstantHttpAuthedLive: Layer.Layer<InstantHttpAuthed, never, InstantHttp | AuthToken>;
12
- export declare const getBaseUrl: Effect.Effect<string, import("effect/ConfigError").ConfigError, never>;
13
- export declare const getDashUrl: Effect.Effect<"http://localhost:3000" | "https://instantdb.com", import("effect/ConfigError").ConfigError, never>;
14
- export {};
15
- //# sourceMappingURL=http.d.ts.map