@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 +3 -0
- package/dist/changeset.task.js +1 -1
- package/dist/deploy.task.d.ts.map +1 -1
- package/dist/deploy.task.js +2 -2
- package/dist/gro_plugin_server.d.ts +2 -2
- package/dist/gro_plugin_server.d.ts.map +1 -1
- package/dist/gro_plugin_server.js +4 -4
- package/dist/package_json.js +1 -1
- package/dist/publish.task.js +1 -1
- package/dist/release.task.js +2 -2
- package/dist/sveltekit_helpers.d.ts +4 -4
- package/dist/sveltekit_helpers.d.ts.map +1 -1
- package/dist/sveltekit_helpers.js +8 -8
- package/dist/sveltekit_shim_app_paths.d.ts.map +1 -1
- package/dist/sveltekit_shim_app_paths.js +1 -1
- package/package.json +19 -17
- package/src/lib/changeset.task.ts +1 -1
- package/src/lib/deploy.task.ts +2 -2
- package/src/lib/gro_plugin_server.ts +6 -4
- package/src/lib/package_json.ts +1 -1
- package/src/lib/publish.task.ts +1 -1
- package/src/lib/release.task.ts +2 -2
- package/src/lib/sveltekit_helpers.ts +10 -10
- package/src/lib/sveltekit_shim_app_paths.ts +1 -1
- package/dist/fs.d.ts +0 -6
- package/dist/fs.d.ts.map +0 -1
- package/dist/fs.js +0 -9
- package/src/lib/fs.ts +0 -18
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)
|
package/dist/changeset.task.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/deploy.task.js
CHANGED
|
@@ -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
|
|
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,
|
|
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 {
|
|
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 (!
|
|
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 (!
|
|
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) {
|
package/dist/package_json.js
CHANGED
|
@@ -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);
|
package/dist/publish.task.js
CHANGED
|
@@ -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
|
}
|
package/dist/release.task.js
CHANGED
|
@@ -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;
|
|
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 (!
|
|
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 (!
|
|
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 (
|
|
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,
|
|
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.
|
|
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.
|
|
53
|
+
"dotenv": "^17.2.3",
|
|
54
54
|
"esm-env": "^1.2.2",
|
|
55
55
|
"mri": "^1.2.0",
|
|
56
|
-
"oxc-parser": "^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": "
|
|
64
|
+
"@ryanatkn/belt": ">=0.38.1",
|
|
65
65
|
"@sveltejs/kit": "^2",
|
|
66
|
-
"esbuild": "^0.
|
|
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.
|
|
87
|
-
"@ryanatkn/
|
|
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.
|
|
90
|
-
"@sveltejs/package": "^2.5.
|
|
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.
|
|
93
|
-
"esbuild": "^0.
|
|
94
|
-
"eslint": "^9.
|
|
95
|
-
"eslint-plugin-svelte": "^3.
|
|
96
|
-
"svelte": "^5.
|
|
97
|
-
"svelte-check": "^4.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.
|
|
100
|
-
"vitest": "^4.0.
|
|
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,
|
package/src/lib/deploy.task.ts
CHANGED
|
@@ -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
|
|
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 {
|
|
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 = (
|
|
29
|
-
|
|
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 (!
|
|
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
|
|
package/src/lib/package_json.ts
CHANGED
|
@@ -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);
|
package/src/lib/publish.task.ts
CHANGED
|
@@ -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,
|
package/src/lib/release.task.ts
CHANGED
|
@@ -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 (!
|
|
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 (!
|
|
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 (
|
|
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
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
|
-
};
|