Skip to content

Commit 8df8362

Browse files
committed
make package_json required to some APIs
1 parent 6af4ecb commit 8df8362

File tree

7 files changed

+35
-16
lines changed

7 files changed

+35
-16
lines changed

.changeset/happy-parrots-check.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@ryanatkn/gro': minor
3+
---
4+
5+
make `package_json` required to some APIs

src/lib/gro.config.default.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {gro_plugin_sveltekit_app} from './gro_plugin_sveltekit_app.js';
55
import {has_sveltekit_app, has_sveltekit_library} from './sveltekit_helpers.js';
66
import {gro_plugin_gen} from './gro_plugin_gen.js';
77
import {gro_plugin_moss, has_moss_dep} from './gro_plugin_moss.js';
8+
import {load_package_json} from './package_json.js';
89

910
/**
1011
* This is the default config that's passed to `gro.config.ts`
@@ -16,15 +17,17 @@ import {gro_plugin_moss, has_moss_dep} from './gro_plugin_moss.js';
1617
* - if `src/lib/server/server.ts`, assumes a Node server
1718
*/
1819
const config: Create_Gro_Config = async (cfg) => {
20+
const package_json = load_package_json(); // TODO gets wastefully loaded by some plugins, maybe put in plugin/task context? how does that interact with `map_package_json`?
21+
1922
const [
2023
moss_plugin_result,
2124
has_server_result,
2225
has_sveltekit_library_result,
2326
has_sveltekit_app_result,
2427
] = await Promise.all([
25-
has_moss_dep(),
28+
has_moss_dep(package_json),
2629
has_server(),
27-
has_sveltekit_library(),
30+
has_sveltekit_library(package_json),
2831
has_sveltekit_app(),
2932
]);
3033

src/lib/gro_plugin_moss.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {has_dep, type Package_Json} from './package_json.js';
1616
export const MOSS_PACKAGE_DEP_NAME = '@ryanatkn/moss';
1717

1818
export const has_moss_dep = (
19-
package_json?: Package_Json,
19+
package_json: Package_Json,
2020
dep_name = MOSS_PACKAGE_DEP_NAME,
2121
): Result<object, {message: string}> => {
2222
if (!has_dep(dep_name, package_json)) {

src/lib/gro_plugin_sveltekit_library.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,22 @@ export const gro_plugin_sveltekit_library = ({
2626
svelte_package_options,
2727
svelte_package_cli = SVELTE_PACKAGE_CLI,
2828
}: Gro_Plugin_Sveltekit_Library_Options = {}): Plugin => {
29+
const package_json = load_package_json();
30+
2931
return {
3032
name: 'gro_plugin_sveltekit_library',
3133
setup: async ({dev, log, config}) => {
3234
if (!dev) {
33-
await run_svelte_package(svelte_package_options, svelte_package_cli, log, config.pm_cli);
35+
await run_svelte_package(
36+
package_json,
37+
svelte_package_options,
38+
svelte_package_cli,
39+
log,
40+
config.pm_cli,
41+
);
3442
}
3543
},
3644
adapt: async ({log, timings, config}) => {
37-
const package_json = load_package_json();
38-
3945
// link the CLI binaries if they exist
4046
if (package_json.bin) {
4147
const timing_to_link = timings.start(`${config.pm_cli} link`);

src/lib/publish.task.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ export const task: Task<Args> = {
6767
log.info(st('green', 'dry run!'));
6868
}
6969

70-
const has_sveltekit_library_result = has_sveltekit_library();
70+
const package_json = load_package_json();
71+
72+
const has_sveltekit_library_result = has_sveltekit_library(package_json);
7173
if (!has_sveltekit_library_result.ok) {
7274
throw new Task_Error(
7375
'Failed to find SvelteKit library: ' + has_sveltekit_library_result.message,
@@ -109,11 +111,10 @@ export const task: Task<Args> = {
109111
if (dry) {
110112
log.info('dry run, skipping changeset version');
111113
} else {
112-
const package_json_before = load_package_json();
113-
if (typeof package_json_before.version !== 'string') {
114+
if (typeof package_json.version !== 'string') {
114115
throw new Task_Error('Failed to find package.json version');
115116
}
116-
const parsed_repo_url = parse_repo_url(package_json_before);
117+
const parsed_repo_url = parse_repo_url(package_json);
117118
if (!parsed_repo_url) {
118119
throw new Task_Error(
119120
'package.json `repository` must contain a repo url (and GitHub only for now, sorry),' +
@@ -139,9 +140,9 @@ export const task: Task<Args> = {
139140
await update_changelog(parsed_repo_url.owner, parsed_repo_url.repo, changelog, token, log);
140141
}
141142

142-
const package_json_after = load_package_json();
143-
version = package_json_after.version!;
144-
if (package_json_before.version === version) {
143+
const package_json_after_versioning = load_package_json();
144+
version = package_json_after_versioning.version!;
145+
if (package_json.version === version) {
145146
// The version didn't change.
146147
// For now this is the best detection we have for a no-op `changeset version`.
147148
if (optional) {

src/lib/release.task.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {z} from 'zod';
22

33
import type {Task} from './task.js';
44
import {has_sveltekit_library, has_sveltekit_app} from './sveltekit_helpers.js';
5+
import {load_package_json} from './package_json.js';
56

67
export const Args = z.object({}).strict();
78
export type Args = z.infer<typeof Args>;
@@ -10,7 +11,9 @@ export const task: Task<Args> = {
1011
summary: 'publish and deploy',
1112
Args,
1213
run: async ({invoke_task}) => {
13-
const publish = has_sveltekit_library().ok;
14+
const package_json = load_package_json();
15+
16+
const publish = has_sveltekit_library(package_json).ok;
1417
if (publish) {
1518
await invoke_task('publish', {optional: true});
1619
}

src/lib/sveltekit_helpers.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export const has_sveltekit_app = (): Result<object, {message: string}> => {
3030
};
3131

3232
export const has_sveltekit_library = (
33-
package_json?: Package_Json,
33+
package_json: Package_Json,
3434
sveltekit_config: Parsed_Sveltekit_Config = default_sveltekit_config,
3535
dep_name = SVELTE_PACKAGE_DEP_NAME,
3636
): Result<object, {message: string}> => {
@@ -149,12 +149,13 @@ export interface Svelte_Package_Options {
149149
}
150150

151151
export const run_svelte_package = async (
152+
package_json: Package_Json,
152153
options: Svelte_Package_Options | undefined,
153154
cli: string | Cli,
154155
log: Logger,
155156
pm_cli: string,
156157
): Promise<void> => {
157-
const has_sveltekit_library_result = has_sveltekit_library();
158+
const has_sveltekit_library_result = has_sveltekit_library(package_json);
158159
if (!has_sveltekit_library_result.ok) {
159160
throw new Task_Error(
160161
'Failed to find SvelteKit library: ' + has_sveltekit_library_result.message,

0 commit comments

Comments
 (0)