@ryanatkn/gro 0.130.0 → 0.130.2

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.map +1 -1
  5. package/dist/config.js +1 -1
  6. package/dist/esbuild_plugin_external_worker.js +1 -1
  7. package/dist/esbuild_plugin_svelte.js +1 -1
  8. package/dist/esbuild_plugin_sveltekit_local_imports.js +3 -3
  9. package/dist/esbuild_plugin_sveltekit_shim_app.js +5 -5
  10. package/dist/esbuild_plugin_sveltekit_shim_env.js +2 -2
  11. package/dist/github.d.ts.map +1 -1
  12. package/dist/github.js +1 -1
  13. package/dist/loader.js +4 -4
  14. package/dist/package.js +10 -10
  15. package/dist/package_json.js +2 -2
  16. package/dist/package_meta.d.ts +2 -0
  17. package/dist/package_meta.d.ts.map +1 -1
  18. package/dist/package_meta.js +8 -1
  19. package/dist/publish.task.d.ts.map +1 -1
  20. package/dist/publish.task.js +10 -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 +1 -1
  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/loader.ts +4 -4
  38. package/src/lib/package.ts +10 -10
  39. package/src/lib/package_json.ts +2 -2
  40. package/src/lib/package_meta.ts +17 -6
  41. package/src/lib/publish.task.ts +10 -1
  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) {
@@ -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,mBAAmB,QAAO,UAUrC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAUnC,CAAC;AAWF,eAAO,MAAM,wBAAwB,QAAwD,CAAC;AAE9F;;;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"}
package/dist/config.js CHANGED
@@ -33,7 +33,7 @@ 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.
@@ -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/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.0',
4
+ version: '0.130.2',
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.110.4',
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.0',
269
+ version: '0.130.2',
270
270
  modules: {
271
271
  '.': {
272
272
  path: 'index.ts',
@@ -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":"publish.task.d.ts","sourceRoot":"../src/lib/","sources":["publish.task.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAItB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAwBhD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BP,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAsI3B,CAAC"}
1
+ {"version":3,"file":"publish.task.d.ts","sourceRoot":"../src/lib/","sources":["publish.task.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAItB,OAAO,EAAa,KAAK,IAAI,EAAC,MAAM,WAAW,CAAC;AAwBhD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BP,CAAC;AACX,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CA+I3B,CAAC"}
@@ -79,6 +79,7 @@ export const task = {
79
79
  await invoke_task('check', { workspace: true });
80
80
  }
81
81
  let version;
82
+ let optional_and_version_unchanged = false;
82
83
  // Bump the version so the package.json is updated before building:
83
84
  // TODO problem here is build may fail and put us in a bad state,
84
85
  // but I don't see how we could do this to robustly
@@ -116,16 +117,24 @@ export const task = {
116
117
  // The version didn't change.
117
118
  // For now this is the best detection we have for a no-op `changeset version`.
118
119
  if (optional) {
119
- return; // exit gracefully
120
+ optional_and_version_unchanged = true;
120
121
  }
121
122
  else {
123
+ // Doesn't build if the version didn't change and publishing isn't optional.
122
124
  throw new Task_Error(`\`${changeset_cli} version\` failed: are there any changes?`);
123
125
  }
124
126
  }
125
127
  }
128
+ // Build after the version is bumped so the new version is in the build as needed.
126
129
  if (build) {
127
130
  await invoke_task('build');
128
131
  }
132
+ // Return early if there are no changes and publishing is optional, but after building,
133
+ // so if callers want to optimize away building
134
+ // they need to do so manually like in `gro release`.
135
+ // TODO this could be cleaned up if tasks had a return value to callers, it could specifiy that it didn't build
136
+ if (optional_and_version_unchanged)
137
+ return;
129
138
  if (dry) {
130
139
  log.info('publishing branch ' + branch);
131
140
  log.info(green('dry run complete!'));
@@ -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.0",
3
+ "version": "0.130.2",
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.110.4",
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
@@ -97,7 +97,7 @@ 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`.
@@ -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/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.0',
8
+ version: '0.130.2',
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.110.4',
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.0',
275
+ version: '0.130.2',
276
276
  modules: {
277
277
  '.': {
278
278
  path: 'index.ts',
@@ -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,
@@ -114,6 +114,7 @@ export const task: Task<Args> = {
114
114
  }
115
115
 
116
116
  let version!: string;
117
+ let optional_and_version_unchanged = false;
117
118
 
118
119
  // Bump the version so the package.json is updated before building:
119
120
  // TODO problem here is build may fail and put us in a bad state,
@@ -159,17 +160,25 @@ export const task: Task<Args> = {
159
160
  // The version didn't change.
160
161
  // For now this is the best detection we have for a no-op `changeset version`.
161
162
  if (optional) {
162
- return; // exit gracefully
163
+ optional_and_version_unchanged = true;
163
164
  } else {
165
+ // Doesn't build if the version didn't change and publishing isn't optional.
164
166
  throw new Task_Error(`\`${changeset_cli} version\` failed: are there any changes?`);
165
167
  }
166
168
  }
167
169
  }
168
170
 
171
+ // Build after the version is bumped so the new version is in the build as needed.
169
172
  if (build) {
170
173
  await invoke_task('build');
171
174
  }
172
175
 
176
+ // Return early if there are no changes and publishing is optional, but after building,
177
+ // so if callers want to optimize away building
178
+ // they need to do so manually like in `gro release`.
179
+ // TODO this could be cleaned up if tasks had a return value to callers, it could specifiy that it didn't build
180
+ if (optional_and_version_unchanged) return;
181
+
173
182
  if (dry) {
174
183
  log.info('publishing branch ' + branch);
175
184
  log.info(green('dry run complete!'));
@@ -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