@ryanatkn/gro 0.130.1 → 0.131.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.
Files changed (45) hide show
  1. package/dist/changelog.js +1 -1
  2. package/dist/changeset.task.d.ts.map +1 -1
  3. package/dist/changeset.task.js +3 -1
  4. package/dist/config.d.ts +4 -4
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +9 -9
  7. package/dist/esbuild_plugin_external_worker.js +1 -1
  8. package/dist/esbuild_plugin_svelte.js +1 -1
  9. package/dist/esbuild_plugin_sveltekit_local_imports.js +3 -3
  10. package/dist/esbuild_plugin_sveltekit_shim_app.js +5 -5
  11. package/dist/esbuild_plugin_sveltekit_shim_env.js +2 -2
  12. package/dist/github.d.ts.map +1 -1
  13. package/dist/github.js +1 -1
  14. package/dist/invoke.js +2 -2
  15. package/dist/loader.js +4 -4
  16. package/dist/package.js +14 -14
  17. package/dist/package_json.js +2 -2
  18. package/dist/package_meta.d.ts +2 -0
  19. package/dist/package_meta.d.ts.map +1 -1
  20. package/dist/package_meta.js +8 -1
  21. package/dist/svelte_helpers.d.ts.map +1 -1
  22. package/dist/svelte_helpers.js +2 -2
  23. package/dist/sveltekit_shim_app.d.ts.map +1 -1
  24. package/dist/sveltekit_shim_app.js +2 -2
  25. package/dist/upgrade.task.js +2 -2
  26. package/package.json +9 -9
  27. package/src/lib/changelog.ts +1 -1
  28. package/src/lib/changeset.task.ts +3 -1
  29. package/src/lib/config.ts +11 -9
  30. package/src/lib/esbuild_plugin_external_worker.ts +1 -1
  31. package/src/lib/esbuild_plugin_svelte.ts +1 -1
  32. package/src/lib/esbuild_plugin_sveltekit_local_imports.ts +3 -3
  33. package/src/lib/esbuild_plugin_sveltekit_shim_app.ts +5 -5
  34. package/src/lib/esbuild_plugin_sveltekit_shim_env.ts +2 -2
  35. package/src/lib/github.ts +1 -1
  36. package/src/lib/input_path.ts +2 -2
  37. package/src/lib/invoke.ts +2 -2
  38. package/src/lib/loader.ts +4 -4
  39. package/src/lib/package.ts +14 -14
  40. package/src/lib/package_json.ts +2 -2
  41. package/src/lib/package_meta.ts +17 -6
  42. package/src/lib/svelte_helpers.ts +2 -2
  43. package/src/lib/sveltekit_shim_app.ts +2 -3
  44. package/src/lib/task.ts +1 -1
  45. package/src/lib/upgrade.task.ts +2 -2
