@ryanatkn/gro 0.134.0 → 0.135.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 (51) hide show
  1. package/dist/args.d.ts.map +1 -1
  2. package/dist/args.js +6 -2
  3. package/dist/changeset.task.js +3 -3
  4. package/dist/check.task.js +2 -2
  5. package/dist/deploy.task.d.ts +2 -2
  6. package/dist/deploy.task.d.ts.map +1 -1
  7. package/dist/deploy.task.js +7 -7
  8. package/dist/esbuild_helpers.js +3 -3
  9. package/dist/gen.js +3 -3
  10. package/dist/gen.task.d.ts.map +1 -1
  11. package/dist/gen.task.js +8 -8
  12. package/dist/gro_helpers.js +1 -1
  13. package/dist/invoke.js +3 -0
  14. package/dist/invoke_task.d.ts.map +1 -1
  15. package/dist/invoke_task.js +8 -8
  16. package/dist/package.js +15 -15
  17. package/dist/package_json.js +3 -3
  18. package/dist/paths.js +2 -2
  19. package/dist/publish.task.js +4 -4
  20. package/dist/resolve.task.js +3 -3
  21. package/dist/run.task.js +2 -2
  22. package/dist/run_gen.js +3 -3
  23. package/dist/run_task.d.ts.map +1 -1
  24. package/dist/run_task.js +6 -5
  25. package/dist/task.js +3 -3
  26. package/dist/task_logging.js +7 -7
  27. package/dist/test.task.js +2 -2
  28. package/dist/watch_dir.js +1 -1
  29. package/package.json +14 -14
  30. package/src/lib/args.ts +6 -2
  31. package/src/lib/changeset.task.ts +3 -3
  32. package/src/lib/check.task.ts +2 -2
  33. package/src/lib/deploy.task.ts +12 -7
  34. package/src/lib/esbuild_helpers.ts +3 -3
  35. package/src/lib/gen.task.ts +11 -9
  36. package/src/lib/gen.ts +3 -3
  37. package/src/lib/gro_helpers.ts +1 -1
  38. package/src/lib/invoke.ts +4 -0
  39. package/src/lib/invoke_task.ts +10 -8
  40. package/src/lib/package.ts +15 -15
  41. package/src/lib/package_json.ts +3 -3
  42. package/src/lib/paths.ts +2 -2
  43. package/src/lib/publish.task.ts +4 -4
  44. package/src/lib/resolve.task.ts +3 -3
  45. package/src/lib/run.task.ts +2 -2
  46. package/src/lib/run_gen.ts +3 -3
  47. package/src/lib/run_task.ts +8 -5
  48. package/src/lib/task.ts +3 -3
  49. package/src/lib/task_logging.ts +10 -10
  50. package/src/lib/test.task.ts +2 -2
  51. package/src/lib/watch_dir.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"../src/lib/","sources":["args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAE3B;;;;;;;;GAQG;AACH,MAAM,WAAW,IAAI;IACpB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEjG,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,GACtB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SACzC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,wBAEzB,MAAM,UACb,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,KAC9C,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAiBvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,SAAU,IAAI,KAAG,MAAM,EAuBjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,uBAA0B;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAMhF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uBAA0B,MAAM,EAG5D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,YACpB,MAAM,kBACC,MAAM,EAAE,+CAEtB,IAA4B,CAAC;AAEhC,eAAO,MAAM,4BAA4B,gCAEtC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAuCjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,oBAAqB,MAAM,EAAE,KAAG,MACsB,CAAC"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"../src/lib/","sources":["args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAE3B;;;;;;;;GAQG;AACH,MAAM,WAAW,IAAI;IACpB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEjG,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,GACtB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SACzC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,wBAEzB,MAAM,UACb,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,KAC9C,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAiBvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,SAAU,IAAI,KAAG,MAAM,EAuBjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,uBAA0B;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAMhF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uBAA0B,MAAM,EAG5D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,YACpB,MAAM,kBACC,MAAM,EAAE,+CAEtB,IAA4B,CAAC;AAEhC,eAAO,MAAM,4BAA4B,gCAEtC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAuCjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,oBAAqB,MAAM,EAAE,KAAG,MAKrC,CAAC"}
package/dist/args.js CHANGED
@@ -1,4 +1,4 @@
1
- import { gray, magenta } from '@ryanatkn/belt/styletext.js';
1
+ import { styleText as st } from 'node:util';
2
2
  import mri from 'mri';
3
3
  /**
4
4
  * Parses user input args with a Zod schema.
@@ -129,4 +129,8 @@ export const to_forwarded_args_by_command = (raw_rest_args = to_raw_rest_args())
129
129
  }
130
130
  return forwarded_args_by_command;
131
131
  };
132
- export const print_command_args = (serialized_args) => gray('[') + magenta('running command') + gray(']') + ' ' + serialized_args.join(' ');
132
+ export const print_command_args = (serialized_args) => st('gray', '[') +
133
+ st('magenta', 'running command') +
134
+ st('gray', ']') +
135
+ ' ' +
136
+ serialized_args.join(' ');
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { spawn } from '@ryanatkn/belt/process.js';
3
- import { red, blue } from '@ryanatkn/belt/styletext.js';
3
+ import { styleText as st } from 'node:util';
4
4
  import { readFile, writeFile } from 'node:fs/promises';
5
5
  import { join } from 'node:path';
6
6
  import { existsSync, readdirSync } from 'node:fs';
@@ -67,8 +67,8 @@ export const task = {
67
67
  const access = (access_arg ?? package_json.private)
68
68
  ? CHANGESET_RESTRICTED_ACCESS
69
69
  : CHANGESET_PUBLIC_ACCESS;
70
- const access_color = access === CHANGESET_RESTRICTED_ACCESS ? blue : red;
71
- log.info('initing changeset with ' + access_color(access) + ' access');
70
+ const access_color = access === CHANGESET_RESTRICTED_ACCESS ? 'blue' : 'red';
71
+ log.info('initing changeset with ' + st(access_color, access) + ' access');
72
72
  if (access !== CHANGESET_RESTRICTED_ACCESS) {
73
73
  await update_changeset_config(path, (config) => {
74
74
  const updated = { ...config };
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { spawn } from '@ryanatkn/belt/process.js';
3
- import { red } from '@ryanatkn/belt/styletext.js';
3
+ import { styleText as st } from 'node:util';
4
4
  import { Task_Error } from './task.js';
5
5
  import { git_check_clean_workspace } from './git.js';
6
6
  import { sync_package_json } from './package_json.js';
@@ -67,7 +67,7 @@ export const task = {
67
67
  if (workspace) {
68
68
  const error_message = await git_check_clean_workspace();
69
69
  if (error_message) {
70
- log.error(red('git status'));
70
+ log.error(st('red', 'git status'));
71
71
  await spawn('git', ['status']);
72
72
  throw new Task_Error('Failed check for git_check_clean_workspace:' +
73
73
  error_message +
@@ -13,10 +13,10 @@ export declare const Args: z.ZodObject<{
13
13
  build: z.ZodDefault<z.ZodBoolean>;
14
14
  'no-build': z.ZodDefault<z.ZodBoolean>;
15
15
  }, "strict", z.ZodTypeAny, {
16
+ reset: boolean;
16
17
  build: boolean;
17
18
  target: string & z.BRAND<"Git_Branch">;
18
19
  origin: string & z.BRAND<"Git_Origin">;
19
- reset: boolean;
20
20
  source: string & z.BRAND<"Git_Branch">;
21
21
  deploy_dir: string;
22
22
  build_dir: string;
@@ -25,10 +25,10 @@ export declare const Args: z.ZodObject<{
25
25
  dangerous: boolean;
26
26
  'no-build': boolean;
27
27
  }, {
28
+ reset?: boolean | undefined;
28
29
  build?: boolean | undefined;
29
30
  target?: string | undefined;
30
31
  origin?: string | undefined;
31
- reset?: boolean | undefined;
32
32
  source?: string | undefined;
33
33
  deploy_dir?: string | undefined;
34
34
  build_dir?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.task.d.ts","sourceRoot":"../src/lib/","sources":["deploy.task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAKtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAkChD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BP,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAuK3B,CAAC"}
1
+ {"version":3,"file":"deploy.task.d.ts","sourceRoot":"../src/lib/","sources":["deploy.task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAKtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAkChD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BP,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA4K3B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { spawn } from '@ryanatkn/belt/process.js';
2
2
  import { print_error } from '@ryanatkn/belt/print.js';
3
- import { green, red } from '@ryanatkn/belt/styletext.js';
3
+ import { styleText as st } from 'node:util';
4
4
  import { z } from 'zod';
5
5
  import { cp, mkdir, rm } from 'node:fs/promises';
6
6
  import { join, resolve } from 'node:path';
@@ -159,14 +159,14 @@ export const task = {
159
159
  await invoke_task('build');
160
160
  }
161
161
  if (!existsSync(build_dir)) {
162
- log.error(red('directory to deploy does not exist after building:'), build_dir);
162
+ log.error(st('red', 'directory to deploy does not exist after building:'), build_dir);
163
163
  return;
164
164
  }
165
165
  }
166
166
  catch (err) {
167
- log.error(red('build failed'), 'but', green('no changes were made to git'), print_error(err));
167
+ log.error(st('red', 'build failed'), 'but', st('green', 'no changes were made to git'), print_error(err));
168
168
  if (dry) {
169
- log.info(red('dry deploy failed'));
169
+ log.info(st('red', 'dry deploy failed'));
170
170
  }
171
171
  throw new Task_Error(`Deploy safely canceled due to build failure. See the error above.`);
172
172
  }
@@ -174,7 +174,7 @@ export const task = {
174
174
  await Promise.all(readdirSync(build_dir).map((path) => cp(join(build_dir, path), join(resolved_deploy_dir, path), { recursive: true })));
175
175
  // At this point, `dist/` is ready to be committed and deployed!
176
176
  if (dry) {
177
- log.info(green('dry deploy complete:'), 'files at', print_path(resolved_deploy_dir));
177
+ log.info(st('green', 'dry deploy complete:'), 'files at', print_path(resolved_deploy_dir));
178
178
  return;
179
179
  }
180
180
  // Commit and push
@@ -184,9 +184,9 @@ export const task = {
184
184
  await spawn('git', ['push', origin, target, '-f'], target_spawn_options); // force push because we may be resetting the branch, see the checks above to make this safer
185
185
  }
186
186
  catch (err) {
187
- log.error(red('updating git failed:'), print_error(err));
187
+ log.error(st('red', 'updating git failed:'), print_error(err));
188
188
  throw new Task_Error(`Deploy failed in a bad state: built but not pushed, see error above.`);
189
189
  }
190
- log.info(green('deployed')); // TODO log a different message if "Everything up-to-date"
190
+ log.info(st('green', 'deployed')); // TODO log a different message if "Everything up-to-date"
191
191
  },
192
192
  };
@@ -1,10 +1,10 @@
1
- import { yellow, red } from '@ryanatkn/belt/styletext.js';
1
+ import { styleText as st } from 'node:util';
2
2
  export const print_build_result = (log, build_result) => {
3
3
  for (const error of build_result.errors) {
4
- log.error(red('esbuild error'), error);
4
+ log.error(st('red', 'esbuild error'), error);
5
5
  }
6
6
  for (const warning of build_result.warnings) {
7
- log.warn(yellow('esbuild warning'), warning);
7
+ log.warn(st('yellow', 'esbuild warning'), warning);
8
8
  }
9
9
  };
10
10
  // This concatenates weirdly to avoid a SvelteKit warning,
package/dist/gen.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { join, basename, dirname, isAbsolute } from 'node:path';
2
2
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
3
  import { z } from 'zod';
4
- import { red } from '@ryanatkn/belt/styletext.js';
4
+ import { styleText as st } from 'node:util';
5
5
  import { existsSync } from 'node:fs';
6
6
  import { print_path } from './paths.js';
7
7
  import { load_modules } from './modules.js';
@@ -145,7 +145,7 @@ export const find_genfiles = (input_paths, root_dirs, config, timings) => {
145
145
  type: 'unmapped_input_paths',
146
146
  unmapped_input_paths,
147
147
  resolved_input_paths,
148
- reasons: unmapped_input_paths.map((input_path) => red(`Input path ${print_path(input_path)} cannot be mapped to a file or directory.`)),
148
+ reasons: unmapped_input_paths.map((input_path) => st('red', `Input path ${print_path(input_path)} cannot be mapped to a file or directory.`)),
149
149
  };
150
150
  }
151
151
  // Find all of the files for any directories.
@@ -164,7 +164,7 @@ export const find_genfiles = (input_paths, root_dirs, config, timings) => {
164
164
  resolved_input_files,
165
165
  resolved_input_files_by_root_dir,
166
166
  resolved_input_paths,
167
- reasons: input_directories_with_no_files.map((input_path) => red(`Input directory contains no matching files: ${print_path(input_path)}`)),
167
+ reasons: input_directories_with_no_files.map((input_path) => st('red', `Input directory contains no matching files: ${print_path(input_path)}`)),
168
168
  };
169
169
  }
170
170
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"gen.task.d.ts","sourceRoot":"../src/lib/","sources":["gen.task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAShD,eAAO,MAAM,IAAI;;;;;;;;;;;;EAUP,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAIxC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAwG3B,CAAC"}
1
+ {"version":3,"file":"gen.task.d.ts","sourceRoot":"../src/lib/","sources":["gen.task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAShD,eAAO,MAAM,IAAI;;;;;;;;;;;;EAUP,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAIxC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA0G3B,CAAC"}
package/dist/gen.task.js CHANGED
@@ -1,4 +1,4 @@
1
- import { red, green, gray } from '@ryanatkn/belt/styletext.js';
1
+ import { styleText as st } from 'node:util';
2
2
  import { print_ms, print_error } from '@ryanatkn/belt/print.js';
3
3
  import { plural } from '@ryanatkn/belt/string.js';
4
4
  import { z } from 'zod';
@@ -68,7 +68,7 @@ export const task = {
68
68
  if (!analyzed.has_changed)
69
69
  continue;
70
70
  has_unexpected_changes = true;
71
- log.error(red(`Generated file ${print_path(analyzed.file.id)} via ${print_path(analyzed.file.origin_id)} ${analyzed.is_new ? 'is new' : 'has changed'}.`));
71
+ log.error(st('red', `Generated file ${print_path(analyzed.file.id)} via ${print_path(analyzed.file.origin_id)} ${analyzed.is_new ? 'is new' : 'has changed'}.`));
72
72
  }
73
73
  if (has_unexpected_changes) {
74
74
  throw new Task_Error('Failed gen check. Some generated files have unexpectedly changed.' +
@@ -88,15 +88,15 @@ export const task = {
88
88
  const new_count = analyzed_gen_results.filter((r) => r.is_new).length;
89
89
  const changed_count = analyzed_gen_results.filter((r) => r.has_changed).length;
90
90
  const unchanged_count = analyzed_gen_results.filter((r) => !r.is_new && !r.has_changed).length;
91
- let log_result = green('gen results:');
92
- log_result += `\n\t${new_count} ` + gray('new');
93
- log_result += `\n\t${changed_count} ` + gray('changed');
94
- log_result += `\n\t${unchanged_count} ` + gray('unchanged');
91
+ let log_result = st('green', 'gen results:');
92
+ log_result += `\n\t${new_count} ` + st('gray', 'new');
93
+ log_result += `\n\t${changed_count} ` + st('gray', 'changed');
94
+ log_result += `\n\t${unchanged_count} ` + st('gray', 'unchanged');
95
95
  for (const result of gen_results.results) {
96
- log_result += `\n\t${result.ok ? green('✓') : red('🞩')} ${result.ok ? result.files.length : 0} ${gray('in')} ${print_ms(result.elapsed)} ${gray('←')} ${print_path(result.id)}`;
96
+ log_result += `\n\t${result.ok ? st('green', '✓') : st('red', '🞩')} ${result.ok ? result.files.length : 0} ${st('gray', 'in')} ${print_ms(result.elapsed)} ${st('gray', '←')} ${print_path(result.id)}`;
97
97
  }
98
98
  log.info(log_result);
99
- log.info(green(`generated ${gen_results.output_count} file${plural(gen_results.output_count)} from ${gen_results.successes.length} input file${plural(gen_results.successes.length)}`));
99
+ log.info(st('green', `generated ${gen_results.output_count} file${plural(gen_results.output_count)} from ${gen_results.successes.length} input file${plural(gen_results.successes.length)}`));
100
100
  if (fail_count) {
101
101
  for (const result of gen_results.failures) {
102
102
  log.error(result.reason, '\n', print_error(result.error));
@@ -84,7 +84,7 @@ export const spawn_with_loader = (loader_path, invoke_path, argv) => {
84
84
  register("${loader_path}", pathToFileURL("./"));`,
85
85
  '--enable-source-maps', // because TypeScript
86
86
  ];
87
- // In almost all cases we want the exports condition to be `"development"`.
87
+ // In almost all cases we want the exports condition to be `"development"`. Needed for `esm-env`.
88
88
  if (process.env.NODE_ENV !== 'production') {
89
89
  args.push('-C', 'development'); // same as `--conditions`
90
90
  }
package/dist/invoke.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { attach_process_error_handlers } from '@ryanatkn/belt/process.js';
2
+ import { configure_log_colors } from '@ryanatkn/belt/log.js';
3
+ import { styleText } from 'node:util';
2
4
  import { invoke_task } from './invoke_task.js';
3
5
  import { to_task_args } from './args.js';
4
6
  import { load_gro_config } from './gro_config.js';
@@ -15,6 +17,7 @@ and the rest of the args are forwarded to the task's `run` function.
15
17
  */
16
18
  // handle uncaught errors
17
19
  attach_process_error_handlers((err) => (err.constructor.name === 'Task_Error' ? 'Task_Error' : null), (err) => (err.constructor.name === 'Silent_Error' ? '' : null));
20
+ configure_log_colors(styleText);
18
21
  await sveltekit_sync_if_obviously_needed();
19
22
  const { task_name, args } = to_task_args();
20
23
  await invoke_task(task_name, args, await load_gro_config());
@@ -1 +1 @@
1
- {"version":3,"file":"invoke_task.d.ts","sourceRoot":"../src/lib/","sources":["invoke_task.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAoB,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAgB,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAI9D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,WAAW,cACZ,cAAc,QACnB,IAAI,GAAG,SAAS,UACd,UAAU,oBACD,OAAO,GAAG,IAAI,KAC7B,OAAO,CAAC,IAAI,CA2Ed,CAAC"}
1
+ {"version":3,"file":"invoke_task.d.ts","sourceRoot":"../src/lib/","sources":["invoke_task.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAoB,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAgB,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAI9D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,WAAW,cACZ,cAAc,QACnB,IAAI,GAAG,SAAS,UACd,UAAU,oBACD,OAAO,GAAG,IAAI,KAC7B,OAAO,CAAC,IAAI,CA6Ed,CAAC"}
@@ -1,7 +1,7 @@
1
- import { cyan, red, gray } from '@ryanatkn/belt/styletext.js';
2
- import { System_Logger, print_log_label } from '@ryanatkn/belt/log.js';
1
+ import { styleText as st } from 'node:util';
2
+ import { System_Logger } from '@ryanatkn/belt/log.js';
3
3
  import { create_stopwatch, Timings } from '@ryanatkn/belt/timings.js';
4
- import { print_ms, print_timings } from '@ryanatkn/belt/print.js';
4
+ import { print_ms, print_timings, print_log_label } from '@ryanatkn/belt/print.js';
5
5
  import { to_forwarded_args } from './args.js';
6
6
  import { run_task } from './run_task.js';
7
7
  import { to_input_path, Raw_Input_Path } from './input_path.js';
@@ -32,7 +32,7 @@ import { log_tasks, log_error_reasons } from './task_logging.js';
32
32
  */
33
33
  export const invoke_task = async (task_name, args, config, initial_timings = null) => {
34
34
  const log = new System_Logger(print_log_label(task_name || 'gro'));
35
- log.info('invoking', task_name ? cyan(task_name) : 'gro');
35
+ log.info('invoking', task_name ? st('cyan', task_name) : 'gro');
36
36
  const timings = initial_timings ?? new Timings();
37
37
  const total_timing = create_stopwatch();
38
38
  const finish = () => {
@@ -44,7 +44,7 @@ export const invoke_task = async (task_name, args, config, initial_timings = nul
44
44
  // Check if the caller just wants to see the version.
45
45
  if (!task_name && (args?.version || args?.v)) {
46
46
  const gro_package_json = load_gro_package_json();
47
- log.info(`${gray('v')}${cyan(gro_package_json.version)}`);
47
+ log.info(`${st('gray', 'v')}${st('cyan', gro_package_json.version)}`);
48
48
  finish();
49
49
  return;
50
50
  }
@@ -78,15 +78,15 @@ export const invoke_task = async (task_name, args, config, initial_timings = nul
78
78
  if (loaded_tasks.modules.length !== 1)
79
79
  throw Error('expected one loaded task'); // run only one task at a time
80
80
  const task = loaded_tasks.modules[0];
81
- log.info(`→ ${cyan(task.name)} ${(task.mod.task.summary && gray(task.mod.task.summary)) ?? ''}`);
81
+ log.info(`→ ${st('cyan', task.name)} ${(task.mod.task.summary && st('gray', task.mod.task.summary)) ?? ''}`);
82
82
  const timing_to_run_task = timings.start('run task ' + task_name);
83
83
  const result = await run_task(task, { ...args, ...to_forwarded_args(`gro ${task.name}`) }, invoke_task, config, timings);
84
84
  timing_to_run_task();
85
85
  if (!result.ok) {
86
- log.info(`${red('🞩')} ${cyan(task.name)}`);
86
+ log.info(`${st('red', '🞩')} ${st('cyan', task.name)}`);
87
87
  log_error_reasons(log, [result.reason]);
88
88
  throw result.error;
89
89
  }
90
- log.info(`✓ ${cyan(task.name)}`);
90
+ log.info(`✓ ${st('cyan', task.name)}`);
91
91
  finish();
92
92
  };
package/dist/package.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // generated by src/lib/package.gen.ts
2
2
  export const package_json = {
3
3
  name: '@ryanatkn/gro',
4
- version: '0.134.0',
4
+ version: '0.135.1',
5
5
  description: 'task runner and toolkit extending SvelteKit',
6
6
  motto: 'generate, run, optimize',
7
7
  glyph: '🌰',
@@ -25,7 +25,7 @@ export const package_json = {
25
25
  deploy: 'gro deploy',
26
26
  },
27
27
  type: 'module',
28
- engines: { node: '>=20.12' },
28
+ engines: { node: '>=20.17' },
29
29
  bin: { gro: 'dist/gro.js' },
30
30
  keywords: [
31
31
  'web',
@@ -39,8 +39,8 @@ export const package_json = {
39
39
  'typescript',
40
40
  ],
41
41
  dependencies: {
42
- '@ryanatkn/belt': '^0.24.12',
43
- chokidar: '^4.0.0',
42
+ '@ryanatkn/belt': '^0.25.0',
43
+ chokidar: '^4.0.1',
44
44
  dotenv: '^16.4.5',
45
45
  'es-module-lexer': '^1.5.4',
46
46
  'esm-env': '^1.0.0',
@@ -56,21 +56,21 @@ export const package_json = {
56
56
  '@changesets/changelog-git': '^0.2.0',
57
57
  '@changesets/types': '^6.0.0',
58
58
  '@ryanatkn/eslint-config': '^0.5.3',
59
- '@ryanatkn/fuz': '^0.121.0',
60
- '@ryanatkn/moss': '^0.15.0',
61
- '@sveltejs/adapter-static': '^3.0.4',
62
- '@sveltejs/kit': '^2.5.26',
63
- '@sveltejs/package': '^2.3.4',
59
+ '@ryanatkn/fuz': '^0.124.4',
60
+ '@ryanatkn/moss': '^0.16.1',
61
+ '@sveltejs/adapter-static': '^3.0.5',
62
+ '@sveltejs/kit': '^2.5.28',
63
+ '@sveltejs/package': '^2.3.5',
64
64
  '@sveltejs/vite-plugin-svelte': '^3.1.2',
65
65
  '@types/fs-extra': '^11.0.4',
66
- '@types/node': '^22.5.4',
66
+ '@types/node': '^22.5.5',
67
67
  esbuild: '^0.21.5',
68
- eslint: '^9.10.0',
69
- 'eslint-plugin-svelte': '^2.43.0',
70
- svelte: '^5.0.0-next.245',
68
+ eslint: '^9.11.0',
69
+ 'eslint-plugin-svelte': '^2.44.0',
70
+ svelte: '^5.0.0-next.257',
71
71
  'svelte-check': '^4.0.2',
72
72
  typescript: '^5.6.2',
73
- 'typescript-eslint': '^8.5.0',
73
+ 'typescript-eslint': '^8.6.0',
74
74
  uvu: '^0.5.6',
75
75
  },
76
76
  prettier: {
@@ -262,7 +262,7 @@ export const package_json = {
262
262
  };
263
263
  export const src_json = {
264
264
  name: '@ryanatkn/gro',
265
- version: '0.134.0',
265
+ version: '0.135.1',
266
266
  modules: {
267
267
  '.': {
268
268
  path: 'index.ts',
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { join } from 'node:path';
3
3
  import { readFileSync, writeFileSync } from 'node:fs';
4
4
  import { count_graphemes, plural, strip_end } from '@ryanatkn/belt/string.js';
5
- import { red } from '@ryanatkn/belt/styletext.js';
5
+ import { styleText as st } from 'node:util';
6
6
  import { paths, gro_paths, IS_THIS_GRO, replace_extension } from './paths.js';
7
7
  import { SVELTEKIT_DIST_DIRNAME } from './path_constants.js';
8
8
  import { search_fs } from './search_fs.js';
@@ -252,9 +252,9 @@ const parse_package_json = (schema, value) => {
252
252
  const parse_or_throw_formatted_error = (name, schema, value) => {
253
253
  const parsed = schema.safeParse(value);
254
254
  if (!parsed.success) {
255
- let msg = red(`Failed to parse ${name}:\n`);
255
+ let msg = st('red', `Failed to parse ${name}:\n`);
256
256
  for (const issue of parsed.error.issues) {
257
- msg += red(`\n\t"${issue.path}" ${issue.message}\n`);
257
+ msg += st('red', `\n\t"${issue.path}" ${issue.message}\n`);
258
258
  }
259
259
  throw Error(msg);
260
260
  }
package/dist/paths.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { join, extname, relative, basename } from 'node:path';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { strip_end } from '@ryanatkn/belt/string.js';
4
- import { gray } from '@ryanatkn/belt/styletext.js';
4
+ import { styleText as st } from 'node:util';
5
5
  import { GRO_CONFIG_PATH, GRO_DEV_DIR, GRO_DIR, SOURCE_DIR, SVELTEKIT_DIST_DIRNAME, } from './path_constants.js';
6
6
  import { default_sveltekit_config } from './sveltekit_config.js';
7
7
  /*
@@ -39,7 +39,7 @@ export const print_path = (path, p = infer_paths(path)) => {
39
39
  let final_path = strip_end(path, '/') === strip_end(GRO_DIST_DIR, '/') ? 'gro' : to_root_path(path, p);
40
40
  final_path =
41
41
  final_path === 'gro' ? final_path : final_path[0] === '.' ? final_path : './' + final_path;
42
- return gray(final_path);
42
+ return st('gray', final_path);
43
43
  };
44
44
  export const replace_extension = (path, new_extension) => {
45
45
  const { length } = extname(path);
@@ -1,6 +1,6 @@
1
1
  import { spawn } from '@ryanatkn/belt/process.js';
2
2
  import { z } from 'zod';
3
- import { green, cyan } from '@ryanatkn/belt/styletext.js';
3
+ import { styleText as st } from 'node:util';
4
4
  import { existsSync } from 'node:fs';
5
5
  import { Task_Error } from './task.js';
6
6
  import { load_package_json, parse_repo_url } from './package_json.js';
@@ -50,7 +50,7 @@ export const task = {
50
50
  run: async ({ args, log, invoke_task }) => {
51
51
  const { branch, origin, changelog, preserve_changelog, dry, check, build, pull, optional, changeset_cli, } = args;
52
52
  if (dry) {
53
- log.info(green('dry run!'));
53
+ log.info(st('green', 'dry run!'));
54
54
  }
55
55
  const has_sveltekit_library_result = has_sveltekit_library();
56
56
  if (!has_sveltekit_library_result.ok) {
@@ -137,7 +137,7 @@ export const task = {
137
137
  return;
138
138
  if (dry) {
139
139
  log.info('publishing branch ' + branch);
140
- log.info(green('dry run complete!'));
140
+ log.info(st('green', 'dry run complete!'));
141
141
  return;
142
142
  }
143
143
  const npm_publish_result = await spawn_cli(found_changeset_cli, ['publish'], log);
@@ -149,6 +149,6 @@ export const task = {
149
149
  }
150
150
  await spawn('git', ['commit', '-a', '-m', `publish v${version}`]);
151
151
  await spawn('git', ['push', '--follow-tags']);
152
- log.info(green(`published to branch ${cyan(branch)}!`));
152
+ log.info(st('green', `published to branch ${st('cyan', branch)}!`));
153
153
  },
154
154
  };
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { green, yellow } from '@ryanatkn/belt/styletext.js';
2
+ import { styleText as st } from 'node:util';
3
3
  import { TASK_FILE_SUFFIXES } from './task.js';
4
4
  import { resolve_input_paths, to_input_paths } from './input_path.js';
5
5
  export const Args = z
@@ -29,10 +29,10 @@ export const task = {
29
29
  if (verbose)
30
30
  log.info('unmapped_input_paths:', unmapped_input_paths);
31
31
  for (const p of resolved_input_paths) {
32
- log.info('resolved:', green(p.id));
32
+ log.info('resolved:', st('green', p.id));
33
33
  }
34
34
  if (!resolved_input_paths.length) {
35
- log.warn(yellow('no input paths were resolved'));
35
+ log.warn(st('yellow', 'no input paths were resolved'));
36
36
  }
37
37
  },
38
38
  };
package/dist/run.task.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { green, cyan } from '@ryanatkn/belt/styletext.js';
2
+ import { styleText as st } from 'node:util';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { Task_Error } from './task.js';
5
5
  import { resolve_gro_module_path, spawn_with_loader } from './gro_helpers.js';
@@ -16,7 +16,7 @@ export const task = {
16
16
  run: async ({ args, log }) => {
17
17
  const { _: [path, ...argv], } = args;
18
18
  if (!path) {
19
- log.info(green('\n\nUsage: ') + cyan('gro run path/to/file.ts [...node_args]\n'));
19
+ log.info(st('green', '\n\nUsage: ') + st('cyan', 'gro run path/to/file.ts [...node_args]\n'));
20
20
  return;
21
21
  }
22
22
  if (!existsSync(path)) {
package/dist/run_gen.js CHANGED
@@ -1,4 +1,4 @@
1
- import { red } from '@ryanatkn/belt/styletext.js';
1
+ import { styleText as st } from 'node:util';
2
2
  import { print_error } from '@ryanatkn/belt/print.js';
3
3
  import { to_gen_result, } from './gen.js';
4
4
  import { print_path, to_root_path } from './paths.js';
@@ -29,7 +29,7 @@ export const run_gen = async (gen_modules, config, log, timings, format_file) =>
29
29
  ok: false,
30
30
  id,
31
31
  error: err,
32
- reason: red(`Error generating ${print_path(id)}`),
32
+ reason: st('red', `Error generating ${print_path(id)}`),
33
33
  elapsed: timing_for_module(),
34
34
  };
35
35
  }
@@ -44,7 +44,7 @@ export const run_gen = async (gen_modules, config, log, timings, format_file) =>
44
44
  return { ...file, content: await format_file(file.content, { filepath: file.id }) };
45
45
  }
46
46
  catch (err) {
47
- log.error(red(`Error formatting ${print_path(file.id)} via ${print_path(id)}`), print_error(err));
47
+ log.error(st('red', `Error formatting ${print_path(file.id)} via ${print_path(id)}`), print_error(err));
48
48
  return file;
49
49
  }
50
50
  }))
@@ -1 +1 @@
1
- {"version":3,"file":"run_task.d.ts","sourceRoot":"../src/lib/","sources":["run_task.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAC,WAAW,IAAI,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAa,KAAK,gBAAgB,EAAC,MAAM,WAAW,CAAC;AAG5D,MAAM,MAAM,eAAe,GACxB;IACA,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,OAAO,CAAC;CACf,GACD;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;CACZ,CAAC;AAEL,eAAO,MAAM,QAAQ,cACT,gBAAgB,iBACZ,IAAI,eACN,OAAO,gBAAgB,UAC5B,UAAU,WACT,OAAO,KACd,OAAO,CAAC,eAAe,CA8CzB,CAAC"}
1
+ {"version":3,"file":"run_task.d.ts","sourceRoot":"../src/lib/","sources":["run_task.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAC,WAAW,IAAI,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAa,KAAK,gBAAgB,EAAC,MAAM,WAAW,CAAC;AAG5D,MAAM,MAAM,eAAe,GACxB;IACA,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,OAAO,CAAC;CACf,GACD;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;CACZ,CAAC;AAEL,eAAO,MAAM,QAAQ,cACT,gBAAgB,iBACZ,IAAI,eACN,OAAO,gBAAgB,UAC5B,UAAU,WACT,OAAO,KACd,OAAO,CAAC,eAAe,CAgDzB,CAAC"}
package/dist/run_task.js CHANGED
@@ -1,5 +1,6 @@
1
- import { cyan, red } from '@ryanatkn/belt/styletext.js';
2
- import { print_log_label, System_Logger } from '@ryanatkn/belt/log.js';
1
+ import { styleText as st } from 'node:util';
2
+ import { print_log_label } from '@ryanatkn/belt/print.js';
3
+ import { System_Logger } from '@ryanatkn/belt/log.js';
3
4
  import { parse_args } from './args.js';
4
5
  import { log_task_help } from './task_logging.js';
5
6
  import { Task_Error } from './task.js';
@@ -16,7 +17,7 @@ export const run_task = async (task_meta, unparsed_args, invoke_task, config, ti
16
17
  if (task.Args) {
17
18
  const parsed = parse_args(unparsed_args, task.Args);
18
19
  if (!parsed.success) {
19
- log.error(red(`Args validation failed:`), '\n', parsed.error.format());
20
+ log.error(st('red', `Args validation failed:`), '\n', parsed.error.format());
20
21
  throw new Task_Error(`Task args failed validation`);
21
22
  }
22
23
  args = parsed.data;
@@ -36,9 +37,9 @@ export const run_task = async (task_meta, unparsed_args, invoke_task, config, ti
36
37
  catch (err) {
37
38
  return {
38
39
  ok: false,
39
- reason: red(err?.constructor?.name === 'Task_Error'
40
+ reason: st('red', err?.constructor?.name === 'Task_Error'
40
41
  ? err.message
41
- : `Unexpected error running task ${cyan(task_meta.name)}. If this is unexpected try running \`npm i\` and \`gro clean\`.`),
42
+ : `Unexpected error running task ${st('cyan', task_meta.name)}. If this is unexpected try running \`npm i\` and \`gro clean\`.`),
42
43
  error: err,
43
44
  };
44
45
  }
package/dist/task.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ensure_end, strip_end, strip_start } from '@ryanatkn/belt/string.js';
2
- import { red } from '@ryanatkn/belt/styletext.js';
2
+ import { styleText as st } from 'node:util';
3
3
  import { isAbsolute, join, relative } from 'node:path';
4
4
  import { resolve_input_files, resolve_input_paths, } from './input_path.js';
5
5
  import { GRO_DIST_DIR, print_path } from './paths.js';
@@ -57,7 +57,7 @@ export const find_tasks = (input_paths, task_root_dirs, config, timings) => {
57
57
  resolved_input_paths,
58
58
  input_paths,
59
59
  task_root_dirs,
60
- reasons: unmapped_input_paths.map((input_path) => red(`Input path ${print_path(input_path)} cannot be mapped to a file or directory.`)),
60
+ reasons: unmapped_input_paths.map((input_path) => st('red', `Input path ${print_path(input_path)} cannot be mapped to a file or directory.`)),
61
61
  };
62
62
  }
63
63
  // Find all of the files for any directories.
@@ -78,7 +78,7 @@ export const find_tasks = (input_paths, task_root_dirs, config, timings) => {
78
78
  resolved_input_paths,
79
79
  input_paths,
80
80
  task_root_dirs,
81
- reasons: input_directories_with_no_files.map((input_path) => red(`Input directory contains no matching files: ${print_path(input_path)}`)),
81
+ reasons: input_directories_with_no_files.map((input_path) => st('red', `Input directory contains no matching files: ${print_path(input_path)}`)),
82
82
  };
83
83
  }
84
84
  return {