@effect-app/cli 1.24.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/gist.d.ts +231 -0
  3. package/dist/gist.d.ts.map +1 -0
  4. package/dist/gist.js +447 -0
  5. package/dist/index.js +35 -65
  6. package/dist/os-command.d.ts +18 -0
  7. package/dist/os-command.d.ts.map +1 -0
  8. package/dist/os-command.js +47 -0
  9. package/package.json +12 -18
  10. package/src/gist.ts +615 -0
  11. package/src/index.ts +50 -73
  12. package/src/os-command.ts +63 -0
  13. package/test.gists.yaml +20 -0
  14. package/dist/link.d.ts +0 -2
  15. package/dist/link.d.ts.map +0 -1
  16. package/dist/link.js +0 -17
  17. package/dist/old.d.ts +0 -2
  18. package/dist/old.d.ts.map +0 -1
  19. package/dist/old.js +0 -246
  20. package/dist/sync.d.ts +0 -2
  21. package/dist/sync.d.ts.map +0 -1
  22. package/dist/sync.js +0 -16
  23. package/dist/unlink.d.ts +0 -2
  24. package/dist/unlink.d.ts.map +0 -1
  25. package/dist/unlink.js +0 -13
  26. package/src/link.ts +0 -20
  27. package/src/old.ts +0 -283
  28. package/src/sync.ts +0 -17
  29. package/src/unlink.ts +0 -14
  30. package/vitest.config.ts.timestamp-1709838404819-f2fb28517168c.mjs +0 -33
  31. package/vitest.config.ts.timestamp-1709838418683-9c399c96f9d78.mjs +0 -33
  32. package/vitest.config.ts.timestamp-1709838649058-0e8f9431c893d.mjs +0 -33
  33. package/vitest.config.ts.timestamp-1711724061889-4985ba59def8.mjs +0 -37
  34. package/vitest.config.ts.timestamp-1711743471019-3c5e0c6ca2188.mjs +0 -37
  35. package/vitest.config.ts.timestamp-1711743489536-5ca18d3f67759.mjs +0 -37
  36. package/vitest.config.ts.timestamp-1711743593444-e40a8dcd4fc31.mjs +0 -37
  37. package/vitest.config.ts.timestamp-1711744615239-6a156fd39b9c9.mjs +0 -37
package/src/index.ts CHANGED
@@ -2,13 +2,15 @@
2
2
  /* eslint-disable no-empty-pattern */
3
3
  // import necessary modules from the libraries
4
4
  import { Args, Command, Options, Prompt } from "@effect/cli"
5
- import { Command as NodeCommand, FileSystem, Path } from "@effect/platform"
5
+ import { FileSystem, Path } from "@effect/platform"
6
6
  import { NodeContext, NodeRuntime } from "@effect/platform-node"
7
7
 
8
8
  import { type CommandExecutor } from "@effect/platform/CommandExecutor"
9
9
  import { type PlatformError } from "@effect/platform/Error"
10
- import { Effect, identity, Option, Stream, type Types } from "effect"
10
+ import { Effect, Layer, Option, Stream, type Types } from "effect"
11
11
  import { ExtractExportMappingsService } from "./extract.js"
12
+ import { GistHandler } from "./gist.js"
13
+ import { RunCommandService } from "./os-command.js"
12
14
  import { packages } from "./shared.js"
13
15
 
14
16
  Effect
@@ -16,61 +18,10 @@ Effect
16
18
  const fs = yield* FileSystem.FileSystem
17
19
  const path = yield* Path.Path
18
20
  const extractExportMappings = yield* ExtractExportMappingsService
21
+ const { runGetExitCode } = yield* RunCommandService
19
22
 
20
23
  yield* Effect.addFinalizer(() => Effect.logInfo(`CLI has finished executing`))
21
24
 
