Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,11 @@ jobs:
DOCUSAURUS_ROUTE_BASE_PATH: ${{ vars.DOCUSAURUS_ROUTE_BASE_PATH }}
DOCUSAURUS_BASE_URL: ${{ vars.DOCUSAURUS_BASE_URL }}
DOCUSAURUS_URL: ${{ vars.DOCUSAURUS_URL }}
IMAGES_PATH: ${{ vars.IMAGES_PATH }}
run: |
echo "Building Docusaurus site..."
echo "Using DOCUSAURUS_ROUTE_BASE_PATH: $DOCUSAURUS_ROUTE_BASE_PATH"
echo "Using DOCUSAURUS_BASE_URL: $DOCUSAURUS_BASE_URL"
echo "Using DOCUSAURUS_URL: $DOCUSAURUS_URL"
echo "Using IMAGES_PATH: $IMAGES_PATH"
npm run build || (echo "Site build failed" && exit 1)

- name: Upload npm logs on failure
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@ npm run serve

```text
├── docs/ # Main documentation content
├── images/ # Images for documentation
├── static/ # Static assets
│ ├── img/ # Site images and logos
│ ├── img/ # Site images and logos (versioned)
│ └── js/ # JavaScript files
├── src/ # React components and custom pages
│ ├── css/ # Custom styles
Expand Down
48 changes: 0 additions & 48 deletions docs/custom-functions/create-project.md

This file was deleted.

7 changes: 0 additions & 7 deletions docs/custom-functions/define-helpers.md

This file was deleted.

21 changes: 0 additions & 21 deletions docs/custom-functions/host-static.md

This file was deleted.

29 changes: 0 additions & 29 deletions docs/custom-functions/index.md

This file was deleted.

79 changes: 0 additions & 79 deletions docs/custom-functions/requirements-definitions.md

This file was deleted.

16 changes: 0 additions & 16 deletions docs/custom-functions/restarting-server.md

This file was deleted.

7 changes: 0 additions & 7 deletions docs/custom-functions/templates.md

This file was deleted.

6 changes: 3 additions & 3 deletions docs/developers/applications/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,9 @@ class BreedSource extends Resource {
Breed.sourcedFrom(BreedSource, { expiration: 3600 });
```

The [caching documentation](caching) provides much more information on how to use Harper's powerful caching capabilities and set up data sources.
The [caching documentation](applications/caching) provides much more information on how to use Harper's powerful caching capabilities and set up data sources.

Harper provides a powerful JavaScript API with significant capabilities that go well beyond a "getting started" guide. See our documentation for more information on using the [`globals`](../../reference/globals) and the [Resource interface](../../reference/resource).
Harper provides a powerful JavaScript API with significant capabilities that go well beyond a "getting started" guide. See our documentation for more information on using the [`globals`](../../reference/globals) and the [Resource interface](../../reference/resources).

## Configuring Applications/Components

