Skip to content

Commit 5da23c3

Browse files
the big lift 🏗️
1 parent 2c7126a commit 5da23c3

385 files changed

Lines changed: 106393 additions & 17 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Integration Test
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
workflow_dispatch:
8+
inputs:
9+
node-version:
10+
description: 'Node.js version'
11+
required: true
12+
type: choice
13+
default: 'all'
14+
options:
15+
- 'all'
16+
- '20'
17+
- '22'
18+
- '24'
19+
20+
jobs:
21+
integration-test:
22+
name: Integration Test (Node.js v${{ matrix.node-version }})
23+
runs-on: ubuntu-latest
24+
25+
strategy:
26+
fail-fast: false
27+
matrix:
28+
node-version: ${{ (github.event.inputs.node-version == 'all' || github.event.inputs.node-version == '') && fromJSON('[20, 22, 24]') || fromJSON(format('[{0}]', github.event.inputs.node-version)) }}
29+
30+
steps:
31+
- name: Checkout code
32+
uses: actions/checkout@v4
33+
34+
- name: Setup Node.js ${{ matrix.node-version }}
35+
uses: actions/setup-node@v4
36+
with:
37+
node-version: ${{ matrix.node-version }}
38+
cache: 'npm'
39+
40+
- name: Install dependencies
41+
run: npm ci
42+
43+
- name: Build
44+
run: npm run build || true # we currently have type errors so just ignore that
45+
46+
- name: Setup Harper
47+
env:
48+
DEFAULTS_MODE: 'dev'
49+
HDB_ADMIN_USERNAME: 'admin'
50+
HDB_ADMIN_PASSWORD: 'password'
51+
ROOTPATH: '/tmp/hdb'
52+
OPERATIONSAPI_NETWORK_PORT: 9925
53+
LOGGING_LEVEL: 'debug'
54+
LOGGING_STDSTREAMS: true
55+
THREADS_COUNT: 1
56+
THREADS_DEBUG: false
57+
NODE_HOSTNAME: 'localhost'
58+
run: node --enable-source-maps ./dist/bin/harperdb.js install
59+
60+
- name: Run tests
61+
env:
62+
HDB_ADMIN_USERNAME: 'admin'
63+
HDB_ADMIN_PASSWORD: 'password'
64+
run: |
65+
node --enable-source-maps ./dist/bin/harperdb.js start
66+
sleep 10
67+
npm run test:integration
68+
69+
- name: Upload HarperDB logs
70+
if: always()
71+
uses: actions/upload-artifact@v4
72+
with:
73+
name: harper-logs-node-${{ matrix.node-version }}
74+
path: /tmp/hdb/log/hdb.log
75+
retention-days: 7

.gitignore

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
## New GitIgnore Rules
2+
## Keeping old ones for now so we don't accidentally start tracking something we were previously ignoring
3+
4+
# OS Files
5+
.DS_Store
6+
7+
# IDE Files
8+
.vscode/
9+
.idea/
10+
11+
# Dependencies
112
node_modules/
213

3-
.DS_Store
14+
# Test Outputs
15+
coverage
16+
*.lcov
17+
.nyc_output/
18+
19+
# TypeScript
20+
*.tsbuildinfo
21+
22+
# Build Output
23+
dist/
24+
25+
# Environment Variables
26+
.env
27+
.env.*
28+
!.env.example
29+
30+
# something is generating this file :shrug:
31+
integration-test.json

