@ryanatkn/gro 0.150.0 → 0.151.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.
package/dist/filer.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Omit_Strict } from '@ryanatkn/belt/types.js';
2
- import type { Path_Id } from './path.js';
2
+ import type { Logger } from '@ryanatkn/belt/log.js';
3
+ import type { File_Filter, Path_Id } from './path.js';
3
4
  import { watch_dir, type Watcher_Change, type Watch_Dir_Options } from './watch_dir.js';
4
5
  import type { Package_Json } from './package_json.js';
5
6
  export interface Source_File {
@@ -35,4 +36,5 @@ export declare class Filer {
35
36
  watch(listener: On_Filer_Change): Promise<Cleanup_Watch>;
36
37
  close(): Promise<void>;
37
38
  }
39
+ export declare const filter_dependents: (source_file: Source_File, get_by_id: (id: Path_Id) => Source_File | undefined, filter?: File_Filter, results?: Set<string>, searched?: Set<string>, log?: Logger) => Set<string>;
38
40
  //# sourceMappingURL=filer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filer.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/filer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAMzD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,EACN,SAAS,EAET,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEtB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAIpD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtC,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;AAEzF,MAAM,WAAW,aAAa;IAC7B,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAClD;AAED,qBAAa,KAAK;;IACjB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAa;gBAK1C,OAAO,GAAE,aAA4B;IAWjD,SAAS,GAAI,IAAI,OAAO,KAAG,WAAW,GAAG,SAAS,CAEhD;IAEF,aAAa,GAAI,IAAI,OAAO,KAAG,WAAW,CAkBxC;IA4II,KAAK,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAKxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa5B"}
1
+ {"version":3,"file":"filer.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/filer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAKzD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,EACN,SAAS,EAET,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAEtB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAIpD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtC,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;AAEzF,MAAM,WAAW,aAAa;IAC7B,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAClD;AAED,qBAAa,KAAK;;IACjB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAa;gBAK1C,OAAO,GAAE,aAA4B;IAWjD,SAAS,GAAI,IAAI,OAAO,KAAG,WAAW,GAAG,SAAS,CAEhD;IAEF,aAAa,GAAI,IAAI,OAAO,KAAG,WAAW,CAkBxC;IA4II,KAAK,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAKxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa5B;AAGD,eAAO,MAAM,iBAAiB,GAC7B,aAAa,WAAW,EACxB,WAAW,CAAC,EAAE,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,EACnD,SAAS,WAAW,EACpB,UAAS,GAAG,CAAC,MAAM,CAAa,EAChC,WAAU,GAAG,CAAC,MAAM,CAAa,EACjC,MAAM,MAAM,KACV,GAAG,CAAC,MAAM,CAkBZ,CAAC"}
package/dist/filer.js CHANGED
@@ -192,3 +192,22 @@ export class Filer {
192
192
  return !id.startsWith(this.root_dir + '/') || (!!filter && !filter(id, false));
193
193
  }
194
194
  }
195
+ // TODO maybe `Source_File` class?
196
+ export const filter_dependents = (source_file, get_by_id, filter, results = new Set(), searched = new Set(), log) => {
197
+ const { dependents } = source_file;
198
+ for (const dependent_id of dependents.keys()) {
199
+ if (searched.has(dependent_id))
200
+ continue;
201
+ searched.add(dependent_id);
202
+ if (!filter || filter(dependent_id)) {
203
+ results.add(dependent_id);
204
+ }
205
+ const dependent_source_file = get_by_id(dependent_id);
206
+ if (!dependent_source_file) {
207
+ log?.warn(`[filer.filter_dependents]: dependent source file ${dependent_id} not found for ${source_file.id}`);
208
+ continue;
209
+ }
210
+ filter_dependents(dependent_source_file, get_by_id, filter, results, searched);
211
+ }
212
+ return results;
213
+ };
@@ -1,7 +1,5 @@
1
1
  import type { Plugin } from './plugin.js';
2
2
  import type { Args } from './args.js';
3
- import type { File_Filter, Path_Id } from './path.js';
4
- import type { Source_File } from './filer.js';
5
3
  export interface Task_Args extends Args {
6
4
  watch?: boolean;
7
5
  }
