@ryanatkn/gro 0.174.2 → 0.175.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/README.md CHANGED
@@ -8,6 +8,8 @@
8
8
 
9
9
  [Windows won't be supported](https://github.com/ryanatkn/gro/issues/319), I chose Bash instead.
10
10
 
11
+ Docs at [gro.ryanatkn.com/docs](https://gro.ryanatkn.com/docs) and [src/docs](./src/docs).
12
+
11
13
  Need help or want to share thoughts? See the
12
14
  [issues](https://github.com/ryanatkn/gro/issues) and
13
15
  [discussions](https://github.com/ryanatkn/gro/discussions).
@@ -64,6 +66,7 @@ It includes:
64
66
 
65
67
  ## docs
66
68
 
69
+ - early API docs at [/docs/api](https://gro.ryanatkn.com/docs/api)
67
70
  - developing web frontends, servers, and libraries
68
71
  - [config](/src/docs/config.md)
69
72
  - [dev](/src/docs/dev.md)
@@ -62,7 +62,7 @@ export const task = {
62
62
  throw new Task_Error('changeset command not found: install @changesets/cli locally or globally');
63
63
  }
64
64
  const package_json = load_package_json();
65
- const has_sveltekit_library_result = has_sveltekit_library(package_json, svelte_config);
65
+ const has_sveltekit_library_result = await has_sveltekit_library(package_json, svelte_config);
66
66
  if (!has_sveltekit_library_result.ok) {
67
67
  throw new Task_Error('Failed to find SvelteKit library: ' + has_sveltekit_library_result.message);
68
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/deploy.task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAqBtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAkBhD,cAAc;AACd,eAAO,MAAM,IAAI;;;;;;;;;;;;;;kBAiCf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,cAAc;AACd,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA6L3B,CAAC"}
1
+ {"version":3,"file":"deploy.task.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/deploy.task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAsBtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAiBhD,cAAc;AACd,eAAO,MAAM,IAAI;;;;;;;;;;;;;;kBAiCf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,cAAc;AACd,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA6L3B,CAAC"}
@@ -6,10 +6,10 @@ import { cp, mkdir, rm } from 'node:fs/promises';
6
6
  import { join, resolve } from 'node:path';
7
7
  import { existsSync, readdirSync } from 'node:fs';
8
8
  import { git_check_clean_workspace, git_checkout, git_local_branch_exists, git_remote_branch_exists, Git_Origin, Git_Branch, git_delete_local_branch, git_push_to_create, git_reset_branch_to_first_commit, git_pull, git_fetch, git_check_setting_pull_rebase, git_clone_locally, git_current_branch_name, } from '@ryanatkn/belt/git.js';
9
+ import { fs_empty_dir } from '@ryanatkn/belt/fs.js';
9
10
  import { Task_Error } from "./task.js";
10
11
  import { print_path } from "./paths.js";
11
12
  import { GRO_DIRNAME, GIT_DIRNAME, SVELTEKIT_BUILD_DIRNAME } from "./constants.js";
12
- import { empty_dir } from "./fs.js";
13
13
  // docs at ../docs/deploy.md
14
14
  // terminal command for testing:
15
15
  // npm run bootstrap && rm -rf .gro && clear && gro deploy --source no-git-workspace --no-build --dry
@@ -164,7 +164,7 @@ export const task = {
164
164
  await git_delete_local_branch(source, target_spawn_options);
165
165
  }
166
166
  // Remove everything except .git from the deploy directory to avoid stale files
167
- await empty_dir(resolved_deploy_dir, (path) => path !== GIT_DIRNAME);
167
+ await fs_empty_dir(resolved_deploy_dir, (name) => name !== GIT_DIRNAME);
168
168
  // Build
169
169
  try {
170
170
  if (build) {
@@ -4,9 +4,9 @@ import type { Result } from '@ryanatkn/belt/result.js';
4
4
  import type { Path_Id } from '@ryanatkn/belt/path.js';
5
5
  import type { Plugin } from './plugin.ts';
6
6
  export declare const SERVER_SOURCE_ID: Path_Id;
7
- export declare const has_server: (path?: Path_Id) => Result<object, {
7
+ export declare const has_server: (path?: Path_Id) => Promise<Result<object, {
8
8
  message: string;
9
- }>;
9
+ }>>;
10
10
  export interface Gro_Plugin_Server_Options {
11
11
  /**
12
12
  * same as esbuild's `entryPoints`
@@ -1 +1 @@
1
- {"version":3,"file":"gro_plugin_server.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gro_plugin_server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;AAI1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAEpD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAcxC,eAAO,MAAM,gBAAgB,SAA0D,CAAC;AAExF,eAAO,MAAM,UAAU,GAAI,cAAuB,KAAG,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAKpF,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC;IACrF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACxB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC;AAEzD,eAAO,MAAM,iBAAiB,GAAI,mJAgB/B,yBAA8B,KAAG,MAsJnC,CAAC"}
1
+ {"version":3,"file":"gro_plugin_server.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/gro_plugin_server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;AAI1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAEpD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAcxC,eAAO,MAAM,gBAAgB,SAA0D,CAAC;AAExF,eAAO,MAAM,UAAU,GACtB,cAAuB,KACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAK3C,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC;IACrF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACxB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC;AAEzD,eAAO,MAAM,iBAAiB,GAAI,mJAgB/B,yBAA8B,KAAG,MAsJnC,CAAC"}
@@ -3,7 +3,7 @@ import * as esbuild from 'esbuild';
3
3
  import { join, resolve } from 'node:path';
4
4
  import { identity } from '@ryanatkn/belt/function.js';
5
5
  import { strip_before, strip_end } from '@ryanatkn/belt/string.js';
6
- import { existsSync } from 'node:fs';
6
+ import { fs_exists } from '@ryanatkn/belt/fs.js';
7
7
  import { throttle } from '@ryanatkn/belt/throttle.js';
8
8
  import { base_path_to_path_id, LIB_DIRNAME, paths } from "./paths.js";
9
9
  import { GRO_DEV_DIRNAME, SERVER_DIST_PATH } from "./constants.js";
@@ -17,8 +17,8 @@ import { esbuild_plugin_sveltekit_local_imports } from "./esbuild_plugin_sveltek
17
17
  import { esbuild_plugin_svelte } from "./esbuild_plugin_svelte.js";
18
18
  // TODO sourcemap as a hoisted option? disable for production by default - or like `outpaths`, passed a `dev` param
19
19
  export const SERVER_SOURCE_ID = base_path_to_path_id(LIB_DIRNAME + '/server/server.ts');
20
- export const has_server = (path = SERVER_SOURCE_ID) => {
21
- if (!existsSync(path)) {
20
+ export const has_server = async (path = SERVER_SOURCE_ID) => {
21
+ if (!(await fs_exists(path))) {
22
22
  return { ok: false, message: `no server file found at ${path}` };
23
23
  }
24
24
  return { ok: true };
@@ -124,7 +124,7 @@ export const gro_plugin_server = ({ entry_points = [SERVER_SOURCE_ID], dir = pro
124
124
  void rebuild();
125
125
  });
126
126
  }
127
- if (!existsSync(server_outpath)) {
127
+ if (!(await fs_exists(server_outpath))) {
128
128
  throw Error(`Node server failed to start due to missing file: ${server_outpath}`);
129
129
  }
130
130
  if (run || dev) {
@@ -35,7 +35,7 @@ export const sync_package_json = async (map_package_json, log, write = true, dir
35
35
  const exported_files = search_fs(exports_dir);
36
36
  const exported_paths = exported_files.map((f) => f.path);
37
37
  const updated = await update_package_json(async (package_json) => {
38
- if (has_sveltekit_library(package_json).ok) {
38
+ if ((await has_sveltekit_library(package_json)).ok) {
39
39
  package_json.exports = to_package_exports(exported_paths);
40
40
  }
41
41
  const mapped = await map_package_json(package_json);
@@ -60,7 +60,7 @@ export const task = {
60
60
  log.info(st('green', 'dry run!'));
61
61
  }
62
62
  const package_json = load_package_json();
63
- const has_sveltekit_library_result = has_sveltekit_library(package_json);
63
+ const has_sveltekit_library_result = await has_sveltekit_library(package_json);
64
64
  if (!has_sveltekit_library_result.ok) {
65
65
  throw new Task_Error('Failed to find SvelteKit library: ' + has_sveltekit_library_result.message);
66
66
  }
@@ -9,11 +9,11 @@ export const task = {
9
9
  Args,
10
10
  run: async ({ invoke_task }) => {
11
11
  const package_json = load_package_json();
12
- const publish = has_sveltekit_library(package_json).ok;
12
+ const publish = (await has_sveltekit_library(package_json)).ok;
13
13
  if (publish) {
14
14
  await invoke_task('publish', { optional: true });
15
15
  }
16
- if (has_sveltekit_app().ok) {
16
+ if ((await has_sveltekit_app()).ok) {
17
17
  await invoke_task('deploy', { build: !publish });
18
18
  }
19
19
  },
@@ -3,12 +3,12 @@ import type { Logger } from '@ryanatkn/belt/log.js';
3
3
  import type { Package_Json } from '@ryanatkn/belt/package_json.js';
4
4
  import { type Parsed_Svelte_Config } from './svelte_config.ts';
5
5
  import { type Cli } from './cli.ts';
6
- export declare const has_sveltekit_app: (svelte_config_path?: string) => Result<object, {
6
+ export declare const has_sveltekit_app: (svelte_config_path?: string) => Promise<Result<object, {
7
7
  message: string;
8
- }>;
9
- export declare const has_sveltekit_library: (package_json: Package_Json, svelte_config?: Parsed_Svelte_Config, dep_name?: string) => Result<object, {
8
+ }>>;
9
+ export declare const has_sveltekit_library: (package_json: Package_Json, svelte_config?: Parsed_Svelte_Config, dep_name?: string) => Promise<Result<object, {
10
10
  message: string;
11
- }>;
11
+ }>>;
12
12
  export declare const sveltekit_sync: (sveltekit_cli?: string | Cli, pm_cli?: string) => Promise<void>;
13
13
  /**
14
14
  * If the SvelteKit CLI is found and its `.svelte-kit` directory is not, run `svelte-kit sync`.
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/sveltekit_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAAwB,KAAK,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAQpF,OAAO,EAAmC,KAAK,GAAG,EAAC,MAAM,UAAU,CAAC;AAIpE,eAAO,MAAM,iBAAiB,GAC7B,qBAAoB,MAA+B,KACjD,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAMlC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GACjC,cAAc,YAAY,EAC1B,gBAAe,oBAA4C,EAC3D,iBAAkC,KAChC,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAkBlC,CAAC;AAEF,eAAO,MAAM,cAAc,GAC1B,gBAAe,MAAM,GAAG,GAAmB,EAC3C,eAAuB,KACrB,OAAO,CAAC,IAAI,CASd,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACvC,gBAAe,MAAM,GAAG,GAAmB,KACzC,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC,GAC9C,gBAAe,MAAM,GAAG,GAAmB,KACzC,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,GAC9B,cAAc,YAAY,EAC1B,SAAS,sBAAsB,GAAG,SAAS,EAC3C,KAAK,MAAM,GAAG,GAAG,EACjB,KAAK,MAAM,EACX,QAAQ,MAAM,KACZ,OAAO,CAAC,IAAI,CAmBd,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GACjC,WAAW,MAAM,EACjB,SAAS,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAC9B,MASF,CAAC"}
1
+ {"version":3,"file":"sveltekit_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/sveltekit_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAElD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAC;AAIjE,OAAO,EAAwB,KAAK,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAQpF,OAAO,EAAmC,KAAK,GAAG,EAAC,MAAM,UAAU,CAAC;AAIpE,eAAO,MAAM,iBAAiB,GAC7B,qBAAoB,MAA+B,KACjD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAM3C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GACjC,cAAc,YAAY,EAC1B,gBAAe,oBAA4C,EAC3D,iBAAkC,KAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAkB3C,CAAC;AAEF,eAAO,MAAM,cAAc,GAC1B,gBAAe,MAAM,GAAG,GAAmB,EAC3C,eAAuB,KACrB,OAAO,CAAC,IAAI,CASd,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACvC,gBAAe,MAAM,GAAG,GAAmB,KACzC,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC,GAC9C,gBAAe,MAAM,GAAG,GAAmB,KACzC,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,GAC9B,cAAc,YAAY,EAC1B,SAAS,sBAAsB,GAAG,SAAS,EAC3C,KAAK,MAAM,GAAG,GAAG,EACjB,KAAK,MAAM,EACX,QAAQ,MAAM,KACZ,OAAO,CAAC,IAAI,CAmBd,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GACjC,WAAW,MAAM,EACjB,SAAS,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAC9B,MASF,CAAC"}
@@ -1,24 +1,24 @@
1
- import { existsSync } from 'node:fs';
2
1
  import { join } from 'node:path';
2
+ import { fs_exists } from '@ryanatkn/belt/fs.js';
3
3
  import { has_dep } from "./package_json.js";
4
4
  import { default_svelte_config } from "./svelte_config.js";
5
5
  import { SVELTE_CONFIG_FILENAME, SVELTEKIT_DEV_DIRNAME, PM_CLI_DEFAULT, SVELTE_PACKAGE_DEP_NAME, SVELTEKIT_CLI, } from "./constants.js";
6
6
  import { find_cli, spawn_cli, to_cli_name } from "./cli.js";
7
7
  import { Task_Error } from "./task.js";
8
8
  import { serialize_args, to_forwarded_args } from "./args.js";
9
- export const has_sveltekit_app = (svelte_config_path = SVELTE_CONFIG_FILENAME) => {
10
- if (!existsSync(svelte_config_path)) {
9
+ export const has_sveltekit_app = async (svelte_config_path = SVELTE_CONFIG_FILENAME) => {
10
+ if (!(await fs_exists(svelte_config_path))) {
11
11
  return { ok: false, message: `no SvelteKit config found at ${SVELTE_CONFIG_FILENAME}` };
12
12
  }
13
13
  // TODO check for routes?
14
14
  return { ok: true };
15
15
  };
16
- export const has_sveltekit_library = (package_json, svelte_config = default_svelte_config, dep_name = SVELTE_PACKAGE_DEP_NAME) => {
17
- const has_sveltekit_app_result = has_sveltekit_app();
16
+ export const has_sveltekit_library = async (package_json, svelte_config = default_svelte_config, dep_name = SVELTE_PACKAGE_DEP_NAME) => {
17
+ const has_sveltekit_app_result = await has_sveltekit_app();
18
18
  if (!has_sveltekit_app_result.ok) {
19
19
  return has_sveltekit_app_result;
20
20
  }
21
- if (!existsSync(svelte_config.lib_path)) {
21
+ if (!(await fs_exists(svelte_config.lib_path))) {
22
22
  return { ok: false, message: `no SvelteKit lib directory found at ${svelte_config.lib_path}` };
23
23
  }
24
24
  if (!has_dep(dep_name, package_json)) {
@@ -52,7 +52,7 @@ export const sveltekit_sync_if_available = async (sveltekit_cli = SVELTEKIT_CLI)
52
52
  * If the SvelteKit CLI is found and its `.svelte-kit` directory is not, run `svelte-kit sync`.
53
53
  */
54
54
  export const sveltekit_sync_if_obviously_needed = async (sveltekit_cli = SVELTEKIT_CLI) => {
55
- if (existsSync(SVELTEKIT_DEV_DIRNAME)) {
55
+ if (await fs_exists(SVELTEKIT_DEV_DIRNAME)) {
56
56
  return;
57
57
  }
58
58
  const found_sveltekit_cli = typeof sveltekit_cli === 'string' ? find_cli(sveltekit_cli) : sveltekit_cli;
@@ -62,7 +62,7 @@ export const sveltekit_sync_if_obviously_needed = async (sveltekit_cli = SVELTEK
62
62
  return sveltekit_sync(found_sveltekit_cli);
63
63
  };
64
64
  export const run_svelte_package = async (package_json, options, cli, log, pm_cli) => {
65
- const has_sveltekit_library_result = has_sveltekit_library(package_json);
65
+ const has_sveltekit_library_result = await has_sveltekit_library(package_json);
66
66
  if (!has_sveltekit_library_result.ok) {
67
67
  throw new Task_Error('Failed to find SvelteKit library: ' + has_sveltekit_library_result.message);
68
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit_shim_app_paths.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/sveltekit_shim_app_paths.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,KAAK,EACX,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,UAAU,EACnB,YAAY,IAAI,iBAAiB,EACjC,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,kBAAkB;AAClB,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,OAAO,EAAE,OAAO,YAAyD,CAAC;AACvF,kBAAkB;AAClB,eAAO,MAAM,YAAY,EAAE,OAAO,iBAAwB,CAAC;AAC3D,eAAO,MAAM,KAAK,EAAE,OAAO,UAAuD,CAAC"}
1
+ {"version":3,"file":"sveltekit_shim_app_paths.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/sveltekit_shim_app_paths.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,KAAK,EACX,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,UAAU,EACnB,YAAY,IAAI,iBAAiB,EACjC,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,kBAAkB;AAClB,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,OAAO,EAAE,OAAO,YAAmE,CAAC;AACjG,kBAAkB;AAClB,eAAO,MAAM,YAAY,EAAE,OAAO,iBAAwB,CAAC;AAC3D,eAAO,MAAM,KAAK,EAAE,OAAO,UAAuD,CAAC"}
@@ -4,7 +4,7 @@ import { noop } from '@ryanatkn/belt/function.js';
4
4
  export const assets = '';
5
5
  /** @deprecated */
6
6
  export const base = '';
7
- export const resolve = (v) => ('/' + v.replace(/^\//, '')); // TODO needs to use SvelteKit config base
7
+ export const resolve = (v, ..._rest) => ('/' + v.replace(/^\//, '')); // TODO needs to use SvelteKit config base
8
8
  /** @deprecated */
9
9
  export const resolveRoute = noop; // eslint-disable-line @typescript-eslint/no-deprecated
10
10
  export const asset = (v) => ('/' + v.replace(/^\//, '')); // TODO needs to use SvelteKit config base
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryanatkn/gro",
3
- "version": "0.174.2",
3
+ "version": "0.175.0",
4
4
  "description": "task runner and toolkit extending SvelteKit",
5
5
  "motto": "generate, run, optimize",
6
6
  "glyph": "🌰",
@@ -50,10 +50,10 @@
50
50
  ],
51
51
  "dependencies": {
52
52
  "chokidar": "^4.0.3",
53
- "dotenv": "^17.2.2",
53
+ "dotenv": "^17.2.3",
54
54
  "esm-env": "^1.2.2",
55
55
  "mri": "^1.2.0",
56
- "oxc-parser": "^0.87.0",
56
+ "oxc-parser": "^0.98.0",
57
57
  "prettier": "^3.6.2",
58
58
  "prettier-plugin-svelte": "^3.4.0",
59
59
  "ts-blank-space": "^0.6.2",
@@ -61,9 +61,9 @@
61
61
  "zod": "^4.1.12"
62
62
  },
63
63
  "peerDependencies": {
64
- "@ryanatkn/belt": "^0.38.0",
64
+ "@ryanatkn/belt": ">=0.38.1",
65
65
  "@sveltejs/kit": "^2",
66
- "esbuild": "^0.25",
66
+ "esbuild": "^0.27.0",
67
67
  "svelte": "^5",
68
68
  "typescript": "^5",
69
69
  "vitest": "^3 || ^4"
@@ -82,22 +82,24 @@
82
82
  "devDependencies": {
83
83
  "@changesets/changelog-git": "^0.2.1",
84
84
  "@changesets/types": "^6.1.0",
85
+ "@ryanatkn/belt": "^0.38.2",
85
86
  "@ryanatkn/eslint-config": "^0.9.0",
86
- "@ryanatkn/fuz": "^0.156.0",
87
- "@ryanatkn/moss": "^0.37.0",
87
+ "@ryanatkn/fuz": "^0.161.0",
88
+ "@ryanatkn/fuz_code": "^0.34.0",
89
+ "@ryanatkn/moss": "^0.38.0",
88
90
  "@sveltejs/adapter-static": "^3.0.10",
89
- "@sveltejs/kit": "^2.47.2",
90
- "@sveltejs/package": "^2.5.4",
91
+ "@sveltejs/kit": "^2.49.0",
92
+ "@sveltejs/package": "^2.5.6",
91
93
  "@sveltejs/vite-plugin-svelte": "^6.2.1",
92
- "@types/node": "^24.3.1",
93
- "esbuild": "^0.25.9",
94
- "eslint": "^9.35.0",
95
- "eslint-plugin-svelte": "^3.12.5",
96
- "svelte": "^5.41.2",
97
- "svelte-check": "^4.3.3",
94
+ "@types/node": "^24.10.1",
95
+ "esbuild": "^0.27.0",
96
+ "eslint": "^9.39.1",
97
+ "eslint-plugin-svelte": "^3.13.0",
98
+ "svelte": "^5.43.14",
99
+ "svelte-check": "^4.3.4",
98
100
  "typescript": "^5.9.3",
99
- "typescript-eslint": "^8.42.0",
100
- "vitest": "^4.0.3"
101
+ "typescript-eslint": "^8.47.0",
102
+ "vitest": "^4.0.13"
101
103
  },
102
104
  "prettier": {
103
105
  "plugins": [
@@ -101,7 +101,7 @@ export const task: Task<Args> = {
101
101
 
102
102
  const package_json = load_package_json();
103
103
 
104
- const has_sveltekit_library_result = has_sveltekit_library(package_json, svelte_config);
104
+ const has_sveltekit_library_result = await has_sveltekit_library(package_json, svelte_config);
105
105
  if (!has_sveltekit_library_result.ok) {
106
106
  throw new Task_Error(
107
107
  'Failed to find SvelteKit library: ' + has_sveltekit_library_result.message,
@@ -21,11 +21,11 @@ import {
21
21
  git_clone_locally,
22
22
  git_current_branch_name,
23
23
  } from '@ryanatkn/belt/git.js';
24
+ import {fs_empty_dir} from '@ryanatkn/belt/fs.js';
24
25
 
25
26
  import {Task_Error, type Task} from './task.ts';
26
27
  import {print_path} from './paths.ts';
27
28
  import {GRO_DIRNAME, GIT_DIRNAME, SVELTEKIT_BUILD_DIRNAME} from './constants.ts';
28
- import {empty_dir} from './fs.ts';
29
29
 
30
30
  // docs at ../docs/deploy.md
31
31
 
@@ -217,7 +217,7 @@ export const task: Task<Args> = {
217
217
  }
218
218
 
219
219
  // Remove everything except .git from the deploy directory to avoid stale files
220
- await empty_dir(resolved_deploy_dir, (path) => path !== GIT_DIRNAME);
220
+ await fs_empty_dir(resolved_deploy_dir, (name) => name !== GIT_DIRNAME);
221
221
 
222
222
  // Build
223
223
  try {
@@ -5,7 +5,7 @@ import {join, resolve} from 'node:path';
5
5
  import {identity} from '@ryanatkn/belt/function.js';
6
6
  import {strip_before, strip_end} from '@ryanatkn/belt/string.js';
7
7
  import type {Result} from '@ryanatkn/belt/result.js';
8
- import {existsSync} from 'node:fs';
8
+ import {fs_exists} from '@ryanatkn/belt/fs.js';
9
9
  import {throttle} from '@ryanatkn/belt/throttle.js';
10
10
  import type {Path_Id} from '@ryanatkn/belt/path.js';
11
11
 
@@ -25,8 +25,10 @@ import {esbuild_plugin_svelte} from './esbuild_plugin_svelte.ts';
25
25
 
26
26
  export const SERVER_SOURCE_ID = base_path_to_path_id(LIB_DIRNAME + '/server/server.ts');
27
27
 
28
- export const has_server = (path = SERVER_SOURCE_ID): Result<object, {message: string}> => {
29
- if (!existsSync(path)) {
28
+ export const has_server = async (
29
+ path = SERVER_SOURCE_ID,
30
+ ): Promise<Result<object, {message: string}>> => {
31
+ if (!(await fs_exists(path))) {
30
32
  return {ok: false, message: `no server file found at ${path}`};
31
33
  }
32
34
  return {ok: true};
@@ -239,7 +241,7 @@ export const gro_plugin_server = ({
239
241
  });
240
242
  }
241
243
 
242
- if (!existsSync(server_outpath)) {
244
+ if (!(await fs_exists(server_outpath))) {
243
245
  throw Error(`Node server failed to start due to missing file: ${server_outpath}`);
244
246
  }
245
247
 
@@ -62,7 +62,7 @@ export const sync_package_json = async (
62
62
  const exported_paths = exported_files.map((f) => f.path);
63
63
  const updated = await update_package_json(
64
64
  async (package_json) => {
65
- if (has_sveltekit_library(package_json).ok) {
65
+ if ((await has_sveltekit_library(package_json)).ok) {
66
66
  package_json.exports = to_package_exports(exported_paths);
67
67
  }
68
68
  const mapped = await map_package_json(package_json);
@@ -87,7 +87,7 @@ export const task: Task<Args> = {
87
87
 
88
88
  const package_json = load_package_json();
89
89
 
90
- const has_sveltekit_library_result = has_sveltekit_library(package_json);
90
+ const has_sveltekit_library_result = await has_sveltekit_library(package_json);
91
91
  if (!has_sveltekit_library_result.ok) {
92
92
  throw new Task_Error(
93
93
  'Failed to find SvelteKit library: ' + has_sveltekit_library_result.message,
@@ -15,11 +15,11 @@ export const task: Task<Args> = {
15
15
  run: async ({invoke_task}) => {
16
16
  const package_json = load_package_json();
17
17
 
18
- const publish = has_sveltekit_library(package_json).ok;
18
+ const publish = (await has_sveltekit_library(package_json)).ok;
19
19
  if (publish) {
20
20
  await invoke_task('publish', {optional: true});
21
21
  }
22
- if (has_sveltekit_app().ok) {
22
+ if ((await has_sveltekit_app()).ok) {
23
23
  await invoke_task('deploy', {build: !publish});
24
24
  }
25
25
  },
@@ -1,8 +1,8 @@
1
1
  import type {Result} from '@ryanatkn/belt/result.js';
2
- import {existsSync} from 'node:fs';
3
2
  import type {Logger} from '@ryanatkn/belt/log.js';
4
3
  import {join} from 'node:path';
5
4
  import type {Package_Json} from '@ryanatkn/belt/package_json.js';
5
+ import {fs_exists} from '@ryanatkn/belt/fs.js';
6
6
 
7
7
  import {has_dep} from './package_json.ts';
8
8
  import {default_svelte_config, type Parsed_Svelte_Config} from './svelte_config.ts';
@@ -17,27 +17,27 @@ import {find_cli, spawn_cli, to_cli_name, type Cli} from './cli.ts';
17
17
  import {Task_Error} from './task.ts';
18
18
  import {serialize_args, to_forwarded_args} from './args.ts';
19
19
 
20
- export const has_sveltekit_app = (
20
+ export const has_sveltekit_app = async (
21
21
  svelte_config_path: string = SVELTE_CONFIG_FILENAME,
22
- ): Result<object, {message: string}> => {
23
- if (!existsSync(svelte_config_path)) {
22
+ ): Promise<Result<object, {message: string}>> => {
23
+ if (!(await fs_exists(svelte_config_path))) {
24
24
  return {ok: false, message: `no SvelteKit config found at ${SVELTE_CONFIG_FILENAME}`};
25
25
  }
26
26
  // TODO check for routes?
27
27
  return {ok: true};
28
28
  };
29
29
 
30
- export const has_sveltekit_library = (
30
+ export const has_sveltekit_library = async (
31
31
  package_json: Package_Json,
32
32
  svelte_config: Parsed_Svelte_Config = default_svelte_config,
33
33
  dep_name = SVELTE_PACKAGE_DEP_NAME,
34
- ): Result<object, {message: string}> => {
35
- const has_sveltekit_app_result = has_sveltekit_app();
34
+ ): Promise<Result<object, {message: string}>> => {
35
+ const has_sveltekit_app_result = await has_sveltekit_app();
36
36
  if (!has_sveltekit_app_result.ok) {
37
37
  return has_sveltekit_app_result;
38
38
  }
39
39
 
40
- if (!existsSync(svelte_config.lib_path)) {
40
+ if (!(await fs_exists(svelte_config.lib_path))) {
41
41
  return {ok: false, message: `no SvelteKit lib directory found at ${svelte_config.lib_path}`};
42
42
  }
43
43
 
@@ -85,7 +85,7 @@ export const sveltekit_sync_if_available = async (
85
85
  export const sveltekit_sync_if_obviously_needed = async (
86
86
  sveltekit_cli: string | Cli = SVELTEKIT_CLI,
87
87
  ): Promise<void> => {
88
- if (existsSync(SVELTEKIT_DEV_DIRNAME)) {
88
+ if (await fs_exists(SVELTEKIT_DEV_DIRNAME)) {
89
89
  return;
90
90
  }
91
91
  const found_sveltekit_cli =
@@ -153,7 +153,7 @@ export const run_svelte_package = async (
153
153
  log: Logger,
154
154
  pm_cli: string,
155
155
  ): Promise<void> => {
156
- const has_sveltekit_library_result = has_sveltekit_library(package_json);
156
+ const has_sveltekit_library_result = await has_sveltekit_library(package_json);
157
157
  if (!has_sveltekit_library_result.ok) {
158
158
  throw new Task_Error(
159
159
  'Failed to find SvelteKit library: ' + has_sveltekit_library_result.message,
@@ -18,7 +18,7 @@ import {noop} from '@ryanatkn/belt/function.js';
18
18
  export const assets = '';
19
19
  /** @deprecated */
20
20
  export const base = '';
21
- export const resolve: typeof base_resolve = (v) => ('/' + v.replace(/^\//, '')) as any; // TODO needs to use SvelteKit config base
21
+ export const resolve: typeof base_resolve = (v, ..._rest) => ('/' + v.replace(/^\//, '')) as any; // TODO needs to use SvelteKit config base
22
22
  /** @deprecated */
23
23
  export const resolveRoute: typeof base_resolveRoute = noop; // eslint-disable-line @typescript-eslint/no-deprecated
24
24
  export const asset: typeof base_asset = (v) => ('/' + v.replace(/^\//, '')) as any; // TODO needs to use SvelteKit config base
package/dist/fs.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import { type RmOptions } from 'node:fs';
2
- /**
3
- * Empties a directory with an optional `filter`.
4
- */
5
- export declare const empty_dir: (dir: string, filter?: (path: string) => boolean, options?: RmOptions) => Promise<void>;
6
- //# sourceMappingURL=fs.d.ts.map
package/dist/fs.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/fs.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAGpD;;GAEG;AACH,eAAO,MAAM,SAAS,GACrB,KAAK,MAAM,EACX,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EAClC,UAAU,SAAS,KACjB,OAAO,CAAC,IAAI,CAMd,CAAC"}
package/dist/fs.js DELETED
@@ -1,9 +0,0 @@
1
- import { rm } from 'node:fs/promises';
2
- import { readdirSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- /**
5
- * Empties a directory with an optional `filter`.
6
- */
7
- export const empty_dir = async (dir, filter, options) => {
8
- await Promise.all(readdirSync(dir).map((path) => filter && !filter(path) ? null : rm(join(dir, path), { ...options, recursive: true })));
9
- };
package/src/lib/fs.ts DELETED
@@ -1,18 +0,0 @@
1
- import {rm} from 'node:fs/promises';
2
- import {readdirSync, type RmOptions} from 'node:fs';
3
- import {join} from 'node:path';
4
-
5
- /**
6
- * Empties a directory with an optional `filter`.
7
- */
8
- export const empty_dir = async (
9
- dir: string,
10
- filter?: (path: string) => boolean,
11
- options?: RmOptions,
12
- ): Promise<void> => {
13
- await Promise.all(
14
- readdirSync(dir).map((path) =>
15
- filter && !filter(path) ? null : rm(join(dir, path), {...options, recursive: true}),
16
- ),
17
- );
18
- };