22
- /**
23
- * Executes a shell command using Node.js Command API with inherited stdio streams.
24
- * The command is run through the system shell (/bin/sh) for proper command parsing.
25
- *
26
- * @param cmd - The shell command to execute
27
- * @param cwd - Optional working directory to execute the command in
28
- * @returns An Effect that succeeds with the exit code or fails with a PlatformError
29
- */
30
- const runNodeCommandEC = (cmd: string, cwd?: string) =>
31
- NodeCommand
32
- .make("sh", "-c", cmd)
33
- .pipe(
34
- NodeCommand.stdout("inherit"),
35
- NodeCommand.stderr("inherit"),
36
- cwd ? NodeCommand.workingDirectory(cwd) : identity,
37
- NodeCommand.exitCode
38
- )
39
-
40
- // /**
41
- // * Executes a shell command using Node.js Command API and captures output as string.
42
- // * The command is run through the system shell (/bin/sh) for proper command parsing.
43
- // *
44
- // * @param cmd - The shell command to execute
45
- // * @param cwd - Optional working directory to execute the command in
46
- // * @returns An Effect that succeeds with the command output or fails with a PlatformError
47
- // */
48
- // const runNodeCommand = (cmd: string, cwd?: string) =>
49
- // NodeCommand
50
- // .make("sh", "-c", cmd)
51
- // .pipe(
52
- // cwd ? NodeCommand.workingDirectory(cwd) : identity,
53
- // NodeCommand.string
54
- // )
55
-
56
- /**
57
- * Executes a bash script file using Node.js Command API with inherited stdio streams.
58
- * The script file is executed directly through the shell (/bin/sh).
59
- *
60
- * @param file - The path to the bash script file to execute
61
- * @param cwd - Optional working directory to execute the script in
62
- * @returns An Effect that succeeds with the output or fails with a PlatformError
63
- */
64
- // const runBashFile = (file: string, cwd?: string) =>
65
- // NodeCommand
66
- // .make("sh", file)
67
- // .pipe(
68
- // NodeCommand.stdout("inherit"),
69
- // NodeCommand.stderr("inherit"),
70
- // cwd ? NodeCommand.workingDirectory(cwd) : identity,
71
- // NodeCommand.string
72
- // )
73
-
74
25
  /**
75
26
  * Updates effect-app packages to their latest versions using npm-check-updates.
76
27
  * Runs both at workspace root and recursively in all workspace packages.
@@ -78,8 +29,8 @@ Effect
78
29
  const updateEffectAppPackages = Effect.fn("effa-cli.ue.updateEffectAppPackages")(function*() {
79
30
  const filters = ["effect-app", "@effect-app/*"]
80
31
  for (const filter of filters) {
81
- yield* runNodeCommandEC(`pnpm exec ncu -u --filter "${filter}"`)
82
- yield* runNodeCommandEC(`pnpm -r exec ncu -u --filter "${filter}"`)
32
+ yield* runGetExitCode(`pnpm exec ncu -u --filter "${filter}"`)
33
+ yield* runGetExitCode(`pnpm -r exec ncu -u --filter "${filter}"`)
83
34
  }
84
35
  })()
85
36
 
@@ -91,8 +42,8 @@ Effect
91
42
  const updateEffectPackages = Effect.fn("effa-cli.ue.updateEffectPackages")(function*() {
92
43
  const effectFilters = ["effect", "@effect/*", "@effect-atom/*"]
93
44
  for (const filter of effectFilters) {
94
- yield* runNodeCommandEC(`pnpm exec ncu -u --filter "${filter}"`)
95
- yield* runNodeCommandEC(`pnpm -r exec ncu -u --filter "${filter}"`)
45
+ yield* runGetExitCode(`pnpm exec ncu -u --filter "${filter}"`)
46
+ yield* runGetExitCode(`pnpm -r exec ncu -u --filter "${filter}"`)
96
47
  }
97
48
  })()
98
49
 
@@ -121,8 +72,8 @@ Effect
121
72
  yield* Effect.logInfo(`Excluding packages from update: ${allRejects.join(", ")}`)
122
73
  const rejectArgs = allRejects.map((filter) => `--reject "${filter}"`).join(" ")
123
74
 
124
- yield* runNodeCommandEC(`pnpm exec ncu -u ${rejectArgs}`)
125
- yield* runNodeCommandEC(`pnpm -r exec ncu -u ${rejectArgs}`)
75
+ yield* runGetExitCode(`pnpm exec ncu -u ${rejectArgs}`)
76
+ yield* runGetExitCode(`pnpm -r exec ncu -u ${rejectArgs}`)
126
77
  })()
127
78
 
128
79
  /**
@@ -156,7 +107,7 @@ Effect
156
107
  yield* fs.writeFileString(packageJsonPath, JSON.stringify(pj, null, 2))
157
108
  yield* Effect.logInfo("Updated package.json with local file resolutions")
158
109
 
159
- yield* runNodeCommandEC("pnpm i")
110
+ yield* runGetExitCode("pnpm i")
160
111
 
161
112
  yield* Effect.logInfo("Successfully linked local packages")
162
113
  })
@@ -189,7 +140,7 @@ Effect
189
140
  yield* fs.writeFileString(packageJsonPath, JSON.stringify(pj, null, 2))
190
141
  yield* Effect.logInfo("Removed effect-app file resolutions from package.json")
191
142
 
192
- yield* runNodeCommandEC("pnpm i")
143
+ yield* runGetExitCode("pnpm i")
193
144
  yield* Effect.logInfo("Successfully unlinked local packages")
194
145
  })()
195
146
 
@@ -236,7 +187,7 @@ Effect
236
187
  )
237
188
 
238
189
  const eslintArgs = existingFiles.map((f) => `"../${f}"`).join(" ")
239
- yield* runNodeCommandEC(`cd api && pnpm eslint --fix ${eslintArgs}`)
190
+ yield* runGetExitCode(`cd api && pnpm eslint --fix ${eslintArgs}`)
240
191
  break
241
192
  }
242
193
  i++
@@ -276,7 +227,7 @@ Effect
276
227
 
277
228
  yield* Effect.logInfo(`Root change detected: ${event.path}, fixing: ${indexFile}`)
278
229
 
279
- yield* runNodeCommandEC(`pnpm eslint --fix "${indexFile}"`)
230
+ yield* runGetExitCode(`pnpm eslint --fix "${indexFile}"`)
280
231
  })
281
232
  )
282
233
  )
@@ -499,7 +450,7 @@ Effect
499
450
  : wrapOption.value
500
451
 
501
452
  yield* Effect.logInfo(`Spawning child command: ${val}`)
502
- yield* runNodeCommandEC(val)
453
+ yield* runGetExitCode(val)
503
454
  }
504
455
 
505
456
  return
@@ -567,17 +518,17 @@ Effect
567
518
  switch (prompted) {
568
519
  case "effect-app":
569
520
  return yield* updateEffectAppPackages.pipe(
570
- Effect.andThen(runNodeCommandEC("pnpm i"))
521
+ Effect.andThen(runGetExitCode("pnpm i"))
571
522
  )
572
523
 
573
524
  case "effect":
574
525
  return yield* updateEffectPackages.pipe(
575
- Effect.andThen(runNodeCommandEC("pnpm i"))
526
+ Effect.andThen(runGetExitCode("pnpm i"))
576
527
  )
577
528
  case "both":
578
529
  return yield* updateEffectPackages.pipe(
579
530
  Effect.andThen(updateEffectAppPackages),
580
- Effect.andThen(runNodeCommandEC("pnpm i"))
531
+ Effect.andThen(runGetExitCode("pnpm i"))
581
532
  )
582
533
  }
583
534
  })
@@ -592,7 +543,7 @@ Effect
592
543
  yield* Effect.logInfo("Updating all packages except Effect/Effect-App ecosystem packages...")
593
544
 
594
545
  return yield* updatePackages.pipe(
595
- Effect.andThen(runNodeCommandEC("pnpm i"))
546
+ Effect.andThen(runGetExitCode("pnpm i"))
596
547
  )
597
548
  })
598
549
  )
@@ -698,6 +649,23 @@ Effect
698
649
  Command.withDescription("Generate and update package.json exports mappings for all packages in monorepo")
699
650
  )
700
651
 
652
+ const gist = Command
653
+ .make(
654
+ "gist",
655
+ {
656
+ config: Options.file("config").pipe(
657
+ Options.withDefault("gists.yaml"),
658
+ Options.withDescription("Path to YAML configuration file")
659
+ )
660
+ },
661
+ Effect.fn("effa-cli.gist")(function*({ config }) {
662
+ return yield* GistHandler.handler({
663
+ YAMLPath: config
664
+ })
665
+ })
666
+ )
667
+ .pipe(Command.withDescription("Create GitHub gists from files specified in YAML configuration"))
668
+
701
669
  const nuke = Command
702
670
  .make(
703
671
  "nuke",
@@ -713,16 +681,16 @@ Effect
713
681
  yield* Effect.logInfo(dryRun ? "Performing dry run cleanup..." : "Performing nuclear cleanup...")
714
682
 
715
683
  if (dryRun) {
716
- yield* runNodeCommandEC(
684
+ yield* runGetExitCode(
717
685
  "find . -depth \\( -type d \\( -name 'node_modules' -o -name '.nuxt' -o -name 'dist' -o -name '.output' -o -name '.nitro' -o -name '.cache' -o -name 'test-results' -o -name 'test-out' -o -name 'coverage' \\) -print \\) -o \\( -type f \\( -name '*.log' -o -name '*.tsbuildinfo' \\) -print \\)"
718
686
  )
719
687
  } else {
720
- yield* runNodeCommandEC(
688
+ yield* runGetExitCode(
721
689
  "find . -depth \\( -type d \\( -name 'node_modules' -o -name '.nuxt' -o -name 'dist' -o -name '.output' -o -name '.nitro' -o -name '.cache' -o -name 'test-results' -o -name 'test-out' -o -name 'coverage' \\) -exec rm -rf -- {} + \\) -o \\( -type f \\( -name '*.log' -o -name '*.tsbuildinfo' \\) -delete \\)"
722
690
  )
723
691
 
724
692
  if (storePrune) {
725
- yield* runNodeCommandEC(
693
+ yield* runGetExitCode(
726
694
  "pnpm store prune"
727
695
  )
728
696
  }
@@ -745,6 +713,7 @@ Effect
745
713
  indexMulti,
746
714
  packagejson,
747
715
  packagejsonPackages,
716
+ gist,
748
717
  nuke
749
718
  ])),
750
719
  {
@@ -757,6 +726,14 @@ Effect
757
726
  })()
758
727
  .pipe(
759
728
  Effect.scoped,
760
- Effect.provide(NodeContext.layer),
729
+ Effect.provide(
730
+ Layer.provideMerge(
731
+ Layer.merge(
732
+ GistHandler.Default,
733
+ RunCommandService.Default
734
+ ),
735
+ NodeContext.layer
736
+ )
737
+ ),
761
738
  NodeRuntime.runMain
762
739
  )
@@ -0,0 +1,63 @@
1
+ /* eslint-disable no-constant-binary-expression */
2
+ /* eslint-disable no-empty-pattern */
3
+ // import necessary modules from the libraries
4
+ import { Command } from "@effect/platform"
5
+
6
+ import { CommandExecutor } from "@effect/platform/CommandExecutor"
7
+ import { Effect, identity } from "effect"
8
+
9
+ /**
10
+ * Service for executing shell commands using the Effect platform's Command API.
11
+ * Provides methods to run shell commands with different output handling strategies.
12
+ * All commands are executed through the system shell (/bin/sh) for proper command parsing.
13
+ */
14
+ // @effect-diagnostics-next-line missingEffectServiceDependency:off
15
+ export class RunCommandService extends Effect.Service<RunCommandService>()("RunCommandService", {
16
+ dependencies: [],
17
+ effect: Effect.gen(function*() {
18
+ // will be provided by the main CLI pipeline setup
19
+ const commandExecutor = yield* CommandExecutor
20
+
21
+ /**
22
+ * Executes a shell command using Command API with inherited stdio streams.
23
+ * The command is rn through the system shell (/bin/sh) for proper command parsing.
24
+ *
25
+ * @param cmd - The shell command to execute
26
+ * @param cwd - Optional working directory to execute the command in
27
+ * @returns An Effect that succeeds with the exit code or fails with a PlatformError
28
+ */
29
+ const runGetExitCode = (cmd: string, cwd?: string) =>
30
+ Command
31
+ .make("sh", "-c", cmd)
32
+ .pipe(
33
+ Command.stdout("inherit"),
34
+ Command.stderr("inherit"),
35
+ cwd ? Command.workingDirectory(cwd) : identity,
36
+ Command.exitCode,
37
+ Effect.provideService(CommandExecutor, commandExecutor)
38
+ )
39
+
40
+ /**
41
+ * Executes a shell command using Command API and returns the output as a string.
42
+ * The command is run through the system shell (/bin/sh) for proper command parsing.
43
+ *
44
+ * @param cmd - The shell command to execute
45
+ * @param cwd - Optional working directory to execute the command in
46
+ * @returns An Effect that succeeds with the command's stdout output as string or fails with a PlatformError
47
+ */
48
+ const runGetString = (cmd: string, cwd?: string) =>
49
+ Command
50
+ .make("sh", "-c", cmd)
51
+ .pipe(
52
+ cwd ? Command.workingDirectory(cwd) : identity,
53
+ Command.string,
54
+ Effect.provideService(CommandExecutor, commandExecutor)
55
+ )
56
+
57
+ return {
58
+ runGetExitCode,
59
+ runGetString
60
+ }
61
+ })
62
+ }) {
63
+ }
@@ -0,0 +1,20 @@
1
+ gists:
2
+ "cli-config":
3
+ description: "Package configuration and main source for Effect-App CLI"
4
+ public: false
5
+ files:
6
+ - "package.json"
7
+ - "packages/cli/src/index.ts"
8
+
9
+ "test-files":
10
+ description: "Test YAML files for gist functionality"
11
+ public: false
12
+ files:
13
+ - "gists.yaml"
14
+
15
+ settings:
16
+ # GitHub token environment variable name
17
+ token_env: "GIST_GITHUB_TOKEN"
18
+
19
+ # Base directory for files (relative to where the CLI is run)
20
+ base_directory: "."
package/dist/link.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=link.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":""}
package/dist/link.js DELETED
@@ -1,17 +0,0 @@
1
- import cp from "child_process";
2
- import fs from "fs";
3
- import { EFFECT_APP_LIBS, packages } from "./shared.js";
4
- const pj = (await import(process.cwd() + "/package.json", { with: { type: "json" } })).default;
5
- pj.resolutions = {
6
- ...pj.resolutions,
7
- "@effect-app/eslint-codegen-model": "file:" + EFFECT_APP_LIBS + "/packages/eslint-codegen-model",
8
- "effect-app": "file:" + EFFECT_APP_LIBS + "/packages/effect-app",
9
- "@effect-app/infra": "file:" + EFFECT_APP_LIBS + "/packages/infra",
10
- "@effect-app/vue": "file:" + EFFECT_APP_LIBS + "/packages/vue",
11
- "@effect-app/vue-components": "file:" + EFFECT_APP_LIBS + "/packages/vue-components",
12
- // TODO: with hard links why would this be needed?
13
- ...packages.reduce((acc, p) => ({ ...acc, [p]: `file:${EFFECT_APP_LIBS}/node_modules/${p}` }), {})
14
- };
15
- fs.writeFileSync("./package.json", JSON.stringify(pj, null, 2));
16
- cp.execSync("pnpm i", { stdio: "inherit" });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFdkQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtBQUU5RixFQUFFLENBQUMsV0FBVyxHQUFHO0lBQ2YsR0FBRyxFQUFFLENBQUMsV0FBVztJQUNqQixrQ0FBa0MsRUFBRSxPQUFPLEdBQUcsZUFBZSxHQUFHLGdDQUFnQztJQUNoRyxZQUFZLEVBQUUsT0FBTyxHQUFHLGVBQWUsR0FBRyxzQkFBc0I7SUFDaEUsbUJBQW1CLEVBQUUsT0FBTyxHQUFHLGVBQWUsR0FBRyxpQkFBaUI7SUFDbEUsaUJBQWlCLEVBQUUsT0FBTyxHQUFHLGVBQWUsR0FBRyxlQUFlO0lBQzlELDRCQUE0QixFQUFFLE9BQU8sR0FBRyxlQUFlLEdBQUcsMEJBQTBCO0lBQ3BGLGtEQUFrRDtJQUNsRCxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLGVBQWUsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Q0FDbkcsQ0FBQTtBQUVELEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFL0QsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQSJ9
package/dist/old.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=old.d.ts.map
package/dist/old.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"old.d.ts","sourceRoot":"","sources":["../src/old.ts"],"names":[],"mappings":""}
package/dist/old.js DELETED
@@ -1,246 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
3
- import cp from "child_process";
4
- import fs from "fs";
5
- import w from "node-watch";
6
- import path from "path";
7
- import readline from "readline/promises";
8
- import { sync } from "./sync.js";
9
- function askQuestion(query) {
10
- const rl = readline.createInterface({
11
- input: process.stdin,
12
- output: process.stdout
13
- });
14
- return rl.question(query);
15
- }
16
- const _cmd = process.argv[2];
17
- const supportedCommands = [
18
- "watch",
19
- "index",
20
- "index-multi",
21
- "packagejson",
22
- "packagejson-target",
23
- "packagejson-packages",
24
- "link",
25
- "unlink",
26
- "sync",
27
- "ncu:effect",
28
- "ncu:effect-app"
29
- ];
30
- if (!supportedCommands.includes(_cmd)) {
31
- console.log("unknown command: ", _cmd, "supported commands: ", supportedCommands.join(", "));
32
- process.exit(1);
33
- }
34
- const cmd = _cmd;
35
- const debug = process.argv.includes("--debug");
36
- function touch(path) {
37
- const time = new Date();
38
- try {
39
- fs.utimesSync(path, time, time);
40
- }
41
- catch (err) {
42
- fs.closeSync(fs.openSync(path, "w"));
43
- }
44
- }
45
- function* monitorIndexes_(path) {
46
- yield monitorChildIndexes(path);
47
- const indexFile = path + "/index.ts";
48
- if (fs.existsSync(indexFile)) {
49
- yield monitorRootIndexes(path, indexFile);
50
- }
51
- }
52
- function monitorIndexes(path) {
53
- return [...monitorIndexes_(path)];
54
- }
55
- function monitorChildIndexes(path) {
56
- return w.default(path, { recursive: true }, (evt, path) => {
57
- const pathParts = path.split("/");
58
- const isController = pathParts[pathParts.length - 1]?.toLowerCase().includes(".controllers.");
59
- if (!isController)
60
- return;
61
- let i = 1;
62
- const r = pathParts.toReversed();
63
- while (i < r.length) {
64
- const files = ["controllers.ts", "routes.ts"]
65
- .map((f) => [...pathParts.slice(0, pathParts.length - i), f].join("/"))
66
- .filter((f) => fs.existsSync(f));
67
- if (files.length) {
68
- if (debug) {
69
- console.log("change!", evt, path, files);
70
- }
71
- cp.execSync(`cd api && pnpm eslint --fix ${files.map((_) => `"../${_}"`).join(" ")}`);
72
- break;
73
- }
74
- i++;
75
- }
76
- });
77
- }
78
- function monitorRootIndexes(path, indexFile) {
79
- return w.default(path, (_, path) => {
80
- if (path.endsWith(indexFile))
81
- return;
82
- // const dirName = pathParts[pathParts.length - 2]!
83
- // console.log("change!", evt, path, dirName, indexFile)
84
- cp.execSync(`pnpm eslint --fix "${indexFile}"`);
85
- });
86
- }
87
- // TODO: cache, don't do things when it already existed before, so only file is updated, not created.
88
- const startDir = process.cwd();
89
- function packagejson(p, levels = 0) {
90
- const curDir = process.cwd();
91
- let r = "";
92
- // TODO: no chdir!
93
- try {
94
- process.chdir(path.resolve(startDir, p));
95
- r = cp.execSync(`sh ${p === "." ? "../.." : startDir}/scripts/extract.sh`, { encoding: "utf-8" });
96
- }
97
- finally {
98
- process.chdir(curDir);
99
- }
100
- const s = r.split("\n").sort((a, b) => a < b ? -1 : 1).join("\n");
101
- const items = JSON.parse(`{${s.substring(0, s.length - 1)} }`);
102
- const pkg = JSON.parse(fs.readFileSync(p + "/package.json", "utf-8"));
103
- const t = levels
104
- ? Object
105
- .keys(items)
106
- .filter((_) => _.split("/").length <= (levels + 1 /* `./` */))
107
- .reduce((prev, cur) => {
108
- prev[cur] = items[cur];
109
- return prev;
110
- }, {})
111
- : items;
112
- const exps = {
113
- ...(fs.existsSync(p + "/src/index.ts")
114
- ? {
115
- ".": {
116
- "types": "./dist/index.d.ts",
117
- "default": "./dist/index.js"
118
- }
119
- }
120
- : undefined),
121
- ...Object
122
- .keys(t)
123
- .reduce((prev, cur) => {
124
- if (cur !== "./index" && !cur.includes("/internal/"))
125
- prev[cur] = t[cur];
126
- return prev;
127
- }, {})
128
- // ...pkg.name === "effect-app" ? {
129
- // "./types/awesome": { "types": "./types/awesome.d.ts" }
130
- // } : {},
131
- };
132
- pkg.exports = exps;
133
- fs.writeFileSync(p + "/package.json", JSON.stringify(pkg, null, 2));
134
- }
135
- function monitorPackagejson(path, levels = 0) {
136
- packagejson(path, levels);
137
- w.default(path + "/src", { recursive: true }, (_, __) => {
138
- packagejson(path, levels);
139
- });
140
- }
141
- function updateEffectAppPackages() {
142
- const filters = ["effect-app", "@effect-app/*"];
143
- for (const filter of filters) {
144
- cp.execSync(`pnpm exec ncu -u --filter "${filter}"`, { stdio: "inherit" });
145
- cp.execSync(`pnpm -r exec ncu -u --filter "${filter}"`, { stdio: "inherit" });
146
- }
147
- }
148
- function updateEffectPackages() {
149
- const effectFilters = ["effect", "@effect/*", "@effect-atom/*"];
150
- for (const filter of effectFilters) {
151
- cp.execSync(`pnpm exec ncu -u --filter "${filter}"`, { stdio: "inherit" });
152
- cp.execSync(`pnpm -r exec ncu -u --filter "${filter}"`, { stdio: "inherit" });
153
- }
154
- updateEffectAppPackages();
155
- }
156
- ;
157
- (async () => {
158
- let cmds = process.argv.slice(3).filter((_) => _ !== "--debug");
159
- switch (cmd) {
160
- case "link":
161
- await import("./link.js");
162
- break;
163
- case "unlink":
164
- await import("./unlink.js");
165
- break;
166
- case "watch": {
167
- const dirs = ["../api/src/resources", "../api/src/models"];
168
- const viteConfigFile = "./vite.config.ts";
169
- const viteConfigExists = fs.existsSync(viteConfigFile);
170
- dirs.forEach((d) => {
171
- if (fs.existsSync(d)) {
172
- const files = [];
173
- w.default(d, { recursive: true }, (t, f) => {
174
- // console.log("change!", d)
175
- touch("./tsconfig.json");
176
- if (viteConfigExists && t === "update" && !files.includes(f)) {
177
- // TODO: only on new files
178
- touch(viteConfigFile);
179
- files.push(f);
180
- }
181
- });
182
- }
183
- });
184
- break;
185
- }
186
- case "index-multi": {
187
- ;
188
- [
189
- "./api/src"
190
- ]
191
- .filter((_) => fs.existsSync(_))
192
- .forEach(monitorIndexes);
193
- break;
194
- }
195
- case "index": {
196
- monitorIndexes("./src");
197
- break;
198
- }
199
- case "packagejson": {
200
- monitorPackagejson(".");
201
- break;
202
- }
203
- case "packagejson-target": {
204
- const target = process.argv[3];
205
- target.split(",").forEach((_) => monitorPackagejson(_, 1));
206
- cmds = process.argv.slice(4);
207
- break;
208
- }
209
- case "packagejson-packages": {
210
- fs
211
- .readdirSync(startDir + "/packages")
212
- .map((_) => startDir + "/packages/" + _)
213
- .filter((_) => fs.existsSync(_ + "/package.json")
214
- && fs.existsSync(_ + "/src")
215
- && !_.endsWith("eslint-codegen-model")
216
- && !_.endsWith("vue-components"))
217
- .forEach((_) => monitorPackagejson(_));
218
- break;
219
- }
220
- case "sync": {
221
- console.log("Sync all snippets?");
222
- await askQuestion("Are you sure you want to sync snippets");
223
- await sync();
224
- return process.exit(0);
225
- }
226
- case "ncu:effect": {
227
- console.log("Updating effect & effect-app dependencies...");
228
- updateEffectPackages();
229
- cp.execSync("pnpm i", { stdio: "inherit" });
230
- break;
231
- }
232
- case "ncu:effect-app": {
233
- console.log("Updating effect-app dependencies...");
234
- updateEffectAppPackages();
235
- cp.execSync("pnpm i", { stdio: "inherit" });
236
- break;
237
- }
238
- }
239
- if (cmds.length) {
240
- const p = cp.spawn(cmds[0], cmds.slice(1), { stdio: "inherit" });
241
- p.on("close", (code) => process.exit(code ?? 0));
242
- p.on("exit", (code) => process.exit(code ?? 0));
243
- p.on("disconnect", () => process.exit(1));
244
- }
245
- })();
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2xkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL29sZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsMERBQTBEO0FBQzFELE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxDQUFDLE1BQU0sWUFBWSxDQUFBO0FBQzFCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRWhDLFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDaEMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQTtJQUVGLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMzQixDQUFDO0FBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUM1QixNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLE9BQU87SUFDUCxPQUFPO0lBQ1AsYUFBYTtJQUNiLGFBQWE7SUFDYixvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLE1BQU07SUFDTixRQUFRO0lBQ1IsTUFBTTtJQUNOLFlBQVk7SUFDWixnQkFBZ0I7Q0FDUixDQUFBO0FBQ1YsSUFDRSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFXLENBQUMsRUFDeEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzVGLE9BQU8sQ0FB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
package/dist/sync.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function sync(): Promise<void>;
2
- //# sourceMappingURL=sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AASA,wBAAsB,IAAI,kBAOzB"}
package/dist/sync.js DELETED
@@ -1,16 +0,0 @@
1
- import fs from "fs/promises";
2
- const baseUrl = `https://raw.githubusercontent.com/effect-app/boilerplate/refs/heads/main`;
3
- const vscode = `${baseUrl}/.vscode`;
4
- const snippets = [
5
- "model.code-snippets",
6
- "service.code-snippets"
7
- ];
8
- export async function sync() {
9
- await Promise.all(snippets.map(async (snippet) => {
10
- const url = `${vscode}/${snippet}`;
11
- const res = await fetch(url);
12
- const content = await res.text();
13
- await fs.writeFile(`.vscode/${snippet}`, content, "utf-8");
14
- }));
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUU1QixNQUFNLE9BQU8sR0FBRywwRUFBMEUsQ0FBQTtBQUMxRixNQUFNLE1BQU0sR0FBRyxHQUFHLE9BQU8sVUFBVSxDQUFBO0FBQ25DLE1BQU0sUUFBUSxHQUFHO0lBQ2YscUJBQXFCO0lBQ3JCLHVCQUF1QjtDQUN4QixDQUFBO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxJQUFJO0lBQ3hCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUMvQyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNoQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDNUQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNMLENBQUMifQ==
package/dist/unlink.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=unlink.d.ts.map