@ryanatkn/gro 0.140.6 → 0.141.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
@@ -8,6 +8,7 @@ export interface Source_File {
8
8
  * We create the file in memory to track its dependents regardless of its existence on disk.
9
9
  */
10
10
  contents: string | null;
11
+ mtime: number | null;
11
12
  dependents: Map<Path_Id, Source_File>;
12
13
  dependencies: Map<Path_Id, Source_File>;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filer.d.ts","sourceRoot":"../src/lib/","sources":["filer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,EACN,SAAS,EAET,KAAK,cAAc,EACnB,KAAK,OAAO,IAAI,iBAAiB,EAEjC,MAAM,gBAAgB,CAAC;AAYxB,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,OAAO,CAAC;IAEZ;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,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,OAAO;IACvB,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;CACzE;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,OAAsB;IAW3C,SAAS,OAAQ,OAAO,KAAG,WAAW,GAAG,SAAS,CAEhD;IAEF,aAAa,OAAQ,OAAO,KAAG,WAAW,CAWxC;IAyII,KAAK,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAKxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ5B"}
1
+ {"version":3,"file":"filer.d.ts","sourceRoot":"../src/lib/","sources":["filer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,EACN,SAAS,EAET,KAAK,cAAc,EACnB,KAAK,OAAO,IAAI,iBAAiB,EAEjC,MAAM,gBAAgB,CAAC;AAYxB,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,OAAO,CAAC;IAEZ;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,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,OAAO;IACvB,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;CACzE;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,OAAsB;IAW3C,SAAS,OAAQ,OAAO,KAAG,WAAW,GAAG,SAAS,CAEhD;IAEF,aAAa,OAAQ,OAAO,KAAG,WAAW,CAYxC;IA+II,KAAK,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAKxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ5B"}
package/dist/filer.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { EMPTY_OBJECT } from '@ryanatkn/belt/object.js';
2
- import { existsSync, readFileSync } from 'node:fs';
2
+ import { existsSync, readFileSync, statSync } from 'node:fs';
3
3
  import { dirname, resolve } from 'node:path';
4
4
  import { wait } from '@ryanatkn/belt/async.js';
5
5
  import { watch_dir, } from './watch_dir.js';
6
- import { default_file_filter, paths } from './paths.js';
6
+ import { paths } from './paths.js';
7
7
  import { parse_imports } from './parse_imports.js';
8
8
  import { resolve_specifier } from './resolve_specifier.js';
9
9
  import { default_sveltekit_config } from './sveltekit_config.js';
@@ -35,6 +35,7 @@ export class Filer {
35
35
  const file = {
36
36
  id,
37
37
  contents: null,
38
+ mtime: null,
38
39
  dependents: new Map(),
39
40
  dependencies: new Map(),
40
41
  };
@@ -43,7 +44,11 @@ export class Filer {
43
44
  };
44
45
  #update(id) {
45
46
  const file = this.get_or_create(id);
46
- const new_contents = existsSync(id) ? readFileSync(id, 'utf8') : null;
47
+ const stats = existsSync(id) ? statSync(id) : null;
48
+ // const mtime_prev = file.mtime;
49
+ // const mtime_changed = mtime_prev !== (stats?.mtimeMs ?? null);
50
+ file.mtime = stats?.mtimeMs ?? null;
51
+ const new_contents = stats ? readFileSync(id, 'utf8') : null;
47
52
  if (file.contents === new_contents) {
48
53
  return null;
49
54
  }
@@ -130,7 +135,6 @@ export class Filer {
130
135
  return;
131
136
  }
132
137
  this.#watching = this.#watch_dir({
133
- filter: (path, is_directory) => (is_directory ? true : default_file_filter(path)),
134
138
  ...this.#watch_dir_options,
135
139
  dir: this.root_dir,
136
140
  on_change: this.#on_change,
@@ -1 +1 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"../src/lib/","sources":["package.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuQD,CAAC;AAEzB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuwBD,CAAC"}
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"../src/lib/","sources":["package.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuQD,CAAC;AAEzB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAswBD,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.140.6',
4
+ version: '0.141.0',
5
5
  description: 'task runner and toolkit extending SvelteKit',
6
6
  motto: 'generate, run, optimize',
7
7
  glyph: '🌰',
@@ -264,7 +264,7 @@ export const package_json = {
264
264
  };
265
265
  export const src_json = {
266
266
  name: '@ryanatkn/gro',
267
- version: '0.140.6',
267
+ version: '0.141.0',
268
268
  modules: {
269
269
  '.': {
270
270
  path: 'index.ts',
@@ -772,7 +772,6 @@ export const src_json = {
772
772
  { name: 'IS_THIS_GRO', kind: 'variable' },
773
773
  { name: 'gro_paths', kind: 'variable' },
774
774
  { name: 'GRO_DIST_DIR', kind: 'variable' },
775
- { name: 'default_file_filter', kind: 'function' },
776
775
  ],
777
776
  },
778
777
  './plugin.js': {
@@ -1 +1 @@
1
- {"version":3,"file":"path_constants.d.ts","sourceRoot":"../src/lib/","sources":["path_constants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,eAAe,QAAuB,CAAC;AACpD,eAAO,MAAM,UAAU,QAAuB,CAAC;AAC/C,eAAO,MAAM,OAAO,QAAoB,CAAC;AACzC,eAAO,MAAM,WAAW,QAAwB,CAAC;AACjD,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAC5D,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AACnD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AACnD,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAC/C,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,yBAAyB,QAAkC,CAAC;AACzE,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,eAAO,MAAM,UAAU,QAAwB,CAAC;AAChD,eAAO,MAAM,UAAU,QAAwB,CAAC;AAChD,eAAO,MAAM,YAAY,QAAc,CAAC;AACxC,eAAO,MAAM,kBAAkB,QAAO,CAAC"}
1
+ {"version":3,"file":"path_constants.d.ts","sourceRoot":"../src/lib/","sources":["path_constants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,eAAe,QAAuB,CAAC;AACpD,eAAO,MAAM,UAAU,QAAuB,CAAC;AAC/C,eAAO,MAAM,OAAO,QAAoB,CAAC;AACzC,eAAO,MAAM,WAAW,QAAwB,CAAC;AACjD,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAC5D,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AACnD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AACnD,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAC/C,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,yBAAyB,QAAkC,CAAC;AACzE,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,eAAO,MAAM,UAAU,QAAwB,CAAC;AAChD,eAAO,MAAM,UAAU,QAAwB,CAAC;AAChD,eAAO,MAAM,YAAY,QAAY,CAAC;AACtC,eAAO,MAAM,kBAAkB,QAAO,CAAC"}
@@ -28,5 +28,5 @@ export const GIT_DIRNAME = '.git';
28
28
  export const TSCONFIG_FILENAME = 'tsconfig.json';
29
29
  export const TS_MATCHER = /\.(ts|tsx|mts|cts)$/;
30
30
  export const JS_MATCHER = /\.(js|jsx|mjs|cjs)$/;
31
- export const JSON_MATCHER = /\.(json)$/;
31
+ export const JSON_MATCHER = /\.json$/;
32
32
  export const EVERYTHING_MATCHER = /.*/;
package/dist/paths.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { File_Filter, Path_Id } from './path.js';
1
+ import type { Path_Id } from './path.js';
2
2
  export declare const LIB_DIRNAME: string;
3
3
  export declare const LIB_PATH: string;
4
4
  export declare const LIB_DIR: string;
@@ -30,5 +30,4 @@ export declare const IS_THIS_GRO: boolean;
30
30
  */
31
31
  export declare const gro_paths: Paths;
32
32
  export declare const GRO_DIST_DIR: string;
33
- export declare const default_file_filter: File_Filter;
34
33
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"../src/lib/","sources":["paths.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAUpD,eAAO,MAAM,WAAW,QAA8C,CAAC;AACvE,eAAO,MAAM,QAAQ,QAA2B,CAAC;AACjD,eAAO,MAAM,OAAO,QAAiB,CAAC;AACtC,eAAO,MAAM,cAAc,QAAiD,CAAC;AAE7E,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,aAAc,MAAM,KAAG,KAW/C,CAAC;AAEF,eAAO,MAAM,WAAW,OAAQ,OAAO,KAAG,KAA4C,CAAC;AACvF,eAAO,MAAM,SAAS,OAAQ,OAAO,KAAG,OAAwD,CAAC;AAGjG,eAAO,MAAM,YAAY,OAAQ,OAAO,gBAAwB,MACnC,CAAC;AAG9B,eAAO,MAAM,oBAAoB,YAAa,OAAO,gBAA6B,MACtD,CAAC;AAI7B,eAAO,MAAM,oBAAoB,cAAe,MAAM,gBAA+B,OAC3D,CAAC;AAE3B,eAAO,MAAM,UAAU,SAAU,MAAM,gBAA0B,MAMhE,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAU,MAAM,iBAAiB,MAAM,KAAG,MAGvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,OAA8B,CAAC;AAEjD,eAAO,MAAM,eAAe,SAAS,CAAC;AAYtC,eAAO,MAAM,WAAW,SAAsC,CAAC;AAC/D;;GAEG;AACH,eAAO,MAAM,SAAS,OAA2D,CAAC;AAClF,eAAO,MAAM,YAAY,QAAgD,CAAC;AAE1E,eAAO,MAAM,mBAAmB,EAAE,WACyD,CAAC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"../src/lib/","sources":["paths.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AASvC,eAAO,MAAM,WAAW,QAA8C,CAAC;AACvE,eAAO,MAAM,QAAQ,QAA2B,CAAC;AACjD,eAAO,MAAM,OAAO,QAAiB,CAAC;AACtC,eAAO,MAAM,cAAc,QAAiD,CAAC;AAE7E,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,aAAc,MAAM,KAAG,KAW/C,CAAC;AAEF,eAAO,MAAM,WAAW,OAAQ,OAAO,KAAG,KAA4C,CAAC;AACvF,eAAO,MAAM,SAAS,OAAQ,OAAO,KAAG,OAAwD,CAAC;AAGjG,eAAO,MAAM,YAAY,OAAQ,OAAO,gBAAwB,MACnC,CAAC;AAG9B,eAAO,MAAM,oBAAoB,YAAa,OAAO,gBAA6B,MACtD,CAAC;AAI7B,eAAO,MAAM,oBAAoB,cAAe,MAAM,gBAA+B,OAC3D,CAAC;AAE3B,eAAO,MAAM,UAAU,SAAU,MAAM,gBAA0B,MAMhE,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAU,MAAM,iBAAiB,MAAM,KAAG,MAGvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,OAA8B,CAAC;AAEjD,eAAO,MAAM,eAAe,SAAS,CAAC;AAYtC,eAAO,MAAM,WAAW,SAAsC,CAAC;AAC/D;;GAEG;AACH,eAAO,MAAM,SAAS,OAA2D,CAAC;AAClF,eAAO,MAAM,YAAY,QAAgD,CAAC"}
package/dist/paths.js CHANGED
@@ -2,9 +2,8 @@ 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
4
  import { styleText as st } from 'node:util';
5
- import { GRO_CONFIG_PATH, GRO_DEV_DIR, GRO_DIR, JS_MATCHER, JSON_MATCHER, SOURCE_DIR, SVELTEKIT_DIST_DIRNAME, TS_MATCHER, } from './path_constants.js';
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
- import { SVELTE_MATCHER } from './svelte_helpers.js';
8
7
  /*
9
8
 
10
9
  A path `id` is an absolute path to the source/.gro/dist directory.
@@ -65,4 +64,3 @@ export const IS_THIS_GRO = gro_package_dir_path === paths.root;
65
64
  */
66
65
  export const gro_paths = IS_THIS_GRO ? paths : create_paths(gro_package_dir_path);
67
66
  export const GRO_DIST_DIR = gro_paths.root + SVELTEKIT_DIST_DIRNAME + '/';
68
- export const default_file_filter = (p) => SVELTE_MATCHER.test(p) || JS_MATCHER.test(p) || TS_MATCHER.test(p) || JSON_MATCHER.test(p);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryanatkn/gro",
3
- "version": "0.140.6",
3
+ "version": "0.141.0",
4
4
  "description": "task runner and toolkit extending SvelteKit",
5
5
  "motto": "generate, run, optimize",
6
6
  "glyph": "🌰",
package/src/lib/filer.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import {EMPTY_OBJECT} from '@ryanatkn/belt/object.js';
2
- import {existsSync, readFileSync} from 'node:fs';
2
+ import {existsSync, readFileSync, statSync} from 'node:fs';
3
3
  import {dirname, resolve} from 'node:path';
4
4
  import type {Omit_Strict} from '@ryanatkn/belt/types.js';
5
5
  import {wait} from '@ryanatkn/belt/async.js';
@@ -12,7 +12,7 @@ import {
12
12
  type Options as Watch_Dir_Options,
13
13
  type Watcher_Change_Callback,
14
14
  } from './watch_dir.js';
15
- import {default_file_filter, paths} from './paths.js';
15
+ import {paths} from './paths.js';
16
16
  import {parse_imports} from './parse_imports.js';
17
17
  import {resolve_specifier} from './resolve_specifier.js';
18
18
  import {default_sveltekit_config} from './sveltekit_config.js';
@@ -31,6 +31,7 @@ export interface Source_File {
31
31
  * We create the file in memory to track its dependents regardless of its existence on disk.
32
32
  */
33
33
  contents: string | null;
34
+ mtime: number | null;
34
35
  dependents: Map<Path_Id, Source_File>;
35
36
  dependencies: Map<Path_Id, Source_File>;
36
37
  }
@@ -73,6 +74,7 @@ export class Filer {
73
74
  const file: Source_File = {
74
75
  id,
75
76
  contents: null,
77
+ mtime: null,
76
78
  dependents: new Map(),
77
79
  dependencies: new Map(),
78
80
  };
@@ -82,7 +84,14 @@ export class Filer {
82
84
 
83
85
  #update(id: Path_Id): Source_File | null {
84
86
  const file = this.get_or_create(id);
85
- const new_contents = existsSync(id) ? readFileSync(id, 'utf8') : null;
87
+
88
+ const stats = existsSync(id) ? statSync(id) : null;
89
+ // const mtime_prev = file.mtime;
90
+ // const mtime_changed = mtime_prev !== (stats?.mtimeMs ?? null);
91
+ file.mtime = stats?.mtimeMs ?? null;
92
+
93
+ const new_contents = stats ? readFileSync(id, 'utf8') : null;
94
+
86
95
  if (file.contents === new_contents) {
87
96
  return null;
88
97
  }
@@ -177,7 +186,6 @@ export class Filer {
177
186
  return;
178
187
  }
179
188
  this.#watching = this.#watch_dir({
180
- filter: (path, is_directory) => (is_directory ? true : default_file_filter(path)),
181
189
  ...this.#watch_dir_options,
182
190
  dir: this.root_dir,
183
191
  on_change: this.#on_change,
@@ -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.140.6',
8
+ version: '0.141.0',
9
9
  description: 'task runner and toolkit extending SvelteKit',
10
10
  motto: 'generate, run, optimize',
11
11
  glyph: '🌰',
@@ -270,7 +270,7 @@ export const package_json = {
270
270
 
271
271
  export const src_json = {
272
272
  name: '@ryanatkn/gro',
273
- version: '0.140.6',
273
+ version: '0.141.0',
274
274
  modules: {
275
275
  '.': {
276
276
  path: 'index.ts',
@@ -778,7 +778,6 @@ export const src_json = {
778
778
  {name: 'IS_THIS_GRO', kind: 'variable'},
779
779
  {name: 'gro_paths', kind: 'variable'},
780
780
  {name: 'GRO_DIST_DIR', kind: 'variable'},
781
- {name: 'default_file_filter', kind: 'function'},
782
781
  ],
783
782
  },
784
783
  './plugin.js': {
@@ -31,5 +31,5 @@ export const TSCONFIG_FILENAME = 'tsconfig.json';
31
31
 
32
32
  export const TS_MATCHER = /\.(ts|tsx|mts|cts)$/;
33
33
  export const JS_MATCHER = /\.(js|jsx|mjs|cjs)$/;
34
- export const JSON_MATCHER = /\.(json)$/;
34
+ export const JSON_MATCHER = /\.json$/;
35
35
  export const EVERYTHING_MATCHER = /.*/;
package/src/lib/paths.ts CHANGED
@@ -7,15 +7,11 @@ import {
7
7
  GRO_CONFIG_PATH,
8
8
  GRO_DEV_DIR,
9
9
  GRO_DIR,
10
- JS_MATCHER,
11
- JSON_MATCHER,
12
10
  SOURCE_DIR,
13
11
  SVELTEKIT_DIST_DIRNAME,
14
- TS_MATCHER,
15
12
  } from './path_constants.js';
16
13
  import {default_sveltekit_config} from './sveltekit_config.js';
17
- import type {File_Filter, Path_Id} from './path.js';
18
- import {SVELTE_MATCHER} from './svelte_helpers.js';
14
+ import type {Path_Id} from './path.js';
19
15
 
20
16
  /*
21
17
 
@@ -103,6 +99,3 @@ export const IS_THIS_GRO = gro_package_dir_path === paths.root;
103
99
  */
104
100
  export const gro_paths = IS_THIS_GRO ? paths : create_paths(gro_package_dir_path);
105
101
  export const GRO_DIST_DIR = gro_paths.root + SVELTEKIT_DIST_DIRNAME + '/';
106
-
107
- export const default_file_filter: File_Filter = (p) =>
108
- SVELTE_MATCHER.test(p) || JS_MATCHER.test(p) || TS_MATCHER.test(p) || JSON_MATCHER.test(p);