@ryanatkn/gro 0.118.0 → 0.119.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 +6 -4
- package/dist/build.task.d.ts +3 -0
- package/dist/build.task.js +5 -1
- package/dist/changeset.task.d.ts +2 -2
- package/dist/changeset.task.js +9 -5
- package/dist/check.task.js +1 -1
- package/dist/deploy.task.d.ts +0 -6
- package/dist/deploy.task.js +2 -7
- package/dist/dev.task.d.ts +2 -2
- package/dist/docs/gen.md +11 -0
- package/dist/docs/publish.md +1 -8
- package/dist/docs/task.md +7 -0
- package/dist/docs/tasks.md +1 -0
- package/dist/format_directory.d.ts +8 -2
- package/dist/format_directory.js +15 -10
- package/dist/gen.d.ts +14 -0
- package/dist/gen.js +45 -0
- package/dist/gen.task.js +17 -17
- package/dist/gen_module.d.ts +1 -14
- package/dist/gen_module.js +0 -22
- package/dist/git.d.ts +5 -0
- package/dist/git.js +15 -0
- package/dist/git.test.js +4 -1
- package/dist/gro.config.default.js +5 -9
- package/dist/gro_plugin_gen.js +1 -1
- package/dist/gro_plugin_server.d.ts +4 -1
- package/dist/gro_plugin_server.js +6 -1
- package/dist/gro_plugin_sveltekit_library.js +9 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +0 -1
- package/dist/invoke.js +2 -0
- package/dist/invoke_task.d.ts +1 -1
- package/dist/invoke_task.js +1 -1
- package/dist/package.d.ts +11 -0
- package/dist/package.js +26 -8
- package/dist/package_json.js +1 -1
- package/dist/path_constants.d.ts +1 -0
- package/dist/path_constants.js +1 -0
- package/dist/publish.task.d.ts +9 -6
- package/dist/publish.task.js +25 -13
- package/dist/reinstall.task.d.ts +5 -0
- package/dist/reinstall.task.js +32 -0
- package/dist/release.task.js +4 -5
- package/dist/run.task.js +1 -1
- package/dist/run_task.js +1 -1
- package/dist/sveltekit_helpers.d.ts +15 -2
- package/dist/sveltekit_helpers.js +48 -6
- package/dist/sync.task.d.ts +0 -1
- package/dist/sync.task.js +2 -11
- package/dist/task_logging.js +25 -11
- package/dist/typecheck.task.js +1 -1
- package/dist/upgrade.task.d.ts +4 -1
- package/dist/upgrade.task.js +30 -5
- package/package.json +7 -3
package/dist/gro_plugin_gen.js
CHANGED
|
@@ -32,7 +32,7 @@ export const plugin = () => {
|
|
|
32
32
|
void flush_gen_queue();
|
|
33
33
|
}
|
|
34
34
|
}, FLUSH_DEBOUNCE_DELAY);
|
|
35
|
-
const gen = (files = []) =>
|
|
35
|
+
const gen = (files = []) => spawn_cli('gro', ['gen', ...files]);
|
|
36
36
|
return {
|
|
37
37
|
name: 'gro_plugin_gen',
|
|
38
38
|
setup: async ({ args: { watch }, dev, log }) => {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import * as esbuild from 'esbuild';
|
|
2
2
|
import type { Config as SvelteKitConfig } from '@sveltejs/kit';
|
|
3
|
+
import type { Result } from '@ryanatkn/belt/result.js';
|
|
3
4
|
import type { Plugin, Plugin_Context } from './plugin.js';
|
|
4
5
|
export declare const SERVER_SOURCE_ID: Flavored<string, "Source_Id">;
|
|
5
|
-
export declare const has_server: (path?: Flavored<string, "Source_Id">) => Promise<
|
|
6
|
+
export declare const has_server: (path?: Flavored<string, "Source_Id">) => Promise<Result<object, {
|
|
7
|
+
message: string;
|
|
8
|
+
}>>;
|
|
6
9
|
export interface Options {
|
|
7
10
|
/**
|
|
8
11
|
* same as esbuild's `entryPoints`
|
|
@@ -19,7 +19,12 @@ import { throttle } from './throttle.js';
|
|
|
19
19
|
import { sveltekit_config_global } from './sveltekit_config_global.js';
|
|
20
20
|
// TODO sourcemap as a hoisted option? disable for production by default - or like `outpaths`, passed a `dev` param
|
|
21
21
|
export const SERVER_SOURCE_ID = base_path_to_source_id(LIB_DIRNAME + '/server/server.ts');
|
|
22
|
-
export const has_server = (path = SERVER_SOURCE_ID) =>
|
|
22
|
+
export const has_server = async (path = SERVER_SOURCE_ID) => {
|
|
23
|
+
if (!(await exists(path))) {
|
|
24
|
+
return { ok: false, message: `no server file found at ${path}` };
|
|
25
|
+
}
|
|
26
|
+
return { ok: true };
|
|
27
|
+
};
|
|
23
28
|
export const gro_plugin_server = ({ entry_points = [SERVER_SOURCE_ID], dir = process.cwd(), outpaths = (dev) => ({
|
|
24
29
|
outdir: join(dir, dev ? GRO_DEV_DIRNAME : SERVER_DIST_PATH),
|
|
25
30
|
outbase: paths.lib,
|
|
@@ -3,16 +3,21 @@ import { Task_Error } from './task.js';
|
|
|
3
3
|
import { load_package_json } from './package_json.js';
|
|
4
4
|
import { print_command_args, serialize_args, to_forwarded_args } from './args.js';
|
|
5
5
|
import { find_cli, spawn_cli } from './cli.js';
|
|
6
|
+
import { SVELTE_PACKAGE_CLI, has_sveltekit_library } from './sveltekit_helpers.js';
|
|
6
7
|
export const gro_plugin_sveltekit_library = () => {
|
|
7
8
|
return {
|
|
8
9
|
name: 'gro_plugin_sveltekit_library',
|
|
9
10
|
setup: async ({ log }) => {
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
const has_sveltekit_library_result = await has_sveltekit_library();
|
|
12
|
+
if (!has_sveltekit_library_result.ok) {
|
|
13
|
+
throw new Task_Error('Failed to find SvelteKit library: ' + has_sveltekit_library_result.message);
|
|
12
14
|
}
|
|
13
|
-
|
|
15
|
+
if ((await find_cli(SVELTE_PACKAGE_CLI)) !== 'local') {
|
|
16
|
+
throw new Task_Error(`Failed to find ${SVELTE_PACKAGE_CLI}, run \`npm i\``);
|
|
17
|
+
}
|
|
18
|
+
const serialized_args = serialize_args(to_forwarded_args(SVELTE_PACKAGE_CLI));
|
|
14
19
|
log.info(print_command_args(serialized_args));
|
|
15
|
-
await spawn_cli(
|
|
20
|
+
await spawn_cli(SVELTE_PACKAGE_CLI, serialized_args);
|
|
16
21
|
},
|
|
17
22
|
adapt: async ({ log, timings }) => {
|
|
18
23
|
const package_json = await load_package_json();
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export type { Gro_Config, Create_Gro_Config } from './config.js';
|
|
2
2
|
export { type Plugin, replace_plugin } from './plugin.js';
|
|
3
|
-
export {
|
|
3
|
+
export type { Gen, Gen_Context } from './gen.js';
|
|
4
4
|
export { type Task, type Task_Context, Task_Error } from './task.js';
|
package/dist/index.js
CHANGED
package/dist/invoke.js
CHANGED
|
@@ -2,6 +2,7 @@ import { attach_process_error_handlers } from '@ryanatkn/belt/process.js';
|
|
|
2
2
|
import { invoke_task } from './invoke_task.js';
|
|
3
3
|
import { to_task_args } from './args.js';
|
|
4
4
|
import { load_config } from './config.js';
|
|
5
|
+
import { sveltekit_sync_if_obviously_needed } from './sveltekit_helpers.js';
|
|
5
6
|
/*
|
|
6
7
|
|
|
7
8
|
This module invokes the Gro CLI which in turn invokes tasks.
|
|
@@ -14,5 +15,6 @@ and the rest of the args are forwarded to the task's `run` function.
|
|
|
14
15
|
*/
|
|
15
16
|
// handle uncaught errors
|
|
16
17
|
attach_process_error_handlers((err) => err?.constructor?.name === 'Task_Error' ? 'Task_Error' : null);
|
|
18
|
+
await sveltekit_sync_if_obviously_needed();
|
|
17
19
|
const { task_name, args } = to_task_args();
|
|
18
20
|
await invoke_task(task_name, args, await load_config());
|
package/dist/invoke_task.d.ts
CHANGED
|
@@ -17,4 +17,4 @@ import type { Gro_Config } from './config.js';
|
|
|
17
17
|
* there are some subtle differences in the complex logical branches.
|
|
18
18
|
* The comments describe each condition.
|
|
19
19
|
*/
|
|
20
|
-
export declare const invoke_task: (task_name: Flavored<string, "Raw_Input_Path">, args: Args, config: Gro_Config, timings?: any) => Promise<void>;
|
|
20
|
+
export declare const invoke_task: (task_name: Flavored<string, "Raw_Input_Path">, args: Args | undefined, config: Gro_Config, timings?: any) => Promise<void>;
|
package/dist/invoke_task.js
CHANGED
|
@@ -36,7 +36,7 @@ export const invoke_task = async (task_name, args, config, timings = new Timings
|
|
|
36
36
|
log.info(`🕒 ${print_ms(total_timing())}`);
|
|
37
37
|
};
|
|
38
38
|
// Check if the caller just wants to see the version.
|
|
39
|
-
if (!task_name && (args
|
|
39
|
+
if (!task_name && (args?.version || args?.v)) {
|
|
40
40
|
const gro_package_json = await load_gro_package_json();
|
|
41
41
|
log.info(`${gray('v')}${cyan(gro_package_json.version)}`);
|
|
42
42
|
finish();
|
package/dist/package.d.ts
CHANGED
|
@@ -314,6 +314,10 @@ export declare const package_json: {
|
|
|
314
314
|
default: string;
|
|
315
315
|
types: string;
|
|
316
316
|
};
|
|
317
|
+
'./reinstall.task.js': {
|
|
318
|
+
default: string;
|
|
319
|
+
types: string;
|
|
320
|
+
};
|
|
317
321
|
'./release.task.js': {
|
|
318
322
|
default: string;
|
|
319
323
|
types: string;
|
|
@@ -809,6 +813,13 @@ export declare const src_json: {
|
|
|
809
813
|
path: string;
|
|
810
814
|
declarations: never[];
|
|
811
815
|
};
|
|
816
|
+
'./reinstall.task.js': {
|
|
817
|
+
path: string;
|
|
818
|
+
declarations: {
|
|
819
|
+
name: string;
|
|
820
|
+
kind: string;
|
|
821
|
+
}[];
|
|
822
|
+
};
|
|
812
823
|
'./release.task.js': {
|
|
813
824
|
path: string;
|
|
814
825
|
declarations: {
|
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.
|
|
4
|
+
version: '0.119.0',
|
|
5
5
|
description: 'task runner and toolkit extending SvelteKit',
|
|
6
6
|
motto: 'generate, run, optimize',
|
|
7
7
|
icon: '🌰',
|
|
@@ -54,7 +54,7 @@ export const package_json = {
|
|
|
54
54
|
'@ryanatkn/fuz': '^0.102.1',
|
|
55
55
|
'@ryanatkn/moss': '^0.4.0',
|
|
56
56
|
'@sveltejs/adapter-static': '^3.0.2',
|
|
57
|
-
'@sveltejs/kit': '^2.5.
|
|
57
|
+
'@sveltejs/kit': '^2.5.16',
|
|
58
58
|
'@sveltejs/package': '^2.3.2',
|
|
59
59
|
'@sveltejs/vite-plugin-svelte': '^3.1.1',
|
|
60
60
|
'@types/fs-extra': '^11.0.4',
|
|
@@ -63,7 +63,7 @@ export const package_json = {
|
|
|
63
63
|
'@typescript-eslint/parser': '^7.13.0',
|
|
64
64
|
esbuild: '^0.20.2',
|
|
65
65
|
eslint: '^8.57.0',
|
|
66
|
-
'eslint-plugin-svelte': '^2.39.
|
|
66
|
+
'eslint-plugin-svelte': '^2.39.4',
|
|
67
67
|
svelte: '^5.0.0-next.155',
|
|
68
68
|
'svelte-check': '^3.8.0',
|
|
69
69
|
typescript: '^5.4.5',
|
|
@@ -180,6 +180,10 @@ export const package_json = {
|
|
|
180
180
|
'./plugin.js': { default: './dist/plugin.js', types: './dist/plugin.d.ts' },
|
|
181
181
|
'./publish.task.js': { default: './dist/publish.task.js', types: './dist/publish.task.d.ts' },
|
|
182
182
|
'./register.js': { default: './dist/register.js', types: './dist/register.d.ts' },
|
|
183
|
+
'./reinstall.task.js': {
|
|
184
|
+
default: './dist/reinstall.task.js',
|
|
185
|
+
types: './dist/reinstall.task.d.ts',
|
|
186
|
+
},
|
|
183
187
|
'./release.task.js': { default: './dist/release.task.js', types: './dist/release.task.d.ts' },
|
|
184
188
|
'./resolve_node_specifier.js': {
|
|
185
189
|
default: './dist/resolve_node_specifier.js',
|
|
@@ -254,7 +258,7 @@ export const package_json = {
|
|
|
254
258
|
};
|
|
255
259
|
export const src_json = {
|
|
256
260
|
name: '@ryanatkn/gro',
|
|
257
|
-
version: '0.
|
|
261
|
+
version: '0.119.0',
|
|
258
262
|
modules: {
|
|
259
263
|
'.': {
|
|
260
264
|
path: 'index.ts',
|
|
@@ -454,9 +458,6 @@ export const src_json = {
|
|
|
454
458
|
{ name: 'Gen_Module_Meta', kind: 'type' },
|
|
455
459
|
{ name: 'Basic_Gen_Module_Meta', kind: 'type' },
|
|
456
460
|
{ name: 'load_gen_module', kind: 'function' },
|
|
457
|
-
{ name: 'Check_Gen_Module_Result', kind: 'type' },
|
|
458
|
-
{ name: 'check_gen_modules', kind: 'function' },
|
|
459
|
-
{ name: 'check_gen_module', kind: 'function' },
|
|
460
461
|
{ name: 'find_gen_modules', kind: 'function' },
|
|
461
462
|
],
|
|
462
463
|
},
|
|
@@ -483,6 +484,10 @@ export const src_json = {
|
|
|
483
484
|
{ name: 'Gen_Module_Result_Failure', kind: 'type' },
|
|
484
485
|
{ name: 'to_gen_result', kind: 'function' },
|
|
485
486
|
{ name: 'to_output_file_name', kind: 'function' },
|
|
487
|
+
{ name: 'Analyzed_Gen_Result', kind: 'type' },
|
|
488
|
+
{ name: 'analyze_gen_results', kind: 'function' },
|
|
489
|
+
{ name: 'analyze_gen_result', kind: 'function' },
|
|
490
|
+
{ name: 'write_gen_results', kind: 'function' },
|
|
486
491
|
],
|
|
487
492
|
},
|
|
488
493
|
'./git.js': {
|
|
@@ -494,6 +499,7 @@ export const src_json = {
|
|
|
494
499
|
{ name: 'git_remote_branch_exists', kind: 'function' },
|
|
495
500
|
{ name: 'git_local_branch_exists', kind: 'function' },
|
|
496
501
|
{ name: 'git_check_clean_workspace', kind: 'function' },
|
|
502
|
+
{ name: 'git_check_fully_staged_workspace', kind: 'function' },
|
|
497
503
|
{ name: 'git_fetch', kind: 'function' },
|
|
498
504
|
{ name: 'git_checkout', kind: 'function' },
|
|
499
505
|
{ name: 'git_pull', kind: 'function' },
|
|
@@ -662,6 +668,7 @@ export const src_json = {
|
|
|
662
668
|
{ name: 'SVELTEKIT_CONFIG_FILENAME', kind: 'variable' },
|
|
663
669
|
{ name: 'VITE_CONFIG_FILENAME', kind: 'variable' },
|
|
664
670
|
{ name: 'NODE_MODULES_DIRNAME', kind: 'variable' },
|
|
671
|
+
{ name: 'LOCKFILE_FILENAME', kind: 'variable' },
|
|
665
672
|
{ name: 'SVELTEKIT_DEV_DIRNAME', kind: 'variable' },
|
|
666
673
|
{ name: 'SVELTEKIT_BUILD_DIRNAME', kind: 'variable' },
|
|
667
674
|
{ name: 'SVELTEKIT_DIST_DIRNAME', kind: 'variable' },
|
|
@@ -728,6 +735,13 @@ export const src_json = {
|
|
|
728
735
|
],
|
|
729
736
|
},
|
|
730
737
|
'./register.js': { path: 'register.ts', declarations: [] },
|
|
738
|
+
'./reinstall.task.js': {
|
|
739
|
+
path: 'reinstall.task.ts',
|
|
740
|
+
declarations: [
|
|
741
|
+
{ name: 'Args', kind: 'variable' },
|
|
742
|
+
{ name: 'task', kind: 'variable' },
|
|
743
|
+
],
|
|
744
|
+
},
|
|
731
745
|
'./release.task.js': {
|
|
732
746
|
path: 'release.task.ts',
|
|
733
747
|
declarations: [
|
|
@@ -814,8 +828,13 @@ export const src_json = {
|
|
|
814
828
|
'./sveltekit_helpers.js': {
|
|
815
829
|
path: 'sveltekit_helpers.ts',
|
|
816
830
|
declarations: [
|
|
831
|
+
{ name: 'SVELTEKIT_CLI', kind: 'variable' },
|
|
832
|
+
{ name: 'SVELTE_PACKAGE_CLI', kind: 'variable' },
|
|
833
|
+
{ name: 'SVELTE_PACKAGE_DEP_NAME', kind: 'variable' },
|
|
817
834
|
{ name: 'has_sveltekit_app', kind: 'function' },
|
|
818
835
|
{ name: 'has_sveltekit_library', kind: 'function' },
|
|
836
|
+
{ name: 'sveltekit_sync', kind: 'function' },
|
|
837
|
+
{ name: 'sveltekit_sync_if_obviously_needed', kind: 'function' },
|
|
819
838
|
],
|
|
820
839
|
},
|
|
821
840
|
'./sveltekit_shim_app_environment.js': {
|
|
@@ -884,7 +903,6 @@ export const src_json = {
|
|
|
884
903
|
declarations: [
|
|
885
904
|
{ name: 'Args', kind: 'variable' },
|
|
886
905
|
{ name: 'task', kind: 'variable' },
|
|
887
|
-
{ name: 'sveltekit_sync', kind: 'function' },
|
|
888
906
|
],
|
|
889
907
|
},
|
|
890
908
|
'./task_logging.js': {
|
package/dist/package_json.js
CHANGED
|
@@ -112,7 +112,7 @@ export const sync_package_json = async (map_package_json, log, check = false, di
|
|
|
112
112
|
const exported_files = await search_fs(exports_dir);
|
|
113
113
|
const exported_paths = Array.from(exported_files.keys());
|
|
114
114
|
const updated = await update_package_json(dir, async (package_json) => {
|
|
115
|
-
if (await has_sveltekit_library(package_json)) {
|
|
115
|
+
if ((await has_sveltekit_library(package_json)).ok) {
|
|
116
116
|
const exports = to_package_exports(exported_paths);
|
|
117
117
|
package_json.exports = exports;
|
|
118
118
|
}
|
package/dist/path_constants.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare const README_FILENAME = "README.md";
|
|
|
11
11
|
export declare const SVELTEKIT_CONFIG_FILENAME = "svelte.config.js";
|
|
12
12
|
export declare const VITE_CONFIG_FILENAME = "vite.config.ts";
|
|
13
13
|
export declare const NODE_MODULES_DIRNAME = "node_modules";
|
|
14
|
+
export declare const LOCKFILE_FILENAME = "package-lock.json";
|
|
14
15
|
export declare const SVELTEKIT_DEV_DIRNAME = ".svelte-kit";
|
|
15
16
|
export declare const SVELTEKIT_BUILD_DIRNAME = "build";
|
|
16
17
|
export declare const SVELTEKIT_DIST_DIRNAME = "dist";
|
package/dist/path_constants.js
CHANGED
|
@@ -18,6 +18,7 @@ export const README_FILENAME = 'README.md';
|
|
|
18
18
|
export const SVELTEKIT_CONFIG_FILENAME = 'svelte.config.js';
|
|
19
19
|
export const VITE_CONFIG_FILENAME = 'vite.config.ts';
|
|
20
20
|
export const NODE_MODULES_DIRNAME = 'node_modules';
|
|
21
|
+
export const LOCKFILE_FILENAME = 'package-lock.json';
|
|
21
22
|
export const SVELTEKIT_DEV_DIRNAME = '.svelte-kit'; // TODO use Svelte config value `outDir`
|
|
22
23
|
export const SVELTEKIT_BUILD_DIRNAME = 'build';
|
|
23
24
|
export const SVELTEKIT_DIST_DIRNAME = 'dist';
|
package/dist/publish.task.d.ts
CHANGED
|
@@ -5,37 +5,40 @@ export declare const Args: z.ZodObject<{
|
|
|
5
5
|
origin: z.ZodDefault<z.ZodBranded<z.ZodString, "Git_Origin">>;
|
|
6
6
|
changelog: z.ZodDefault<z.ZodString>;
|
|
7
7
|
preserve_changelog: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
optional: z.ZodDefault<z.ZodBoolean>;
|
|
8
9
|
dry: z.ZodDefault<z.ZodBoolean>;
|
|
9
10
|
check: z.ZodDefault<z.ZodBoolean>;
|
|
10
11
|
'no-check': z.ZodDefault<z.ZodBoolean>;
|
|
11
|
-
install: z.ZodDefault<z.ZodBoolean>;
|
|
12
|
-
'no-install': z.ZodDefault<z.ZodBoolean>;
|
|
13
12
|
build: z.ZodDefault<z.ZodBoolean>;
|
|
14
13
|
'no-build': z.ZodDefault<z.ZodBoolean>;
|
|
14
|
+
pull: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
'no-pull': z.ZodDefault<z.ZodBoolean>;
|
|
15
16
|
}, "strict", z.ZodTypeAny, {
|
|
16
17
|
build: boolean;
|
|
17
|
-
install: boolean;
|
|
18
18
|
origin: string & z.BRAND<"Git_Origin">;
|
|
19
|
+
pull: boolean;
|
|
19
20
|
branch: string & z.BRAND<"Git_Branch">;
|
|
20
21
|
changelog: string;
|
|
21
|
-
'no-install': boolean;
|
|
22
22
|
check: boolean;
|
|
23
23
|
dry: boolean;
|
|
24
24
|
'no-build': boolean;
|
|
25
25
|
preserve_changelog: boolean;
|
|
26
|
+
optional: boolean;
|
|
26
27
|
'no-check': boolean;
|
|
28
|
+
'no-pull': boolean;
|
|
27
29
|
}, {
|
|
28
30
|
build?: boolean | undefined;
|
|
29
|
-
install?: boolean | undefined;
|
|
30
31
|
origin?: string | undefined;
|
|
32
|
+
pull?: boolean | undefined;
|
|
31
33
|
branch?: string | undefined;
|
|
32
34
|
changelog?: string | undefined;
|
|
33
|
-
'no-install'?: boolean | undefined;
|
|
34
35
|
check?: boolean | undefined;
|
|
35
36
|
dry?: boolean | undefined;
|
|
36
37
|
'no-build'?: boolean | undefined;
|
|
37
38
|
preserve_changelog?: boolean | undefined;
|
|
39
|
+
optional?: boolean | undefined;
|
|
38
40
|
'no-check'?: boolean | undefined;
|
|
41
|
+
'no-pull'?: boolean | undefined;
|
|
39
42
|
}>;
|
|
40
43
|
export type Args = z.infer<typeof Args>;
|
|
41
44
|
export declare const task: Task<Args>;
|
package/dist/publish.task.js
CHANGED
|
@@ -9,7 +9,7 @@ import { IS_THIS_GRO } from './paths.js';
|
|
|
9
9
|
import { has_sveltekit_library } from './sveltekit_helpers.js';
|
|
10
10
|
import { update_changelog } from './changelog.js';
|
|
11
11
|
import { load_from_env } from './env.js';
|
|
12
|
-
import { Git_Branch, Git_Origin, git_checkout, git_fetch, git_pull } from './git.js';
|
|
12
|
+
import { Git_Branch, Git_Origin, git_check_clean_workspace, git_checkout, git_fetch, git_pull, } from './git.js';
|
|
13
13
|
// publish.task.ts
|
|
14
14
|
// - usage: `gro publish patch`
|
|
15
15
|
// - forwards args to `npm version`: https://docs.npmjs.com/v6/commands/npm-version
|
|
@@ -28,6 +28,7 @@ export const Args = z
|
|
|
28
28
|
description: 'opt out of linkifying and formatting the changelog from @changesets/changelog-git',
|
|
29
29
|
})
|
|
30
30
|
.default(false),
|
|
31
|
+
optional: z.boolean({ description: 'exit gracefully if there are no changesets' }).default(false),
|
|
31
32
|
dry: z
|
|
32
33
|
.boolean({ description: 'build and prepare to publish without actually publishing' })
|
|
33
34
|
.default(false),
|
|
@@ -35,24 +36,23 @@ export const Args = z
|
|
|
35
36
|
'no-check': z
|
|
36
37
|
.boolean({ description: 'opt out of npm checking before publishing' })
|
|
37
38
|
.default(false),
|
|
38
|
-
install: z.boolean({ description: 'dual of no-install' }).default(true),
|
|
39
|
-
'no-install': z
|
|
40
|
-
.boolean({ description: 'opt out of npm installing before building' })
|
|
41
|
-
.default(false),
|
|
42
39
|
build: z.boolean({ description: 'dual of no-build' }).default(true),
|
|
43
40
|
'no-build': z.boolean({ description: 'opt out of building' }).default(false),
|
|
41
|
+
pull: z.boolean({ description: 'dual of no-pull' }).default(true),
|
|
42
|
+
'no-pull': z.boolean({ description: 'opt out of git pull' }).default(false),
|
|
44
43
|
})
|
|
45
44
|
.strict();
|
|
46
45
|
export const task = {
|
|
47
46
|
summary: 'bump version, publish to npm, and git push',
|
|
48
47
|
Args,
|
|
49
48
|
run: async ({ args, log, invoke_task }) => {
|
|
50
|
-
const { branch, origin, changelog, preserve_changelog, dry, check,
|
|
49
|
+
const { branch, origin, changelog, preserve_changelog, dry, check, build, pull, optional } = args;
|
|
51
50
|
if (dry) {
|
|
52
51
|
log.info(green('dry run!'));
|
|
53
52
|
}
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
const has_sveltekit_library_result = await has_sveltekit_library();
|
|
54
|
+
if (!has_sveltekit_library_result.ok) {
|
|
55
|
+
throw new Task_Error('Failed to find SvelteKit library: ' + has_sveltekit_library_result.message);
|
|
56
56
|
}
|
|
57
57
|
// TODO hacky, ensures Gro bootstraps itself
|
|
58
58
|
if (IS_THIS_GRO) {
|
|
@@ -60,12 +60,17 @@ export const task = {
|
|
|
60
60
|
}
|
|
61
61
|
const changelog_exists = await exists(changelog);
|
|
62
62
|
if (!(await find_cli('changeset'))) {
|
|
63
|
-
throw new Task_Error('changeset command not found
|
|
63
|
+
throw new Task_Error('changeset command not found, install @changesets/cli locally or globally');
|
|
64
64
|
}
|
|
65
65
|
// Make sure we're on the right branch:
|
|
66
66
|
await git_fetch(origin, branch);
|
|
67
67
|
await git_checkout(branch);
|
|
68
|
-
|
|
68
|
+
if (pull) {
|
|
69
|
+
if (await git_check_clean_workspace()) {
|
|
70
|
+
throw new Task_Error('The git workspace is not clean, pass --no-pull to bypass git pull');
|
|
71
|
+
}
|
|
72
|
+
await git_pull(origin, branch);
|
|
73
|
+
}
|
|
69
74
|
// Check before proceeding.
|
|
70
75
|
if (check) {
|
|
71
76
|
await invoke_task('check', { workspace: true });
|
|
@@ -82,7 +87,7 @@ export const task = {
|
|
|
82
87
|
else {
|
|
83
88
|
const package_json_before = await load_package_json();
|
|
84
89
|
if (typeof package_json_before.version !== 'string') {
|
|
85
|
-
throw new Task_Error('
|
|
90
|
+
throw new Task_Error('Failed to find package.json version');
|
|
86
91
|
}
|
|
87
92
|
const parsed_repo_url = parse_repo_url(package_json_before);
|
|
88
93
|
if (!parsed_repo_url) {
|
|
@@ -105,11 +110,18 @@ export const task = {
|
|
|
105
110
|
const package_json_after = await load_package_json();
|
|
106
111
|
version = package_json_after.version;
|
|
107
112
|
if (package_json_before.version === version) {
|
|
108
|
-
|
|
113
|
+
// The version didn't change.
|
|
114
|
+
// For now this is the best detection we have for a no-op `changeset version`.
|
|
115
|
+
if (optional) {
|
|
116
|
+
return; // exit gracefully
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new Task_Error('changeset version failed: are there any changes?');
|
|
120
|
+
}
|
|
109
121
|
}
|
|
110
122
|
}
|
|
111
123
|
if (build) {
|
|
112
|
-
await invoke_task('build'
|
|
124
|
+
await invoke_task('build');
|
|
113
125
|
}
|
|
114
126
|
if (dry) {
|
|
115
127
|
log.info('publishing branch ' + branch);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { spawn } from '@ryanatkn/belt/process.js';
|
|
3
|
+
import { rm } from 'fs/promises';
|
|
4
|
+
import { Task_Error } from './task.js';
|
|
5
|
+
import { LOCKFILE_FILENAME, NODE_MODULES_DIRNAME } from './path_constants.js';
|
|
6
|
+
export const Args = z.object({}).strict();
|
|
7
|
+
export const task = {
|
|
8
|
+
summary: `refreshes ${LOCKFILE_FILENAME} with the latest and cleanest deps`,
|
|
9
|
+
Args,
|
|
10
|
+
run: async ({ log }) => {
|
|
11
|
+
log.info('running the initial npm install');
|
|
12
|
+
const initial_install_result = await spawn('npm', ['i']);
|
|
13
|
+
if (!initial_install_result.ok) {
|
|
14
|
+
throw new Task_Error('Failed initial npm install');
|
|
15
|
+
}
|
|
16
|
+
// Deleting both the lockfile and node_modules upgrades to the latest minor/patch versions.
|
|
17
|
+
await Promise.all([rm(LOCKFILE_FILENAME), rm(NODE_MODULES_DIRNAME, { recursive: true })]);
|
|
18
|
+
log.info(`running npm install after deleting ${LOCKFILE_FILENAME} and ${NODE_MODULES_DIRNAME}, this can take a while...`);
|
|
19
|
+
const second_install_result = await spawn('npm', ['i']);
|
|
20
|
+
if (!second_install_result.ok) {
|
|
21
|
+
throw new Task_Error(`Failed npm install after deleting ${LOCKFILE_FILENAME} and ${NODE_MODULES_DIRNAME}`);
|
|
22
|
+
}
|
|
23
|
+
// Deleting the lockfile and reinstalling cleans the lockfile of unnecessary dep noise,
|
|
24
|
+
// like esbuild's many packages for each platform.
|
|
25
|
+
await rm(LOCKFILE_FILENAME);
|
|
26
|
+
log.info(`running npm install one last time to clean ${LOCKFILE_FILENAME}`);
|
|
27
|
+
const final_install_result = await spawn('npm', ['i']);
|
|
28
|
+
if (!final_install_result.ok) {
|
|
29
|
+
throw new Task_Error('Failed npm install');
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
};
|
package/dist/release.task.js
CHANGED
|
@@ -5,13 +5,12 @@ export const task = {
|
|
|
5
5
|
summary: 'publish and deploy',
|
|
6
6
|
Args,
|
|
7
7
|
run: async ({ invoke_task }) => {
|
|
8
|
-
const publish = await has_sveltekit_library();
|
|
8
|
+
const publish = (await has_sveltekit_library()).ok;
|
|
9
9
|
if (publish) {
|
|
10
|
-
await invoke_task('publish'
|
|
10
|
+
await invoke_task('publish', { optional: true });
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
await invoke_task('deploy', { build: !publish }); // TODO use `to_forwarded_args`
|
|
12
|
+
if ((await has_sveltekit_app()).ok) {
|
|
13
|
+
await invoke_task('deploy', { build: !publish });
|
|
15
14
|
}
|
|
16
15
|
},
|
|
17
16
|
};
|
package/dist/run.task.js
CHANGED
|
@@ -20,7 +20,7 @@ export const task = {
|
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
if (!(await exists(path))) {
|
|
23
|
-
throw new Task_Error('
|
|
23
|
+
throw new Task_Error('Cannot find file to run at path: ' + path);
|
|
24
24
|
}
|
|
25
25
|
const loader_path = await resolve_gro_module_path('loader.js');
|
|
26
26
|
const spawned = await spawn_with_loader(loader_path, path, argv);
|
package/dist/run_task.js
CHANGED
|
@@ -28,7 +28,7 @@ export const run_task = async (task_meta, unparsed_args, invoke_task, config, ti
|
|
|
28
28
|
config,
|
|
29
29
|
log,
|
|
30
30
|
timings,
|
|
31
|
-
invoke_task: (invoked_task_name, invoked_args
|
|
31
|
+
invoke_task: (invoked_task_name, invoked_args, invoked_config) => invoke_task(invoked_task_name, invoked_args, invoked_config || config, timings),
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
catch (err) {
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
+
import type { Result } from '@ryanatkn/belt/result.js';
|
|
1
2
|
import { Package_Json } from './package_json.js';
|
|
2
3
|
import type { Parsed_Sveltekit_Config } from './sveltekit_config.js';
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const SVELTEKIT_CLI = "svelte-kit";
|
|
5
|
+
export declare const SVELTE_PACKAGE_CLI = "svelte-package";
|
|
6
|
+
export declare const SVELTE_PACKAGE_DEP_NAME = "@sveltejs/package";
|
|
7
|
+
export declare const has_sveltekit_app: () => Promise<Result<object, {
|
|
8
|
+
message: string;
|
|
9
|
+
}>>;
|
|
10
|
+
export declare const has_sveltekit_library: (package_json?: Package_Json, sveltekit_config?: Parsed_Sveltekit_Config) => Promise<Result<object, {
|
|
11
|
+
message: string;
|
|
12
|
+
}>>;
|
|
13
|
+
export declare const sveltekit_sync: () => Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* If the SvelteKit CLI is found and its `.svelte-kit` directory is not, run `svelte-kit sync`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const sveltekit_sync_if_obviously_needed: () => Promise<void>;
|
|
@@ -1,12 +1,54 @@
|
|
|
1
1
|
import { Package_Json, load_package_json } from './package_json.js';
|
|
2
2
|
import { exists } from './fs.js';
|
|
3
3
|
import { sveltekit_config_global } from './sveltekit_config_global.js';
|
|
4
|
-
import { SVELTEKIT_CONFIG_FILENAME } from './path_constants.js';
|
|
5
|
-
|
|
4
|
+
import { SVELTEKIT_CONFIG_FILENAME, SVELTEKIT_DEV_DIRNAME } from './path_constants.js';
|
|
5
|
+
import { find_cli, spawn_cli } from './cli.js';
|
|
6
|
+
import { Task_Error } from './task.js';
|
|
7
|
+
export const SVELTEKIT_CLI = 'svelte-kit';
|
|
8
|
+
export const SVELTE_PACKAGE_CLI = 'svelte-package';
|
|
9
|
+
export const SVELTE_PACKAGE_DEP_NAME = '@sveltejs/package';
|
|
10
|
+
export const has_sveltekit_app = async () => {
|
|
11
|
+
if (!(await exists(SVELTEKIT_CONFIG_FILENAME))) {
|
|
12
|
+
return { ok: false, message: `no SvelteKit config found at ${SVELTEKIT_CONFIG_FILENAME}` };
|
|
13
|
+
}
|
|
14
|
+
// TODO check for routes?
|
|
15
|
+
return { ok: true };
|
|
16
|
+
};
|
|
6
17
|
export const has_sveltekit_library = async (package_json, sveltekit_config = sveltekit_config_global) => {
|
|
7
|
-
|
|
8
|
-
|
|
18
|
+
const has_sveltekit_app_result = await has_sveltekit_app();
|
|
19
|
+
if (!has_sveltekit_app_result.ok) {
|
|
20
|
+
return has_sveltekit_app_result;
|
|
21
|
+
}
|
|
22
|
+
if (!(await exists(sveltekit_config.lib_path))) {
|
|
23
|
+
return { ok: false, message: `no SvelteKit lib directory found at ${sveltekit_config.lib_path}` };
|
|
24
|
+
}
|
|
25
|
+
const pkg = package_json ?? (await load_package_json());
|
|
26
|
+
if (!(pkg.devDependencies?.[SVELTE_PACKAGE_DEP_NAME] || pkg.dependencies?.[SVELTE_PACKAGE_DEP_NAME])) {
|
|
27
|
+
return {
|
|
28
|
+
ok: false,
|
|
29
|
+
message: `no dependency found in package.json for ${SVELTE_PACKAGE_DEP_NAME}, install it with \`npm i -D ${SVELTE_PACKAGE_DEP_NAME}\``,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return { ok: true };
|
|
33
|
+
};
|
|
34
|
+
export const sveltekit_sync = async () => {
|
|
35
|
+
if (!(await find_cli(SVELTEKIT_CLI))) {
|
|
36
|
+
throw new Task_Error(`Failed to find ${SVELTEKIT_CLI} CLI - do you need to run \`npm i\`?`);
|
|
37
|
+
}
|
|
38
|
+
const result = await spawn_cli(SVELTEKIT_CLI, ['sync']);
|
|
39
|
+
if (!result?.ok) {
|
|
40
|
+
throw new Task_Error(`Failed ${SVELTEKIT_CLI} sync`);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* If the SvelteKit CLI is found and its `.svelte-kit` directory is not, run `svelte-kit sync`.
|
|
45
|
+
*/
|
|
46
|
+
export const sveltekit_sync_if_obviously_needed = async () => {
|
|
47
|
+
if (await exists(SVELTEKIT_DEV_DIRNAME)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (!(await find_cli(SVELTEKIT_CLI))) {
|
|
51
|
+
return;
|
|
9
52
|
}
|
|
10
|
-
|
|
11
|
-
return !!p.devDependencies?.['@sveltejs/package'] || !!p.dependencies?.['@sveltejs/package'];
|
|
53
|
+
return sveltekit_sync();
|
|
12
54
|
};
|
package/dist/sync.task.d.ts
CHANGED
package/dist/sync.task.js
CHANGED
|
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { spawn } from '@ryanatkn/belt/process.js';
|
|
3
3
|
import { Task_Error } from './task.js';
|
|
4
4
|
import { sync_package_json } from './package_json.js';
|
|
5
|
-
import {
|
|
5
|
+
import { sveltekit_sync } from './sveltekit_helpers.js';
|
|
6
6
|
export const Args = z
|
|
7
7
|
.object({
|
|
8
8
|
sveltekit: z.boolean({ description: 'dual of no-sveltekit' }).default(true),
|
|
@@ -22,7 +22,7 @@ export const task = {
|
|
|
22
22
|
if (install) {
|
|
23
23
|
const result = await spawn('npm', ['i']);
|
|
24
24
|
if (!result.ok) {
|
|
25
|
-
throw new Task_Error('
|
|
25
|
+
throw new Task_Error('Failed npm install');
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
if (sveltekit) {
|
|
@@ -37,12 +37,3 @@ export const task = {
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
};
|
|
40
|
-
export const sveltekit_sync = async () => {
|
|
41
|
-
if (!(await find_cli('svelte-kit'))) {
|
|
42
|
-
throw new Task_Error('failed to find svelte-kit CLI - do you need to run `npm i`?');
|
|
43
|
-
}
|
|
44
|
-
const result = await spawn_cli('svelte-kit', ['sync']);
|
|
45
|
-
if (!result?.ok) {
|
|
46
|
-
throw new Task_Error(`failed svelte-kit sync`);
|
|
47
|
-
}
|
|
48
|
-
};
|