@ryanatkn/gro 0.135.1 → 0.135.3

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 (63) hide show
  1. package/dist/check.task.d.ts +2 -2
  2. package/dist/filer.d.ts +29 -0
  3. package/dist/filer.d.ts.map +1 -0
  4. package/dist/filer.js +165 -0
  5. package/dist/gen.task.d.ts +2 -2
  6. package/dist/gro.config.default.d.ts.map +1 -1
  7. package/dist/gro.config.default.js +2 -3
  8. package/dist/gro_plugin_gen.d.ts +9 -2
  9. package/dist/gro_plugin_gen.d.ts.map +1 -1
  10. package/dist/gro_plugin_gen.js +67 -37
  11. package/dist/gro_plugin_sveltekit_library.d.ts.map +1 -1
  12. package/dist/gro_plugin_sveltekit_library.js +4 -16
  13. package/dist/invoke_task.d.ts +2 -1
  14. package/dist/invoke_task.d.ts.map +1 -1
  15. package/dist/invoke_task.js +4 -2
  16. package/dist/loader.d.ts.map +1 -1
  17. package/dist/loader.js +3 -9
  18. package/dist/package.d.ts +22 -0
  19. package/dist/package.d.ts.map +1 -1
  20. package/dist/package.js +39 -13
  21. package/dist/parse_imports.d.ts +6 -0
  22. package/dist/parse_imports.d.ts.map +1 -0
  23. package/dist/parse_imports.js +29 -0
  24. package/dist/path_constants.d.ts +1 -0
  25. package/dist/path_constants.d.ts.map +1 -1
  26. package/dist/path_constants.js +1 -0
  27. package/dist/paths.d.ts +2 -1
  28. package/dist/paths.d.ts.map +1 -1
  29. package/dist/paths.js +3 -1
  30. package/dist/run_task.d.ts +2 -1
  31. package/dist/run_task.d.ts.map +1 -1
  32. package/dist/run_task.js +4 -3
  33. package/dist/search_fs.d.ts +2 -2
  34. package/dist/search_fs.js +11 -11
  35. package/dist/sveltekit_config.d.ts +1 -1
  36. package/dist/sveltekit_config.d.ts.map +1 -1
  37. package/dist/sveltekit_config.js +1 -1
  38. package/dist/sveltekit_helpers.d.ts +6 -0
  39. package/dist/sveltekit_helpers.d.ts.map +1 -1
  40. package/dist/sveltekit_helpers.js +32 -0
  41. package/dist/sync.task.d.ts +2 -2
  42. package/dist/task.d.ts +2 -0
  43. package/dist/task.d.ts.map +1 -1
  44. package/dist/watch_dir.d.ts +1 -1
  45. package/dist/watch_dir.d.ts.map +1 -1
  46. package/dist/watch_dir.js +14 -12
  47. package/package.json +19 -11
  48. package/src/lib/filer.ts +212 -0
  49. package/src/lib/gro.config.default.ts +2 -3
  50. package/src/lib/gro_plugin_gen.ts +90 -43
  51. package/src/lib/gro_plugin_sveltekit_library.ts +4 -20
  52. package/src/lib/invoke_task.ts +6 -1
  53. package/src/lib/loader.ts +3 -10
  54. package/src/lib/package.ts +39 -13
  55. package/src/lib/parse_imports.ts +42 -0
  56. package/src/lib/path_constants.ts +1 -0
  57. package/src/lib/paths.ts +8 -1
  58. package/src/lib/run_task.ts +5 -2
  59. package/src/lib/search_fs.ts +11 -12
  60. package/src/lib/sveltekit_config.ts +2 -2
  61. package/src/lib/sveltekit_helpers.ts +46 -0
  62. package/src/lib/task.ts +2 -0
  63. package/src/lib/watch_dir.ts +15 -14
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.135.1',
4
+ version: '0.135.3',
5
5
  description: 'task runner and toolkit extending SvelteKit',
6
6
  motto: 'generate, run, optimize',
7
7
  glyph: '🌰',