package/dist/changelog.js CHANGED
@@ -23,7 +23,7 @@ export const update_changelog = async (owner, repo, path = 'CHANGELOG.md', token
23
23
  const Parsed_Changelog = z.array(z.string());
24
24
  const parse_changelog = (contents) => contents.split('\n');
25
25
  const serialize_changelog = (parsed) => parsed.join('\n');
26
- const LINE_WITH_SHA_MATCHER = /^- ([a-z0-9]{7,8}): /u;
26
+ const LINE_WITH_SHA_MATCHER = /^- ([a-z0-9]{7,8}): /;
27
27
  const map_changelog = async (parsed, owner, repo, token, log, cache) => {
28
28
  const mapped = [];
29
29
  for (const line of parsed) {
@@ -1 +1 @@
1
- {"version":3,"file":"changeset.task.d.ts","sourceRoot":"../src/lib/","sources":["changeset.task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAQtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAchD,eAAO,MAAM,IAAI;IAEf;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBK,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA+E3B,CAAC"}
1
+ {"version":3,"file":"changeset.task.d.ts","sourceRoot":"../src/lib/","sources":["changeset.task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAQtB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAchD,eAAO,MAAM,IAAI;IAEf;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBK,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAiF3B,CAAC"}
@@ -64,7 +64,9 @@ export const task = {
64
64
  const inited = existsSync(path);
65
65
  if (!inited) {
66
66
  await spawn_cli(found_changeset_cli, ['init'], log);
67
- const access = access_arg ?? package_json.private ? CHANGESET_RESTRICTED_ACCESS : CHANGESET_PUBLIC_ACCESS;
67
+ const access = (access_arg ?? package_json.private)
68
+ ? CHANGESET_RESTRICTED_ACCESS
69
+ : CHANGESET_PUBLIC_ACCESS;
68
70
  const access_color = access === CHANGESET_RESTRICTED_ACCESS ? blue : red;
69
71
  log.info('initing changeset with ' + access_color(access) + ' access');
70
72
  if (access !== CHANGESET_RESTRICTED_ACCESS) {
package/dist/config.d.ts CHANGED
@@ -40,7 +40,7 @@ export interface Raw_Gro_Config {
40
40
  search_filters?: Path_Filter | Path_Filter[] | null;
41
41
  }
42
42
  export type Create_Gro_Config = (base_config: Gro_Config) => Raw_Gro_Config | Promise<Raw_Gro_Config>;
43
- export declare const create_empty_config: () => Gro_Config;
43
+ export declare const create_empty_gro_config: () => Gro_Config;
44
44
  /**
45
45
  * The regexp used by default to exclude directories and files
46
46
  * when searching the filesystem for tasks and genfiles.
@@ -53,10 +53,10 @@ export declare const DEFAULT_EXPORTS_EXCLUDER: RegExp;
53
53
  * Transforms a `Raw_Gro_Config` to the more strict `Gro_Config`.
54
54
  * This allows users to provide a more relaxed config.
55
55
  */
56
- export declare const normalize_config: (raw_config: Raw_Gro_Config) => Gro_Config;
56
+ export declare const normalize_gro_config: (raw_config: Raw_Gro_Config) => Gro_Config;
57
57
  export interface Gro_Config_Module {
58
58
  readonly default: Raw_Gro_Config | Create_Gro_Config;
59
59
  }
60
- export declare const load_config: (dir?: string) => Promise<Gro_Config>;
61
- export declare const validate_config_module: (config_module: any, config_path: string) => asserts config_module is Gro_Config_Module;
60
+ export declare const load_gro_config: (dir?: string) => Promise<Gro_Config>;
61
+ export declare const validate_gro_config_module: (config_module: any, config_path: string) => asserts config_module is Gro_Config_Module;
62
62
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"../src/lib/","sources":["config.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B;;OAEG;IACH,OAAO,EAAE,qBAAqB,CAAC;IAC/B;;;;OAIG;IACH,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C;;;OAGG;IACH,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B;;;OAGG;IACH,cAAc,EAAE,WAAW,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC/B,WAAW,EAAE,UAAU,KACnB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9C,eAAO,MAAM,mBAAmB,QAAO,UAUrC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAUnC,CAAC;AAWF,eAAO,MAAM,wBAAwB,QAAyD,CAAC;AAE/F;;;GAGG;AACH,eAAO,MAAM,gBAAgB,eAAgB,cAAc,KAAG,UAoB7D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,CAAC;CACrD;AAED,eAAO,MAAM,WAAW,oBAA6B,OAAO,CAAC,UAAU,CAetE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,CACpC,aAAa,EAAE,GAAG,EAClB,WAAW,EAAE,MAAM,KACf,OAAO,CAAC,aAAa,IAAI,iBAS7B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"../src/lib/","sources":["config.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B;;OAEG;IACH,OAAO,EAAE,qBAAqB,CAAC;IAC/B;;;;OAIG;IACH,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C;;;OAGG;IACH,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B;;;OAGG;IACH,cAAc,EAAE,WAAW,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC/B,WAAW,EAAE,UAAU,KACnB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9C,eAAO,MAAM,uBAAuB,QAAO,UAUzC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAUnC,CAAC;AAWF,eAAO,MAAM,wBAAwB,QAAwD,CAAC;AAE9F;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAAgB,cAAc,KAAG,UAoBjE,CAAC;AAEF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,CAAC;CACrD;AAED,eAAO,MAAM,eAAe,oBAA6B,OAAO,CAAC,UAAU,CAiB1E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,CACxC,aAAa,EAAE,GAAG,EAClB,WAAW,EAAE,MAAM,KACf,OAAO,CAAC,aAAa,IAAI,iBAS7B,CAAC"}
package/dist/config.js CHANGED
@@ -3,7 +3,7 @@ import { existsSync } from 'node:fs';
3
3
  import { GRO_DIST_DIR, IS_THIS_GRO, paths } from './paths.js';
4
4
  import { GRO_CONFIG_PATH, NODE_MODULES_DIRNAME, SERVER_DIST_PATH, SVELTEKIT_BUILD_DIRNAME, SVELTEKIT_DIST_DIRNAME, } from './path_constants.js';
5
5
  import create_default_config from './gro.config.default.js';
6
- export const create_empty_config = () => ({
6
+ export const create_empty_gro_config = () => ({
7
7
  plugins: () => [],
8
8
  map_package_json: default_map_package_json,
9
9
  task_root_dirs: [
@@ -33,13 +33,13 @@ const default_map_package_json = (package_json) => {
33
33
  }
34
34
  return package_json;
35
35
  };
36
- export const DEFAULT_EXPORTS_EXCLUDER = /(\.md|\.(test|ignore)\.|\/(test|fixtures|ignore)\/)/u;
36
+ export const DEFAULT_EXPORTS_EXCLUDER = /(\.md|\.(test|ignore)\.|\/(test|fixtures|ignore)\/)/;
37
37
  /**
38
38
  * Transforms a `Raw_Gro_Config` to the more strict `Gro_Config`.
39
39
  * This allows users to provide a more relaxed config.
40
40
  */
41
- export const normalize_config = (raw_config) => {
42
- const empty_config = create_empty_config();
41
+ export const normalize_gro_config = (raw_config) => {
42
+ const empty_config = create_empty_gro_config();
43
43
  // All of the raw config properties are optional,
44
44
  // so fall back to the empty values when `undefined`.
45
45
  const { plugins = empty_config.plugins, map_package_json = empty_config.map_package_json, task_root_dirs = empty_config.task_root_dirs, search_filters = empty_config.search_filters, } = raw_config;
@@ -54,8 +54,8 @@ export const normalize_config = (raw_config) => {
54
54
  : [],
55
55
  };
56
56
  };
57
- export const load_config = async (dir = paths.root) => {
58
- const default_config = normalize_config(await create_default_config(create_empty_config()));
57
+ export const load_gro_config = async (dir = paths.root) => {
58
+ const default_config = normalize_gro_config(await create_default_config(create_empty_gro_config()));
59
59
  const config_path = join(dir, GRO_CONFIG_PATH);
60
60
  if (!existsSync(config_path)) {
61
61
  // No user config file found, so return the default.
@@ -63,12 +63,12 @@ export const load_config = async (dir = paths.root) => {
63
63
  }
64
64
  // Import the user's `gro.config.ts`.
65
65
  const config_module = await import(config_path);
66
- validate_config_module(config_module, config_path);
67
- return normalize_config(typeof config_module.default === 'function'
66
+ validate_gro_config_module(config_module, config_path);
67
+ return normalize_gro_config(typeof config_module.default === 'function'
68
68
  ? await config_module.default(default_config)
69
69
  : config_module.default);
70
70
  };
71
- export const validate_config_module = (config_module, config_path) => {
71
+ export const validate_gro_config_module = (config_module, config_path) => {
72
72
  const config = config_module.default;
73
73
  if (!config) {
74
74
  throw Error(`Invalid Gro config module at ${config_path}: expected a default export`);
@@ -41,7 +41,7 @@ export const esbuild_plugin_external_worker = ({ dev, build_options, dir = proce
41
41
  builds.set(path_id, building);
42
42
  return building;
43
43
  };
44
- build.onResolve({ filter: /\.worker(|\.js|\.ts)$/u }, async ({ path, resolveDir }) => {
44
+ build.onResolve({ filter: /\.worker(|\.js|\.ts)$/ }, async ({ path, resolveDir }) => {
45
45
  const parsed = resolve_specifier(path, resolveDir);
46
46
  const { specifier, path_id, namespace } = parsed;
47
47
  const build_result = await build_worker(path_id);
@@ -59,7 +59,7 @@ export const esbuild_plugin_svelte = (options = {}) => {
59
59
  const convert_svelte_message_to_esbuild = (path, source, { message, start, end }) => {
60
60
  let location = null;
61
61
  if (start && end) {
62
- const lineText = source.split(/\r\n|\r|\n/gu)[start.line - 1];
62
+ const lineText = source.split(/\r\n|\r|\n/g)[start.line - 1];
63
63
  const lineEnd = start.line === end.line ? end.column : lineText.length;
64
64
  location = {
65
65
  file: path,
@@ -9,19 +9,19 @@ import { resolve_specifier } from './resolve_specifier.js';
9
9
  export const esbuild_plugin_sveltekit_local_imports = () => ({
10
10
  name: 'sveltekit_local_imports',
11
11
  setup: (build) => {
12
- build.onResolve({ filter: /^(\/|\.)/u }, (args) => {
12
+ build.onResolve({ filter: /^(\/|\.)/ }, (args) => {
13
13
  const { path, importer } = args;
14
14
  if (!importer)
15
15
  return { path };
16
16
  const { path_id, namespace } = resolve_specifier(path, dirname(importer));
17
17
  return { path: path_id, namespace }; // `namespace` may be `undefined`, but esbuild needs the absolute path for json etc
18
18
  });
19
- build.onLoad({ filter: /.*/u, namespace: 'sveltekit_local_imports_ts' }, async ({ path }) => ({
19
+ build.onLoad({ filter: /.*/, namespace: 'sveltekit_local_imports_ts' }, async ({ path }) => ({
20
20
  contents: await readFile(path),
21
21
  loader: 'ts',
22
22
  resolveDir: dirname(path),
23
23
  }));
24
- build.onLoad({ filter: /.*/u, namespace: 'sveltekit_local_imports_js' }, async ({ path }) => ({
24
+ build.onLoad({ filter: /.*/, namespace: 'sveltekit_local_imports_js' }, async ({ path }) => ({
25
25
  contents: await readFile(path),
26
26
  resolveDir: dirname(path),
27
27
  }));
@@ -2,19 +2,19 @@ import { render_sveltekit_shim_app_environment, render_sveltekit_shim_app_paths,
2
2
  export const esbuild_plugin_sveltekit_shim_app = ({ dev, base_url, assets_url, }) => ({
3
3
  name: 'sveltekit_shim_app',
4
4
  setup: (build) => {
5
- build.onResolve({ filter: /^\$app\/(forms|navigation|stores)$/u }, ({ path, ...rest }) => build.resolve(sveltekit_shim_app_specifiers.get(path), rest));
6
- build.onResolve({ filter: /^\$app\/paths$/u }, ({ path }) => ({
5
+ build.onResolve({ filter: /^\$app\/(forms|navigation|stores)$/ }, ({ path, ...rest }) => build.resolve(sveltekit_shim_app_specifiers.get(path), rest));
6
+ build.onResolve({ filter: /^\$app\/paths$/ }, ({ path }) => ({
7
7
  path: sveltekit_shim_app_specifiers.get(path),
8
8
  namespace: 'sveltekit_shim_app_paths',
9
9
  }));
10
- build.onLoad({ filter: /.*/u, namespace: 'sveltekit_shim_app_paths' }, () => ({
10
+ build.onLoad({ filter: /.*/, namespace: 'sveltekit_shim_app_paths' }, () => ({
11
11
  contents: render_sveltekit_shim_app_paths(base_url, assets_url),
12
12
  }));
13
- build.onResolve({ filter: /^\$app\/environment$/u }, ({ path }) => ({
13
+ build.onResolve({ filter: /^\$app\/environment$/ }, ({ path }) => ({
14
14
  path: sveltekit_shim_app_specifiers.get(path),
15
15
  namespace: 'sveltekit_shim_app_environment',
16
16
  }));
17
- build.onLoad({ filter: /.*/u, namespace: 'sveltekit_shim_app_environment' }, () => ({
17
+ build.onLoad({ filter: /.*/, namespace: 'sveltekit_shim_app_environment' }, () => ({
18
18
  contents: render_sveltekit_shim_app_environment(dev),
19
19
  }));
20
20
  },
@@ -3,9 +3,9 @@ export const esbuild_plugin_sveltekit_shim_env = ({ dev, public_prefix, private_
3
3
  name: 'sveltekit_shim_env',
4
4
  setup: (build) => {
5
5
  const namespace = 'sveltekit_shim_env';
6
- const filter = /^\$env\/(static|dynamic)\/(public|private)$/u;
6
+ const filter = /^\$env\/(static|dynamic)\/(public|private)$/;
7
7
  build.onResolve({ filter }, ({ path }) => ({ path, namespace }));
8
- build.onLoad({ filter: /.*/u, namespace }, ({ path }) => {
8
+ build.onLoad({ filter: /.*/, namespace }, ({ path }) => {
9
9
  const matches = filter.exec(path);
10
10
  const mode = matches[1];
11
11
  const visibility = matches[2];
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"../src/lib/","sources":["github.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,mBAAmB,QAA8B,CAAC;AAE/D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAC5B,MAAM,QACP,MAAM,cACA,MAAM,UACV,MAAM,wCAGA,MAAM,KAClB,OAAO,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAatC,CAAC"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"../src/lib/","sources":["github.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,mBAAmB,QAA6B,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAC5B,MAAM,QACP,MAAM,cACA,MAAM,UACV,MAAM,wCAGA,MAAM,KAClB,OAAO,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAatC,CAAC"}
package/dist/github.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // and we specify just the types we need
4
4
  import { Fetch_Value_Cache, fetch_value } from '@ryanatkn/belt/fetch.js';
5
5
  import { z } from 'zod';
6
- export const GITHUB_REPO_MATCHER = /.+github.com\/(.+)\/(.+)/u;
6
+ export const GITHUB_REPO_MATCHER = /.+github.com\/(.+)\/(.+)/;
7
7
  export const Github_Pull_Request = z.object({
8
8
  url: z.string(),
9
9
  id: z.number(),
package/dist/invoke.js CHANGED
@@ -1,7 +1,7 @@
1
1
  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
- import { load_config } from './config.js';
4
+ import { load_gro_config } from './config.js';
5
5
  import { sveltekit_sync_if_obviously_needed } from './sveltekit_helpers.js';
6
6
  /*
7
7
 
@@ -17,4 +17,4 @@ and the rest of the args are forwarded to the task's `run` function.
17
17
  attach_process_error_handlers((err) => err?.constructor?.name === 'Task_Error' ? 'Task_Error' : null);
18
18
  await sveltekit_sync_if_obviously_needed();
19
19
  const { task_name, args } = to_task_args();
20
- await invoke_task(task_name, args, await load_config());
20
+ await invoke_task(task_name, args, await load_gro_config());
package/dist/loader.js CHANGED
@@ -48,10 +48,10 @@ const final_ts_transform_options = {
48
48
  sourcemap: 'inline',
49
49
  };
50
50
  const aliases = Object.entries({ $lib: 'src/lib', ...alias });
51
- const TS_MATCHER = /\.(ts|tsx|mts|cts)$/u;
52
- const JSON_MATCHER = /\.(json)$/u;
53
- const NOOP_MATCHER = /\.(css|svg)$/u; // TODO others? configurable?
54
- const ENV_MATCHER = /src\/lib\/\$env\/(static|dynamic)\/(public|private)$/u;
51
+ const TS_MATCHER = /\.(ts|tsx|mts|cts)$/;
52
+ const JSON_MATCHER = /\.(json)$/;
53
+ const NOOP_MATCHER = /\.(css|svg)$/; // TODO others? configurable?
54
+ const ENV_MATCHER = /src\/lib\/\$env\/(static|dynamic)\/(public|private)$/;
55
55
  const NODE_MODULES_MATCHER = new RegExp(escape_regexp('/' + NODE_MODULES_DIRNAME + '/'), 'u');
56
56
  const package_json_cache = {};
57
57
  export const load = async (url, context, nextLoad) => {
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.130.1',
4
+ version: '0.131.0',
5
5
  description: 'task runner and toolkit extending SvelteKit',
6
6
  motto: 'generate, run, optimize',
7
7
  glyph: '🌰',
@@ -39,13 +39,13 @@ export const package_json = {
39
39
  'typescript',
40
40
  ],
41
41
  dependencies: {
42
- '@ryanatkn/belt': '^0.24.4',
42
+ '@ryanatkn/belt': '^0.24.9',
43
43
  chokidar: '^3.6.0',
44
44
  dotenv: '^16.4.5',
45
45
  'es-module-lexer': '^1.5.4',
46
46
  'esm-env': '^1.0.0',
47
47
  mri: '^1.2.0',
48
- prettier: '^3.3.2',
48
+ prettier: '^3.3.3',
49
49
  'prettier-plugin-svelte': '^3.2.5',
50
50
  'ts-morph': '^23.0.0',
51
51
  tslib: '^2.6.3',
@@ -55,9 +55,9 @@ export const package_json = {
55
55
  devDependencies: {
56
56
  '@changesets/changelog-git': '^0.2.0',
57
57
  '@changesets/types': '^6.0.0',
58
- '@ryanatkn/eslint-config': '^0.4.0',
59
- '@ryanatkn/fuz': '^0.108.4',
60
- '@ryanatkn/moss': '^0.7.1',
58
+ '@ryanatkn/eslint-config': '^0.4.2',
59
+ '@ryanatkn/fuz': '^0.111.0',
60
+ '@ryanatkn/moss': '^0.8.0',
61
61
  '@sveltejs/adapter-static': '^3.0.2',
62
62
  '@sveltejs/kit': '^2.5.18',
63
63
  '@sveltejs/package': '^2.3.2',
@@ -65,12 +65,12 @@ export const package_json = {
65
65
  '@types/fs-extra': '^11.0.4',
66
66
  '@types/node': '^20.14.10',
67
67
  esbuild: '^0.21.5',
68
- eslint: '^9.6.0',
68
+ eslint: '^9.7.0',
69
69
  'eslint-plugin-svelte': '^2.42.0',
70
- svelte: '^5.0.0-next.182',
70
+ svelte: '^5.0.0-next.184',
71
71
  'svelte-check': '^3.8.4',
72
72
  typescript: '^5.5.3',
73
- 'typescript-eslint': '^8.0.0-alpha.41',
73
+ 'typescript-eslint': '^8.0.0-alpha.44',
74
74
  uvu: '^0.5.6',
75
75
  },
76
76
  prettier: {
@@ -266,7 +266,7 @@ export const package_json = {
266
266
  };
267
267
  export const src_json = {
268
268
  name: '@ryanatkn/gro',
269
- version: '0.130.1',
269
+ version: '0.131.0',
270
270
  modules: {
271
271
  '.': {
272
272
  path: 'index.ts',
@@ -367,13 +367,13 @@ export const src_json = {
367
367
  { name: 'Gro_Config', kind: 'type' },
368
368
  { name: 'Raw_Gro_Config', kind: 'type' },
369
369
  { name: 'Create_Gro_Config', kind: 'type' },
370
- { name: 'create_empty_config', kind: 'function' },
370
+ { name: 'create_empty_gro_config', kind: 'function' },
371
371
  { name: 'DEFAULT_SEARCH_EXCLUDER', kind: 'variable' },
372
372
  { name: 'DEFAULT_EXPORTS_EXCLUDER', kind: 'variable' },
373
- { name: 'normalize_config', kind: 'function' },
373
+ { name: 'normalize_gro_config', kind: 'function' },
374
374
  { name: 'Gro_Config_Module', kind: 'type' },
375
- { name: 'load_config', kind: 'function' },
376
- { name: 'validate_config_module', kind: 'function' },
375
+ { name: 'load_gro_config', kind: 'function' },
376
+ { name: 'validate_gro_config_module', kind: 'function' },
377
377
  ],
378
378
  },
379
379
  './deploy.task.js': {
@@ -8,9 +8,9 @@ import { SVELTEKIT_DIST_DIRNAME } from './path_constants.js';
8
8
  import { search_fs } from './search_fs.js';
9
9
  import { has_sveltekit_library } from './sveltekit_helpers.js';
10
10
  import { GITHUB_REPO_MATCHER } from './github.js';
11
- // TODO @multiple belongs elsewhere
11
+ // TODO @many belongs elsewhere
12
12
  export const Url = z.string();
13
- // TODO @multiple belongs elsewhere
13
+ // TODO @many belongs elsewhere
14
14
  export const Email = z.string();
15
15
  // TODO move this where?
16
16
  export const transform_empty_object_to_undefined = (val) => {
@@ -12,6 +12,8 @@ export interface Package_Meta {
12
12
  */
13
13
  owner_name: string | null;
14
14
  homepage_url: Url | null;
15
+ logo_url: Url | null;
16
+ logo_alt: string;
15
17
  npm_url: Url | null;
16
18
  changelog_url: Url | null;
17
19
  published: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"package_meta.d.ts","sourceRoot":"../src/lib/","sources":["package_meta.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAE,GAAG,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,QACzB,GAAG,gBACM,YAAY,YAChB,QAAQ,KAChB,YA4CF,CAAC;AAGF,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,MACH,CAAC;AAE7C,eAAO,MAAM,aAAa,QAAS,YAAY,KAAG,MAAM,GAAG,IAQ1D,CAAC"}
1
+ {"version":3,"file":"package_meta.d.ts","sourceRoot":"../src/lib/","sources":["package_meta.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAE,GAAG,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAG5C,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,QACzB,GAAG,gBACM,YAAY,YAChB,QAAQ,KAChB,YAqDF,CAAC;AAGF,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,MACH,CAAC;AAE7C,eAAO,MAAM,aAAa,QAAS,YAAY,KAAG,MAAM,GAAG,IAQ1D,CAAC"}
@@ -1,4 +1,4 @@
1
- import { strip_start, strip_end } from '@ryanatkn/belt/string.js';
1
+ import { strip_start, strip_end, ensure_end } from '@ryanatkn/belt/string.js';
2
2
  export const parse_package_meta = (url, package_json, src_json) => {
3
3
  const { name } = package_json;
4
4
  // TODO hacky
@@ -19,6 +19,11 @@ export const parse_package_meta = (url, package_json, src_json) => {
19
19
  const changelog_url = published && repo_url ? repo_url + '/blob/main/CHANGELOG.md' : null;
20
20
  const repo_name = parse_repo_name(name);
21
21
  const owner_name = repo_url ? strip_start(repo_url, 'https://github.com/').split('/')[0] : null;
22
+ const logo_url = homepage_url
23
+ ? ensure_end(homepage_url, '/') +
24
+ (package_json.logo ? strip_start(package_json.logo, '/') : 'favicon.png')
25
+ : null;
26
+ const logo_alt = package_json.logo_alt ?? `logo for ${repo_name}`;
22
27
  return {
23
28
  url,
24
29
  package_json,
@@ -28,6 +33,8 @@ export const parse_package_meta = (url, package_json, src_json) => {
28
33
  repo_url,
29
34
  owner_name,
30
35
  homepage_url,
36
+ logo_url,
37
+ logo_alt,
31
38
  npm_url,
32
39
  changelog_url,
33
40
  published,
@@ -1 +1 @@
1
- {"version":3,"file":"svelte_helpers.d.ts","sourceRoot":"../src/lib/","sources":["svelte_helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,QAAe,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAwB,CAAC"}
1
+ {"version":3,"file":"svelte_helpers.d.ts","sourceRoot":"../src/lib/","sources":["svelte_helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,QAAc,CAAC;AAC1C,eAAO,MAAM,oBAAoB,QAAuB,CAAC"}
@@ -1,2 +1,2 @@
1
- export const SVELTE_MATCHER = /\.svelte$/u;
2
- export const SVELTE_RUNES_MATCHER = /\.svelte\.(js|ts)$/u; // TODO probably let `.svelte.` appear anywhere - https://github.com/sveltejs/svelte/issues/11536
1
+ export const SVELTE_MATCHER = /\.svelte$/;
2
+ export const SVELTE_RUNES_MATCHER = /\.svelte\.(js|ts)$/; // TODO probably let `.svelte.` appear anywhere - https://github.com/sveltejs/svelte/issues/11536
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit_shim_app.d.ts","sourceRoot":"../src/lib/","sources":["sveltekit_shim_app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AAEnE,eAAO,MAAM,gCAAgC,QAA2C,CAAC;AACzF,eAAO,MAAM,sCAAsC,QACJ,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,6BAA6B,qBAMxC,CAAC;AAEH,eAAO,MAAM,+BAA+B,cACjC,uBAAuB,CAAC,UAAU,CAAC,eACjC,uBAAuB,CAAC,YAAY,CAAC,KAC/C,MAKF,CAAC;AAMF,eAAO,MAAM,qCAAqC,QAC5C,OAAO,KACV,MAOF,CAAC"}
1
+ {"version":3,"file":"sveltekit_shim_app.d.ts","sourceRoot":"../src/lib/","sources":["sveltekit_shim_app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AAEnE,eAAO,MAAM,gCAAgC,QAA0C,CAAC;AACxF,eAAO,MAAM,sCAAsC,QAAgD,CAAC;AAEpG;;;GAGG;AACH,eAAO,MAAM,6BAA6B,qBAMxC,CAAC;AAEH,eAAO,MAAM,+BAA+B,cACjC,uBAAuB,CAAC,UAAU,CAAC,eACjC,uBAAuB,CAAC,YAAY,CAAC,KAC/C,MAKF,CAAC;AAMF,eAAO,MAAM,qCAAqC,QAC5C,OAAO,KACV,MAOF,CAAC"}
@@ -1,5 +1,5 @@
1
- export const SVELTEKIT_SHIM_APP_PATHS_MATCHER = /\/util\/sveltekit_shim_app_paths\.js$/u;
2
- export const SVELTEKIT_SHIM_APP_ENVIRONMENT_MATCHER = /\/util\/sveltekit_shim_app_environment\.js$/u;
1
+ export const SVELTEKIT_SHIM_APP_PATHS_MATCHER = /\/util\/sveltekit_shim_app_paths\.js$/;
2
+ export const SVELTEKIT_SHIM_APP_ENVIRONMENT_MATCHER = /\/util\/sveltekit_shim_app_environment\.js$/;
3
3
  /**
4
4
  * Maps SvelteKit `$app` specifiers to their Gro shims.
5
5
  * @see https://kit.svelte.dev/docs/modules
@@ -64,8 +64,8 @@ const to_deps = (package_json) => {
64
64
  : [];
65
65
  return prod_deps.concat(dev_deps);
66
66
  };
67
- const EXACT_VERSION_MATCHER = /^..*@.+/u;
68
- const CUSTOM_TAG_MATCHER = /^[\^~><=]*.+-(.+)/u;
67
+ const EXACT_VERSION_MATCHER = /^..*@.+/;
68
+ const CUSTOM_TAG_MATCHER = /^[\^~><=]*.+-(.+)/;
69
69
  // TODO hacky and limited
70
70
  // TODO probably want to pass through exact deps as well, e.g. @foo/bar@1
71
71
  const to_upgrade_items = (deps) => deps.map((dep) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryanatkn/gro",
3
- "version": "0.130.1",
3
+ "version": "0.131.0",
4
4
  "description": "task runner and toolkit extending SvelteKit",
5
5
  "motto": "generate, run, optimize",
6
6
  "glyph": "🌰",
@@ -49,13 +49,13 @@
49
49
  "typescript"
50
50
  ],
51
51
  "dependencies": {
52
- "@ryanatkn/belt": "^0.24.4",
52
+ "@ryanatkn/belt": "^0.24.9",
53
53
  "chokidar": "^3.6.0",
54
54
  "dotenv": "^16.4.5",
55
55
  "es-module-lexer": "^1.5.4",
56
56
  "esm-env": "^1.0.0",
57
57
  "mri": "^1.2.0",
58
- "prettier": "^3.3.2",
58
+ "prettier": "^3.3.3",
59
59
  "prettier-plugin-svelte": "^3.2.5",
60
60
  "ts-morph": "^23.0.0",
61
61
  "tslib": "^2.6.3",
@@ -68,9 +68,9 @@
68
68
  "devDependencies": {
69
69
  "@changesets/changelog-git": "^0.2.0",
70
70
  "@changesets/types": "^6.0.0",
71
- "@ryanatkn/eslint-config": "^0.4.0",
72
- "@ryanatkn/fuz": "^0.108.4",
73
- "@ryanatkn/moss": "^0.7.1",
71
+ "@ryanatkn/eslint-config": "^0.4.2",
72
+ "@ryanatkn/fuz": "^0.111.0",
73
+ "@ryanatkn/moss": "^0.8.0",
74
74
  "@sveltejs/adapter-static": "^3.0.2",
75
75
  "@sveltejs/kit": "^2.5.18",
76
76
  "@sveltejs/package": "^2.3.2",
@@ -78,12 +78,12 @@
78
78
  "@types/fs-extra": "^11.0.4",
79
79
  "@types/node": "^20.14.10",
80
80
  "esbuild": "^0.21.5",
81
- "eslint": "^9.6.0",
81
+ "eslint": "^9.7.0",
82
82
  "eslint-plugin-svelte": "^2.42.0",
83
- "svelte": "^5.0.0-next.182",
83
+ "svelte": "^5.0.0-next.184",
84
84
  "svelte-check": "^3.8.4",
85
85
  "typescript": "^5.5.3",
86
- "typescript-eslint": "^8.0.0-alpha.41",
86
+ "typescript-eslint": "^8.0.0-alpha.44",
87
87
  "uvu": "^0.5.6"
88
88
  },
89
89
  "prettier": {
@@ -37,7 +37,7 @@ type Parsed_Changelog = z.infer<typeof Parsed_Changelog>;
37
37
  const parse_changelog = (contents: string): Parsed_Changelog => contents.split('\n');
38
38
  const serialize_changelog = (parsed: Parsed_Changelog): string => parsed.join('\n');
39
39
 
40
- const LINE_WITH_SHA_MATCHER = /^- ([a-z0-9]{7,8}): /u;
40
+ const LINE_WITH_SHA_MATCHER = /^- ([a-z0-9]{7,8}): /;
41
41
 
42
42
  const map_changelog = async (
43
43
  parsed: Parsed_Changelog,
@@ -96,7 +96,9 @@ export const task: Task<Args> = {
96
96
  await spawn_cli(found_changeset_cli, ['init'], log);
97
97
 
98
98
  const access =
99
- access_arg ?? package_json.private ? CHANGESET_RESTRICTED_ACCESS : CHANGESET_PUBLIC_ACCESS;
99
+ (access_arg ?? package_json.private)
100
+ ? CHANGESET_RESTRICTED_ACCESS
101
+ : CHANGESET_PUBLIC_ACCESS;
100
102
 
101
103
  const access_color = access === CHANGESET_RESTRICTED_ACCESS ? blue : red;
102
104
  log.info('initing changeset with ' + access_color(access) + ' access');
package/src/lib/config.ts CHANGED
@@ -58,7 +58,7 @@ export type Create_Gro_Config = (
58
58
  base_config: Gro_Config,
59
59
  ) => Raw_Gro_Config | Promise<Raw_Gro_Config>;
60
60
 
61
- export const create_empty_config = (): Gro_Config => ({
61
+ export const create_empty_gro_config = (): Gro_Config => ({
62
62
  plugins: () => [],
63
63
  map_package_json: default_map_package_json,
64
64
  task_root_dirs: [
@@ -97,14 +97,14 @@ const default_map_package_json: Map_Package_Json = (package_json) => {
97
97
  return package_json;
98
98
  };
99
99
 
100
- export const DEFAULT_EXPORTS_EXCLUDER = /(\.md|\.(test|ignore)\.|\/(test|fixtures|ignore)\/)/u;
100
+ export const DEFAULT_EXPORTS_EXCLUDER = /(\.md|\.(test|ignore)\.|\/(test|fixtures|ignore)\/)/;
101
101
 
102
102
  /**
103
103
  * Transforms a `Raw_Gro_Config` to the more strict `Gro_Config`.
104
104
  * This allows users to provide a more relaxed config.
105
105
  */
106
- export const normalize_config = (raw_config: Raw_Gro_Config): Gro_Config => {
107
- const empty_config = create_empty_config();
106
+ export const normalize_gro_config = (raw_config: Raw_Gro_Config): Gro_Config => {
107
+ const empty_config = create_empty_gro_config();
108
108
  // All of the raw config properties are optional,
109
109
  // so fall back to the empty values when `undefined`.
110
110
  const {
@@ -129,8 +129,10 @@ export interface Gro_Config_Module {
129
129
  readonly default: Raw_Gro_Config | Create_Gro_Config;
130
130
  }
131
131
 
132
- export const load_config = async (dir = paths.root): Promise<Gro_Config> => {
133
- const default_config = normalize_config(await create_default_config(create_empty_config()));
132
+ export const load_gro_config = async (dir = paths.root): Promise<Gro_Config> => {
133
+ const default_config = normalize_gro_config(
134
+ await create_default_config(create_empty_gro_config()),
135
+ );
134
136
  const config_path = join(dir, GRO_CONFIG_PATH);
135
137
  if (!existsSync(config_path)) {
136
138
  // No user config file found, so return the default.
@@ -138,15 +140,15 @@ export const load_config = async (dir = paths.root): Promise<Gro_Config> => {
138
140
  }
139
141
  // Import the user's `gro.config.ts`.
140
142
  const config_module = await import(config_path);
141
- validate_config_module(config_module, config_path);
142
- return normalize_config(
143
+ validate_gro_config_module(config_module, config_path);
144
+ return normalize_gro_config(
143
145
  typeof config_module.default === 'function'
144
146
  ? await config_module.default(default_config)
145
147
  : config_module.default,
146
148
  );
147
149
  };
148
150
 
149
- export const validate_config_module: (
151
+ export const validate_gro_config_module: (
150
152
  config_module: any,
151
153
  config_path: string,
152
154
  ) => asserts config_module is Gro_Config_Module = (config_module, config_path) => {
@@ -81,7 +81,7 @@ export const esbuild_plugin_external_worker = ({
81
81
  return building;
82
82
  };
83
83
 
84
- build.onResolve({filter: /\.worker(|\.js|\.ts)$/u}, async ({path, resolveDir}) => {
84
+ build.onResolve({filter: /\.worker(|\.js|\.ts)$/}, async ({path, resolveDir}) => {
85
85
  const parsed = resolve_specifier(path, resolveDir);
86
86
  const {specifier, path_id, namespace} = parsed;
87
87
  const build_result = await build_worker(path_id);
@@ -83,7 +83,7 @@ const convert_svelte_message_to_esbuild = (
83
83
  ): esbuild.PartialMessage => {
84
84
  let location: esbuild.PartialMessage['location'] = null;
85
85
  if (start && end) {
86
- const lineText = source.split(/\r\n|\r|\n/gu)[start.line - 1];
86
+ const lineText = source.split(/\r\n|\r|\n/g)[start.line - 1];
87
87
  const lineEnd = start.line === end.line ? end.column : lineText.length;
88
88
  location = {
89
89
  file: path,
@@ -12,18 +12,18 @@ import {resolve_specifier} from './resolve_specifier.js';
12
12
  export const esbuild_plugin_sveltekit_local_imports = (): esbuild.Plugin => ({
13
13
  name: 'sveltekit_local_imports',
14
14
  setup: (build) => {
15
- build.onResolve({filter: /^(\/|\.)/u}, (args) => {
15
+ build.onResolve({filter: /^(\/|\.)/}, (args) => {
16
16
  const {path, importer} = args;
17
17
  if (!importer) return {path};
18
18
  const {path_id, namespace} = resolve_specifier(path, dirname(importer));
19
19
  return {path: path_id, namespace}; // `namespace` may be `undefined`, but esbuild needs the absolute path for json etc
20
20
  });
21
- build.onLoad({filter: /.*/u, namespace: 'sveltekit_local_imports_ts'}, async ({path}) => ({
21
+ build.onLoad({filter: /.*/, namespace: 'sveltekit_local_imports_ts'}, async ({path}) => ({
22
22
  contents: await readFile(path),
23
23
  loader: 'ts',
24
24
  resolveDir: dirname(path),
25
25
  }));
26
- build.onLoad({filter: /.*/u, namespace: 'sveltekit_local_imports_js'}, async ({path}) => ({
26
+ build.onLoad({filter: /.*/, namespace: 'sveltekit_local_imports_js'}, async ({path}) => ({
27
27
  contents: await readFile(path),
28
28
  resolveDir: dirname(path),
29
29
  }));
@@ -20,21 +20,21 @@ export const esbuild_plugin_sveltekit_shim_app = ({
20
20
  }: Options): esbuild.Plugin => ({
21
21
  name: 'sveltekit_shim_app',
22
22
  setup: (build) => {
23
- build.onResolve({filter: /^\$app\/(forms|navigation|stores)$/u}, ({path, ...rest}) =>
23
+ build.onResolve({filter: /^\$app\/(forms|navigation|stores)$/}, ({path, ...rest}) =>
24
24
  build.resolve(sveltekit_shim_app_specifiers.get(path)!, rest),
25
25
  );
26
- build.onResolve({filter: /^\$app\/paths$/u}, ({path}) => ({
26
+ build.onResolve({filter: /^\$app\/paths$/}, ({path}) => ({
27
27
  path: sveltekit_shim_app_specifiers.get(path)!,
28
28
  namespace: 'sveltekit_shim_app_paths',
29
29
  }));
30
- build.onLoad({filter: /.*/u, namespace: 'sveltekit_shim_app_paths'}, () => ({
30
+ build.onLoad({filter: /.*/, namespace: 'sveltekit_shim_app_paths'}, () => ({
31
31
  contents: render_sveltekit_shim_app_paths(base_url, assets_url),
32
32
  }));
33
- build.onResolve({filter: /^\$app\/environment$/u}, ({path}) => ({
33
+ build.onResolve({filter: /^\$app\/environment$/}, ({path}) => ({
34
34
  path: sveltekit_shim_app_specifiers.get(path)!,
35
35
  namespace: 'sveltekit_shim_app_environment',
36
36
  }));
37
- build.onLoad({filter: /.*/u, namespace: 'sveltekit_shim_app_environment'}, () => ({
37
+ build.onLoad({filter: /.*/, namespace: 'sveltekit_shim_app_environment'}, () => ({
38
38
  contents: render_sveltekit_shim_app_environment(dev),
39
39
  }));
40
40
  },
@@ -22,9 +22,9 @@ export const esbuild_plugin_sveltekit_shim_env = ({
22
22
  name: 'sveltekit_shim_env',
23
23
  setup: (build) => {
24
24
  const namespace = 'sveltekit_shim_env';
25
- const filter = /^\$env\/(static|dynamic)\/(public|private)$/u;
25
+ const filter = /^\$env\/(static|dynamic)\/(public|private)$/;
26
26
  build.onResolve({filter}, ({path}) => ({path, namespace}));
27
- build.onLoad({filter: /.*/u, namespace}, ({path}) => {
27
+ build.onLoad({filter: /.*/, namespace}, ({path}) => {
28
28
  const matches = filter.exec(path);
29
29
  const mode = matches![1] as 'static' | 'dynamic';
30
30
  const visibility = matches![2] as 'public' | 'private';
package/src/lib/github.ts CHANGED
@@ -6,7 +6,7 @@ import {Fetch_Value_Cache, fetch_value} from '@ryanatkn/belt/fetch.js';
6
6
  import type {Logger} from '@ryanatkn/belt/log.js';
7
7
  import {z} from 'zod';
8
8
 
9
- export const GITHUB_REPO_MATCHER = /.+github.com\/(.+)\/(.+)/u;
9
+ export const GITHUB_REPO_MATCHER = /.+github.com\/(.+)\/(.+)/;
10
10
 
11
11
  export const Github_Pull_Request = z.object({
12
12
  url: z.string(),
@@ -30,7 +30,7 @@ export type Raw_Input_Path = Flavored<z.infer<typeof Raw_Input_Path>, 'Raw_Input
30
30
  */
31
31
  export const to_input_path = (
32
32
  raw_input_path: Raw_Input_Path,
33
- root_path = process.cwd(), // TODO @multiple isn't passed in anywhere, maybe hoist to `invoke_task` and others
33
+ root_path = process.cwd(), // TODO @many isn't passed in anywhere, maybe hoist to `invoke_task` and others
34
34
  ): Input_Path => {
35
35
  if (raw_input_path.startsWith(GRO_PACKAGE_DIR)) {
36
36
  return GRO_DIST_DIR + strip_start(raw_input_path, GRO_PACKAGE_DIR);
@@ -42,7 +42,7 @@ export const to_input_path = (
42
42
 
43
43
  export const to_input_paths = (
44
44
  raw_input_paths: Raw_Input_Path[],
45
- root_path?: string, // TODO @multiple isn't passed in anywhere, maybe hoist to `invoke_task` and others
45
+ root_path?: string, // TODO @many isn't passed in anywhere, maybe hoist to `invoke_task` and others
46
46
  ): Input_Path[] => raw_input_paths.map((p) => to_input_path(p, root_path));
47
47
 
48
48
  export interface Possible_Path {
package/src/lib/invoke.ts CHANGED
@@ -2,7 +2,7 @@ import {attach_process_error_handlers} from '@ryanatkn/belt/process.js';
2
2
 
3
3
  import {invoke_task} from './invoke_task.js';
4
4
  import {to_task_args} from './args.js';
5
- import {load_config} from './config.js';
5
+ import {load_gro_config} from './config.js';
6
6
  import {sveltekit_sync_if_obviously_needed} from './sveltekit_helpers.js';
7
7
 
8
8
  /*
@@ -24,4 +24,4 @@ attach_process_error_handlers((err) =>
24
24
  await sveltekit_sync_if_obviously_needed();
25
25
 
26
26
  const {task_name, args} = to_task_args();
27
- await invoke_task(task_name, args, await load_config());
27
+ await invoke_task(task_name, args, await load_gro_config());
package/src/lib/loader.ts CHANGED
@@ -75,10 +75,10 @@ const final_ts_transform_options: esbuild.TransformOptions = {
75
75
 
76
76
  const aliases = Object.entries({$lib: 'src/lib', ...alias});
77
77
 
78
- const TS_MATCHER = /\.(ts|tsx|mts|cts)$/u;
79
- const JSON_MATCHER = /\.(json)$/u;
80
- const NOOP_MATCHER = /\.(css|svg)$/u; // TODO others? configurable?
81
- const ENV_MATCHER = /src\/lib\/\$env\/(static|dynamic)\/(public|private)$/u;
78
+ const TS_MATCHER = /\.(ts|tsx|mts|cts)$/;
79
+ const JSON_MATCHER = /\.(json)$/;
80
+ const NOOP_MATCHER = /\.(css|svg)$/; // TODO others? configurable?
81
+ const ENV_MATCHER = /src\/lib\/\$env\/(static|dynamic)\/(public|private)$/;
82
82
  const NODE_MODULES_MATCHER = new RegExp(escape_regexp('/' + NODE_MODULES_DIRNAME + '/'), 'u');
83
83
 
84
84
  const package_json_cache: Record<string, Package_Json> = {};
@@ -5,7 +5,7 @@ import type {Src_Json} from './src_json.js';
5
5
 
6
6
  export const package_json = {
7
7
  name: '@ryanatkn/gro',
8
- version: '0.130.1',
8
+ version: '0.131.0',
9
9
  description: 'task runner and toolkit extending SvelteKit',
10
10
  motto: 'generate, run, optimize',
11
11
  glyph: '🌰',
@@ -44,13 +44,13 @@ export const package_json = {
44
44
  'typescript',
45
45
  ],
46
46
  dependencies: {
47
- '@ryanatkn/belt': '^0.24.4',
47
+ '@ryanatkn/belt': '^0.24.9',
48
48
  chokidar: '^3.6.0',
49
49
  dotenv: '^16.4.5',
50
50
  'es-module-lexer': '^1.5.4',
51
51
  'esm-env': '^1.0.0',
52
52
  mri: '^1.2.0',
53
- prettier: '^3.3.2',
53
+ prettier: '^3.3.3',
54
54
  'prettier-plugin-svelte': '^3.2.5',
55
55
  'ts-morph': '^23.0.0',
56
56
  tslib: '^2.6.3',
@@ -60,9 +60,9 @@ export const package_json = {
60
60
  devDependencies: {
61
61
  '@changesets/changelog-git': '^0.2.0',
62
62
  '@changesets/types': '^6.0.0',
63
- '@ryanatkn/eslint-config': '^0.4.0',
64
- '@ryanatkn/fuz': '^0.108.4',
65
- '@ryanatkn/moss': '^0.7.1',
63
+ '@ryanatkn/eslint-config': '^0.4.2',
64
+ '@ryanatkn/fuz': '^0.111.0',
65
+ '@ryanatkn/moss': '^0.8.0',
66
66
  '@sveltejs/adapter-static': '^3.0.2',
67
67
  '@sveltejs/kit': '^2.5.18',
68
68
  '@sveltejs/package': '^2.3.2',
@@ -70,12 +70,12 @@ export const package_json = {
70
70
  '@types/fs-extra': '^11.0.4',
71
71
  '@types/node': '^20.14.10',
72
72
  esbuild: '^0.21.5',
73
- eslint: '^9.6.0',
73
+ eslint: '^9.7.0',
74
74
  'eslint-plugin-svelte': '^2.42.0',
75
- svelte: '^5.0.0-next.182',
75
+ svelte: '^5.0.0-next.184',
76
76
  'svelte-check': '^3.8.4',
77
77
  typescript: '^5.5.3',
78
- 'typescript-eslint': '^8.0.0-alpha.41',
78
+ 'typescript-eslint': '^8.0.0-alpha.44',
79
79
  uvu: '^0.5.6',
80
80
  },
81
81
  prettier: {
@@ -272,7 +272,7 @@ export const package_json = {
272
272
 
273
273
  export const src_json = {
274
274
  name: '@ryanatkn/gro',
275
- version: '0.130.1',
275
+ version: '0.131.0',
276
276
  modules: {
277
277
  '.': {
278
278
  path: 'index.ts',
@@ -373,13 +373,13 @@ export const src_json = {
373
373
  {name: 'Gro_Config', kind: 'type'},
374
374
  {name: 'Raw_Gro_Config', kind: 'type'},
375
375
  {name: 'Create_Gro_Config', kind: 'type'},
376
- {name: 'create_empty_config', kind: 'function'},
376
+ {name: 'create_empty_gro_config', kind: 'function'},
377
377
  {name: 'DEFAULT_SEARCH_EXCLUDER', kind: 'variable'},
378
378
  {name: 'DEFAULT_EXPORTS_EXCLUDER', kind: 'variable'},
379
- {name: 'normalize_config', kind: 'function'},
379
+ {name: 'normalize_gro_config', kind: 'function'},
380
380
  {name: 'Gro_Config_Module', kind: 'type'},
381
- {name: 'load_config', kind: 'function'},
382
- {name: 'validate_config_module', kind: 'function'},
381
+ {name: 'load_gro_config', kind: 'function'},
382
+ {name: 'validate_gro_config_module', kind: 'function'},
383
383
  ],
384
384
  },
385
385
  './deploy.task.js': {
@@ -12,11 +12,11 @@ import {search_fs} from './search_fs.js';
12
12
  import {has_sveltekit_library} from './sveltekit_helpers.js';
13
13
  import {GITHUB_REPO_MATCHER} from './github.js';
14
14
 
15
- // TODO @multiple belongs elsewhere
15
+ // TODO @many belongs elsewhere
16
16
  export const Url = z.string();
17
17
  export type Url = Flavored<z.infer<typeof Url>, 'Url'>;
18
18
 
19
- // TODO @multiple belongs elsewhere
19
+ // TODO @many belongs elsewhere
20
20
  export const Email = z.string();
21
21
  export type Email = Flavored<z.infer<typeof Email>, 'Email'>;
22
22
 
@@ -1,4 +1,4 @@
1
- import {strip_start, strip_end} from '@ryanatkn/belt/string.js';
1
+ import {strip_start, strip_end, ensure_end} from '@ryanatkn/belt/string.js';
2
2
 
3
3
  import type {Package_Json, Url} from './package_json.js';
4
4
  import type {Src_Json} from './src_json.js';
@@ -8,15 +8,17 @@ export interface Package_Meta {
8
8
  url: Url;
9
9
  package_json: Package_Json;
10
10
  src_json: Src_Json;
11
- name: string; // '@ryanatkn/fuz_library';
11
+ name: string; // '@ryanatkn/fuz_library'
12
12
  repo_name: string; // fuz_library
13
- repo_url: Url | null; // 'https://github.com/ryanatkn/fuz';
13
+ repo_url: Url | null; // 'https://github.com/ryanatkn/fuz'
14
14
  /**
15
15
  * the is the github user/org, not npm
16
16
  */
17
- owner_name: string | null; // 'fuz-dev';
18
- homepage_url: Url | null; // 'https://www.fuz.dev/';
19
- npm_url: Url | null; // 'https://npmjs.com/package/@ryanatkn/fuz_library';
17
+ owner_name: string | null; // 'fuz-dev'
18
+ homepage_url: Url | null; // 'https://www.fuz.dev/'
19
+ logo_url: Url | null; // 'https://www.fuz.dev/logo.svg' falling back to 'https://www.fuz.dev/favicon.png'
20
+ logo_alt: string; // 'icon for gro'
21
+ npm_url: Url | null; // 'https://npmjs.com/package/@ryanatkn/fuz_library'
20
22
  changelog_url: Url | null;
21
23
  published: boolean;
22
24
  }
@@ -56,6 +58,13 @@ export const parse_package_meta = (
56
58
 
57
59
  const owner_name = repo_url ? strip_start(repo_url, 'https://github.com/').split('/')[0] : null;
58
60
 
61
+ const logo_url = homepage_url
62
+ ? ensure_end(homepage_url, '/') +
63
+ (package_json.logo ? strip_start(package_json.logo, '/') : 'favicon.png')
64
+ : null;
65
+
66
+ const logo_alt = package_json.logo_alt ?? `logo for ${repo_name}`;
67
+
59
68
  return {
60
69
  url,
61
70
  package_json,
@@ -65,6 +74,8 @@ export const parse_package_meta = (
65
74
  repo_url,
66
75
  owner_name,
67
76
  homepage_url,
77
+ logo_url,
78
+ logo_alt,
68
79
  npm_url,
69
80
  changelog_url,
70
81
  published,
@@ -1,2 +1,2 @@
1
- export const SVELTE_MATCHER = /\.svelte$/u;
2
- export const SVELTE_RUNES_MATCHER = /\.svelte\.(js|ts)$/u; // TODO probably let `.svelte.` appear anywhere - https://github.com/sveltejs/svelte/issues/11536
1
+ export const SVELTE_MATCHER = /\.svelte$/;
2
+ export const SVELTE_RUNES_MATCHER = /\.svelte\.(js|ts)$/; // TODO probably let `.svelte.` appear anywhere - https://github.com/sveltejs/svelte/issues/11536
@@ -1,8 +1,7 @@
1
1
  import type {Parsed_Sveltekit_Config} from './sveltekit_config.js';
2
2
 
3
- export const SVELTEKIT_SHIM_APP_PATHS_MATCHER = /\/util\/sveltekit_shim_app_paths\.js$/u;
4
- export const SVELTEKIT_SHIM_APP_ENVIRONMENT_MATCHER =
5
- /\/util\/sveltekit_shim_app_environment\.js$/u;
3
+ export const SVELTEKIT_SHIM_APP_PATHS_MATCHER = /\/util\/sveltekit_shim_app_paths\.js$/;
4
+ export const SVELTEKIT_SHIM_APP_ENVIRONMENT_MATCHER = /\/util\/sveltekit_shim_app_environment\.js$/;
6
5
 
7
6
  /**
8
7
  * Maps SvelteKit `$app` specifiers to their Gro shims.
package/src/lib/task.ts CHANGED
@@ -206,7 +206,7 @@ export type Load_Tasks_Failure = Load_Modules_Failure<Task_Module_Meta>;
206
206
 
207
207
  export const load_tasks = async (
208
208
  found_tasks: Found_Tasks,
209
- root_path: Path_Id = process.cwd(), // TODO @multiple isn't passed in anywhere, maybe hoist to `invoke_task` and others
209
+ root_path: Path_Id = process.cwd(), // TODO @many isn't passed in anywhere, maybe hoist to `invoke_task` and others
210
210
  ): Promise<Load_Tasks_Result> => {
211
211
  const loaded_modules = await load_modules(
212
212
  found_tasks.resolved_input_files,
@@ -87,8 +87,8 @@ const to_deps = (package_json: Package_Json): Dep[] => {
87
87
  return prod_deps.concat(dev_deps);
88
88
  };
89
89
 
90
- const EXACT_VERSION_MATCHER = /^..*@.+/u;
91
- const CUSTOM_TAG_MATCHER = /^[\^~><=]*.+-(.+)/u;
90
+ const EXACT_VERSION_MATCHER = /^..*@.+/;
91
+ const CUSTOM_TAG_MATCHER = /^[\^~><=]*.+-(.+)/;
92
92
 
93
93
  // TODO hacky and limited
94
94
  // TODO probably want to pass through exact deps as well, e.g. @foo/bar@1