@@ -11,5 +9,4 @@ export interface Gro_Plugin_Gen_Options {
11
9
  flush_debounce_delay?: number;
12
10
  }
13
11
  export declare const gro_plugin_gen: ({ input_paths, root_dirs, flush_debounce_delay, }?: Gro_Plugin_Gen_Options) => Plugin;
14
- export declare const filter_dependents: (source_file: Source_File, get_by_id: (id: Path_Id) => Source_File | undefined, filter?: File_Filter, results?: Set<string>, searched?: Set<string>) => Set<string>;
15
12
  //# sourceMappingURL=gro_plugin_gen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gro_plugin_gen.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gro_plugin_gen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAgB,WAAW,EAAC,MAAM,YAAY,CAAC;AAI3D,MAAM,WAAW,SAAU,SAAQ,IAAI;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,cAAc,GAAI,oDAI5B,sBAAqC,KAAG,MAkF1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC7B,aAAa,WAAW,EACxB,WAAW,CAAC,EAAE,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,EACnD,SAAS,WAAW,EACpB,UAAS,GAAG,CAAC,MAAM,CAAa,EAChC,WAAU,GAAG,CAAC,MAAM,CAAa,KAC/B,GAAG,CAAC,MAAM,CAYZ,CAAC"}
1
+ {"version":3,"file":"gro_plugin_gen.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gro_plugin_gen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAQpC,MAAM,WAAW,SAAU,SAAQ,IAAI;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,cAAc,GAAI,oDAI5B,sBAAqC,KAAG,MAqF1C,CAAC"}
@@ -4,6 +4,7 @@ import { Unreachable_Error } from '@ryanatkn/belt/error.js';
4
4
  import { paths } from './paths.js';
5
5
  import { find_genfiles, is_gen_path } from './gen.js';
6
6
  import { spawn_cli } from './cli.js';
7
+ import { filter_dependents } from './filer.js';
7
8
  const FLUSH_DEBOUNCE_DELAY = 500;