@@ -46,7 +46,7 @@ export const package_json = {
46
46
  'esm-env': '^1.0.0',
47
47
  mri: '^1.2.0',
48
48
  prettier: '^3.3.3',
49
- 'prettier-plugin-svelte': '^3.2.6',
49
+ 'prettier-plugin-svelte': '^3.2.7',
50
50
  'ts-morph': '^23.0.0',
51
51
  tslib: '^2.7.0',
52
52
  zod: '^3.23.8',
@@ -55,22 +55,22 @@ export const package_json = {
55
55
  devDependencies: {
56
56
  '@changesets/changelog-git': '^0.2.0',
57
57
  '@changesets/types': '^6.0.0',
58
- '@ryanatkn/eslint-config': '^0.5.3',
59
- '@ryanatkn/fuz': '^0.124.4',
58
+ '@ryanatkn/eslint-config': '^0.5.4',
59
+ '@ryanatkn/fuz': '^0.129.0',
60
60
  '@ryanatkn/moss': '^0.16.1',
61
61
  '@sveltejs/adapter-static': '^3.0.5',
62
- '@sveltejs/kit': '^2.5.28',
62
+ '@sveltejs/kit': '^2.6.1',
63
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.5',
66
+ '@types/node': '^22.7.4',
67
67
  esbuild: '^0.21.5',
68
- eslint: '^9.11.0',
69
- 'eslint-plugin-svelte': '^2.44.0',
70
- svelte: '^5.0.0-next.257',
71
- 'svelte-check': '^4.0.2',
68
+ eslint: '^9.11.1',
69
+ 'eslint-plugin-svelte': '^2.44.1',
70
+ svelte: '^5.0.0-next.260',
71
+ 'svelte-check': '^4.0.4',
72
72
  typescript: '^5.6.2',
73
- 'typescript-eslint': '^8.6.0',
73
+ 'typescript-eslint': '^8.7.0',
74
74
  uvu: '^0.5.6',
75
75
  },
76
76
  prettier: {
@@ -133,6 +133,7 @@ export const package_json = {
133
133
  types: './dist/esbuild_plugin_sveltekit_shim_env.d.ts',
134
134
  default: './dist/esbuild_plugin_sveltekit_shim_env.js',
135
135
  },
136
+ './filer.js': { types: './dist/filer.d.ts', default: './dist/filer.js' },
136
137
  './format_directory.js': {
137
138
  types: './dist/format_directory.d.ts',
138
139
  default: './dist/format_directory.js',
@@ -179,6 +180,7 @@ export const package_json = {
179
180
  './package_meta.js': { types: './dist/package_meta.d.ts', default: './dist/package_meta.js' },
180
181
  './package.gen.js': { types: './dist/package.gen.d.ts', default: './dist/package.gen.js' },
181
182
  './package.js': { types: './dist/package.d.ts', default: './dist/package.js' },
183
+ './parse_imports.js': { types: './dist/parse_imports.d.ts', default: './dist/parse_imports.js' },
182
184
  './path_constants.js': {
183
185
  types: './dist/path_constants.d.ts',
184
186
  default: './dist/path_constants.js',
@@ -262,7 +264,7 @@ export const package_json = {
262
264
  };
263
265
  export const src_json = {
264
266
  name: '@ryanatkn/gro',
265
- version: '0.135.1',
267
+ version: '0.135.3',
266
268
  modules: {
267
269
  '.': {
268
270
  path: 'index.ts',
@@ -429,6 +431,16 @@ export const src_json = {
429
431
  { name: 'esbuild_plugin_sveltekit_shim_env', kind: 'function' },
430
432
  ],
431
433
  },
434
+ './filer.js': {
435
+ path: 'filer.ts',
436
+ declarations: [
437
+ { name: 'Source_File', kind: 'type' },
438
+ { name: 'Cleanup_Watch', kind: 'type' },
439
+ { name: 'On_Filer_Change', kind: 'type' },
440
+ { name: 'Options', kind: 'type' },
441
+ { name: 'Filer', kind: 'class' },
442
+ ],
443
+ },
432
444
  './format_directory.js': {
433
445
  path: 'format_directory.ts',
434
446
  declarations: [{ name: 'format_directory', kind: 'function' }],
@@ -546,7 +558,9 @@ export const src_json = {
546
558
  path: 'gro_plugin_gen.ts',
547
559
  declarations: [
548
560
  { name: 'Task_Args', kind: 'type' },
549
- { name: 'plugin', kind: 'function' },
561
+ { name: 'Options', kind: 'type' },
562
+ { name: 'gro_plugin_gen', kind: 'function' },
563
+ { name: 'filter_dependents', kind: 'function' },
550
564
  ],
551
565
  },
552
566
  './gro_plugin_server.js': {
@@ -678,6 +692,14 @@ export const src_json = {
678
692
  { name: 'src_json', kind: 'variable' },
679
693
  ],
680
694
  },
695
+ './parse_imports.js': {
696
+ path: 'parse_imports.ts',
697
+ declarations: [
698
+ { name: 'init_lexer', kind: 'function' },
699
+ { name: 'Import_Specifier', kind: 'type' },
700
+ { name: 'parse_imports', kind: 'function' },
701
+ ],
702
+ },
681
703
  './path_constants.js': {
682
704
  path: 'path_constants.ts',
683
705
  declarations: [
@@ -703,6 +725,7 @@ export const src_json = {
703
725
  { name: 'GIT_DIRNAME', kind: 'variable' },
704
726
  { name: 'TSCONFIG_FILENAME', kind: 'variable' },
705
727
  { name: 'TS_MATCHER', kind: 'variable' },
728
+ { name: 'JS_MATCHER', kind: 'variable' },
706
729
  { name: 'JSON_MATCHER', kind: 'variable' },
707
730
  { name: 'EVERYTHING_MATCHER', kind: 'variable' },
708
731
  ],
@@ -739,6 +762,7 @@ export const src_json = {
739
762
  { name: 'IS_THIS_GRO', kind: 'variable' },
740
763
  { name: 'gro_paths', kind: 'variable' },
741
764
  { name: 'GRO_DIST_DIR', kind: 'variable' },
765
+ { name: 'default_file_filter', kind: 'function' },
742
766
  ],
743
767
  },
744
768
  './plugin.js': {
@@ -864,6 +888,8 @@ export const src_json = {
864
888
  { name: 'sveltekit_sync_if_available', kind: 'function' },
865
889
  { name: 'sveltekit_sync_if_obviously_needed', kind: 'function' },
866
890
  { name: 'Svelte_Package_Options', kind: 'type' },
891
+ { name: 'run_svelte_package', kind: 'function' },
892
+ { name: 'map_sveltekit_aliases', kind: 'function' },
867
893
  ],
868
894
  },
869
895
  './sveltekit_shim_app_environment.js': {
@@ -0,0 +1,6 @@
1
+ import type { Flavored } from '@ryanatkn/belt/types.js';
2
+ import type { Path_Id } from './path.js';
3
+ export declare const init_lexer: () => Promise<void>;
4
+ export type Import_Specifier = Flavored<string, 'Import_Specifier'>;
5
+ export declare const parse_imports: (id: Path_Id, contents: string, ignore_types?: boolean) => Import_Specifier[];
6
+ //# sourceMappingURL=parse_imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse_imports.d.ts","sourceRoot":"../src/lib/","sources":["parse_imports.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAEvC,eAAO,MAAM,UAAU,QAAO,OAAO,CAAC,IAAI,CAAS,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAIpE,eAAO,MAAM,aAAa,OACrB,OAAO,YACD,MAAM,6BAEd,gBAAgB,EA0BlB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { init, parse } from 'es-module-lexer';
2
+ export const init_lexer = () => init;
3
+ const script_matcher = /<script.*?>(.*?)<\/script>/gimsu;
4
+ export const parse_imports = (id, contents, ignore_types = true) => {
5
+ const specifiers = [];
6
+ const parse_from = (s) => {
7
+ const parsed = parse(s);
8
+ for (const p of parsed[0]) {
9
+ if (ignore_types) {
10
+ const import_statement = s.slice(p.ss, p.se);
11
+ if (import_statement.startsWith('import type')) {
12
+ continue;
13
+ }
14
+ }
15
+ if (p.n)
16
+ specifiers.push(p.n);
17
+ }
18
+ };
19
+ if (id.endsWith('.svelte')) {
20
+ const matches = contents.matchAll(script_matcher);
21
+ for (const m of matches) {
22
+ parse_from(m[1]);
23
+ }
24
+ }
25
+ else {
26
+ parse_from(contents);
27
+ }
28
+ return specifiers;
29
+ };
@@ -20,6 +20,7 @@ export declare const GITHUB_DIRNAME = ".github";
20
20
  export declare const GIT_DIRNAME = ".git";
21
21
  export declare const TSCONFIG_FILENAME = "tsconfig.json";
22
22
  export declare const TS_MATCHER: RegExp;
23
+ export declare const JS_MATCHER: RegExp;
23
24
  export declare const JSON_MATCHER: RegExp;
24
25
  export declare const EVERYTHING_MATCHER: RegExp;
25
26
  //# sourceMappingURL=path_constants.d.ts.map
@@ -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,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,QAAc,CAAC;AACxC,eAAO,MAAM,kBAAkB,QAAO,CAAC"}
@@ -27,5 +27,6 @@ export const GITHUB_DIRNAME = '.github';
27
27
  export const GIT_DIRNAME = '.git';
28
28
  export const TSCONFIG_FILENAME = 'tsconfig.json';
29
29
  export const TS_MATCHER = /\.(ts|tsx|mts|cts)$/;
30
+ export const JS_MATCHER = /\.(js|jsx|mjs|cjs)$/;
30
31
  export const JSON_MATCHER = /\.(json)$/;
31
32
  export const EVERYTHING_MATCHER = /.*/;
package/dist/paths.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Path_Id } from './path.js';
1
+ import type { File_Filter, 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,4 +30,5 @@ 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;
33
34
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
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"}
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"}
package/dist/paths.js CHANGED
@@ -2,8 +2,9 @@ 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, SOURCE_DIR, SVELTEKIT_DIST_DIRNAME, } from './path_constants.js';
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';
6
6
  import { default_sveltekit_config } from './sveltekit_config.js';
7
+ import { SVELTE_MATCHER } from './svelte_helpers.js';
7
8
  /*
8
9
 
9
10
  A path `id` is an absolute path to the source/.gro/dist directory.
@@ -64,3 +65,4 @@ export const IS_THIS_GRO = gro_package_dir_path === paths.root;
64
65
  */
65
66
  export const gro_paths = IS_THIS_GRO ? paths : create_paths(gro_package_dir_path);
66
67
  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);
@@ -3,6 +3,7 @@ import { type Args } from './args.js';
3
3
  import type { invoke_task as base_invoke_task } from './invoke_task.js';
4
4
  import type { Gro_Config } from './gro_config.js';
5
5
  import { type Task_Module_Meta } from './task.js';
6
+ import type { Filer } from './filer.js';
6
7
  export type Run_Task_Result = {
7
8
  ok: true;
8
9
  output: unknown;
@@ -11,5 +12,5 @@ export type Run_Task_Result = {
11
12
  reason: string;
12
13
  error: Error;
13
14
  };
14
- export declare const run_task: (task_meta: Task_Module_Meta, unparsed_args: Args, invoke_task: typeof base_invoke_task, config: Gro_Config, timings: Timings) => Promise<Run_Task_Result>;
15
+ export declare const run_task: (task_meta: Task_Module_Meta, unparsed_args: Args, invoke_task: typeof base_invoke_task, config: Gro_Config, filer: Filer, timings: Timings) => Promise<Run_Task_Result>;
15
16
  //# sourceMappingURL=run_task.d.ts.map
@@ -1 +1 @@
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"}
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;AAE5D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEtC,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,SACX,KAAK,WACH,OAAO,KACd,OAAO,CAAC,eAAe,CAiDzB,CAAC"}
package/dist/run_task.js CHANGED
@@ -5,7 +5,7 @@ import { parse_args } from './args.js';
5
5
  import { log_task_help } from './task_logging.js';
6
6
  import { Task_Error } from './task.js';
7
7
  import { default_sveltekit_config } from './sveltekit_config.js';
8
- export const run_task = async (task_meta, unparsed_args, invoke_task, config, timings) => {
8
+ export const run_task = async (task_meta, unparsed_args, invoke_task, config, filer, timings) => {
9
9
  const { task } = task_meta.mod;
10
10
  const log = new System_Logger(print_log_label(task_meta.name));
11
11
  if (unparsed_args.help) {
@@ -23,15 +23,16 @@ export const run_task = async (task_meta, unparsed_args, invoke_task, config, ti
23
23
  args = parsed.data;
24
24
  }
25
25
  // Run the task.
26
- let output;
26
+ let output; // TODO generic
27
27
  try {
28
28
  output = await task.run({
29
29
  args,
30
30
  config,
31
31
  sveltekit_config: default_sveltekit_config,
32
+ filer,
32
33
  log,
33
34
  timings,
34
- invoke_task: (invoked_task_name, invoked_args, invoked_config) => invoke_task(invoked_task_name, invoked_args, invoked_config ?? config, timings),
35
+ invoke_task: (invoked_task_name, invoked_args, invoked_config) => invoke_task(invoked_task_name, invoked_args, invoked_config ?? config, filer, timings),
35
36
  });
36
37
  }
37
38
  catch (err) {
@@ -5,7 +5,7 @@ export interface Search_Fs_Options {
5
5
  */
6
6
  filter?: Path_Filter | Path_Filter[];
7
7
  /**
8
- * An array of file suffixes to include.
8
+ * One or more file filter functions. Every filter must pass for a file to be included.
9
9
  */
10
10
  file_filter?: File_Filter | File_Filter[];
11
11
  /**
@@ -13,7 +13,7 @@ export interface Search_Fs_Options {
13
13
  */
14
14
  sort?: boolean | null | ((a: Resolved_Path, b: Resolved_Path) => number);
15
15
  /**
16
- * Set to `false` to include directories.
16
+ * Set to `true` to include directories. Defaults to `false`.
17
17
  */
18
18
  include_directories?: boolean;
19
19
  /**
package/dist/search_fs.js CHANGED
@@ -26,18 +26,18 @@ const crawl = (dir, paths, filters, file_filter, include_directories, base_dir)
26
26
  const is_directory = dirent.isDirectory();
27
27
  const id = parentPath + name;
28
28
  const include = !filters || filters.every((f) => f(id, is_directory));
29
- if (include) {
30
- const path = base_dir === null ? name : base_dir + '/' + name;
31
- if (is_directory) {
32
- const dir_id = id + '/';
33
- if (include_directories) {
34
- paths.push({ path, id: dir_id, is_directory: true });
35
- }
36
- crawl(dir_id, paths, filters, file_filter, include_directories, path);
37
- }
38
- else if (!file_filter || file_filter.every((f) => f(id))) {
39
- paths.push({ path, id, is_directory: false });
29
+ if (!include)
30
+ continue;
31
+ const path = base_dir === null ? name : base_dir + '/' + name;
32
+ if (is_directory) {
33
+ const dir_id = id + '/';
34
+ if (include_directories) {
35
+ paths.push({ path, id: dir_id, is_directory: true });
40
36
  }
37
+ crawl(dir_id, paths, filters, file_filter, include_directories, path);
38
+ }
39
+ else if (!file_filter || file_filter.every((f) => f(id))) {
40
+ paths.push({ path, id, is_directory: false });
41
41
  }
42
42
  }
43
43
  return paths;
@@ -15,7 +15,7 @@ export declare const load_sveltekit_config: (dir?: string) => Promise<SveltekitC
15
15
  */
16
16
  export interface Parsed_Sveltekit_Config {
17
17
  sveltekit_config: SveltekitConfig | null;
18
- alias: Record<string, string> | undefined;
18
+ alias: Record<string, string>;
19
19
  base_url: '' | `/${string}` | undefined;
20
20
  assets_url: '' | `http://${string}` | `https://${string}` | undefined;
21
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit_config.d.ts","sourceRoot":"../src/lib/","sources":["sveltekit_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,IAAI,eAAe,EAAC,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAC,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAW7F;;;GAGG;AACH,eAAO,MAAM,qBAAqB,SAC5B,MAAM,KACT,OAAO,CAAC,eAAe,GAAG,IAAI,CAMhC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IAEvC,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,EAAE,GAAG,UAAU,MAAM,EAAE,GAAG,WAAW,MAAM,EAAE,GAAG,SAAS,CAAC;IAGtE;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,sBAAsB,EAAE,cAAc,CAAC;IACvC,6BAA6B,EAAE,cAAc,CAAC;IAC9C,oBAAoB,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAAC;CAC1E;AAGD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,mBAClB,MAAM,GAAG,eAAe,KACrC,OAAO,CAAC,uBAAuB,CA2CjC,CAAC;AAEF,eAAO,MAAM,iCAAiC,0CAK3C,cAAc,KAAG,oBAA4D,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,wBAAwB,yBAAgC,CAAC"}
1
+ {"version":3,"file":"sveltekit_config.d.ts","sourceRoot":"../src/lib/","sources":["sveltekit_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,IAAI,eAAe,EAAC,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAC,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAW7F;;;GAGG;AACH,eAAO,MAAM,qBAAqB,SAC5B,MAAM,KACT,OAAO,CAAC,eAAe,GAAG,IAAI,CAMhC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IAEvC,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,EAAE,GAAG,UAAU,MAAM,EAAE,GAAG,WAAW,MAAM,EAAE,GAAG,SAAS,CAAC;IAGtE;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,sBAAsB,EAAE,cAAc,CAAC;IACvC,6BAA6B,EAAE,cAAc,CAAC;IAC9C,oBAAoB,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAAC;CAC1E;AAGD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,mBAClB,MAAM,GAAG,eAAe,KACrC,OAAO,CAAC,uBAAuB,CA2CjC,CAAC;AAEF,eAAO,MAAM,iCAAiC,0CAK3C,cAAc,KAAG,oBAA4D,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,wBAAwB,yBAAgC,CAAC"}
@@ -26,7 +26,7 @@ export const load_sveltekit_config = async (dir = process.cwd()) => {
26
26
  export const init_sveltekit_config = async (dir_or_config = process.cwd()) => {
27
27
  const sveltekit_config = typeof dir_or_config === 'string' ? await load_sveltekit_config(dir_or_config) : dir_or_config;
28
28
  const kit = sveltekit_config?.kit;
29
- const alias = kit?.alias;
29
+ const alias = { $lib: 'src/lib', ...kit?.alias };
30
30
  const base_url = kit?.paths?.base;
31
31
  const assets_url = kit?.paths?.assets;
32
32
  // TODO probably a Zod schema instead
@@ -1,4 +1,5 @@
1
1
  import type { Result } from '@ryanatkn/belt/result.js';
2
+ import type { Logger } from '@ryanatkn/belt/log.js';
2
3
  import { Package_Json } from './package_json.js';
3
4
  import { type Parsed_Sveltekit_Config } from './sveltekit_config.js';
4
5
  import { type Cli } from './cli.js';
@@ -72,4 +73,9 @@ export interface Svelte_Package_Options {
72
73
  */
73
74
  tsconfig?: string;
74
75
  }
76
+ export declare const run_svelte_package: (options: Svelte_Package_Options | undefined, cli: string | Cli, log: Logger) => Promise<void>;
77
+ /**
78
+ * Map an import specifier with the SvelteKit aliases.
79
+ */
80
+ export declare const map_sveltekit_aliases: (specifier: string, aliases: Array<[string, string]>) => string;
75
81
  //# sourceMappingURL=sveltekit_helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit_helpers.d.ts","sourceRoot":"../src/lib/","sources":["sveltekit_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAAC,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAA2B,KAAK,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AAE7F,OAAO,EAAmC,KAAK,GAAG,EAAC,MAAM,UAAU,CAAC;AAGpE,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAE3D,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,eAAO,MAAM,qBAAqB,QAAgD,CAAC;AAEnF,eAAO,MAAM,iBAAiB,QAAO,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAMpE,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBAClB,YAAY,qBACT,uBAAuB,KACvC,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAqBlC,CAAC;AAEF,eAAO,MAAM,cAAc,mBACX,MAAM,GAAG,GAAG,KACzB,OAAO,CAAC,IAAI,CASd,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,2BAA2B,mBACxB,MAAM,GAAG,GAAG,KACzB,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC,mBAC/B,MAAM,GAAG,GAAG,KACzB,OAAO,CAAC,IAAI,CAUd,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"sveltekit_helpers.d.ts","sourceRoot":"../src/lib/","sources":["sveltekit_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAC,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAA2B,KAAK,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AAE7F,OAAO,EAAmC,KAAK,GAAG,EAAC,MAAM,UAAU,CAAC;AAIpE,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAE3D,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,eAAO,MAAM,qBAAqB,QAAgD,CAAC;AAEnF,eAAO,MAAM,iBAAiB,QAAO,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAMpE,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBAClB,YAAY,qBACT,uBAAuB,KACvC,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAqBlC,CAAC;AAEF,eAAO,MAAM,cAAc,mBACX,MAAM,GAAG,GAAG,KACzB,OAAO,CAAC,IAAI,CASd,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,2BAA2B,mBACxB,MAAM,GAAG,GAAG,KACzB,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC,mBAC/B,MAAM,GAAG,GAAG,KACzB,OAAO,CAAC,IAAI,CAUd,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,YACrB,sBAAsB,GAAG,SAAS,OACtC,MAAM,GAAG,GAAG,OACZ,MAAM,KACT,OAAO,CAAC,IAAI,CAmBd,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,qBAAqB,cACtB,MAAM,WACR,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAC9B,MASF,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
2
3
  import { Package_Json, load_package_json } from './package_json.js';
3
4
  import { default_sveltekit_config } from './sveltekit_config.js';
4
5
  import { SVELTEKIT_CONFIG_FILENAME, SVELTEKIT_DEV_DIRNAME } from './path_constants.js';
5
6
  import { find_cli, spawn_cli, to_cli_name } from './cli.js';
6
7
  import { Task_Error } from './task.js';
8
+ import { serialize_args, to_forwarded_args } from './args.js';
7
9
  export const SVELTEKIT_CLI = 'svelte-kit';
8
10
  export const SVELTE_CHECK_CLI = 'svelte-check';
9
11
  export const SVELTE_PACKAGE_CLI = 'svelte-package';
@@ -66,3 +68,33 @@ export const sveltekit_sync_if_obviously_needed = async (sveltekit_cli = SVELTEK
66
68
  }
67
69
  return sveltekit_sync(found_sveltekit_cli);
68
70
  };
71
+ export const run_svelte_package = async (options, cli, log) => {
72
+ const has_sveltekit_library_result = has_sveltekit_library();
73
+ if (!has_sveltekit_library_result.ok) {
74
+ throw new Task_Error('Failed to find SvelteKit library: ' + has_sveltekit_library_result.message);
75
+ }
76
+ const cli_name = typeof cli === 'string' ? cli : cli.name;
77
+ const found_svelte_package_cli = cli === cli_name ? find_cli(cli) : cli;
78
+ if (found_svelte_package_cli?.kind !== 'local') {
79
+ throw new Task_Error(`Failed to find SvelteKit packaging CLI \`${cli_name}\`, do you need to run \`npm i\`?`);
80
+ }
81
+ const serialized_args = serialize_args({
82
+ ...options,
83
+ ...to_forwarded_args(cli_name),
84
+ });
85
+ await spawn_cli(found_svelte_package_cli, serialized_args, log);
86
+ };
87
+ //
88
+ /**
89
+ * Map an import specifier with the SvelteKit aliases.
90
+ */
91
+ export const map_sveltekit_aliases = (specifier, aliases) => {
92
+ let path = specifier;
93
+ for (const [from, to] of aliases) {
94
+ if (path.startsWith(from)) {
95
+ path = join(process.cwd(), to, path.substring(from.length));
96
+ break;
97
+ }
98
+ }
99
+ return path;
100
+ };
@@ -11,19 +11,19 @@ export declare const Args: z.ZodObject<{
11
11
  'no-install': z.ZodDefault<z.ZodBoolean>;
12
12
  }, "strict", z.ZodTypeAny, {
13
13
  package_json: boolean;
14
+ gen: boolean;
14
15
  sveltekit: boolean;
15
16
  install: boolean;
16
17
  'no-install': boolean;
17
- gen: boolean;
18
18
  'no-gen': boolean;
19
19
  'no-package_json': boolean;
20
20
  'no-sveltekit': boolean;
21
21
  }, {
22
22
  package_json?: boolean | undefined;
23
+ gen?: boolean | undefined;
23
24
  sveltekit?: boolean | undefined;
24
25
  install?: boolean | undefined;
25
26
  'no-install'?: boolean | undefined;
26
- gen?: boolean | undefined;
27
27
  'no-gen'?: boolean | undefined;
28
28
  'no-package_json'?: boolean | undefined;
29
29
  'no-sveltekit'?: boolean | undefined;
package/dist/task.d.ts CHANGED
@@ -8,6 +8,7 @@ import type { Gro_Config } from './gro_config.js';
8
8
  import type { Parsed_Sveltekit_Config } from './sveltekit_config.js';
9
9
  import { type Input_Path, type Resolved_Input_File, type Resolved_Input_Path } from './input_path.js';
10
10
  import { type Load_Modules_Failure, type Module_Meta } from './modules.js';
11
+ import type { Filer } from './filer.js';
11
12
  export interface Task<T_Args = Args, // same as `z.infer<typeof Args>`
12
13
  T_Args_Schema extends z.ZodType = z.ZodType, T_Return = unknown> {
13
14
  run: (ctx: Task_Context<T_Args>) => T_Return | Promise<T_Return>;
@@ -18,6 +19,7 @@ export interface Task_Context<T_Args = object> {
18
19
  args: T_Args;
19
20
  config: Gro_Config;
20
21
  sveltekit_config: Parsed_Sveltekit_Config;
22
+ filer: Filer;
21
23
  log: Logger;
22
24
  timings: Timings;
23
25
  invoke_task: (task_name: string, args?: Args, config?: Gro_Config) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"../src/lib/","sources":["task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"../src/lib/","sources":["task.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface Watcher_Change {
9
9
  path: string;
10
10
  is_directory: boolean;
11
11
  }
12
- export type Watcher_Change_Type = 'create' | 'update' | 'delete';
12
+ export type Watcher_Change_Type = 'add' | 'update' | 'delete';
13
13
  export type Watcher_Change_Callback = (change: Watcher_Change) => void;
14
14
  export interface Options {
15
15
  dir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"watch_dir.d.ts","sourceRoot":"../src/lib/","sources":["watch_dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,eAAe,EAAiB,MAAM,UAAU,CAAC;AAGrE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAK3C,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACjE,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;AAEvE,MAAM,WAAW,OAAO;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,oDAMnB,OAAO,KAAG,aA6CZ,CAAC"}
1
+ {"version":3,"file":"watch_dir.d.ts","sourceRoot":"../src/lib/","sources":["watch_dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,eAAe,EAAiB,MAAM,UAAU,CAAC;AAIrE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAI3C,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;AAEvE,MAAM,WAAW,OAAO;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,oDAMnB,OAAO,KAAG,aA8CZ,CAAC"}
package/dist/watch_dir.js CHANGED
@@ -6,22 +6,25 @@ import { statSync } from 'node:fs';
6
6
  */
7
7
  export const watch_dir = ({ dir, on_change, filter, absolute = true, chokidar, }) => {
8
8
  let watcher;
9
+ let initing;
9
10
  return {
10
11
  init: async () => {
11
- watcher = watch(dir, chokidar);
12
- watcher.on('add', (path, s) => {
13
- const stats = s ?? statSync(path);
12
+ if (initing)
13
+ return initing;
14
+ let resolve;
15
+ initing = new Promise((r) => (resolve = r)); // TODO `create_deferred`?// cwd: chokidar?.cwd ?? process.cwd()
16
+ watcher = watch(dir, { ...chokidar });
17
+ watcher.on('add', (path) => {
14
18
  const final_path = absolute ? path : relative(dir, path);
15
- if (filter && !filter(final_path, stats.isDirectory()))
19
+ if (filter && !filter(final_path, false))
16
20
  return;
17
- on_change({ type: 'create', path: final_path, is_directory: stats.isDirectory() });
21
+ on_change({ type: 'add', path: final_path, is_directory: false });
18
22
  });
19
- watcher.on('addDir', (path, s) => {
20
- const stats = s ?? statSync(path);
23
+ watcher.on('addDir', (path) => {
21
24
  const final_path = absolute ? path : relative(dir, path);
22
- if (filter && !filter(final_path, stats.isDirectory()))
25
+ if (filter && !filter(final_path, true))
23
26
  return;
24
- on_change({ type: 'create', path: final_path, is_directory: stats.isDirectory() });
27
+ on_change({ type: 'add', path: final_path, is_directory: true });
25
28
  });
26
29
  watcher.on('change', (path, s) => {
27
30
  const stats = s ?? statSync(path);
@@ -43,12 +46,11 @@ export const watch_dir = ({ dir, on_change, filter, absolute = true, chokidar, }
43
46
  on_change({ type: 'delete', path: final_path, is_directory: true });
44
47
  });
45
48
  // wait until ready
46
- let resolve;
47
- const promise = new Promise((r) => (resolve = r));
48
49
  watcher.once('ready', () => resolve());
49
- await promise;
50
+ await initing;
50
51
  },
51
52
  close: async () => {
53
+ initing = undefined;
52
54
  if (!watcher)
53
55
  return;
54
56
  await watcher.close();