@storm-software/cloudflare-tools 0.55.83 → 0.55.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  # Changelog for Storm Ops - Cloudflare Tools
4
4
 
5
+ ## [0.55.84](https://github.com/storm-software/storm-ops/releases/tag/cloudflare-tools%400.55.84) (2025-04-30)
6
+
7
+ ### Bug Fixes
8
+
9
+ - **monorepo:** Resolve issue with tsconfig path in tsup
10
+ ([98ca0489a](https://github.com/storm-software/storm-ops/commit/98ca0489a))
11
+
12
+ ### Miscellaneous
13
+
14
+ - **monorepo:** Regenerate README markdown files
15
+ ([34e5b9e9f](https://github.com/storm-software/storm-ops/commit/34e5b9e9f))
16
+
5
17
  ## [0.55.83](https://github.com/storm-software/storm-ops/releases/tag/cloudflare-tools%400.55.83) (2025-04-30)
6
18
 
7
19
  ### Bug Fixes
package/README.md CHANGED
@@ -21,7 +21,7 @@ This package is part of the <b>⚡Storm-Ops</b> monorepo. The Storm-Ops packages
21
21
 
22
22
  <h3 align="center">💻 Visit <a href="https://stormsoftware.com" target="_blank">stormsoftware.com</a> to stay up to date with this developer</h3><br />
23
23
 
24
- [![Version](https://img.shields.io/badge/version-0.55.82-1fb2a6.svg?style=for-the-badge&color=1fb2a6)](https://prettier.io/)&nbsp;[![Nx](https://img.shields.io/badge/Nx-17.0.2-lightgrey?style=for-the-badge&logo=nx&logoWidth=20&&color=1fb2a6)](http://nx.dev/)&nbsp;[![NextJs](https://img.shields.io/badge/Next.js-14.0.2-lightgrey?style=for-the-badge&logo=nextdotjs&logoWidth=20&color=1fb2a6)](https://nextjs.org/)&nbsp;[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge&logo=commitlint&color=1fb2a6)](http://commitizen.github.io/cz-cli/)&nbsp;![Semantic-Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge&color=1fb2a6)&nbsp;[![documented with Fumadocs](https://img.shields.io/badge/documented_with-fumadocs-success.svg?style=for-the-badge&logo=readthedocs&color=1fb2a6)](https://fumadocs.vercel.app/)&nbsp;![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/storm-software/storm-ops/cr.yml?style=for-the-badge&logo=github-actions&color=1fb2a6)
24
+ [![Version](https://img.shields.io/badge/version-0.55.83-1fb2a6.svg?style=for-the-badge&color=1fb2a6)](https://prettier.io/)&nbsp;[![Nx](https://img.shields.io/badge/Nx-17.0.2-lightgrey?style=for-the-badge&logo=nx&logoWidth=20&&color=1fb2a6)](http://nx.dev/)&nbsp;[![NextJs](https://img.shields.io/badge/Next.js-14.0.2-lightgrey?style=for-the-badge&logo=nextdotjs&logoWidth=20&color=1fb2a6)](https://nextjs.org/)&nbsp;[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge&logo=commitlint&color=1fb2a6)](http://commitizen.github.io/cz-cli/)&nbsp;![Semantic-Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge&color=1fb2a6)&nbsp;[![documented with Fumadocs](https://img.shields.io/badge/documented_with-fumadocs-success.svg?style=for-the-badge&logo=readthedocs&color=1fb2a6)](https://fumadocs.vercel.app/)&nbsp;![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/storm-software/storm-ops/cr.yml?style=for-the-badge&logo=github-actions&color=1fb2a6)
25
25
 
26
26
  <!-- prettier-ignore-start -->
27
27
  <!-- markdownlint-disable -->
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  generator_default
3
- } from "./chunk-LE4WEAGH.mjs";
3
+ } from "./chunk-RCG2LX6X.mjs";
4
4
  import {
5
5
  getConfig
6
6
  } from "./chunk-QQJ225UZ.mjs";
@@ -700,7 +700,7 @@ var DEFAULT_BUILD_OPTIONS = {
700
700
 
701
701
  // ../esbuild/src/plugins/resolve-paths.ts
702
702
  import path2 from "node:path";
703
- function resolvePathsConfig(options, cwd) {
703
+ function resolvePathsConfig(options, cwd, projectRoot) {
704
704
  if (options?.compilerOptions?.paths) {
705
705
  const paths = Object.entries(options.compilerOptions.paths);
706
706
  const resolvedPaths = paths.map(([key, paths2]) => {
@@ -712,7 +712,7 @@ function resolvePathsConfig(options, cwd) {
712
712
  return Object.fromEntries(resolvedPaths);
713
713
  }
714
714
  if (options.extends) {
715
- const extendsPath = path2.resolve(cwd, options.extends);
715
+ const extendsPath = path2.resolve(projectRoot ? joinPaths(cwd, projectRoot, options.extends) : joinPaths(cwd, options.extends));
716
716
  const extendsDir = path2.dirname(extendsPath);
717
717
  const extendsConfig = __require(extendsPath);
718
718
  return resolvePathsConfig(extendsConfig, extendsDir);
@@ -724,7 +724,7 @@ var resolvePathsPlugin = /* @__PURE__ */ __name((context) => ({
724
724
  name: "storm:resolve-paths",
725
725
  setup(build3) {
726
726
  const parentTsConfig = build3.initialOptions.tsconfig ? __require(joinPaths(context.workspaceConfig.workspaceRoot, build3.initialOptions.tsconfig.replace(context.workspaceConfig.workspaceRoot, ""))) : __require(joinPaths(context.workspaceConfig.workspaceRoot, "tsconfig.json"));
727
- const resolvedTsPaths = resolvePathsConfig(parentTsConfig, context.workspaceConfig.workspaceRoot);
727
+ const resolvedTsPaths = resolvePathsConfig(parentTsConfig, context.workspaceConfig.workspaceRoot, context.options.projectRoot);
728
728
  const packagesRegex = new RegExp(`^(${Object.keys(resolvedTsPaths).join("|")})$`);
729
729
  build3.onResolve({
730
730
  filter: packagesRegex
@@ -8,7 +8,7 @@ var require_package = _chunkJ5SB6L2Ljs.__commonJS.call(void 0, {
8
8
  "package.json"(exports, module) {
9
9
  module.exports = {
10
10
  name: "@storm-software/cloudflare-tools",
11
- version: "0.55.83",
11
+ version: "0.55.84",
12
12
  description: "A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.",
13
13
  repository: {
14
14
  type: "github",
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkLCXJXAS6js = require('./chunk-LCXJXAS6.js');
3
+ var _chunkHZJWBBGZjs = require('./chunk-HZJWBBGZ.js');
4
4
 
5
5
 
6
6
  var _chunkIVLCYFXDjs = require('./chunk-IVLCYFXD.js');
@@ -52,7 +52,7 @@ async function applicationGenerator(tree, schema) {
52
52
  ${Object.keys(process.env).map((key) => ` - ${key}=${JSON.stringify(process.env[key])}`).join("\n")}`, config);
53
53
  const options = await normalizeOptions(tree, schema, config);
54
54
  const tasks = [];
55
- tasks.push(await _chunkLCXJXAS6js.generator_default.call(void 0, tree, {
55
+ tasks.push(await _chunkHZJWBBGZjs.generator_default.call(void 0, tree, {
56
56
  ...options,
57
57
  skipFormat: true
58
58
  }));
@@ -699,7 +699,7 @@ var DEFAULT_BUILD_OPTIONS = {
699
699
 
700
700
  // ../esbuild/src/plugins/resolve-paths.ts
701
701
 
702
- function resolvePathsConfig(options, cwd) {
702
+ function resolvePathsConfig(options, cwd, projectRoot) {
703
703
  if (_optionalChain([options, 'optionalAccess', _55 => _55.compilerOptions, 'optionalAccess', _56 => _56.paths])) {
704
704
  const paths = Object.entries(options.compilerOptions.paths);
705
705
  const resolvedPaths = paths.map(([key, paths2]) => {
@@ -711,7 +711,7 @@ function resolvePathsConfig(options, cwd) {
711
711
  return Object.fromEntries(resolvedPaths);
712
712
  }
713
713
  if (options.extends) {
714
- const extendsPath = path4.default.resolve(cwd, options.extends);
714
+ const extendsPath = path4.default.resolve(projectRoot ? _chunkV7LBWOVVjs.joinPaths.call(void 0, cwd, projectRoot, options.extends) : _chunkV7LBWOVVjs.joinPaths.call(void 0, cwd, options.extends));
715
715
  const extendsDir = path4.default.dirname(extendsPath);
716
716
  const extendsConfig = _chunkJ5SB6L2Ljs.__require.call(void 0, extendsPath);
717
717
  return resolvePathsConfig(extendsConfig, extendsDir);
@@ -723,7 +723,7 @@ var resolvePathsPlugin = /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (c
723
723
  name: "storm:resolve-paths",
724
724
  setup(build3) {
725
725
  const parentTsConfig = build3.initialOptions.tsconfig ? _chunkJ5SB6L2Ljs.__require.call(void 0, _chunkV7LBWOVVjs.joinPaths.call(void 0, context.workspaceConfig.workspaceRoot, build3.initialOptions.tsconfig.replace(context.workspaceConfig.workspaceRoot, ""))) : _chunkJ5SB6L2Ljs.__require.call(void 0, _chunkV7LBWOVVjs.joinPaths.call(void 0, context.workspaceConfig.workspaceRoot, "tsconfig.json"));
726
- const resolvedTsPaths = resolvePathsConfig(parentTsConfig, context.workspaceConfig.workspaceRoot);
726
+ const resolvedTsPaths = resolvePathsConfig(parentTsConfig, context.workspaceConfig.workspaceRoot, context.options.projectRoot);
727
727
  const packagesRegex = new RegExp(`^(${Object.keys(resolvedTsPaths).join("|")})$`);
728
728
  build3.onResolve({
729
729
  filter: packagesRegex
@@ -8,7 +8,7 @@ var require_package = __commonJS({
8
8
  "package.json"(exports, module) {
9
9
  module.exports = {
10
10
  name: "@storm-software/cloudflare-tools",
11
- version: "0.55.83",
11
+ version: "0.55.84",
12
12
  description: "A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.",
13
13
  repository: {
14
14
  type: "github",
package/dist/executors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";require('./chunk-XO66D74Z.js');
2
2
  require('./chunk-R7AIVBS7.js');
3
- require('./chunk-VIYJDL4N.js');
3
+ require('./chunk-PWYTCJYX.js');
4
4
  require('./chunk-6B5PUF7X.js');
5
5
  require('./chunk-QGRENI3O.js');
6
6
  require('./chunk-VTHBMY4B.js');
@@ -1,6 +1,6 @@
1
1
  import "./chunk-YSCEY447.mjs";
2
2
  import "./chunk-AOEF7EWN.mjs";
3
- import "./chunk-OPM3J6MP.mjs";
3
+ import "./chunk-FUE3PSOC.mjs";
4
4
  import "./chunk-KWHACLHR.mjs";
5
5
  import "./chunk-VRLPVMXP.mjs";
6
6
  import "./chunk-5RE7UZTH.mjs";
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkGINRJMRKjs = require('./chunk-GINRJMRK.js');
5
+ var _chunkKK4QM225js = require('./chunk-KK4QM225.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkLCXJXAS6js = require('./chunk-LCXJXAS6.js');
9
+ var _chunkHZJWBBGZjs = require('./chunk-HZJWBBGZ.js');
10
10
  require('./chunk-IVLCYFXD.js');
11
11
  require('./chunk-V7LBWOVV.js');
12
12
  require('./chunk-J5SB6L2L.js');
@@ -15,4 +15,4 @@ require('./chunk-J5SB6L2L.js');
15
15
 
16
16
 
17
17
 
18
- exports.applicationGenerator = _chunkGINRJMRKjs.applicationGenerator; exports.applicationSchematic = _chunkGINRJMRKjs.applicationSchematic; exports.initGenerator = _chunkLCXJXAS6js.initGenerator; exports.initSchematic = _chunkLCXJXAS6js.initSchematic;
18
+ exports.applicationGenerator = _chunkKK4QM225js.applicationGenerator; exports.applicationSchematic = _chunkKK4QM225js.applicationSchematic; exports.initGenerator = _chunkHZJWBBGZjs.initGenerator; exports.initSchematic = _chunkHZJWBBGZjs.initSchematic;
@@ -2,11 +2,11 @@ import "./chunk-3J7KBHMJ.mjs";
2
2
  import {
3
3
  applicationGenerator,
4
4
  applicationSchematic
5
- } from "./chunk-UWAQNJVA.mjs";
5
+ } from "./chunk-CNAR65MF.mjs";
6
6
  import {
7
7
  initGenerator,
8
8
  initSchematic
9
- } from "./chunk-LE4WEAGH.mjs";
9
+ } from "./chunk-RCG2LX6X.mjs";
10
10
  import "./chunk-QQJ225UZ.mjs";
11
11
  import "./chunk-DEJ5S46A.mjs";
12
12
  import "./chunk-TLFPZXKG.mjs";
package/dist/index.js CHANGED
@@ -3,14 +3,14 @@ require('./chunk-DHBG5ASJ.js');
3
3
 
4
4
 
5
5
 
6
- var _chunkGINRJMRKjs = require('./chunk-GINRJMRK.js');
6
+ var _chunkKK4QM225js = require('./chunk-KK4QM225.js');
7
7
 
8
8
 
9
9
 
10
- var _chunkLCXJXAS6js = require('./chunk-LCXJXAS6.js');
10
+ var _chunkHZJWBBGZjs = require('./chunk-HZJWBBGZ.js');
11
11
  require('./chunk-CVGPWUNP.js');
12
12
  require('./chunk-R7AIVBS7.js');
13
- require('./chunk-VIYJDL4N.js');
13
+ require('./chunk-PWYTCJYX.js');
14
14
  require('./chunk-6B5PUF7X.js');
15
15
 
16
16
 
@@ -148,4 +148,4 @@ _chunkJ5SB6L2Ljs.__name.call(void 0, createPackageJson, "createPackageJson");
148
148
 
149
149
 
150
150
 
151
- exports.applicationGenerator = _chunkGINRJMRKjs.applicationGenerator; exports.applicationSchematic = _chunkGINRJMRKjs.applicationSchematic; exports.createNodes = createNodes; exports.getInternalDependencies = _chunkQGRENI3Ojs.getInternalDependencies; exports.initGenerator = _chunkLCXJXAS6js.initGenerator; exports.initSchematic = _chunkLCXJXAS6js.initSchematic; exports.name = name; exports.r2UploadFile = _chunkQGRENI3Ojs.r2UploadFile;
151
+ exports.applicationGenerator = _chunkKK4QM225js.applicationGenerator; exports.applicationSchematic = _chunkKK4QM225js.applicationSchematic; exports.createNodes = createNodes; exports.getInternalDependencies = _chunkQGRENI3Ojs.getInternalDependencies; exports.initGenerator = _chunkHZJWBBGZjs.initGenerator; exports.initSchematic = _chunkHZJWBBGZjs.initSchematic; exports.name = name; exports.r2UploadFile = _chunkQGRENI3Ojs.r2UploadFile;
package/dist/index.mjs CHANGED
@@ -3,14 +3,14 @@ import "./chunk-3J7KBHMJ.mjs";
3
3
  import {
4
4
  applicationGenerator,
5
5
  applicationSchematic
6
- } from "./chunk-UWAQNJVA.mjs";
6
+ } from "./chunk-CNAR65MF.mjs";
7
7
  import {
8
8
  initGenerator,
9
9
  initSchematic
10
- } from "./chunk-LE4WEAGH.mjs";
10
+ } from "./chunk-RCG2LX6X.mjs";
11
11
  import "./chunk-7Z5PILRU.mjs";
12
12
  import "./chunk-AOEF7EWN.mjs";
13
- import "./chunk-OPM3J6MP.mjs";
13
+ import "./chunk-FUE3PSOC.mjs";
14
14
  import "./chunk-KWHACLHR.mjs";
15
15
  import {
16
16
  getInternalDependencies,
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
  var _chunkR7AIVBS7js = require('../../../chunk-R7AIVBS7.js');
4
- require('../../../chunk-VIYJDL4N.js');
4
+ require('../../../chunk-PWYTCJYX.js');
5
5
  require('../../../chunk-VTHBMY4B.js');
6
6
  require('../../../chunk-IVLCYFXD.js');
7
7
  require('../../../chunk-V7LBWOVV.js');
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  runExecutor
3
3
  } from "../../../chunk-AOEF7EWN.mjs";
4
- import "../../../chunk-OPM3J6MP.mjs";
4
+ import "../../../chunk-FUE3PSOC.mjs";
5
5
  import "../../../chunk-5RE7UZTH.mjs";
6
6
  import "../../../chunk-QQJ225UZ.mjs";
7
7
  import "../../../chunk-DEJ5S46A.mjs";
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkVIYJDL4Njs = require('../../../chunk-VIYJDL4N.js');
3
+ var _chunkPWYTCJYXjs = require('../../../chunk-PWYTCJYX.js');
4
4
 
5
5
 
6
6
  var _chunkVTHBMY4Bjs = require('../../../chunk-VTHBMY4B.js');
@@ -60,7 +60,7 @@ async function* serveExecutor(options, context, config) {
60
60
  };
61
61
  }
62
62
  _chunkJ5SB6L2Ljs.__name.call(void 0, serveExecutor, "serveExecutor");
63
- var executor_default = _chunkVIYJDL4Njs.withRunExecutor.call(void 0, "Cloudflare Serve executor", serveExecutor, {
63
+ var executor_default = _chunkPWYTCJYXjs.withRunExecutor.call(void 0, "Cloudflare Serve executor", serveExecutor, {
64
64
  skipReadingConfig: false,
65
65
  hooks: {
66
66
  applyDefaultOptions: /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (options) => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  withRunExecutor
3
- } from "../../../chunk-OPM3J6MP.mjs";
3
+ } from "../../../chunk-FUE3PSOC.mjs";
4
4
  import {
5
5
  createCliOptions
6
6
  } from "../../../chunk-5RE7UZTH.mjs";
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkLCXJXAS6js = require('../../../chunk-LCXJXAS6.js');
5
+ var _chunkHZJWBBGZjs = require('../../../chunk-HZJWBBGZ.js');
6
6
  require('../../../chunk-J5SB6L2L.js');
7
7
 
8
8
 
9
9
 
10
10
 
11
- exports.default = _chunkLCXJXAS6js.generator_default; exports.initGenerator = _chunkLCXJXAS6js.initGenerator; exports.initSchematic = _chunkLCXJXAS6js.initSchematic;
11
+ exports.default = _chunkHZJWBBGZjs.generator_default; exports.initGenerator = _chunkHZJWBBGZjs.initGenerator; exports.initSchematic = _chunkHZJWBBGZjs.initSchematic;
@@ -2,7 +2,7 @@ import {
2
2
  generator_default,
3
3
  initGenerator,
4
4
  initSchematic
5
- } from "../../../chunk-LE4WEAGH.mjs";
5
+ } from "../../../chunk-RCG2LX6X.mjs";
6
6
  import "../../../chunk-TLFPZXKG.mjs";
7
7
  export {
8
8
  generator_default as default,
@@ -2,8 +2,8 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkGINRJMRKjs = require('../../../chunk-GINRJMRK.js');
6
- require('../../../chunk-LCXJXAS6.js');
5
+ var _chunkKK4QM225js = require('../../../chunk-KK4QM225.js');
6
+ require('../../../chunk-HZJWBBGZ.js');
7
7
  require('../../../chunk-IVLCYFXD.js');
8
8
  require('../../../chunk-V7LBWOVV.js');
9
9
  require('../../../chunk-J5SB6L2L.js');
@@ -11,4 +11,4 @@ require('../../../chunk-J5SB6L2L.js');
11
11
 
12
12
 
13
13
 
14
- exports.applicationGenerator = _chunkGINRJMRKjs.applicationGenerator; exports.applicationSchematic = _chunkGINRJMRKjs.applicationSchematic; exports.default = _chunkGINRJMRKjs.generator_default;
14
+ exports.applicationGenerator = _chunkKK4QM225js.applicationGenerator; exports.applicationSchematic = _chunkKK4QM225js.applicationSchematic; exports.default = _chunkKK4QM225js.generator_default;
@@ -2,8 +2,8 @@ import {
2
2
  applicationGenerator,
3
3
  applicationSchematic,
4
4
  generator_default
5
- } from "../../../chunk-UWAQNJVA.mjs";
6
- import "../../../chunk-LE4WEAGH.mjs";
5
+ } from "../../../chunk-CNAR65MF.mjs";
6
+ import "../../../chunk-RCG2LX6X.mjs";
7
7
  import "../../../chunk-QQJ225UZ.mjs";
8
8
  import "../../../chunk-DEJ5S46A.mjs";
9
9
  import "../../../chunk-TLFPZXKG.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storm-software/cloudflare-tools",
3
- "version": "0.55.83",
3
+ "version": "0.55.84",
4
4
  "description": "A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.",
5
5
  "repository": {
6
6
  "type": "github",