{"id":15099382,"url":"https://github.com/xunnamius/projector-pipeline","last_synced_at":"2025-10-08T05:30:39.194Z","repository":{"id":36963826,"uuid":"334807797","full_name":"Xunnamius/projector-pipeline","owner":"Xunnamius","description":"⛔️ [DEPRECATED] A collection of libraries powering the CI/CD pipeline used in various Projector templates.","archived":true,"fork":false,"pushed_at":"2024-08-22T08:14:07.000Z","size":2450,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-01T11:47:42.242Z","etag":null,"topics":["action","github","semantic-release"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xunnamius.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-01T02:27:30.000Z","updated_at":"2024-08-22T08:14:23.000Z","dependencies_parsed_at":"2024-08-22T09:01:19.607Z","dependency_job_id":"3720f800-f5ce-4450-82e9-1409ca13af4b","html_url":"https://github.com/Xunnamius/projector-pipeline","commit_stats":{"total_commits":116,"total_committers":2,"mean_commits":58.0,"dds":0.06896551724137934,"last_synced_commit":"15cd2f9bbed3f93289c347367e325f6e838e64ff"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Xunnamius/projector-pipeline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fprojector-pipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fprojector-pipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fprojector-pipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fprojector-pipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xunnamius","download_url":"https://codeload.github.com/Xunnamius/projector-pipeline/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xunnamius%2Fprojector-pipeline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278892043,"owners_count":26063919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","github","semantic-release"],"created_at":"2024-09-25T17:11:49.591Z","updated_at":"2025-10-08T05:30:38.860Z","avatar_url":"https://github.com/Xunnamius.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- badges-start --\u003e\n\n[![Black Lives Matter!][badge-blm]][link-blm]\n[![!!UNMAINTAINED!!][badge-unmaintained]][link-unmaintained]\n\n\u003c!-- badges-end --\u003e\n\n# ⛔️ DEPRECATED/UNMAINTAINED\n\n\u003e \\[!CAUTION]\n\u003e\n\u003e This project has been superseded (and all of its useful bits subsumed) by\n\u003e [@-xun/pipeline][4].\n\nThis project contains the collection of component actions powering the CI/CD\npipeline that undergirds [Projector][2]-based projects. For more details on the\npipeline's design, such as managing per-repository and cross-repository pipeline\nconfigurations, see [ARCHITECTURE.md][architecture].\n\n---\n\n- [Usage: GitHub Actions][3]\n  - [`audit-runtime`][27]\n  - [`cleanup-npm`][29]\n  - [`lint`][30]\n  - [`metadata-collect`][31]\n  - [`metadata-download`][32]\n  - [`smart-deploy`][33]\n  - [`test-integration-client`][34]\n  - [`test-integration-externals`][35]\n  - [`test-integration-node`][36]\n  - [`test-integration-webpack`][37]\n  - [`test-unit-then-build`][28]\n  - [`verify-release`][39]\n- [Usage: npm Package][40]\n  - [Install][18]\n  - [Example][19]\n- [Documentation][20]\n- [Contributing and Support][21]\n\n---\n\nThe following component actions can be imported as libraries via Node or invoked\ndirectly in your workflows:\n\n**[`audit-runtime`][27]**\\\n[_Unprivileged_][3]. Audits a project for security vulnerabilities. Currently, all\nauditing is handled by `npm audit`.\n\nUses `metadata-collect` under the hood.\n\n**[`cleanup-npm`][29]**\\\n[_Privileged_][3]. Cleans up package metadata (e.g. pruning unused dist-tags) after\nbranch deletion.\n\nUses `metadata-collect` under the hood.\n\n**[`lint`][30]**\\\n[_Unprivileged_][3]. Lints project source via `npm run lint`.\n\nUses `metadata-collect` under the hood.\n\n**[`metadata-collect`][31]**\\\n[_Unprivileged_][3]. Checks out and configures the repository, installs and configures\nNode, collects metadata, and uploads it as an artifact for use by various other component\nactions. Must run only in unprivileged contexts.\n\nIt is usually not necessary to invoke this component action manually in\nworkflows that invoke other component actions; this is because the other actions\ninvoke this action internally. When invoked internally by another component\naction, any options passed to the invoking action will also be recognized by\nthis action, even if the invoking action doesn't recognize any options by\nitself.\n\n**[`metadata-download`][32]**\\\n[_Unprivileged_][3]. Functionally equivalent to `metadata-collect`, except the metadata\nis downloaded via an artifact created by `metadata-collect`. **Can be used in both\nprivileged and unprivileged workflows.**\n\nIt is usually not necessary to invoke this component action manually in\nworkflows that invoke other component actions; this is because the other actions\ninvoke this action internally. When invoked internally by another component\naction, any options passed to the invoking action will also be recognized by\nthis action, even if the invoking action doesn't recognize any options by\nitself.\n\n**[`smart-deploy`][33]**\\\n[_Privileged_][3]. Uploads code coverage data if available, verifies actor permissions,\nand checks for [Projector template][2] updates. Uses `metadata-download` under the\nhood.\n\nIf a Projector template update is available, a new PR will be generated. If the\npipeline was triggered by a PR event, an attempt will be made to auto-merge that\nPR before generating and submitting the new PR. Regardless, the current pipeline\nrun will be aborted and a superseding pipeline run will be triggered by the new\nPR.\n\nOtherwise, if the pipeline run was not triggered by a PR event, semantic-release\nand related scripts are executed next, potentially resulting in package releases\nand/or software deployments. If instead the pipeline was triggered by a PR\nevent, the PR will be auto-merged if eligible (see `metadata-collect`). Certain\nfailing merges will be automatically re-attempted using configurable exponential\nback-off.\n\n**[`test-integration-client`][34]**\\\n[_Unprivileged_][3]. Runs all bespoke integration tests via `npm run test-integration-client`.\n\nUses `metadata-collect` under the hood.\n\n**[`test-integration-externals`][35]**\\\n[_Unprivileged_][3]. Runs all integration tests specific to project externals via\n`npm run test-integration-externals`.\n\nUses `metadata-collect` under the hood.\n\n**[`test-integration-node`][36]**\\\n[_Unprivileged_][3]. Runs all Node-specific integration tests via `npm run test-integration-node`.\n\nUses `metadata-collect` under the hood.\n\n**[`test-integration-webpack`][37]**\\\n[_Unprivileged_][3]. Runs all Webpack-specific integration tests via `npm run test-integration-webpack`.\n\nUses `metadata-collect` under the hood.\n\n**[`test-unit-then-build`][28]**\\\n[_Unprivileged_][3]. Runs all unit tests and collects coverage data via `npm run test-unit`,\nbuilds distributables via `npm run build`, and uploads the working tree as an artifact\nfor use by `smart-deploy`.\n\nUses `metadata-collect` under the hood.\n\n**[`verify-release`][39]**\\\n[_Unprivileged_][3]. Performs post-release package verification, e.g. ensure `npm install`\nand related scripts function without errors. This action is best invoked several\nminutes _after_ a release has occurred so that release channels have a chance to\nupdate their caches.\n\nUses `metadata-download` under the hood.\n\n## Usage: GitHub Actions\n\nEach component action is directly invocable through a unified Actions interface.\n\nComponent actions are either _privileged_, where they require repository secrets\nand GitHub write tokens (e.g. `workflow_run`), or _unprivileged_, where they\n**must not** have access to secrets or write tokens (e.g. `pull_request`). **It\nis a major security vulnerability to invoke unprivileged component actions on\n[untrusted code outside properly sandboxed workflows][22].**\n\n### `audit-runtime`\n\n\u003e **UNPRIVILEGED ACTION**\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: audit-runtime\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `cleanup-npm`\n\n\u003e _PRIVILEGED ACTION_\n\nThis component action uses cached `~/npm` data if available.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: cleanup-npm\n  options: \u003e\n    {\n      \"npm-token\": \"your-npm-token-here\"\n    }\n```\n\n#### Options\n\nThis action accepts an `options` JSON string input with the following properties\nand constraints:\n\n| Name        | Type       | Default | Description                                                                              |\n| :---------- | :--------- | :------ | :--------------------------------------------------------------------------------------- |\n| `npm-token` | _`string`_ | (none)  | **[REQUIRED]** An npm access token with read-write access to the appropriate package(s). |\n\nSee also: [configuring the pipeline][23].\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `lint`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: lint\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `metadata-collect`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available and uploads the\ncollected metadata as an artifact with key\n`metadata-${{ runner.os }}-${{ github.sha }}`.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: metadata-collect\n  options: \u003e\n    {\n      \"github-token\": \"your-github-pat-here\",\n      \"upload-artifact\": true,\n      \"repository\": {\n        \"repositoryName\": 'some-other-repo'\n      },\n      \"node\": false\n    }\n```\n\n#### Options\n\nThis action accepts an `options` JSON string input with the following properties\nand constraints:\n\n| Name                 | Type                                 | Default | Description                                                                                                                                                                                                                              |\n| :------------------- | :----------------------------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `github-token`       | _`string`_                           | (none)  | **[REQUIRED]** A GitHub access token with read access to the appropriate repository or repositories. `${{ github.token }}` is usually the right value for this option.                                                                   |\n| `npm-token`          | _`string`_                           | (none)  | An npm access token with read-write access to the appropriate package(s).                                                                                                                                                                |\n| `issue-all-warnings` | _`boolean`_                          | `false` | If `true`, warnings that are usually hidden, like the pipeline debug warning, will be issued. This should only be enabled once per workflow file for aesthetic reasons.                                                                  |\n| `upload-artifact`    | _`boolean`_                          | `false` | If `true`, a metadata artifact will be uploaded. This artifact can then be downloaded in the GitHub Actions UI or used by the `metadata-collect` component action.                                                                       |\n| `repository`         | _`boolean \\| Partial\u003cCloneOptions\u003e`_ | `true`  | If _truthy_, the runtime repository's working tree will be checked out into the current working directory. If `repository` is a [`CloneOptions`-like object][43], it is used as configuration. See also: [configuring the pipeline][23]. |\n| `node`               | _`boolean \\| Partial\u003cNodeOptions\u003e`_  | `true`  | If _truthy_, node will be downloaded and installed into the runtime and `PATH`. If `node` is a [`NodeOptions`-like object][43], it is used as configuration. See also: [configuring the pipeline][23].                                   |\n\nSee also: [configuring the pipeline][23].\n\n#### Outputs\n\nSee [action.yml][24] for possible outputs of this component action.\n\n### `metadata-download`\n\n\u003e UNPRIVILEGED ACTION (but can be run in privileged workflows safely)\n\nThis component action uses cached `~/npm` data if available and can download\ncollected metadata artifacts.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: metadata-download\n  options: \u003e\n    {\n      \"github-token\": \"your-github-pat-here\"\n    }\n```\n\n#### Options\n\nThis action accepts an `options` JSON string input with the following properties\nand constraints:\n\n| Name               | Type                                 | Default | Description                                                                                                                                                                                                                         |\n| :----------------- | :----------------------------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `github-token`     | _`string`_                           | (none)  | **[REQUIRED]** A GitHub access token with read access to the appropriate repository or repositories. `${{ github.token }}` is usually the right value for this option.                                                              |\n| `npm-token`        | _`string`_                           | (none)  | An npm access token with read-write access to the appropriate package(s).                                                                                                                                                           |\n| `reissue-warnings` | _`boolean`_                          | `false` | If `true`, most pipeline warnings triggered by the downloaded metadata will be reissued. These warnings are always reported by the `metadata-collect` component action already, usually making reissuing the warnings redundant.    |\n| `repository`       | _`boolean \\| Partial\u003cCloneOptions\u003e`_ | `true`  | If _truthy_, the runtime repository will be installed checked out into the current working directory. If `repository` is a [`CloneOptions`-like object][43], it is used as configuration. See also: [configuring the pipeline][23]. |\n| `node`             | _`boolean \\| Partial\u003cNodeOptions\u003e`_  | `true`  | If _truthy_, node will be downloaded and installed into the runtime and `PATH`. If `node` is a [`NodeOptions`-like object][43], it is used as configuration. See also: [configuring the pipeline][23].                              |\n\nSee also: [configuring the pipeline][23].\n\n#### Outputs\n\nSee [action.yml][24] for possible outputs of this component action.\n\n### `smart-deploy`\n\n\u003e _PRIVILEGED ACTION_\n\nThis component action requires both metadata and build artifacts to be\navailable, the former uploaded by `metadata-collect` with artifact key\n`build-${{ runner.os }}-${{ github.sha }}` and the latter by\n`test-unit-then-build` with artifact key\n`metadata-${{ runner.os }}-${{ github.sha }}`.\n\nThis component action also downloads a [remote `package.json` file][25] during\noperation. This file is used to safely install npm dependencies in privileged\nenvironments. The permanent URI for this download is:\n[https://github.com/xunnamius/projector-pipeline/raw/main/dist/privileged/package.json][26]\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: smart-deploy\n  options: \u003e\n    {\n      \"github-token\": \"your-github-pat-here\",\n      \"npm-token\": \"your-npm-token-here\",\n      \"gpg-private-key-armored\": \"your-private-key-here\",\n      \"gpg-passphrase\": \"your-passphrase-here\"\n    }\n```\n\n#### Options\n\nThis action accepts an `options` JSON string input with the following properties\nand constraints:\n\n| Name             | Type       | Default | Description                                                                                                                              |\n| :--------------- | :--------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------- |\n| `github-token`   | _`string`_ | (none)  | **[REQUIRED]** A GitHub access token with read-write access to the appropriate repository or repositories.                               |\n| `npm-token`      | _`string`_ | (none)  | **[REQUIRED]** An npm access token with read-write access to the appropriate package(s).                                                 |\n| `codecov-token`  | _`string`_ | (none)  | A Codecov token corresponding to the target repository. Not necessary and should be omitted for public repositories.                     |\n| `gpg-pk-armored` | _`string`_ | (none)  | **[REQUIRED]** The [armored GPG private key][5] used for [git signing purposes][6]. This key must correspond to [`committer.email`][23]. |\n| `gpg-passphrase` | _`string`_ | (none)  | **[REQUIRED]** The passphrase that unlocks `gpg-pk-armored`.                                                                             |\n\nThis component action always passes\n`{ repository: { ...customRepoOptions, checkoutRef: false }}` to\n[`metadata-download`][32]. This means, regardless of any custom repository\nsettings (`customRepoOptions` above) provided, `checkoutRef` will always be\n`false`.\n\nSee also: [configuring the pipeline][23].\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `test-integration-client`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: test-integration-client\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `test-integration-externals`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: test-integration-externals\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `test-integration-node`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: test-integration-node\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `test-integration-webpack`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: test-integration-webpack\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `test-unit-then-build`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available and uploads the\nworking tree as an artifact with key `build-${{ runner.os }}-${{ github.sha }}`.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: test-unit-then-build\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n### `verify-release`\n\n\u003e **UNPRIVILEGED ACTION**\n\nThis component action uses cached `~/npm` data if available.\n\nExample:\n\n```YML\nuses: xunnamius/projector-pipeline@v1.0.0\nwith:\n  action: verify-release\n```\n\n#### Options\n\nThis component action does not recognize any options.\n\n#### Outputs\n\nThis component action has no outputs.\n\n## Usage: npm Package\n\nEach component action can also be imported and run locally via unified npm\npackage.\n\n### Install\n\n\u003e Note: npm versions \u003e=7 may need `npm install --legacy-peer-deps` until\n\u003e [upstream peer dependency problems are resolved][1].\n\n```shell\nnpm install @xunnamius/projector-pipeline\n```\n\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003e[additional details]\u003c/strong\u003e\u003c/summary\u003e\n\n\u003e Note: **you probably don't need to read through this!** This information is\n\u003e primarily useful for those attempting to bundle this package or for people who\n\u003e have an opinion on ESM versus CJS.\n\nThis is a [dual CJS2/ES module][dual-module] package. That means this package\nexposes both CJS2 and ESM entry points.\n\nLoading this package via `require(...)` will cause Node and Webpack to use the\n[CJS2 bundle][cjs2] entry point, disable [tree shaking][tree-shaking] in Webpack\n4, and lead to larger bundles in Webpack 5. Alternatively, loading this package\nvia `import { ... } from ...` or `import(...)` will cause Node to use the ESM\nentry point in [versions that support it][node-esm-support], as will Webpack.\nUsing the `import` syntax is the modern, preferred choice.\n\nFor backwards compatibility with Webpack 4 (_compat with Webpack 4 is not\nguaranteed!_) and Node versions \u003c 14, [`package.json`][package-json] retains the\n[`module`][module-key] key, which points to the ESM entry point, and the\n[`main`][exports-main-key] key, which points to the CJS2 entry point explicitly\n(using the .js file extension). For Webpack 5 and Node versions \u003e= 14,\n[`package.json`][package-json] includes the [`exports`][exports-main-key] key,\nwhich points to both entry points explicitly.\n\nThough [`package.json`][package-json] includes\n[`{ \"type\": \"commonjs\"}`][local-pkg], note that the ESM entry points are ES\nmodule (`.mjs`) files. [`package.json`][package-json] also includes the\n[`sideEffects`][side-effects-key] key, which is `false` for [optimal tree\nshaking][tree-shaking], and the `types` key, which points to a TypeScript\ndeclarations file.\n\nAdditionally, this package does not maintain shared state and so does not\nexhibit the [dual package hazard][hazard]. However, setting global configuration\nmay not actually be \"globally\" recognized by third-party code importing this\npackage.\n\n\u003c/details\u003e\n\n### Example\n\n```typescript\nimport { invokeComponentAction } from '@xunnamius/projector-pipeline';\n\nconst result = await invokeComponentAction('metadata-collect', {\n  githubToken: 'my-github-pat',\n  uploadArtifact: true\n});\n\nconsole.log(result.outputs['should-skip-ci']); // Prints a boolean\n```\n\n## Documentation\n\nFurther documentation for using the npm package can be found under\n[`docs/`][docs]. See [ARCHITECTURE.md][architecture] and\n[CONTRIBUTING.md][contributing] for more details on the pipeline.\n\n## Contributing and Support\n\n**[New issues][choose-new-issue] and [pull requests][pr-compare] are always\nwelcome and greatly appreciated! 🤩** Just as well, you can star 🌟 this project\nto let me know you found it useful! ✊🏿 Thank you!\n\nSee [CONTRIBUTING.md][contributing] and [SUPPORT.md][support] for more\ninformation.\n\n[badge-blm]: https://xunn.at/badge-blm 'Join the movement!'\n[link-blm]: https://xunn.at/donate-blm\n[badge-unmaintained]:\n  https://xunn.at/badge-unmaintained\n  'Unfortunately, this project is unmaintained (forks welcome!)'\n[link-unmaintained]: https://xunn.at/link-unmaintained\n[badge-maintenance]:\n  https://img.shields.io/maintenance/active/2023\n  'Is this package maintained?'\n[link-repo]: https://github.com/xunnamius/projector-pipeline\n[badge-last-commit]:\n  https://img.shields.io/github/last-commit/xunnamius/projector-pipeline\n  'When was the last commit to the official repo?'\n[badge-issues]:\n  https://isitmaintained.com/badge/open/Xunnamius/projector-pipeline.svg\n  'Number of known issues with this package'\n[link-issues]: https://github.com/Xunnamius/projector-pipeline/issues?q=\n[badge-pulls]:\n  https://img.shields.io/github/issues-pr/xunnamius/projector-pipeline\n  'Number of open pull requests'\n[link-pulls]: https://github.com/xunnamius/projector-pipeline/pulls\n[badge-codecov]:\n  https://codecov.io/gh/Xunnamius/projector-pipeline/branch/main/graph/badge.svg?token=HWRIOBAAPW\n  'Is this package well-tested?'\n[link-codecov]: https://codecov.io/gh/Xunnamius/projector-pipeline\n[badge-license]:\n  https://img.shields.io/npm/l/@xunnamius/projector-pipeline\n  \"This package's source license\"\n[link-license]:\n  https://github.com/Xunnamius/projector-pipeline/blob/main/LICENSE\n[badge-npm]:\n  https://xunn.at/npm-pkg-version/@xunnamius/projector-pipeline\n  'Install this package using npm or yarn!'\n[link-npm]: https://www.npmjs.com/package/@xunnamius/projector-pipeline\n[badge-semantic-release]:\n  https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n  'This repo practices continuous integration and deployment!'\n[link-semantic-release]: https://github.com/semantic-release/semantic-release\n[package-json]: package.json\n[docs]: docs\n[choose-new-issue]:\n  https://github.com/Xunnamius/projector-pipeline/issues/new/choose\n[pr-compare]: https://github.com/Xunnamius/projector-pipeline/compare\n[contributing]: CONTRIBUTING.md\n[architecture]: ARCHITECTURE.md\n[support]: .github/SUPPORT.md\n[cjs2]: https://webpack.js.org/configuration/output/#module-definition-systems\n[dual-module]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#dual-commonjses-module-packages\n[exports-main-key]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#package-entry-points\n[hazard]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#dual-package-hazard\n[local-pkg]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#type\n[module-key]: https://webpack.js.org/guides/author-libraries/#final-steps\n[node-esm-support]:\n  https://medium.com/%40nodejs/node-js-version-14-available-now-8170d384567e#2368\n[side-effects-key]:\n  https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free\n[tree-shaking]: https://webpack.js.org/guides/tree-shaking\n[1]:\n  https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/#user-content-breaking-changes\n[2]: https://github.com/Xunnamius/projector\n[3]: #usage-github-actions\n[18]: #install\n[19]: #example\n[20]: #documentation\n[21]: #contributing-and-support\n[22]:\n  https://securitylab.github.com/research/github-actions-preventing-pwn-requests\n[23]: ARCHITECTURE.md#configuring-the-pipeline\n[24]: action.yml\n[25]: dist/privileged/package.json\n[26]:\n  https://github.com/xunnamius/projector-pipeline/blob/main/dist/privileged/package.json\n[27]: #audit-runtime\n[28]: #test-unit-then-build\n[29]: #cleanup-npm\n[30]: #lint\n[31]: #metadata-collect\n[32]: #metadata-download\n[33]: #smart-deploy\n[34]: #test-integration-client\n[35]: #test-integration-externals\n[36]: #test-integration-node\n[37]: #test-integration-webpack\n[39]: #verify-release\n[40]: #usage-npm-package\n[43]: https://github.com/Xunnamius/projector-pipeline/blob/main/types/global.ts\n[4]: https://github.com/Xunnamius/xpipeline\n[5]: https://www.techopedia.com/definition/23150/ascii-armor\n[6]:\n  https://docs.github.com/en/github/authenticating-to-github/about-commit-signature-verification#about-commit-signature-verification\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxunnamius%2Fprojector-pipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxunnamius%2Fprojector-pipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxunnamius%2Fprojector-pipeline/lists"}