npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@foss.global/codefeed

v1.6.5

Published

The @foss.global/codefeed module is designed for generating feeds from Gitea repositories, enhancing development workflows by processing commit data and repository activities.

Downloads

845

Readme

# @foss.global/codefeed

A module for creating feeds for code development.

## Install

To install the `@foss.global/codefeed` package, you can run the following npm command in your project directory:

```bash
npm install @foss.global/codefeed

Ensure that you have a compatible version of Node.js installed and that your project is set up to support ECMAScript modules. The @foss.global/codefeed module uses ESM syntax.

Usage

The @foss.global/codefeed package is designed to help developers generate feeds for code developments, specifically targeting Gitea repositories. It fetches and processes commit data, changelogs, and repository activities for further analysis or visualization. Here, we'll delve into how you can utilize the different features of the CodeFeed class.

Setting Up CodeFeed

To get started, import the CodeFeed class from the module:

import { CodeFeed } from '@foss.global/codefeed';

Then, create an instance of CodeFeed. You'll need the base URL of your Gitea instance and optionally an API token if your repositories require authentication:

const codeFeed = new CodeFeed('https://your-gitea-instance-url.com', 'your-api-token');

The constructor can also accept a lastRunTimestamp which indicates the last time a sync was performed. If not provided, it defaults to 24 hours prior to the current time.

Fetching Commits

One of the core functionalities of CodeFeed is fetching commits from a Gitea instance. By calling fetchAllCommitsFromInstance, you can retrieve commits across multiple repositories:

(async () => {
  try {
    const commits = await codeFeed.fetchAllCommitsFromInstance();
    console.log(commits);
  } catch (error) {
    console.error('An error occurred while fetching commits:', error);
  }
})();

This method scans all organizations and repositories, filters commits tagged within the last 24 hours, and enriches them with metadata like changelogs or npm publication status.

Each commit object in the resulting array conforms to the ICommitResult interface, containing details such as:

  • baseUrl
  • org
  • repo
  • timestamp
  • hash
  • commitMessage
  • tagged (boolean)
  • publishedOnNpm (boolean)
  • prettyAgoTime (human-readable relative time)
  • changelog (text from the changelog.md associated with a commit)

Understanding the Data Fetch Process

Fetching Organizations

The fetchAllOrganizations method collects all organizations within the Gitea instance:

const organizations = await codeFeed.fetchAllOrganizations();
console.log('Organizations:', organizations);

This method interacts with the Gitea API to pull organization names, aiding further requests that require organization context.

Fetching Repositories

Repositories under these organizations can be retrieved using fetchAllRepositories:

const repositories = await codeFeed.fetchAllRepositories();
console.log('Repositories:', repositories);

Here, filtering by organization can help narrow down the scope further when dealing with large instances.

Fetching Tags and Commits

To handle repository-specific details, use:

  • fetchTags(owner: string, repo: string): Appropriately handles paginated tag data within a repository.

  • fetchRecentCommitsForRepo(owner: string, repo: string): Gathers commit data specific to the past 24 hours for a given repository.

const tags = await codeFeed.fetchTags('orgName', 'repoName');
const recentCommits = await codeFeed.fetchRecentCommitsForRepo('orgName', 'repoName');

console.log('Tags:', tags);
console.log('Recent Commits:', recentCommits);

Changelog Integration

Loading changelog content from a repository is integrated into the flow with loadChangelogFromRepo. This can be accessed when processing specific commits:

await codeFeed.loadChangelogFromRepo('org', 'repo');
const changelog = codeFeed.getChangelogForVersion('1.0.0');
console.log('Changelog for version 1.0.0:', changelog);

Reacting to Repository Activity

The method hasNewActivity checks for recent changes within an organization or a repository. This is particularly useful for setting up alerting systems or continuous integration triggers:

const hasActivity = await codeFeed.hasNewActivity({ orgName: 'orgName', repoName: 'repoName' });
console.log('New activity detected:', hasActivity);

Conclusion

The @foss.global/codefeed module provides robust capabilities for extracting and managing feed data related to code developments in Gitea environments. Through systematic setup and leveraging API-driven methods, it becomes a valuable tool for developers aiming to keep track of software progress and changes efficiently. The integration hooks like changelog and npm verification further enrich its utility, offering consolidated insights into each commit's journey from codebase to published package.

Explore integrating these capabilities into your development workflows to enhance tracking, deployment pipelines, or analytics systems within your projects. Remember to always handle API tokens securely and adhere to best practices when managing access to repository resources. Stay updated on any changes or enhancements to this module for further feature exposures or bug fixes. Happy coding!

undefined