Expand All @@ -221,7 +221,7 @@ For complete information of configuring applications, refer to the [Component Co

Exporting resource will generate full RESTful endpoints. But, you may prefer to define endpoints through a framework. Harper includes a resource plugin for defining routes with the Fastify web framework. Fastify is a full-featured framework with many plugins, that provides sophisticated route definition capabilities.

By default, applications are configured to load any modules in the `routes` directory (matching `routes/*.js`) with Fastify's autoloader, which will allow these modules to export a function to define fastify routes. See the [defining routes documentation](define-routes) for more information on how to create Fastify routes.
By default, applications are configured to load any modules in the `routes` directory (matching `routes/*.js`) with Fastify's autoloader, which will allow these modules to export a function to define fastify routes. See the [defining routes documentation](applications/define-routes) for more information on how to create Fastify routes.

However, Fastify is not as fast as Harper's RESTful endpoints (about 10%-20% slower/more-overhead), nor does it automate the generation of a full uniform interface with correct RESTful header interactions (for caching control), so generally the Harper's REST interface is recommended for optimum performance and ease of use.

Expand Down
2 changes: 1 addition & 1 deletion docs/developers/clustering/establishing-routes.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ clustering:
port: 9932
```

![figure 1](/clustering/figure1.png)
![figure 1](/img/v4.6/clustering/figure1.png)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this concerns me a little bit; what happens when we cut the 4.7 release? Will these images break? Do we have to account for transforming all of these paths?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4.6 images should always exist. any images added or changed for 4.7 can be put in a 4.7 dir, and so on. the key will be to not delete or change older images so older docs aren't inadvertently modified.


This diagram shows one way of using routes to connect a network of nodes. Node2 and Node3 do not reference any routes in their config. Node1 contains routes for Node2 and Node3, which is enough to establish a network between all three nodes.

Expand Down
8 changes: 4 additions & 4 deletions docs/developers/clustering/subscription-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,26 @@ A subscription consists of:

#### Publish subscription

![figure 2](/clustering/figure2.png)
![figure 2](/img/v4.6/clustering/figure2.png)

This diagram is an example of a `publish` subscription from the perspective of Node1.

The record with id 2 has been inserted in the dog table on Node1, after it has completed that insert it is sent to Node 2 and inserted in the dog table there.

#### Subscribe subscription

![figure 3](/clustering/figure3.png)
![figure 3](/img/v4.6/clustering/figure3.png)

This diagram is an example of a `subscribe` subscription from the perspective of Node1.

The record with id 3 has been inserted in the dog table on Node2, after it has completed that insert it is sent to Node1 and inserted there.

#### Subscribe and Publish

![figure 4](/clustering/figure4.png)
![figure 4](/img/v4.6/clustering/figure4.png)

This diagram shows both subscribe and publish but publish is set to false. You can see that because subscribe is true the insert on Node2 is being replicated on Node1 but because publish is set to false the insert on Node1 is _**not**_ being replicated on Node2.

![figure 5](/clustering/figure5.png)
![figure 5](/img/v4.6/clustering/figure5.png)

This shows both subscribe and publish set to true. The insert on Node1 is replicated on Node2 and the update on Node2 is replicated on Node1.
2 changes: 1 addition & 1 deletion docs/developers/clustering/things-worth-knowing.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ Harper has built-in resiliency for when network connectivity is lost within a su

Harper clustering creates a mesh network between nodes giving end users the ability to create an infinite number of topologies. subscription topologies can be simple or as complex as needed.

![](/clustering/figure6.png)
![](/img/v4.6/clustering/figure6.png)
2 changes: 1 addition & 1 deletion docs/developers/operations-api/analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Retrieves analytics data from the server.
- `start_time` _(optional)_ - Unix timestamp in seconds
- `end_time` _(optional)_ - Unix timestamp in seconds
- `get_attributes` _(optional)_ - array of attribute names to retrieve
- `conditions` _(optional)_ - array of conditions to filter results (see [search_by_conditions docs](developers/operations-api/nosql-operations) for details)
- `conditions` _(optional)_ - array of conditions to filter results (see [search_by_conditions docs](./nosql-operations) for details)

### Body

Expand Down
2 changes: 1 addition & 1 deletion docs/developers/replication/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ replication:

Harper supports the highest levels of security through public key infrastructure based security and authorization. Depending on your security configuration, you can configure Harper in several different ways to build a connected cluster.

When using certificate-based authentication, Harper automatically performs OCSP (Online Certificate Status Protocol) verification to check if certificates have been revoked. This ensures that compromised certificates cannot be used for replication connections. Certificate verification settings follow the same configuration as HTTP mTLS connections (see [certificate verification configuration](../deployments/configuration.md#http)).
When using certificate-based authentication, Harper automatically performs OCSP (Online Certificate Status Protocol) verification to check if certificates have been revoked. This ensures that compromised certificates cannot be used for replication connections. Certificate verification settings follow the same configuration as HTTP mTLS connections (see [certificate verification configuration](../../deployments/configuration#http)).

#### Provide your own certificates

Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/what-is-harper.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Harper is an all-in-one backend technology that fuses database technologies, cac

Harper simplifies scaling with clustering and native data replication. At scale, architectures tend to include 4 to 16 redundant, geo-distributed nodes located near every user population center. This ensures that every user experiences minimal network latency and maximum reliability in addition to the already rapid server responses.

![](/harperstack.jpg)
![](/img/v4.6/harperstack.jpg)

## Understanding the Paradigm Shift

Expand Down
10 changes: 5 additions & 5 deletions docs/reference/dynamic-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ At this point the table does not have structure beyond what we provided, so the

**dev.dog**

![](/reference/dynamic_schema_2_create_table.png.webp)
![](/img/v4.6/reference/dynamic_schema_2_create_table.png.webp)

**Insert Record**

Expand All @@ -85,7 +85,7 @@ With a single record inserted and new attributes defined, our table now looks li

**dev.dog**

![](/reference/dynamic_schema_3_insert_record.png.webp)
![](/img/v4.6/reference/dynamic_schema_3_insert_record.png.webp)

Indexes have been automatically created for `dog_name` and `owner_name` attributes.

Expand All @@ -109,7 +109,7 @@ In this case, there is no change to the schema. Our table now looks like this:

**dev.dog**

![](/reference/dynamic_schema_4_insert_additional_record.png.webp)
![](/img/v4.6/reference/dynamic_schema_4_insert_additional_record.png.webp)

**Update Existing Record**

Expand All @@ -130,7 +130,7 @@ Now we have a new attribute called `weight_lbs`. Our table now looks like this:

**dev.dog**

![](/reference/dynamic_schema_5_update_existing_record.png.webp)
![](/img/v4.6/reference/dynamic_schema_5_update_existing_record.png.webp)

**Query Table with SQL**

Expand All @@ -145,4 +145,4 @@ Now if we query for all records where `weight_lbs` is `null` we expect to get ba

This results in the expected two records being returned.

![](/reference/dynamic_schema_6_query_table_with_sql.png.webp)
![](/img/v4.6/reference/dynamic_schema_6_query_table_with_sql.png.webp)
2 changes: 1 addition & 1 deletion docs/reference/resources/instance-binding.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ When a resource is accessed as a data source:

### `operation(operationObject: Object, authorize?: boolean): Promise<any>`

This method is available on tables and will execute a Harper operation, using the current table as the target of the operation (the `table` and `database` do not need to be specified). See the [operations API](../developers/operations-api/) for available operations that can be performed. You can set the second argument to `true` if you want the current user to be checked for authorization for the operation (if `true`, will throw an error if they are not authorized).
This method is available on tables and will execute a Harper operation, using the current table as the target of the operation (the `table` and `database` do not need to be specified). See the [operations API](../../developers/operations-api/) for available operations that can be performed. You can set the second argument to `true` if you want the current user to be checked for authorization for the operation (if `true`, will throw an error if they are not authorized).

### `allowStaleWhileRevalidate(entry: { version: number, localTime: number, expiresAt: number, value: object }, id): boolean`

Expand Down
2 changes: 1 addition & 1 deletion docs/reference/storage-algorithm.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ Harper inherits both functional and performance benefits by implementing LMDB as

## Harper Indexing Example (Single Table)

![](/reference/HarperDB-3.0-Storage-Algorithm.png.webp)
![](/img/v4.6/reference/HarperDB-3.0-Storage-Algorithm.png.webp)
Loading