8
9
  export const gro_plugin_gen = ({ input_paths = [paths.source], root_dirs = [paths.source], flush_debounce_delay = FLUSH_DEBOUNCE_DELAY, } = EMPTY_OBJECT) => {
9
10
  let flushing_timeout;
@@ -55,7 +56,7 @@ export const gro_plugin_gen = ({ input_paths = [paths.source], root_dirs = [path
55
56
  if (is_gen_path(source_file.id)) {
56
57
  queue_gen(source_file.id);
57
58
  }
58
- const dependent_gen_file_ids = filter_dependents(source_file, filer.get_by_id, is_gen_path);
59
+ const dependent_gen_file_ids = filter_dependents(source_file, filer.get_by_id, is_gen_path, undefined, undefined, log);
59
60
  for (const dependent_gen_file_id of dependent_gen_file_ids) {
60
61
  queue_gen(dependent_gen_file_id);
61
62
  }
@@ -78,17 +79,3 @@ export const gro_plugin_gen = ({ input_paths = [paths.source], root_dirs = [path
78
79
  },
79
80
  };
80
81
  };
81
- export const filter_dependents = (source_file, get_by_id, filter, results = new Set(), searched = new Set()) => {
82
- const { dependents } = source_file;
83
- for (const dependent_id of dependents.keys()) {
84
- if (searched.has(dependent_id))
85
- continue;
86
- searched.add(dependent_id);
87
- if (!filter || filter(dependent_id)) {
88
- results.add(dependent_id);
89
- }
90
- const dependent_source_File = get_by_id(dependent_id);
91
- filter_dependents(dependent_source_File, get_by_id, filter, results, searched);
92
- }
93
- return results;
94
- };
package/dist/package.d.ts CHANGED
@@ -644,6 +644,9 @@ export declare const src_json: {
644
644
  } | {
645
645
  name: string;
646
646
  kind: "class";
647
+ } | {
648
+ name: string;
649
+ kind: "function";
647
650
  })[];
648
651
  };
649
652
  './format_directory.js': {
@@ -1 +1 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/package.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsQD,CAAC;AAEzB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+wBD,CAAC"}
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/package.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsQD,CAAC;AAEzB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+wBD,CAAC"}
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.150.0',
4
+ version: '0.151.0',
5
5
  description: 'task runner and toolkit extending SvelteKit',
6
6
  motto: 'generate, run, optimize',
7
7
  glyph: '🌰',
@@ -39,7 +39,7 @@ export const package_json = {
39
39
  'typescript',
40
40
  ],
41
41
  dependencies: {
42
- '@ryanatkn/belt': '^0.30.1',
42
+ '@ryanatkn/belt': '^0.30.2',
43
43
  chokidar: '^4.0.3',
44
44
  dotenv: '^16.5.0',
45
45
  'esm-env': '^1.2.2',
@@ -56,20 +56,20 @@ export const package_json = {
56
56
  '@changesets/changelog-git': '^0.2.1',
57
57
  '@changesets/types': '^6.1.0',
58
58
  '@ryanatkn/eslint-config': '^0.8.0',
59
- '@ryanatkn/fuz': '^0.135.0',
59
+ '@ryanatkn/fuz': '^0.136.1',
60
60
  '@ryanatkn/moss': '^0.24.3',
61
61
  '@sveltejs/adapter-static': '^3.0.8',
62
- '@sveltejs/kit': '^2.20.5',
63
- '@sveltejs/package': '^2.3.10',
62
+ '@sveltejs/kit': '^2.20.7',
63
+ '@sveltejs/package': '^2.3.11',
64
64
  '@sveltejs/vite-plugin-svelte': '^5.0.3',
65
65
  '@types/node': '^22.14.1',
66
66
  esbuild: '^0.25.2',
67
67
  eslint: '^9.24.0',
68
68
  'eslint-plugin-svelte': '^3.5.1',
69
- svelte: '^5.26.2',
69
+ svelte: '^5.27.0',
70
70
  'svelte-check': '^4.1.6',
71
71
  typescript: '^5.8.3',
72
- 'typescript-eslint': '^8.29.1',
72
+ 'typescript-eslint': '^8.30.1',
73
73
  uvu: '^0.5.6',
74
74
  },
75
75
  prettier: {
@@ -263,7 +263,7 @@ export const package_json = {
263
263
  };
264
264
  export const src_json = {
265
265
  name: '@ryanatkn/gro',
266
- version: '0.150.0',
266
+ version: '0.151.0',
267
267
  modules: {
268
268
  '.': {
269
269
  path: 'index.ts',
@@ -479,6 +479,7 @@ export const src_json = {
479
479
  { name: 'On_Filer_Change', kind: 'type' },
480
480
  { name: 'Filer_Options', kind: 'type' },
481
481
  { name: 'Filer', kind: 'class' },
482
+ { name: 'filter_dependents', kind: 'function' },
482
483
  ],
483
484
  },
484
485
  './format_directory.js': {
@@ -600,7 +601,6 @@ export const src_json = {
600
601
  { name: 'Task_Args', kind: 'type' },
601
602
  { name: 'Gro_Plugin_Gen_Options', kind: 'type' },
602
603
  { name: 'gro_plugin_gen', kind: 'function' },
603
- { name: 'filter_dependents', kind: 'function' },
604
604
  ],
605
605
  },
606
606
  './gro_plugin_moss.js': {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryanatkn/gro",
3
- "version": "0.150.0",
3
+ "version": "0.151.0",
4
4
  "description": "task runner and toolkit extending SvelteKit",
5
5
  "motto": "generate, run, optimize",
6
6
  "glyph": "🌰",
@@ -49,7 +49,7 @@
49
49
  "typescript"
50
50
  ],
51
51
  "dependencies": {
52
- "@ryanatkn/belt": "^0.30.1",
52
+ "@ryanatkn/belt": "^0.30.2",
53
53
  "chokidar": "^4.0.3",
54
54
  "dotenv": "^16.5.0",
55
55
  "esm-env": "^1.2.2",
@@ -69,20 +69,20 @@
69
69
  "@changesets/changelog-git": "^0.2.1",
70
70
  "@changesets/types": "^6.1.0",
71
71
  "@ryanatkn/eslint-config": "^0.8.0",
72
- "@ryanatkn/fuz": "^0.135.0",
72
+ "@ryanatkn/fuz": "^0.136.1",
73
73
  "@ryanatkn/moss": "^0.24.3",
74
74
  "@sveltejs/adapter-static": "^3.0.8",
75
- "@sveltejs/kit": "^2.20.5",
76
- "@sveltejs/package": "^2.3.10",
75
+ "@sveltejs/kit": "^2.20.7",
76
+ "@sveltejs/package": "^2.3.11",
77
77
  "@sveltejs/vite-plugin-svelte": "^5.0.3",
78
78
  "@types/node": "^22.14.1",
79
79
  "esbuild": "^0.25.2",
80
80
  "eslint": "^9.24.0",
81
81
  "eslint-plugin-svelte": "^3.5.1",
82
- "svelte": "^5.26.2",
82
+ "svelte": "^5.27.0",
83
83
  "svelte-check": "^4.1.6",
84
84
  "typescript": "^5.8.3",
85
- "typescript-eslint": "^8.29.1",
85
+ "typescript-eslint": "^8.30.1",
86
86
  "uvu": "^0.5.6"
87
87
  },
88
88
  "prettier": {
package/src/lib/filer.ts CHANGED
@@ -6,8 +6,9 @@ import {wait} from '@ryanatkn/belt/async.js';
6
6
  import {isBuiltin} from 'node:module';
7
7
  import {fileURLToPath} from 'node:url';
8
8
  import {Unreachable_Error} from '@ryanatkn/belt/error.js';
9
+ import type {Logger} from '@ryanatkn/belt/log.js';
9
10
 
10
- import type {Path_Id} from './path.js';
11
+ import type {File_Filter, Path_Id} from './path.js';
11
12
  import {
12
13
  watch_dir,
13
14
  type Watch_Node_Fs,
@@ -251,3 +252,31 @@ export class Filer {
251
252
  return !id.startsWith(this.root_dir + '/') || (!!filter && !filter(id, false));
252
253
  }
253
254
  }
255
+
256
+ // TODO maybe `Source_File` class?
257
+ export const filter_dependents = (
258
+ source_file: Source_File,
259
+ get_by_id: (id: Path_Id) => Source_File | undefined,
260
+ filter?: File_Filter,
261
+ results: Set<string> = new Set(),
262
+ searched: Set<string> = new Set(),
263
+ log?: Logger,
264
+ ): Set<string> => {
265
+ const {dependents} = source_file;
266
+ for (const dependent_id of dependents.keys()) {
267
+ if (searched.has(dependent_id)) continue;
268
+ searched.add(dependent_id);
269
+ if (!filter || filter(dependent_id)) {
270
+ results.add(dependent_id);
271
+ }
272
+ const dependent_source_file = get_by_id(dependent_id);
273
+ if (!dependent_source_file) {
274
+ log?.warn(
275
+ `[filer.filter_dependents]: dependent source file ${dependent_id} not found for ${source_file.id}`,
276
+ );
277
+ continue;
278
+ }
279
+ filter_dependents(dependent_source_file, get_by_id, filter, results, searched);
280
+ }
281
+ return results;
282
+ };
@@ -7,8 +7,7 @@ import type {Args} from './args.js';
7
7
  import {paths} from './paths.js';
8
8
  import {find_genfiles, is_gen_path} from './gen.js';
9
9
  import {spawn_cli} from './cli.js';
10
- import type {File_Filter, Path_Id} from './path.js';
11
- import type {Cleanup_Watch, Source_File} from './filer.js';
10
+ import {filter_dependents, type Cleanup_Watch} from './filer.js';
12
11
 
13
12
  const FLUSH_DEBOUNCE_DELAY = 500;
14
13
 
@@ -86,6 +85,9 @@ export const gro_plugin_gen = ({
86
85
  source_file,
87
86
  filer.get_by_id,
88
87
  is_gen_path,
88
+ undefined,
89
+ undefined,
90
+ log,
89
91
  );
90
92
  for (const dependent_gen_file_id of dependent_gen_file_ids) {
91
93
  queue_gen(dependent_gen_file_id);
@@ -109,23 +111,3 @@ export const gro_plugin_gen = ({
109
111
  },
110
112
  };
111
113
  };
112
-
113
- export const filter_dependents = (
114
- source_file: Source_File,
115
- get_by_id: (id: Path_Id) => Source_File | undefined,
116
- filter?: File_Filter,
117
- results: Set<string> = new Set(),
118
- searched: Set<string> = new Set(),
119
- ): Set<string> => {
120
- const {dependents} = source_file;
121
- for (const dependent_id of dependents.keys()) {
122
- if (searched.has(dependent_id)) continue;
123
- searched.add(dependent_id);
124
- if (!filter || filter(dependent_id)) {
125
- results.add(dependent_id);
126
- }
127
- const dependent_source_File = get_by_id(dependent_id)!;
128
- filter_dependents(dependent_source_File, get_by_id, filter, results, searched);
129
- }
130
- return results;
131
- };
@@ -5,7 +5,7 @@ import type {Src_Json} from './src_json.js';
5
5
 
6
6
  export const package_json = {
7
7
  name: '@ryanatkn/gro',
8
- version: '0.150.0',
8
+ version: '0.151.0',
9
9
  description: 'task runner and toolkit extending SvelteKit',
10
10
  motto: 'generate, run, optimize',
11
11
  glyph: '🌰',
@@ -44,7 +44,7 @@ export const package_json = {
44
44
  'typescript',
45
45
  ],
46
46
  dependencies: {
47
- '@ryanatkn/belt': '^0.30.1',
47
+ '@ryanatkn/belt': '^0.30.2',
48
48
  chokidar: '^4.0.3',
49
49
  dotenv: '^16.5.0',
50
50
  'esm-env': '^1.2.2',
@@ -61,20 +61,20 @@ export const package_json = {
61
61
  '@changesets/changelog-git': '^0.2.1',
62
62
  '@changesets/types': '^6.1.0',
63
63
  '@ryanatkn/eslint-config': '^0.8.0',
64
- '@ryanatkn/fuz': '^0.135.0',
64
+ '@ryanatkn/fuz': '^0.136.1',
65
65
  '@ryanatkn/moss': '^0.24.3',
66
66
  '@sveltejs/adapter-static': '^3.0.8',
67
- '@sveltejs/kit': '^2.20.5',
68
- '@sveltejs/package': '^2.3.10',
67
+ '@sveltejs/kit': '^2.20.7',
68
+ '@sveltejs/package': '^2.3.11',
69
69
  '@sveltejs/vite-plugin-svelte': '^5.0.3',
70
70
  '@types/node': '^22.14.1',
71
71
  esbuild: '^0.25.2',
72
72
  eslint: '^9.24.0',
73
73
  'eslint-plugin-svelte': '^3.5.1',
74
- svelte: '^5.26.2',
74
+ svelte: '^5.27.0',
75
75
  'svelte-check': '^4.1.6',
76
76
  typescript: '^5.8.3',
77
- 'typescript-eslint': '^8.29.1',
77
+ 'typescript-eslint': '^8.30.1',
78
78
  uvu: '^0.5.6',
79
79
  },
80
80
  prettier: {
@@ -269,7 +269,7 @@ export const package_json = {
269
269
 
270
270
  export const src_json = {
271
271
  name: '@ryanatkn/gro',
272
- version: '0.150.0',
272
+ version: '0.151.0',
273
273
  modules: {
274
274
  '.': {
275
275
  path: 'index.ts',
@@ -485,6 +485,7 @@ export const src_json = {
485
485
  {name: 'On_Filer_Change', kind: 'type'},
486
486
  {name: 'Filer_Options', kind: 'type'},
487
487
  {name: 'Filer', kind: 'class'},
488
+ {name: 'filter_dependents', kind: 'function'},
488
489
  ],
489
490
  },
490
491
  './format_directory.js': {
@@ -606,7 +607,6 @@ export const src_json = {
606
607
  {name: 'Task_Args', kind: 'type'},
607
608
  {name: 'Gro_Plugin_Gen_Options', kind: 'type'},
608
609
  {name: 'gro_plugin_gen', kind: 'function'},
609
- {name: 'filter_dependents', kind: 'function'},
610
610
  ],
611
611
  },
612
612
  './gro_plugin_moss.js': {