CODE_OF_CONDUCT.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
2+
# Contributor Covenant 3.0 Code of Conduct
3+
4+
## Our Pledge
5+
6+
We pledge to make our community welcoming, safe, and equitable for all.
7+
8+
We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant.
9+
10+
## Encouraged Behaviors
11+
12+
While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language.
13+
14+
With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:
15+
16+
1. Respecting the **purpose of our community**, our activities, and our ways of gathering.
17+
2. Engaging **kindly and honestly** with others.
18+
3. Respecting **different viewpoints** and experiences.
19+
4. **Taking responsibility** for our actions and contributions.
20+
5. Gracefully giving and accepting **constructive feedback**.
21+
6. Committing to **repairing harm** when it occurs.
22+
7. Behaving in other ways that promote and sustain the **well-being of our community**.
23+
24+
25+
## Restricted Behaviors
26+
27+
We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.
28+
29+
1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop.
30+
2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people.
31+
3. **Stereotyping or discrimination.** Characterizing anyone’s personality or behavior on the basis of immutable identities or traits.
32+
4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community.
33+
5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission.
34+
6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group.
35+
7. Behaving in other ways that **threaten the well-being** of our community.
36+
37+
### Other Restrictions
38+
39+
1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions.
40+
2. **Failing to credit sources.** Not properly crediting the sources of content you contribute.
41+
3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community.
42+
4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors.
43+
44+
45+
## Reporting an Issue
46+
47+
Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm.
48+
49+
When an incident does occur, it is important to report it promptly. To report a possible violation, **send an email to moderation@harperdb.io with the subject "COC Violation Report" and all relevant details (including screenshots and timestamps) in the email body.**
50+
51+
Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution.
52+
53+
54+
## Addressing and Repairing Harm
55+
56+
If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped.
57+
58+
1) Warning
59+
1) Event: A violation involving a single incident or series of incidents.
60+
2) Consequence: A private, written warning from the Community Moderators.
61+
3) Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations.
62+
2) Temporarily Limited Activities
63+
1) Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation.
64+
2) Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members.
65+
3) Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over.
66+
3) Temporary Suspension
67+
1) Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation.
68+
2) Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions.
69+
3) Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted.
70+
4) Permanent Ban
71+
1) Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member.
72+
2) Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior.
73+
3) Repair: There is no possible repair in cases of this severity.
74+
75+
This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.
76+
77+
78+
## Scope
79+
80+
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
81+
82+
83+
## Attribution
84+
85+
This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
86+
87+
Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
88+
89+
For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozilla’s code of conduct team](https://github.com/mozilla/inclusion).
90+

CONTRIBUTING.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Contributing to Harper
2+
3+
> [!NOTE]
4+
> Harper open source core is still under active development.
5+
>
6+
> The source code in this repository was extracted directly from our old, closed-source codebase.
7+
>
8+
> Stay tuned to this repo and our public channels (such as our [Discord](https://discord.gg/VzZuaw3Xay) community) for updates as we continue to develop the future of open source Harper.
9+
10+
Contributors are encouraged to communicate with maintainers in issues or other channels (such as our community [Discord](https://discord.gg/VzZuaw3Xay)) before submitting changes.
11+
12+
## Getting Started
13+
14+
Install dependencies using `npm install`
15+
16+
Build the project using `npm run build` or `npm run build:watch` to automatically rebuild on file changes.
17+
18+
Run tests using `npm run test:integration`. Make sure to read the [integration test instructions](./test/integrationTests/README.md) for setup.
19+
20+
## Repository Structure
21+
22+
Most of the content within this repo is source files. The exceptions are `static` and `test` directories, and various configuration files (such as `eslint.config.mjs`, `prettier.config.mjs`, and `tsconfig.json`).
23+
24+
## Code of Conduct
25+
26+
Harper has a [Code of Conduct](./CODE_OF_CONDUCT.md) that all contributors are expected to follow.

README.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,38 @@
11
# Harper
22

3-
https://harpersystems.dev
3+
> [!NOTE]
4+
> Harper open source core is still under active development.
5+
>
6+
> The source code in this repository was extracted directly from our old, closed-source codebase.
7+
>
8+
> Stay tuned to this repo and our public channels (such as our [Discord](https://discord.gg/VzZuaw3Xay) community) for updates as we continue to develop the future of open source Harper.
9+
10+
## Getting Started
11+
12+
Check out our [Getting Started Guide](https://docs.harperdb.io/docs/getting-started) to learn how to install and use Harper.
13+
14+
## What is HarperDB?
15+
16+
HarperDB is our previous name. Earlier in 2025, [we rebranded](https://www.harper.fast/announcements/harperdb-proclaims-new-era-for-web-performance-with-corporate-rebrand) to just "Harper" to reflect our evolution from a database to a full performance platform. The core technology remains the same, but we've expanded our vision to encompass more than just database functionality. Since this repo was created from the existing Harper codebase, you may still see references to the old name "HarperDB" in certain places.
17+
18+
## Contributing to Harper
19+
20+
Harper's open source core accepts contributions from the community! Please read our guidelines before contributing.
21+
22+
Open an issue if you find a bug, or reach out on our [Discord](https://discord.gg/VzZuaw3Xay) if you have questions or want to discuss ideas.
23+
24+
For more information on how to contribute, please see our:
25+
26+
- [Contributing Guide](./CONTRIBUTING.md)
27+
- [Code of Conduct](./CODE_OF_CONDUCT.md)
28+
- [Support](./SUPPORT.md)
29+
30+
## Security
31+
32+
Please review our [Security Policy](./SECURITY.md) for reporting vulnerabilities.
33+
34+
Please always disclose vulnerabilities privately to `security@harperdb.io` before making them public.
35+
36+
## License
37+
38+
Harper is available under the Apache-2.0 License. See the [LICENSE](LICENSE) for the full license text or the [License FAQ]() for more information.

SECURITY.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Security Policy
2+
3+
## Reporting a Vulnerability
4+
5+
We take security vulnerabilities seriously and appreciate your efforts to responsibly disclose your findings.
6+
7+
If you discover a security vulnerability, please email us at **security@harperdb.io** with the following information:
8+
9+
- A description of the vulnerability
10+
- Steps to reproduce the issue
11+
- Potential impact
12+
- Any suggested fixes (if available)
13+
14+
We will acknowledge receipt of your report and work with you to understand and resolve the issue promptly.
15+
16+
**Please do not publicly disclose the vulnerability until we have had a chance to address it.**
17+
18+
Thank you for helping keep Harper and our community safe.

SUPPORT.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Support
2+
3+
## Bug Reports
4+
5+
If you encounter a bug, please file an issue directly in the respective repository where the issue occurs.
6+
7+
## Community Help
8+
9+
For general questions, help requests, and community discussions, please join our Discord community:
10+
11+
**https://discord.gg/VzZuaw3Xay**
12+
13+
## Code of Conduct Violations
14+
15+
If you experience or witness behavior that violates our Code of Conduct, please:
16+
17+
1. Review our [Code of Conduct](CODE_OF_CONDUCT.md)
18+
2. Email **moderation@harperdb.io** with details of the incident
19+
20+
## Harper Customers
21+
22+
If you are a HarperDB customer, you can reach our support team directly at **support@harperdb.io**.
23+
24+
## Other Inquiries
25+
26+
For any other open source-related concerns or questions, please contact **opensource@harperdb.io**.

bin/BinObjects.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
3+
/**
4+
* This is meant as a central place to defined POJOs used by functions in the /bin/ directory.
5+
*/
6+
7+
class HdbInfoInsertObject {
8+
constructor(id, dataVersionNum, hdbVersionNum) {
9+
this.info_id = id;
10+
this.data_version_num = dataVersionNum;
11+
this.hdb_version_num = hdbVersionNum;
12+
}
13+
}
14+
15+
module.exports = {
16+
HdbInfoInsertObject,
17+
};

0 commit comments

Comments
 (0)