diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 175d5cff..b332ae88 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -6,7 +6,6 @@ on: push: branches: - main - - docs-in-hdb # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -83,8 +82,8 @@ jobs: needs: build name: Deploy to GitHub Pages runs-on: ubuntu-latest - # Only deploy on push to specific branches, not on PRs - if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/docs-in-hdb') + # Only deploy on push to main or manual trigger, not on PRs + if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch' permissions: pages: write diff --git a/docs/administration/administration.md b/docs/administration/administration.md index 741c24f5..a85acdc1 100644 --- a/docs/administration/administration.md +++ b/docs/administration/administration.md @@ -25,7 +25,7 @@ Harper provides robust capabilities for analytics and observability to facilitat - Analytics provides statistics on usage, request counts, load, memory usage with historical tracking. The analytics data can be [accessed through querying](../technical-details/reference/analytics). - A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](../developers/operations-api/system-operations). - Information about the current cluster configuration and status can be found in the [cluster APIs](../developers/operations-api/clustering). -- Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https:/github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. +- Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https://github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. ### Replication Transaction Logging diff --git a/docs/administration/cloning.md b/docs/administration/cloning.md index dcea866a..4669775b 100644 --- a/docs/administration/cloning.md +++ b/docs/administration/cloning.md @@ -26,7 +26,7 @@ To start clone run `harperdb` in the CLI with either of the following variables For example: ``` -HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb +HDB_LEADER_URL=https://node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb ``` #### Command line variables @@ -39,7 +39,7 @@ HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-d For example: ``` -harperdb --HDB_LEADER_URL https:/node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... +harperdb --HDB_LEADER_URL https://node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... ``` Each time clone is run it will set a value `cloned: true` in `harperdb-config.yaml`. This value will prevent clone from @@ -143,7 +143,7 @@ docker run -d \ -v :/home/harperdb/hdb \ -e HDB_LEADER_PASSWORD=password \ -e HDB_LEADER_USERNAME=admin \ - -e HDB_LEADER_URL=https:/1.123.45.6:9925 \ + -e HDB_LEADER_URL=https://1.123.45.6:9925 \ -e REPLICATION_HOSTNAME=1.123.45.6 \ -p 9925:9925 \ -p 9926:9926 \ diff --git a/docs/administration/harper-studio/create-account.md b/docs/administration/harper-studio/create-account.md index 73eb9d97..21752357 100644 --- a/docs/administration/harper-studio/create-account.md +++ b/docs/administration/harper-studio/create-account.md @@ -4,7 +4,7 @@ title: Create a Studio Account # Create a Studio Account -Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). +Start at the [Harper Studio sign up page](https://studio.harperdb.io/sign-up). 1. Provide the following information: - First Name @@ -12,7 +12,7 @@ Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). - Email Address - Subdomain - _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com._ + _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com)._ - Coupon Code (optional) diff --git a/docs/administration/harper-studio/enable-mixed-content.md b/docs/administration/harper-studio/enable-mixed-content.md index 40d9877d..67747d71 100644 --- a/docs/administration/harper-studio/enable-mixed-content.md +++ b/docs/administration/harper-studio/enable-mixed-content.md @@ -6,4 +6,4 @@ title: Enable Mixed Content Enabling mixed content is required in cases where you would like to connect the Harper Studio to Harper Instances via HTTP. This should not be used for production systems, but may be convenient for development and testing purposes. Doing so will allow your browser to reach HTTP traffic, which is considered insecure, through an HTTPS site like the Studio. -A comprehensive guide is provided by Adobe [here](https:/experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). +A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). diff --git a/docs/administration/harper-studio/index.md b/docs/administration/harper-studio/index.md index 011c5923..75f4ccfb 100644 --- a/docs/administration/harper-studio/index.md +++ b/docs/administration/harper-studio/index.md @@ -6,9 +6,9 @@ title: Harper Studio Harper Studio is the web-based GUI for Harper. Studio enables you to administer, navigate, and monitor all of your Harper instances in a simple, user-friendly interface without any knowledge of the underlying Harper API. It’s free to sign up, get started today! -[Sign up for free!](https:/studio.harperdb.io/sign-up) +[Sign up for free!](https://studio.harperdb.io/sign-up) -Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https:/studio.harperdb.io). +Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https://studio.harperdb.io). --- diff --git a/docs/administration/harper-studio/instance-configuration.md b/docs/administration/harper-studio/instance-configuration.md index 1c3dd2d5..06a6eb89 100644 --- a/docs/administration/harper-studio/instance-configuration.md +++ b/docs/administration/harper-studio/instance-configuration.md @@ -8,7 +8,7 @@ Harper instance configuration can be viewed and managed directly through the Har All instance configuration is handled through the **config** page of the Harper Studio, accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. @@ -62,7 +62,7 @@ Note: For Harper Cloud instances, upgrading RAM may add additional CPUs to your 1. Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -_Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new._ +_Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new)._ ## Update Instance Storage @@ -79,7 +79,7 @@ Note: Instance storage can only be upgraded once every 6 hours. 1. The instance will shut down and begin reprovisioning itself. The instance will not be available during this time. You will be returned to the instance dashboard and the instance status will show UPDATING INSTANCE. 1. Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -_Note, if this process takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new._ +_Note, if this process takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new)._ ## Remove Instance diff --git a/docs/administration/harper-studio/instance-metrics.md b/docs/administration/harper-studio/instance-metrics.md index eae954f1..e9b48939 100644 --- a/docs/administration/harper-studio/instance-metrics.md +++ b/docs/administration/harper-studio/instance-metrics.md @@ -6,7 +6,7 @@ title: Instance Metrics The Harper Studio display instance status and metrics on the instance status page, which can be accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **status** in the instance control bar. diff --git a/docs/administration/harper-studio/instances.md b/docs/administration/harper-studio/instances.md index f6adc86a..40479334 100644 --- a/docs/administration/harper-studio/instances.md +++ b/docs/administration/harper-studio/instances.md @@ -14,11 +14,11 @@ All interactions between the Studio and your instances take place directly from ## Organization Instance List -A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. +A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. ## Create a New Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select your desired Instance Type. @@ -26,7 +26,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Fill out Instance Info. 1. Enter Instance Name - _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com. The Instance URL will be previewed below._ + _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com). The Instance URL will be previewed below._ 1. Enter Instance Username @@ -52,13 +52,13 @@ A summary view of all instances within an organization can be viewed by clicking 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. Your Harper Cloud instance will be provisioned in the background. Provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. ## Register Enterprise Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select **Register Enterprise Instance**. @@ -95,7 +95,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. The Harper Studio will register your instance and restart it for the registration to take effect. Your instance will be immediately available after this is complete. @@ -108,7 +108,7 @@ Instance deletion has two different behaviors depending on the instance type. An instance can be deleted as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the trash can icon. 1. Enter the instance name into the text box. @@ -125,14 +125,14 @@ Harper instances can be resized on the [Instance Configuration](instance-configu The Studio enables users to log in and out of different database users from the instance control panel. To log out of an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the lock icon. 1. You will immediately be logged out of the instance. To log in to an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card, it will have an unlocked icon and a status reading PLEASE LOG IN, and click the center of the card. 1. Enter the database username. diff --git a/docs/administration/harper-studio/login-password-reset.md b/docs/administration/harper-studio/login-password-reset.md index 96f40020..199d38ce 100644 --- a/docs/administration/harper-studio/login-password-reset.md +++ b/docs/administration/harper-studio/login-password-reset.md @@ -8,7 +8,7 @@ title: Login and Password Reset To log into your existing Harper Studio account: -1. Navigate to the [Harper Studio](https:/studio.harperdb.io/). +1. Navigate to the [Harper Studio](https://studio.harperdb.io/). 1. Enter your email address. 1. Enter your password. 1. Click **sign in**. diff --git a/docs/administration/harper-studio/manage-applications.md b/docs/administration/harper-studio/manage-applications.md index 253f2ba5..52e8cc64 100644 --- a/docs/administration/harper-studio/manage-applications.md +++ b/docs/administration/harper-studio/manage-applications.md @@ -35,14 +35,14 @@ The Applications editor stores unsaved changes in cache. This means that occasio Accessing your application endpoints varies with which type of endpoint you're creating. All endpoints, regardless of type, will be accessed via the [Harper HTTP port found in the Harper configuration file](../../deployments/configuration#http). The default port is `9926`, but you can verify what your instances is set to by navigating to the [instance config page](instance-configuration) and examining the read only JSON version of your instance's config file looking specifically for either the `http: port: 9926` or `http: securePort: 9926` configs. If `port` is set, you will access your endpoints via `http` and if `securePort` is set, you will access your endpoints via `https`. -Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https:/localhost:9926`. +Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https://localhost:9926`. - **Standard REST Endpoints**\ - Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https:/localhost:9926/Dog/1`. + Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https://localhost:9926/Dog/1`. - **Augmented REST Endpoints**\ - Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https:/localhost:9926/DogWithHumanAge/1`. + Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https://localhost:9926/DogWithHumanAge/1`. - **Fastify Routes**\ - If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https:/github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https:/localhost/application-template/getAll`. + If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https://github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https://localhost/application-template/getAll`. ## Creating a New Application diff --git a/docs/administration/harper-studio/manage-instance-users.md b/docs/administration/harper-studio/manage-instance-users.md index c52f005d..fb91fbbb 100644 --- a/docs/administration/harper-studio/manage-instance-users.md +++ b/docs/administration/harper-studio/manage-instance-users.md @@ -8,7 +8,7 @@ Harper users and roles can be managed directly through the Harper Studio. It is Instance user configuration is handled through the **users** page of the Harper Studio, accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. diff --git a/docs/administration/harper-studio/manage-replication.md b/docs/administration/harper-studio/manage-replication.md index 8987d71c..619799a5 100644 --- a/docs/administration/harper-studio/manage-replication.md +++ b/docs/administration/harper-studio/manage-replication.md @@ -8,7 +8,7 @@ Harper instance clustering and replication can be configured directly through th All clustering configuration is handled through the **replication** page of the Harper Studio, accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. diff --git a/docs/administration/harper-studio/organizations.md b/docs/administration/harper-studio/organizations.md index e36b6fa6..c26b4481 100644 --- a/docs/administration/harper-studio/organizations.md +++ b/docs/administration/harper-studio/organizations.md @@ -17,19 +17,19 @@ An organization is automatically created for you when you sign up for Harper Stu ## List Organizations -A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. +A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. ## Create a New Organization A new organization can be created as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the **Create a New Organization** card. 1. Fill out new organization details - Enter Organization Name _This is used for descriptive purposes only._ - Enter Organization Subdomain - _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com._ + _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com)._ 1. Click Create Organization. ## Delete an Organization @@ -52,7 +52,7 @@ Harper Studio organization owners can manage users including inviting new users, A new user can be invited to an organization as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the appropriate organization card. 1. Click **users** at the top of the screen. 1. In the **add user** box, enter the new user’s email address. @@ -78,7 +78,7 @@ Organization owners have full access to the organization including the ability t Users may be removed from an organization at any time. Removing a user from an organization will not delete their Harper Studio account, it will only remove their access to the specified organization. A user can be removed from an organization as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the appropriate organization card. 1. Click **users** at the top of the screen. 1. Click the appropriate user from the **existing users** section. @@ -92,7 +92,7 @@ Users may be removed from an organization at any time. Removing a user from an o Billing is configured per organization and will be billed to the stored credit card at appropriate intervals (monthly or annually depending on the registered instance). Billing settings can be configured as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the appropriate organization card. 1. Click **billing** at the top of the screen. diff --git a/docs/administration/harper-studio/query-instance-data.md b/docs/administration/harper-studio/query-instance-data.md index 3e36c7cf..29a385b9 100644 --- a/docs/administration/harper-studio/query-instance-data.md +++ b/docs/administration/harper-studio/query-instance-data.md @@ -6,7 +6,7 @@ title: Query Instance Data SQL queries can be executed directly through the Harper Studio with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **query** in the instance control bar. diff --git a/docs/administration/logging/standard-logging.md b/docs/administration/logging/standard-logging.md index 56711178..a5116ed7 100644 --- a/docs/administration/logging/standard-logging.md +++ b/docs/administration/logging/standard-logging.md @@ -38,7 +38,7 @@ The log level can be changed by modifying `logging.level` in the config file `ha ## Clustering Logging -Harper clustering utilizes two [NATS](https:/nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. +Harper clustering utilizes two [NATS](https://nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. ## Log File vs Standard Streams diff --git a/docs/custom-functions/create-project.md b/docs/custom-functions/create-project.md index 2e38e450..f7c80d7c 100644 --- a/docs/custom-functions/create-project.md +++ b/docs/custom-functions/create-project.md @@ -24,7 +24,7 @@ Otherwise, to create a project, you have the following options: _This requires a local installation. Remove the .git directory for a clean slate of git history._ ```bash -> git clone https:/github.com/HarperDB/harperdb-custom-functions-template.git ~/hdb/custom_functions/dogs +> git clone https://github.com/HarperDB/harperdb-custom-functions-template.git ~/hdb/custom_functions/dogs ``` 1. **Create a project folder in your Custom Functions root directory** and **initialize** diff --git a/docs/custom-functions/host-static.md b/docs/custom-functions/host-static.md index 643d2724..cae874b3 100644 --- a/docs/custom-functions/host-static.md +++ b/docs/custom-functions/host-static.md @@ -4,13 +4,13 @@ title: Host A Static Web UI # Host A Static Web UI -The [@fastify/static](https:/github.com/fastify/fastify-static) module can be utilized to serve static files. +The [@fastify/static](https://github.com/fastify/fastify-static) module can be utilized to serve static files. Install the module in your project by running `npm i @fastify/static` from inside your project directory. Register `@fastify/static` with the server and set `root` to the absolute path of the directory that contains the static files to serve. -For further information on how to send specific files see the [@fastify/static](https:/github.com/fastify/fastify-static) docs. +For further information on how to send specific files see the [@fastify/static](https://github.com/fastify/fastify-static) docs. ```javascript module.exports = async (server, { hdbCore, logger }) => { diff --git a/docs/custom-functions/requirements-definitions.md b/docs/custom-functions/requirements-definitions.md index 46d0188a..0825337b 100644 --- a/docs/custom-functions/requirements-definitions.md +++ b/docs/custom-functions/requirements-definitions.md @@ -45,11 +45,11 @@ _Please visit our [configuration docs](../configuration) for a more comprehensiv **project folder** -The name of the folder that holds your project files serves as the root prefix for all the routes you create. All routes created in the **dogs** project folder will have a URL like this: **https:/my-server-url.com:9926/dogs/my/route**. As such, it’s important that any project folders you create avoid any characters that aren’t URL-friendly. You should avoid URL delimiters in your folder names. +The name of the folder that holds your project files serves as the root prefix for all the routes you create. All routes created in the **dogs** project folder will have a URL like this: **[https://my-server-url.com:9926/dogs/my/route](https://my-server-url.com:9926/dogs/my/route)**. As such, it’s important that any project folders you create avoid any characters that aren’t URL-friendly. You should avoid URL delimiters in your folder names. **/routes folder** -By default, files in the **routes** folder define the requests that your Custom Functions server will handle. They are [standard Fastify route declarations](https:/www.fastify.io/docs/latest/Reference/Routes/), so if you’re familiar with them, you should be up and running in no time. The default components for a route are the url, method, preValidation, and handler. +By default, files in the **routes** folder define the requests that your Custom Functions server will handle. They are [standard Fastify route declarations](https://www.fastify.io/docs/latest/Reference/Routes/), so if you’re familiar with them, you should be up and running in no time. The default components for a route are the url, method, preValidation, and handler. ```javascript module.exports = async (server, { hdbCore, logger }) => { diff --git a/docs/custom-functions/templates.md b/docs/custom-functions/templates.md index 2c4122ca..cbfa5122 100644 --- a/docs/custom-functions/templates.md +++ b/docs/custom-functions/templates.md @@ -4,4 +4,4 @@ title: Templates # Templates -Check out our always-expanding library of templates in our open-source [Harper-Add-Ons GitHub repo](https:/github.com/HarperDB-Add-Ons). +Check out our always-expanding library of templates in our open-source [Harper-Add-Ons GitHub repo](https://github.com/HarperDB-Add-Ons). diff --git a/docs/deployments/configuration.md b/docs/deployments/configuration.md index 4b971694..6a67c618 100644 --- a/docs/deployments/configuration.md +++ b/docs/deployments/configuration.md @@ -4,7 +4,7 @@ title: Configuration File # Configuration File -Harper is configured through a [YAML](https:/yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). +Harper is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). Some configuration will be populated by default in the config file on install, regardless of whether it is used. @@ -90,7 +90,7 @@ An array of allowable domains with CORS `corsAccessControlAllowHeaders` - _Type_: string; _Default_: 'Accept, Content-Type, Authorization' -A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. +A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. `headersTimeout` - _Type_: integer; _Default_: 60,000 milliseconds (1 minute) @@ -233,10 +233,10 @@ The `replication` section configures [Harper replication](../developers/replicat ```yaml replication: hostname: server-one - url: wss:/server-one:9925 + url: wss://server-one:9925 databases: '*' routes: - - wss:/server-two:9925 + - wss://server-two:9925 port: null securePort: 9933, enableRootCAs: true @@ -278,7 +278,7 @@ replication: copyTablesToCatchUp: true hostname: server-one routes: - - wss:/server-two:9925 # URL based route + - wss://server-two:9925 # URL based route - hostname: server-three # define a hostname and port port: 9930 startTime: 2024-02-06T15:30:00Z @@ -313,7 +313,7 @@ This defines the shard id of this instance and is used in conjunction with the [ The `clustering` section configures the NATS clustering engine, this is used to replicate data between instances of Harper. -_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https:/nats.io/about/) _to facilitate the cluster._ +_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https://nats.io/about/) _to facilitate the cluster._ Clustering offers a lot of different configurations, however in a majority of cases the only options you will need to pay attention to are: @@ -551,7 +551,7 @@ clustering: ### `localStudio` -The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at https:/studio.harperdb.io. Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. +The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at [https://studio.harperdb.io](https://studio.harperdb.io). Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. `enabled` - _Type_: boolean; _Default_: false @@ -583,9 +583,9 @@ To access the audit logs, use the API operation `read_audit_log`. It will provid ```json { - "operation": "read_audit_log", - "schema": "dev", - "table": "dog" + "operation": "read_audit_log", + "schema": "dev", + "table": "dog" } ``` @@ -713,6 +713,7 @@ Harper's logger supports defining multiple logging configurations for different `logging.external` The `logging.external` section can be used to define logging for all external components that use the [`logger` API](../technical-details/reference/globals). For example: + ```yaml logging: external: @@ -723,6 +724,7 @@ logging: `http.logging` This section defines log configuration for HTTP logging. By default, HTTP requests are not logged, but defining this section will enable HTTP logging. Note that there can be substantive overhead to logging all HTTP requests. In addition to the standard logging configuration, the `http.logging` section also allows the following configuration properties to be set: + - `timing` - This will log timing information - `headers` - This will log the headers in each request (which can be very verbose) - `id` - This will assign a unique id to each request and log it in the entry for each request. This is assigned as the `request.requestId` property and can be used to by other logging to track a request. @@ -799,11 +801,11 @@ This will enable cookie-based sessions to maintain an authenticated session. Thi `operationTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time an operation token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time an operation token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `refreshTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time a refresh token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time a refresh token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). ### `operationsApi` @@ -1230,7 +1232,7 @@ The name of the component. This will be used to name the folder where the compon A reference to your [component](../technical-details/reference/components/applications#adding-components-to-root) package. This could be a remote git repo, a local folder/file or an NPM package. Harper will add this package to a package.json file and call `npm install` on it, so any reference that works with that paradigm will work here. -Read more about npm install [here](https:/docs.npmjs.com/cli/v8/commands/npm-install) +Read more about npm install [here](https://docs.npmjs.com/cli/v8/commands/npm-install) `port` - _Type_: number _Default_: whatever is set in `http.port` diff --git a/docs/deployments/harper-cli.md b/docs/deployments/harper-cli.md index a572bc60..d447e892 100644 --- a/docs/deployments/harper-cli.md +++ b/docs/deployments/harper-cli.md @@ -157,7 +157,7 @@ last_updated_record: 1724483231970.9949 `harperdb set_configuration logging_level=error` -`harperdb deploy_component project=my-cool-app package=https:/github.com/HarperDB/application-template` +`harperdb deploy_component project=my-cool-app package=https://github.com/HarperDB/application-template` `harperdb get_components` @@ -174,7 +174,7 @@ The CLI can also be used to run operations on remote Harper instances. To do thi ```bash export CLI_TARGET_USERNAME=HDB_ADMIN export CLI_TARGET_PASSWORD=password -harperdb describe_database database=dev target=https:/server.com:9925 +harperdb describe_database database=dev target=https://server.com:9925 ``` The same set of operations API are available for remote operations as well. @@ -184,11 +184,11 @@ The same set of operations API are available for remote operations as well. When using remote operations, you can deploy a local component to the remote instance. If you omit the `package` parameter, you can deploy the current directory. This will package the current directory and send it to the target server (also `deploy` is allowed as an alias to `deploy_component`): ```bash -harperdb deploy target=https:/server.com:9925 +harperdb deploy target=https://server.com:9925 ``` If you are interacting with a cluster, you may wish to include the `replicated=true` parameter to ensure that the deployment operation is replicated to all nodes in the cluster. You will also need to restart afterwards to apply the changes (here seen with the replicated parameter): ```bash -harperdb restart target=https:/server.com:9925 replicated=true +harperdb restart target=https://server.com:9925 replicated=true ``` diff --git a/docs/deployments/harper-cloud/index.md b/docs/deployments/harper-cloud/index.md index fbf2d81e..c0785d0d 100644 --- a/docs/deployments/harper-cloud/index.md +++ b/docs/deployments/harper-cloud/index.md @@ -4,6 +4,6 @@ title: Harper Cloud # Harper Cloud -[Harper Cloud](https:/studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. +[Harper Cloud](https://studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. You can create a new Harper Cloud instance in the Harper Studio. diff --git a/docs/deployments/harper-cloud/instance-size-hardware-specs.md b/docs/deployments/harper-cloud/instance-size-hardware-specs.md index 72979d8d..6ea4c7d2 100644 --- a/docs/deployments/harper-cloud/instance-size-hardware-specs.md +++ b/docs/deployments/harper-cloud/instance-size-hardware-specs.md @@ -20,4 +20,4 @@ While Harper Cloud bills by RAM, each instance has other specifications associat | m5.16xlarge | 256 | 64 | 20 | Up to 3.1 GHz Intel Xeon Platinum 8000 | | m5.24xlarge | 384 | 96 | 25 | Up to 3.1 GHz Intel Xeon Platinum 8000 | -\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https:/aws.amazon.com/ec2/instance-types/](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https://aws.amazon.com/ec2/instance-types/](https://aws.amazon.com/ec2/instance-types/). diff --git a/docs/deployments/harper-cloud/iops-impact.md b/docs/deployments/harper-cloud/iops-impact.md index 7c2390df..0b32df8e 100644 --- a/docs/deployments/harper-cloud/iops-impact.md +++ b/docs/deployments/harper-cloud/iops-impact.md @@ -18,7 +18,7 @@ Harper Cloud utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp3) AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result, all Harper Cloud storage options will offer 3,000 IOPS. We plan to offer scalable IOPS as an option in the future. -You can read more about AWS EBS volume IOPS here: https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. +You can read more about AWS EBS volume IOPS here: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. ## Estimating IOPS for Harper Instance diff --git a/docs/deployments/harper-cloud/verizon-5g-wavelength-instances.md b/docs/deployments/harper-cloud/verizon-5g-wavelength-instances.md index 0ca2e5a6..aae57f67 100644 --- a/docs/deployments/harper-cloud/verizon-5g-wavelength-instances.md +++ b/docs/deployments/harper-cloud/verizon-5g-wavelength-instances.md @@ -8,7 +8,7 @@ These instances are only accessible from the Verizon network. When accessing you Harper on Verizon 5G Wavelength brings Harper closer to the end user exclusively on the Verizon network resulting in as little as single-digit millisecond response time from Harper to the client. -Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https:/aws.amazon.com/wavelength/). +Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https://aws.amazon.com/wavelength/). Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail\*. @@ -18,7 +18,7 @@ Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, eac | t3.xlarge | 16 | 4 | Up to 5 | Up to 3.1 GHz Intel Xeon Platinum Processor | | r5.2xlarge | 64 | 8 | Up to 10 | Up to 3.1 GHz Intel Xeon Platinum Processor | -\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https://aws.amazon.com/ec2/instance-types/). ## Harper 5G Wavelength Storage @@ -28,4 +28,4 @@ AWS EBS gp2 volumes have a baseline performance level, which determines the numb Smaller gp2 volumes are perfect for trying out the functionality of Harper, and might also work well for applications that don’t perform many database transactions. For applications that perform a moderate or high number of transactions, we recommend that you use a larger Harper volume. Learn more about the [impact of IOPS on performance here](iops-impact). -You can read more about [AWS EBS gp2 volume IOPS here](https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes_gp2). +You can read more about [AWS EBS gp2 volume IOPS here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes_gp2). diff --git a/docs/deployments/install-harper/index.md b/docs/deployments/install-harper/index.md index 25e775d7..74636e3b 100644 --- a/docs/deployments/install-harper/index.md +++ b/docs/deployments/install-harper/index.md @@ -6,12 +6,12 @@ title: Install Harper ## Install Harper -This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https:/studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. +This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https://studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. -Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https:/nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https:/github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: +Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https://nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https://github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash ``` And then logout and login, and then install Node.js using nvm. We recommend using LTS, but support all currently maintained Node versions (which is currently version 14 and newer, and make sure to always uses latest minor/patch for the major version): @@ -35,15 +35,15 @@ If you are setting up a production server on Linux, [we have much more extensive ## With Docker -If you would like to run Harper in Docker, install [Docker Desktop](https:/docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https:/docs.docker.com/engine/install/) on your Linux server. +If you would like to run Harper in Docker, install [Docker Desktop](https://docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https://docs.docker.com/engine/install/) on your Linux server. -Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https:/hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. +Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https://hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. ## Offline Install If you need to install Harper on a device that doesn't have an Internet connection, you can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM): -[Download Install Package](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) +[Download Install Package](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: @@ -55,7 +55,7 @@ npm install -g harperdb-X.X.X.tgz harperdb install Harper comes with binaries for standard AMD64/x64 or ARM64 CPU architectures on Linux, Windows (x64 only), and Mac (including Apple Silicon). However, if you are installing on a less common platform (Alpine, for example), you will need to ensure that you have build tools installed for the installation process to compile the binaries (this is handled automatically), including: -- [Go](https:/go.dev/dl/): version 1.19.1 +- [Go](https://go.dev/dl/): version 1.19.1 - GCC - Make - Python v3.7, v3.8, v3.9, or v3.10 diff --git a/docs/deployments/install-harper/linux.md b/docs/deployments/install-harper/linux.md index 15da9a7b..27a9dc79 100644 --- a/docs/deployments/install-harper/linux.md +++ b/docs/deployments/install-harper/linux.md @@ -128,7 +128,7 @@ echo "ubuntu hard nofile 1000000" | sudo tee -a /etc/security/limits.conf Install Node Version Manager (nvm) ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Load nvm (or logout and then login) @@ -137,7 +137,7 @@ Load nvm (or logout and then login) . ~/.nvm/nvm.sh ``` -Install Node.js using nvm ([read more about specific Node version requirements](https:/www.npmjs.com/package/harperdb#prerequisites)) +Install Node.js using nvm ([read more about specific Node version requirements](https://www.npmjs.com/package/harperdb#prerequisites)) ```bash nvm install diff --git a/docs/deployments/upgrade-hdb-instance.md b/docs/deployments/upgrade-hdb-instance.md index a277f707..3e11fc47 100644 --- a/docs/deployments/upgrade-hdb-instance.md +++ b/docs/deployments/upgrade-hdb-instance.md @@ -20,9 +20,9 @@ Upgrading Harper is a two-step process. First the latest version of Harper must ## Node Version Manager (nvm) -[Node Version Manager (nvm)](http:/nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https:/nvm.sh/. +[Node Version Manager (nvm)](https://nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: [https://nvm.sh/](https://nvm.sh/). -Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https:/www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: +Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https://www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: ```bash nvm install @@ -104,7 +104,7 @@ To enable Plexus on a node that is already running NATS, you will need to update ```yaml replication: - url: wss:/my-cluster-node-1:9925 + url: wss://my-cluster-node-1:9925 hostname: node-1 ``` @@ -130,7 +130,7 @@ replication: { "operation": "add_node", "hostname:": "node-1", - "url": "wss:/my-cluster-node-1:9925" + "url": "wss://my-cluster-node-1:9925" } ``` diff --git a/docs/developers/applications/caching.md b/docs/developers/applications/caching.md index 2a56b70b..46e89aa8 100644 --- a/docs/developers/applications/caching.md +++ b/docs/developers/applications/caching.md @@ -33,8 +33,8 @@ Next, you need to define the source for your cache. External data sources could ```javascript class ThirdPartyAPI extends Resource { async get() { - return (await fetch(`http:/some-api.com/${this.getId()}`)).json(); - } + return (await fetch(`https://some-api.com/${this.getId()}`)).json(); + } } ``` @@ -49,10 +49,10 @@ Now we have a fully configured and connected caching table. If you access data f ```mermaid flowchart TD - Client1(Client 1)-->Cache(Caching Table) - Client2(Client 2)-->Cache - Cache-->Resource(Data Source Connector) - Resource-->API(Remote Data Source API) + Client1(Client 1)-->Cache(Caching Table) + Client2(Client 2)-->Cache + Cache-->Resource(Data Source Connector) + Resource-->API(Remote Data Source API) ``` Harper handles waiting for an existing cache resolution to finish and uses its result. This prevents a "cache stampede" when entries expire, ensuring that multiple requests to a cache entry will all wait on a single request to the data source. @@ -69,11 +69,11 @@ In the example above, we simply retrieved data to fulfill a cache request. We ma ```javascript class ThirdPartyAPI extends Resource { - async get() { - let response = await fetch(`http:/some-api.com/${this.getId()}`); - this.getContext().lastModified = response.headers.get('Last-Modified'); - return response.json(); - } + async get() { + let response = await fetch(`https://some-api.com/${this.getId()}`); + this.getContext().lastModified = response.headers.get('Last-Modified'); + return response.json(); + } } ``` @@ -83,19 +83,19 @@ In addition, we can also specify when a cached record "expires". When a cached r ```javascript class ThirdPartyAPI extends Resource { - async get() { - const context = this.getContext(); - let headers = new Headers(); - if (context.replacingVersion) / this is the existing cached record - headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); - let response = await fetch(`http:/some-api.com/${this.getId()}`, { headers }); - let cacheInfo = response.headers.get('Cache-Control'); - let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; - if (maxAge) / we can set a specific expiration time by setting context.expiresAt - context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time - / we can just revalidate and return the record if the origin has confirmed that it has the same version: - if (response.status === 304) return context.replacingRecord; - ... + async get() { + const context = this.getContext(); + let headers = new Headers(); + if (context.replacingVersion) / this is the existing cached record + headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); + let response = await fetch(`https://some-api.com/${this.getId()}`, { headers }); + let cacheInfo = response.headers.get('Cache-Control'); + let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; + if (maxAge) / we can set a specific expiration time by setting context.expiresAt + context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time + / we can just revalidate and return the record if the origin has confirmed that it has the same version: + if (response.status === 304) return context.replacingRecord; + ... ``` ## Active Caching and Invalidation @@ -109,11 +109,11 @@ One way to provide more active caching is to specifically invalidate individual ```javascript const { MyTable } = tables; export class MyTableEndpoint extends MyTable { - async post(data) { - if (data.invalidate) - / use this flag as a marker - this.invalidate(); - } + async post(data) { + if (data.invalidate) + / use this flag as a marker + this.invalidate(); + } } ``` @@ -125,20 +125,20 @@ We can provide more control of an active cache with subscriptions. If there is a ```javascript class ThirdPartyAPI extends Resource { - async *subscribe() { + async *subscribe() { setInterval(() => { / every second retrieve more data - / get the next data change event from the source - let update = (await fetch(`http:/some-api.com/latest-update`)).json(); - const event = { / define the change event (which will update the cache) - type: 'put', / this would indicate that the event includes the new data value - id: / the primary key of the record that updated - value: / the new value of the record that updated - timestamp: / the timestamp of when the data change occurred - }; - yield event; / this returns this event, notifying the cache of the change + / get the next data change event from the source + let update = (await fetch(`https://some-api.com/latest-update`)).json(); + const event = { / define the change event (which will update the cache) + type: 'put', / this would indicate that the event includes the new data value + id: / the primary key of the record that updated + value: / the new value of the record that updated + timestamp: / the timestamp of when the data change occurred + }; + yield event; / this returns this event, notifying the cache of the change }, 1000); - } - async get() { + } + async get() { ... ``` @@ -165,24 +165,24 @@ By default, Harper will only run the subscribe method on one thread. Harper is m ```javascript class ThirdPartyAPI extends Resource { - static subscribeOnThisThread(threadIndex) { - return threadIndex < 2; / run on two threads (the first two threads) - } - async *subscribe() { - .... + static subscribeOnThisThread(threadIndex) { + return threadIndex < 2; / run on two threads (the first two threads) + } + async *subscribe() { + .... ``` An alternative to using asynchronous generators is to use a subscription stream and send events to it. A default subscription stream (that doesn't generate its own events) is available from the Resource's default subscribe method: ```javascript class ThirdPartyAPI extends Resource { - subscribe() { - const subscription = super.subscribe(); - setupListeningToRemoteService().on('update', (event) => { - subscription.send(event); - }); - return subscription; - } + subscribe() { + const subscription = super.subscribe(); + setupListeningToRemoteService().on('update', (event) => { + subscription.send(event); + }); + return subscription; + } } ``` @@ -196,18 +196,18 @@ The cache we have defined so far only has data flowing from the data source to t ```javascript class ThirdPartyAPI extends Resource { - async put(data) { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'PUT', - body: JSON.stringify(data) - }); - } - async delete() { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'DELETE', - }); - } - ... + async put(data) { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'PUT', + body: JSON.stringify(data) + }); + } + async delete() { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'DELETE', + }); + } + ... ``` When doing an insert or update to the MyCache table, the data will be sent to the underlying data source through the `put` method and the new record value will be stored in the cache as well. @@ -218,12 +218,12 @@ When you are using a caching table, it is important to remember that any resourc ```javascript class MyCache extends tables.MyCache { - async post(data) { - / if the data is not cached locally, retrieves from source: - await this.ensuredLoaded(); - / now we can be sure that the data is loaded, and can access properties - this.quantity = this.quantity - data.purchases; - } + async post(data) { + / if the data is not cached locally, retrieves from source: + await this.ensuredLoaded(); + / now we can be sure that the data is loaded, and can access properties + this.quantity = this.quantity - data.purchases; + } } ``` @@ -238,8 +238,8 @@ With our passive update examples, we have provided a data source handler with a ```javascript const { Post, Comment } = tables; class BlogSource extends Resource { - get() { - const post = await (await fetch(`http:/my-blog-server/${this.getId()}`).json()); + get() { + const post = await (await fetch(`https://my-blog-server/${this.getId()}`).json()); for (let comment of post.comments) { await Comment.put(comment, this); / save this comment as part of our current context and transaction } diff --git a/docs/developers/applications/define-routes.md b/docs/developers/applications/define-routes.md index 3438f300..b41615c7 100644 --- a/docs/developers/applications/define-routes.md +++ b/docs/developers/applications/define-routes.md @@ -4,14 +4,14 @@ title: Define Fastify Routes # Define Fastify Routes -Harper’s applications provide an extension for loading [Fastify](https:/www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. +Harper’s applications provide an extension for loading [Fastify](https://www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. -The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https:/github.com/HarperDB/application-template)): +The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https://github.com/HarperDB/application-template)): ```yaml fastifyRoutes: # This loads files that define fastify routes using fastify's auto-loader files: routes/*.js # specify the location of route definition modules - path: . # relative to the app-name, like http:/server/app-name/route-name + path: . # relative to the app-name, like https://server/app-name/route-name ``` By default, route URLs are configured to be: diff --git a/docs/developers/applications/defining-schemas.md b/docs/developers/applications/defining-schemas.md index 5337603b..85d3b612 100644 --- a/docs/developers/applications/defining-schemas.md +++ b/docs/developers/applications/defining-schemas.md @@ -6,7 +6,7 @@ title: Defining Schemas Schemas define tables and their attributes. Schemas can be declaratively defined in Harper's using GraphQL schema definitions. Schemas definitions can be used to ensure that tables exist (that are required for applications), and have the appropriate attributes. Schemas can define the primary key, data types for attributes, if they are required, and specify which attributes should be indexed. The [introduction to applications provides](./) a helpful introduction to how to use schemas as part of database application development. -Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https:/graphql.org/learn/schema/). +Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https://graphql.org/learn/schema/). An example schema that defines a couple tables might look like: @@ -163,7 +163,7 @@ type Product @table { } ``` -For more in-depth information on computed properties, visit our blog [here](https:/www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) +For more in-depth information on computed properties, visit our blog [here](https://www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) ### Field Directives @@ -250,7 +250,7 @@ Harper supports the following field types in addition to user defined (object) t - `String`: String/text - `Int`: A 32-bit signed integer (from -2147483648 to 2147483647) - `Long`: A 54-bit signed integer (from -9007199254740992 to 9007199254740992) -- `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision_floating-point_format). Note that all numbers are stored in the most compact representation available) +- `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision_floating-point_format). Note that all numbers are stored in the most compact representation available) - `BigInt`: Any integer (negative or positive) with less than 300 digits (Note that `BigInt` is a distinct and separate type from standard numbers in JavaScript, so custom code should handle this type appropriately) - `Boolean`: true or false - `ID`: A string (but indicates it is not intended to be human readable) @@ -265,7 +265,7 @@ It is important to note that Harper does not currently support renaming tables. ### OpenAPI Specification -_The_ [_OpenAPI Specification_](https:/spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ +_The_ [_OpenAPI Specification_](https://spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ If a set of endpoints are configured through a Harper GraphQL schema, those endpoints can be described by using a default REST endpoint called `GET /openapi`. diff --git a/docs/developers/applications/example-projects.md b/docs/developers/applications/example-projects.md index 51231c31..3c2342a3 100644 --- a/docs/developers/applications/example-projects.md +++ b/docs/developers/applications/example-projects.md @@ -6,32 +6,32 @@ title: Example Projects **Library of example Harper applications and components:** -- [Authorization in Harper using Okta Customer Identity Cloud](https:/www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang +- [Authorization in Harper using Okta Customer Identity Cloud](https://www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang -- [How to Speed Up your Applications by Caching at the Edge with Harper](https:/dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams +- [How to Speed Up your Applications by Caching at the Edge with Harper](https://dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams -- [OAuth Authentication in Harper using Auth0 & Node.js](https:/www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos +- [OAuth Authentication in Harper using Auth0 & Node.js](https://www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos -- [How To Create a CRUD API with Next.js & Harper Custom Functions](https:/www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock +- [How To Create a CRUD API with Next.js & Harper Custom Functions](https://www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock -- [Build a Dynamic REST API with Custom Functions](https:/harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush +- [Build a Dynamic REST API with Custom Functions](https://harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush -- [How to use Harper Custom Functions to Build your Entire Backend](https:/dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden +- [How to use Harper Custom Functions to Build your Entire Backend](https://dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden -- [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https:/harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft +- [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https://harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft -- [Build & Deploy a Fitness App with Python & Harper](https:/www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber +- [Build & Deploy a Fitness App with Python & Harper](https://www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber -- [Create a Discord Slash Bot using Harper Custom Functions](https:/geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty +- [Create a Discord Slash Bot using Harper Custom Functions](https://geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty -- [How I used Harper Custom Functions to Build a Web App for my Newsletter](https:/blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj +- [How I used Harper Custom Functions to Build a Web App for my Newsletter](https://blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj -- [How I used Harper Custom Functions and Recharts to create Dashboard](https:/blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary +- [How I used Harper Custom Functions and Recharts to create Dashboard](https://blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary -- [How To Use Harper Custom Functions With Your React App](https:/dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi +- [How To Use Harper Custom Functions With Your React App](https://dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi -- [Build a Web App Using Harper’s Custom Functions](https:/www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp +- [Build a Web App Using Harper’s Custom Functions](https://www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp -- [How to Web Scrape Using Python, Snscrape & Custom Functions](https:/hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David +- [How to Web Scrape Using Python, Snscrape & Custom Functions](https://hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David -- [What’s the Big Deal w/ Custom Functions](https:/rss.com/podcasts/harperdb-select-star/278933/), Select\* Podcast +- [What’s the Big Deal w/ Custom Functions](https://rss.com/podcasts/harperdb-select-star/278933/), Select\* Podcast diff --git a/docs/developers/applications/index.md b/docs/developers/applications/index.md index 2549639f..b3844498 100644 --- a/docs/developers/applications/index.md +++ b/docs/developers/applications/index.md @@ -8,7 +8,7 @@ Harper is more than a database, it's a distributed clustering platform allowing In this guide, we are going to explore the evermore extensible architecture that Harper provides by building a Harper application, a fundamental building-block of the Harper ecosystem. -When working through this guide, we recommend you use the [Harper Application Template](https:/github.com/HarperDB/application-template) repo as a reference. +When working through this guide, we recommend you use the [Harper Application Template](https://github.com/HarperDB/application-template) repo as a reference. Before we get started, let's clarify some terminology that is used throughout the documentation. @@ -22,7 +22,7 @@ Before we get started, let's clarify some terminology that is used throughout th All together, the support for implementing a feature is the extension, and the actual implementation of the feature is the application. -Extensions can also depend on other extensions. For example, the [`@harperdb/apollo`](https:/github.com/HarperDB/apollo) extension depends on the built-in `graphqlSchema` extension to create a cache table for Apollo queries. Applications can then use the `@harperdb/apollo` extension to implement an Apollo GraphQL backend server. +Extensions can also depend on other extensions. For example, the [`@harperdb/apollo`](https://github.com/HarperDB/apollo) extension depends on the built-in `graphqlSchema` extension to create a cache table for Apollo queries. Applications can then use the `@harperdb/apollo` extension to implement an Apollo GraphQL backend server. ```mermaid flowchart TD @@ -71,7 +71,7 @@ flowchart TD Beyond applications and extensions, components are further classified as built-in or custom. **Built-in** components are included with Harper by default and can be directly referenced by their name. The `graphqlSchema`, `rest`, and `jsResource` extensions used in the previous application example are all examples of built-in extensions. **Custom** components must use external references, generally npm or GitHub packages, and are often included as dependencies within the `package.json` of the component. -> Harper maintains a number of custom components that are available on `npm` and `GitHub`, such as the [`@harperdb/nextjs`](https:/github.com/HarperDB/nextjs) extension or the [`@harperdb/status-check`](https:/github.com/HarperDB/status-check) application. +> Harper maintains a number of custom components that are available on `npm` and `GitHub`, such as the [`@harperdb/nextjs`](https://github.com/HarperDB/nextjs) extension or the [`@harperdb/status-check`](https://github.com/HarperDB/status-check) application. Harper does not currently include any built-in applications, making "custom applications" a bit redundant. Generally, we just say "application". However, there is a multitude of both built-in and custom extensions, and so the documentation refers to them as such. A complete list of built-in extensions is available in the [Built-In Extensions](../../technical-details/reference/components/built-in-extensions) documentation page, and the list of custom extensions and applications is available below. @@ -202,7 +202,7 @@ const { Breed } = tables; / our Breed table class BreedSource extends Resource { / define a data source async get(target) { - return (await fetch(`http:/best-dog-site.com/${target}`)).json(); + return (await fetch(`https://best-dog-site.com/${target}`)).json(); } } / define that our breed table is a cache of data from the data source above, with a specified expiration diff --git a/docs/developers/applications/web-applications.md b/docs/developers/applications/web-applications.md index c49596b3..02fd1893 100644 --- a/docs/developers/applications/web-applications.md +++ b/docs/developers/applications/web-applications.md @@ -22,11 +22,11 @@ using popular frameworks is a simple and straightforward process. Get started today with one of our examples: -- [Next.js](https:/github.com/HarperDB/nextjs-example) -- [React SSR](https:/github.com/HarperDB/react-ssr-example) -- [Vue SSR](https:/github.com/HarperDB/vue-ssr-example) -- [Svelte SSR](https:/github.com/HarperDB/svelte-ssr-example) -- [Solid SSR](https:/github.com/HarperDB/solid-ssr-example) +- [Next.js](https://github.com/HarperDB/nextjs-example) +- [React SSR](https://github.com/HarperDB/react-ssr-example) +- [Vue SSR](https://github.com/HarperDB/vue-ssr-example) +- [Svelte SSR](https://github.com/HarperDB/svelte-ssr-example) +- [Solid SSR](https://github.com/HarperDB/solid-ssr-example) ## Cookie Support @@ -59,5 +59,5 @@ Harper includes built-in support for Cross-Origin Resource Sharing (CORS), which Make sure to check out our developer videos too: -- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https:/youtu.be/GqLEwteFJYY) -- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https:/youtu.be/L-tnBNhO9Fc) +- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https://youtu.be/GqLEwteFJYY) +- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https://youtu.be/L-tnBNhO9Fc) diff --git a/docs/developers/miscellaneous/google-data-studio.md b/docs/developers/miscellaneous/google-data-studio.md index b29af70e..730ee1bd 100644 --- a/docs/developers/miscellaneous/google-data-studio.md +++ b/docs/developers/miscellaneous/google-data-studio.md @@ -4,9 +4,9 @@ title: Google Data Studio # Google Data Studio -[Google Data Studio](https:/datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. +[Google Data Studio](https://datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. -The Harper Google Data Studio Connector is subject to our [Terms of Use](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https:/harperdb.io/legal/privacy-policy/). +The Harper Google Data Studio Connector is subject to our [Terms of Use](https://harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https://harperdb.io/legal/privacy-policy/). ## Requirements @@ -14,13 +14,13 @@ The Harper database must be accessible through the Internet in order for Google ## Get Started -Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https:/datastudio.google.com/u/0/datasources/create). +Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https://datastudio.google.com/u/0/datasources/create). -1. Log in to https:/datastudio.google.com/. -1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https:/datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). +1. Log in to https://datastudio.google.com/. +1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https://datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). 1. Authorize the connector to access other servers on your behalf (this allows the connector to contact your database). 1. Enter the Web URL to access your database (preferably with HTTPS), as well as the Basic Auth key you use to access the database. Just include the key, not the word “Basic” at the start of it. -1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:/ will do the same thing, if you prefer. +1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:// will do the same thing, if you prefer. 1. Check the box for “Allow Bad Certs” if your Harper instance does not have a valid SSL certificate. [Harper Cloud](../../deployments/harper-cloud/) always has valid certificates, and so will never require this to be checked. Instances you set up yourself may require this, if you are using self-signed certs. If you are using [Harper Cloud](../../deployments/harper-cloud/) or another instance you know should always have valid SSL certificates, do not check this box. 1. Choose your Query Type. This determines what information the configuration will ask for after pressing the Next button. - Table will ask you for a Schema and a Table to return all fields of using `SELECT *`. diff --git a/docs/developers/miscellaneous/sdks.md b/docs/developers/miscellaneous/sdks.md index d64e19ce..20c066ce 100644 --- a/docs/developers/miscellaneous/sdks.md +++ b/docs/developers/miscellaneous/sdks.md @@ -9,14 +9,14 @@ description: >- | SDK/Tool | Description | Installation | | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | -| [HarperDB.NET.Client](https:/www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | -| [Websocket Client](https:/www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | -| [Gatsby HarperDB Source](https:/www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | -| [HarperDB.EntityFrameworkCore](https:/www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | -| [Python SDK](https:/pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | -| [HarperDB Flutter SDK](https:/github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | -| [React Hook](https:/www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | -| [Node Red Node](https:/flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | -| [NodeJS SDK](https:/www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | -| [HarperDB Cargo Crate](https:/crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | -| [HarperDB Go SDK](https:/github.com/HarperDB/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB/sdk-go` | +| [HarperDB.NET.Client](https://www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | +| [Websocket Client](https://www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | +| [Gatsby HarperDB Source](https://www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | +| [HarperDB.EntityFrameworkCore](https://www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | +| [Python SDK](https://pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | +| [HarperDB Flutter SDK](https://github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | +| [React Hook](https://www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | +| [Node Red Node](https://flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | +| [NodeJS SDK](https://www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | +| [HarperDB Cargo Crate](https://crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | +| [HarperDB Go SDK](https://github.com/HarperDB/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB/sdk-go` | diff --git a/docs/developers/operations-api/advanced-json-sql-examples.md b/docs/developers/operations-api/advanced-json-sql-examples.md index 58116884..9613d0fb 100644 --- a/docs/developers/operations-api/advanced-json-sql-examples.md +++ b/docs/developers/operations-api/advanced-json-sql-examples.md @@ -90,7 +90,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo "operation": "csv_url_load", "database": "movies", "table": "movie", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" } ``` @@ -98,7 +98,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo ```json { - "message": "Starting job with id 1889eee4-23c1-4945-9bb7-c805fc20726c" + "message": "Starting job with id 1889eee4-23c1-4945-9bb7-c805fc20726c" } ``` @@ -112,10 +112,10 @@ Inserts data from a hosted CSV file into the "credits" table using the 'csv_url_ ```json { - "operation": "csv_url_load", - "database": "movies", - "table": "credits", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" + "operation": "csv_url_load", + "database": "movies", + "table": "credits", + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" } ``` diff --git a/docs/developers/operations-api/bulk-operations.md b/docs/developers/operations-api/bulk-operations.md index 51801438..95a962f6 100644 --- a/docs/developers/operations-api/bulk-operations.md +++ b/docs/developers/operations-api/bulk-operations.md @@ -56,7 +56,7 @@ Ingests CSV data, provided directly in the operation as an `insert`, `update` or "database": "dev", "action": "insert", "table": "breed", - "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" + "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" } ``` @@ -124,7 +124,7 @@ Ingests CSV data, provided via URL, as an `insert`, `update` or `upsert` into th "action": "insert", "database": "dev", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/docs/developers/operations-api/clustering.md b/docs/developers/operations-api/clustering.md index 26cd785f..8a03b47e 100644 --- a/docs/developers/operations-api/clustering.md +++ b/docs/developers/operations-api/clustering.md @@ -151,7 +151,7 @@ _Operation is restricted to super_user roles only_ { "replicateByDefault": true, "replicates": true, - "url": "wss:/server-2.domain.com:9933", + "url": "wss://server-2.domain.com:9933", "name": "server-2.domain.com", "subscriptions": null, "database_sockets": [ @@ -260,12 +260,12 @@ _Operation is restricted to super_user roles only_ { "operation": "cluster_set_routes", "routes": [ - "wss:/server-two:9925", - { - "hostname": "server-three", - "port": 9930 - } - ] + "wss://server-two:9925", + { + "hostname": "server-three", + "port": 9930 + } + ] } ``` @@ -273,15 +273,15 @@ _Operation is restricted to super_user roles only_ ```json { - "message": "cluster routes successfully set", - "set": [ - "wss:/server-two:9925", - { - "hostname": "server-three", - "port": 9930 - } - ], - "skipped": [] + "message": "cluster routes successfully set", + "set": [ + "wss://server-two:9925", + { + "hostname": "server-three", + "port": 9930 + } + ], + "skipped": [] } ``` @@ -299,7 +299,7 @@ _Operation is restricted to super_user roles only_ ```json { - "operation": "cluster_get_routes" + "operation": "cluster_get_routes" } ``` @@ -307,7 +307,7 @@ _Operation is restricted to super_user roles only_ ```json [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 diff --git a/docs/developers/operations-api/components.md b/docs/developers/operations-api/components.md index 6c3809ae..679a5c50 100644 --- a/docs/developers/operations-api/components.md +++ b/docs/developers/operations-api/components.md @@ -39,10 +39,10 @@ Will deploy a component using either a base64-encoded string representation of a If deploying with the `payload` option, Harper will decrypt the base64-encoded string, reconstitute the .tar file of your project folder, and extract it to the component root project directory. -If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https:/docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: +If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: ``` -https:/github.com/HarperDB/application-template#semver:v1.0.0 +https://github.com/HarperDB/application-template#semver:v1.0.0 ``` or this can be shortened to: @@ -60,16 +60,16 @@ git+ssh:/git@github.com:my-org/my-app.git#semver:v1.0.0 Or you can use a Github token: ``` -https:/@github.com/my-org/my-app#semver:v1.0.0 +https://@github.com/my-org/my-app#semver:v1.0.0 ``` Or you can use a GitLab Project Access Token: ``` -https:/my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 +https://my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 ``` -Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https:/docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). +Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https://docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). _Note: After deploying a component a restart may be required_ @@ -531,7 +531,7 @@ _Operation is restricted to super_user roles only_ - operation _(required)_ - must always be `install_node_modules` - projects _(required)_ - must ba an array of custom functions projects. -- dry*run *(optional)\_ - refers to the npm --dry-run flag: [https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. +- dry*run*(optional)\_ - refers to the npm --dry-run flag: [https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. ### Body diff --git a/docs/developers/operations-api/configuration.md b/docs/developers/operations-api/configuration.md index c48381ab..98686029 100644 --- a/docs/developers/operations-api/configuration.md +++ b/docs/developers/operations-api/configuration.md @@ -77,7 +77,7 @@ _Operation is restricted to super_user roles only_ "hostname": "node1", "databases": "*", "routes": null, - "url": "wss:/127.0.0.1:9925" + "url": "wss://127.0.0.1:9925" }, "componentsRoot": "/Users/hdb/components", "localStudio": { diff --git a/docs/developers/operations-api/custom-functions.md b/docs/developers/operations-api/custom-functions.md index ed31785a..0b2261e0 100644 --- a/docs/developers/operations-api/custom-functions.md +++ b/docs/developers/operations-api/custom-functions.md @@ -164,7 +164,7 @@ _Operation is restricted to super_user roles only_ ## Add Custom Function Project -Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. +Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). _Operation is restricted to super_user roles only_ diff --git a/docs/developers/operations-api/index.md b/docs/developers/operations-api/index.md index 1c2fb3ab..abaa360d 100644 --- a/docs/developers/operations-api/index.md +++ b/docs/developers/operations-api/index.md @@ -7,7 +7,7 @@ title: Operations API The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling Harper. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../../deployments/configuration#operationsapi), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](../security/basic-auth) or [JWT authentication](../security/jwt-auth). For example, a request to create a table would be performed as: ```http -POST http:/my-harperdb-server:9925/ +POST https://my-harperdb-server:9925/ Authorization: Basic YourBase64EncodedInstanceUser:Pass Content-Type: application/json @@ -38,14 +38,14 @@ The operations API reference is available below and categorized by topic: * [Advanced JSON SQL Examples](advanced-json-sql-examples) * [Analytics](analytics) -• [Past Release API Documentation](https:/olddocs.harperdb.io) +• [Past Release API Documentation](https://olddocs.harperdb.io) ## More Examples Here is an example of using `curl` to make an operations API request: ```bash -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ diff --git a/docs/developers/operations-api/quickstart-examples.md b/docs/developers/operations-api/quickstart-examples.md index 9d60c002..93660289 100644 --- a/docs/developers/operations-api/quickstart-examples.md +++ b/docs/developers/operations-api/quickstart-examples.md @@ -234,15 +234,15 @@ Let's add some more Harper doggies! We can add as many dog objects as we want in We need to populate the 'breed' table with some data so we can reference it later. For larger data sets, we recommend using our CSV upload option. -Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: https:/s3.amazonaws.com/complimentarydata/breeds.csv +Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: [https://s3.amazonaws.com/complimentarydata/breeds.csv](https://s3.amazonaws.com/complimentarydata/breeds.csv) ### Body ```json { - "operation": "csv_url_load", - "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "operation": "csv_url_load", + "table": "breed", + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/docs/developers/real-time.md b/docs/developers/real-time.md index 03853ae6..1c1ed269 100644 --- a/docs/developers/real-time.md +++ b/docs/developers/real-time.md @@ -91,10 +91,10 @@ Non-retained messages are generally a good choice for applications like chat, wh ### WebSockets -WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss:/server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: +WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss://server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: ```javascript -let ws = new WebSocket('wss:/server/my-resource/341'); +let ws = new WebSocket('wss://server/my-resource/341'); ws.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); @@ -139,7 +139,7 @@ export class Example extends Resource { Server Sent Events (SSE) are also supported through the REST server interface, and provide a simple and efficient mechanism for web-based applications to receive real-time updates. For consistency of push delivery, SSE connections go through the `connect()` method on resources, much like WebSockets. The primary difference is that `connect` is called without any `incomingMessages` argument, since SSE is a one-directional transport mechanism. This can be used much like WebSockets, specifying a resource URL path will connect to that resource, and by default provides a stream of messages for changes and messages for that resource. For example, you can connect to receive notification in a browser for a resource like: ```javascript -let eventSource = new EventSource('https:/server/my-resource/341', { withCredentials: true }); +let eventSource = new EventSource('https://server/my-resource/341', { withCredentials: true }); eventSource.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); diff --git a/docs/developers/replication/index.md b/docs/developers/replication/index.md index 6f30c72c..232d8f60 100644 --- a/docs/developers/replication/index.md +++ b/docs/developers/replication/index.md @@ -28,7 +28,7 @@ In this example, the current node is `server-one`, and it will connect to `serve replication: hostname: server-one routes: - - wss:/server-two:9933 # URL based route + - wss://server-two:9933 # URL based route - hostname: server-three # define a hostname and port port: 9933 ``` @@ -44,7 +44,7 @@ You can also use the [operations API](../operations-api/clustering) to dynamical These operations will also dynamically generating certificates as needed, if there are no existing signed certificates, or if the existing certificates are not valid for the new node. -Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https:/highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). +Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https://highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). By default, Harper will replicate all the data in all the databases. You can configure which databases are replicated, and then override this behavior on a per-table basis. For example, you can indicate which databases should be replicated by default, here indicating you want to replicate the `data` and `system` databases: diff --git a/docs/developers/rest.md b/docs/developers/rest.md index a88febcc..76a118d7 100644 --- a/docs/developers/rest.md +++ b/docs/developers/rest.md @@ -107,7 +107,7 @@ GET /my-resource/?property=value&property2=another-value Note that only one of the attributes needs to be indexed for this query to execute. -We can also specify different comparators such as less than and greater than queries using [FIQL](https:/datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: +We can also specify different comparators such as less than and greater than queries using [FIQL](https://datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: ```http GET /my-resource/?age=gt=20 diff --git a/docs/developers/security/basic-auth.md b/docs/developers/security/basic-auth.md index 6e3dac3a..5a04f8ef 100644 --- a/docs/developers/security/basic-auth.md +++ b/docs/developers/security/basic-auth.md @@ -14,7 +14,7 @@ A header is added to each HTTP request. The header key is **“Authorization”* In the below code sample, you can see where we add the authorization header to the request. This needs to be added for each and every HTTP request for Harper. -_Note: This function uses btoa. Learn about_ [_btoa here_](https:/developer.mozilla.org/en-US/docs/Web/API/btoa)_._ +_Note: This function uses btoa. Learn about_ [_btoa here_](https://developer.mozilla.org/en-US/docs/Web/API/btoa)_._ ```javascript function callHarperDB(call_object, operation, callback) { diff --git a/docs/developers/security/certificate-management.md b/docs/developers/security/certificate-management.md index fdc8cc22..bb27577b 100644 --- a/docs/developers/security/certificate-management.md +++ b/docs/developers/security/certificate-management.md @@ -61,7 +61,7 @@ Instead of enabling HTTPS for Harper, Nginx can be used as a reverse proxy for H Install Nginx, configure Nginx to use certificates issued from your own CA or a public CA, then configure Nginx to listen for HTTPS requests and forward to Harper as HTTP requests. -[Certbot](https:/certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. +[Certbot](https://certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. ### Option: External Reverse Proxy diff --git a/docs/developers/security/configuration.md b/docs/developers/security/configuration.md index de30868c..2dee9d86 100644 --- a/docs/developers/security/configuration.md +++ b/docs/developers/security/configuration.md @@ -8,7 +8,7 @@ Harper was set up to require very minimal configuration to work out of the box. ## CORS -Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: +Harper allows for managing [cross-origin HTTP requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: 1. Open the harperdb-config.yaml file, which can be found in \, the location you specified during install. 1. In harperdb-config.yaml there should be 2 entries under `operationsApi.network`: cors and corsAccessList. @@ -19,7 +19,7 @@ Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla 1. The `corsAccessList` will only be recognized by the system when `cors` is `true` 1. To create an access list you set `corsAccessList` to a comma-separated list of domains. - i.e. `corsAccessList` is `http:/harpersystems.dev,http:/products.harpersystems.dev` + i.e. `corsAccessList` is `https://harpersystems.dev,https://products.harpersystems.dev` 1. To clear out the access list and allow all domains: `corsAccessList` is `[null]` diff --git a/docs/developers/security/jwt-auth.md b/docs/developers/security/jwt-auth.md index 570de46d..0ea7290f 100644 --- a/docs/developers/security/jwt-auth.md +++ b/docs/developers/security/jwt-auth.md @@ -93,4 +93,4 @@ Token timeouts are configurable in [harperdb-config.yaml](../../deployments/conf - `operationsApi.authentication.operationTokenTimeout`: Defines the length of time until the operation_token expires (default 1d). - `operationsApi.authentication.refreshTokenTimeout`: Defines the length of time until the refresh_token expires (default 30d). -A full list of valid values for both parameters can be found [here](https:/github.com/vercel/ms). +A full list of valid values for both parameters can be found [here](https://github.com/vercel/ms). diff --git a/docs/developers/sql-guide/date-functions.md b/docs/developers/sql-guide/date-functions.md index 0133e089..d44917c3 100644 --- a/docs/developers/sql-guide/date-functions.md +++ b/docs/developers/sql-guide/date-functions.md @@ -8,9 +8,9 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Date Functions -Harper utilizes [Coordinated Universal Time (UTC)](https:/en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. +Harper utilizes [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. -When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https:/en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https:/tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. +When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https://tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. ### CURRENT_DATE() @@ -121,7 +121,7 @@ AS date_diff_result" returns ### DATE_FORMAT(date, format) -Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https:/momentjs.com/docs/#/displaying/format/). +Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https://momentjs.com/docs/#/displaying/format/). ``` "SELECT DATE_FORMAT(1524412627973, 'YYYY-MM-DD HH:mm:ss') diff --git a/docs/developers/sql-guide/functions.md b/docs/developers/sql-guide/functions.md index bf5fd219..0847a657 100644 --- a/docs/developers/sql-guide/functions.md +++ b/docs/developers/sql-guide/functions.md @@ -25,7 +25,7 @@ This SQL keywords reference contains the SQL functions available in Harper. | ARRAY\* | ARRAY(_expression_) | Returns a list of data as a field. | | DISTINCT_ARRAY\* | DISTINCT*ARRAY(\_expression*) | When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set. | -\*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https:/www.harperdb.io/post/sql-queries-to-complex-objects). +\*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https://www.harperdb.io/post/sql-queries-to-complex-objects). ### Conversion diff --git a/docs/developers/sql-guide/json-search.md b/docs/developers/sql-guide/json-search.md index b078baa7..13bd3b90 100644 --- a/docs/developers/sql-guide/json-search.md +++ b/docs/developers/sql-guide/json-search.md @@ -8,7 +8,7 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL JSON Search -Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH_JSON. The SEARCH_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](http:/docs.jsonata.org/overview.html) into our SQL engine. +Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH_JSON. The SEARCH_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](https://docs.jsonata.org/overview.html) into our SQL engine. ## Syntax @@ -174,4 +174,4 @@ As seen above we execute the same name filter against the cast array, the primar To see further SEARCH_JSON examples in action view our Postman Collection that provides a [sample database & data with query examples](../operations-api/advanced-json-sql-examples). -To learn more about how to build expressions check out the JSONata documentation: [http:/docs.jsonata.org/overview](http:/docs.jsonata.org/overview) +To learn more about how to build expressions check out the JSONata documentation: [https://docs.jsonata.org/overview](https://docs.jsonata.org/overview) diff --git a/docs/developers/sql-guide/sql-geospatial-functions.md b/docs/developers/sql-guide/sql-geospatial-functions.md index e00986f3..f0c571da 100644 --- a/docs/developers/sql-guide/sql-geospatial-functions.md +++ b/docs/developers/sql-guide/sql-geospatial-functions.md @@ -8,9 +8,9 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Geospatial Functions -Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](http:/geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. +Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](https://geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. -If you are new to GeoJSON you should check out the full specification here: http:/geojson.org/. There are a few important things to point out before getting started. +If you are new to GeoJSON you should check out the full specification here: https://geojson.org/. There are a few important things to point out before getting started. 1. All GeoJSON coordinates are stored in `[longitude, latitude]` format. 1. Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. @@ -303,7 +303,7 @@ WHERE geoContains(geo_data, '{ # geoEqual -Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https:/developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. +Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https://developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. ## Syntax diff --git a/docs/getting-started/first-harper-app.md b/docs/getting-started/first-harper-app.md index d1f52b47..6acc7b93 100644 --- a/docs/getting-started/first-harper-app.md +++ b/docs/getting-started/first-harper-app.md @@ -11,7 +11,7 @@ Now that you've set up Harper, let's build a simple API. Harper lets you build p Start by cloning the Harper application template: ```bash -git clone https:/github.com/HarperDB/application-template my-app +git clone https://github.com/HarperDB/application-template my-app cd my-app ``` @@ -19,7 +19,7 @@ cd my-app The core of a Harper application is the database, so let's create a database table. -A quick and expressive way to define a table is through a [GraphQL Schema](https:/graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): +A quick and expressive way to define a table is through a [GraphQL Schema](https://graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): ```graphql type Dog @table { @@ -126,7 +126,7 @@ If-None-Match: "etag-id" # browsers can automatically provide this ## Querying -Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../developers/rest). Simple queries can be crafted through [URL query parameters](https:/en.wikipedia.org/wiki/Query_string). +Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../developers/rest). Simple queries can be crafted through [URL query parameters](https://en.wikipedia.org/wiki/Query_string). In order to maintain reasonable query speed on a database as it grows in size, it is critical to select and establish the proper indexes. So, before we add the `@export` declaration to our `Dog` table and begin querying it, let's take a moment to target some table properties for indexing. We'll use `name` and `breed` as indexed table properties on our `Dog` table. All we need to do to accomplish this is tag these properties with the `@indexed` directive: diff --git a/docs/getting-started/harper-concepts.md b/docs/getting-started/harper-concepts.md index 87734062..c42f2fe9 100644 --- a/docs/getting-started/harper-concepts.md +++ b/docs/getting-started/harper-concepts.md @@ -10,11 +10,11 @@ As you begin your journey with Harper, there are a few concepts and definitions Harper components are a core Harper concept defined as flexible JavaScript based extensions of the highly extensible core Harper platform. They are executed by Harper directly and have complete access to the Harper [Global APIs](../technical-details/reference/globals) (such as Resource, databases, and tables). -A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../developers/applications/) is a component that uses many other components. The [application template](https:/github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as [rest](../technical-details/reference/components/built-in-extensions#rest) (for automatic REST endpoint generation), [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) (for table schema definitions), and many more. +A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../developers/applications/) is a component that uses many other components. The [application template](https://github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as [rest](../technical-details/reference/components/built-in-extensions#rest) (for automatic REST endpoint generation), [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) (for table schema definitions), and many more. ## Applications -Applications are a subset of components that cannot be used directly and must depend on other extensions. Examples include defining schemas (using [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) built-in extension), defining custom resources (using [jsResource](../technical-details/reference/components/built-in-extensions#jsresource) built-in extension), hosting static files (using [static](../technical-details/reference/components/built-in-extensions#static) built-in extension), enabling REST querying of resources (using [rest](../technical-details/reference/components/built-in-extensions#rest) built-in extension), and running [Next.js](https:/github.com/HarperDB/nextjs), [Astro](https:/github.com/HarperDB/astro), or [Apollo](https:/github.com/HarperDB/apollo) applications through their respective extensions. +Applications are a subset of components that cannot be used directly and must depend on other extensions. Examples include defining schemas (using [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) built-in extension), defining custom resources (using [jsResource](../technical-details/reference/components/built-in-extensions#jsresource) built-in extension), hosting static files (using [static](../technical-details/reference/components/built-in-extensions#static) built-in extension), enabling REST querying of resources (using [rest](../technical-details/reference/components/built-in-extensions#rest) built-in extension), and running [Next.js](https://github.com/HarperDB/nextjs), [Astro](https://github.com/HarperDB/astro), or [Apollo](https://github.com/HarperDB/apollo) applications through their respective extensions. ## Resources diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 841ff062..8767f331 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -8,7 +8,7 @@ If you're new to Harper, this section will guide you through the essential resou Follow the steps in this documentation to discover how Harper can simplify your backend stack, eliminate many inter-process communication delays, and achieve a more predictable and performant application experience. -For more advanced concepts in Harper, see our [blog](https:/www.harpersystems.dev/blog). +For more advanced concepts in Harper, see our [blog](https://www.harpersystems.dev/blog). ## Harper Basics diff --git a/docs/getting-started/install-harper.md b/docs/getting-started/install-harper.md index be315672..8786d674 100644 --- a/docs/getting-started/install-harper.md +++ b/docs/getting-started/install-harper.md @@ -8,7 +8,7 @@ There are three ways to install a Harper instance: using a package manager like ## Installing via NPM -Before you begin, ensure you have [Node.js](https:/nodejs.org/) LTS version or newer. Node.js comes with npm, which will be used to install Harper. +Before you begin, ensure you have [Node.js](https://nodejs.org/) LTS version or newer. Node.js comes with npm, which will be used to install Harper. Open your terminal or command prompt and install Harper globally by executing the command below. Installing globally allows the `harperdb` command to be accessible from anywhere on your machine, making it easier to manage multiple projects. @@ -28,7 +28,7 @@ At this point, your local Harper instance is up and running, giving you the abil ## Installing via Docker -Using Docker to run Harper is an efficient way to manage a containerized instance that encapsulates all of Harper’s functionality. First, ensure that Docker is installed and running on your system. If it isn’t, download it from the [official Docker website](https:/docs.docker.com/engine/install/) and complete the installation process. +Using Docker to run Harper is an efficient way to manage a containerized instance that encapsulates all of Harper’s functionality. First, ensure that Docker is installed and running on your system. If it isn’t, download it from the [official Docker website](https://docs.docker.com/engine/install/) and complete the installation process. Next, open your terminal and pull the latest Harper image by running the following command: @@ -46,7 +46,7 @@ In this command, the `-d` flag runs the container in detached mode, allowing it ### How to Use this Image -[Harper configuration settings⁠](https:/harperdb.io/docs/reference/configuration-file/) can be passed as Docker run environment variables. If no environment variables are provided, Harper will operate with default configuration settings, such as: +[Harper configuration settings⁠](https://harperdb.io/docs/reference/configuration-file/) can be passed as Docker run environment variables. If no environment variables are provided, Harper will operate with default configuration settings, such as: - ROOTPATH=/home/harperdb/hdb - OPERATIONSAPI_NETWORK_PORT=9925 @@ -127,7 +127,7 @@ Once verified, you can access your Harper instance by opening your web browser a ### Raw binary installation -There's a different way to install Harper. You can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM). Click [this link](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) to download and install the package. Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: +There's a different way to install Harper. You can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM). Click [this link](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) to download and install the package. Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: ```bash npm install -g harperdb-X.X.X.tgz harperdb install diff --git a/docs/getting-started/what-is-harper.md b/docs/getting-started/what-is-harper.md index 7557b468..b69edaa2 100644 --- a/docs/getting-started/what-is-harper.md +++ b/docs/getting-started/what-is-harper.md @@ -5,7 +5,7 @@ title: What is Harper # What is Harper :::info -[Connect with our team!](https:/www.harpersystems.dev/contact) +[Connect with our team!](https://www.harpersystems.dev/contact) ::: ## What is Harper? Performance, Simplicity, and Scale. @@ -24,7 +24,7 @@ What we realized is that networking systems together in this way is inefficient ## Build With Harper -Start by running Harper locally with [npm](https:/www.npmjs.com/package/harperdb) or [Docker](https:/hub.docker.com/r/harperdb/harperdb). +Start by running Harper locally with [npm](https://www.npmjs.com/package/harperdb) or [Docker](https://hub.docker.com/r/harperdb/harperdb). Since technology tends to be built around the storage, processing, and transfer of data, start by [defining your schema](../developers/applications/#creating-our-first-table) with the `schema.graphql` file in the root of the application directory. @@ -37,7 +37,7 @@ Finally, when it’s time to deploy, explore [replication](../developers/replica If you would like to jump into the most advanced capabilities, learn about [components](../technical-details/reference/components/). :::warning -Need help? Please don’t hesitate to [reach out](https:/www.harpersystems.dev/contact). +Need help? Please don’t hesitate to [reach out](https://www.harpersystems.dev/contact). ::: ## Popular Use Cases @@ -46,7 +46,7 @@ With so much functionality built in, the use cases span nearly all application s ### Online Catalogs & Content Delivery -For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https:/github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https:/www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. +For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https://github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https://www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. ### Data Delivery Networks @@ -56,4 +56,4 @@ For use cases like real-time sports updates, flight tracking, and zero-day softw Capturing, storing, and processing real-time data streams from client and IoT systems typically requires a stack of technology. Harper’s selective data replication and self-healing connections make for an ideal multi-tier system where edge and cloud systems both run Harper, making everything more performant. -[We’re happy](https:/www.harpersystems.dev/contact) to walk you through how to do this. +[We’re happy](https://www.harpersystems.dev/contact) to walk you through how to do this. diff --git a/docs/index.md b/docs/index.md index 98e5f5d0..fb357f64 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,7 +5,7 @@ title: Harper Docs # Harper Docs :::info -[Connect with our team!](https:/www.harpersystems.dev/contact) +[Connect with our team!](https://www.harpersystems.dev/contact) ::: Welcome to the Harper Documentation! Here, you'll find all things Harper, and everything you need to get started, troubleshoot issues, and make the most of our platform. diff --git a/docs/technical-details/reference/blob.md b/docs/technical-details/reference/blob.md index c747fd28..9b8871bd 100644 --- a/docs/technical-details/reference/blob.md +++ b/docs/technical-details/reference/blob.md @@ -63,7 +63,7 @@ await blob.save(MyTable); await MyTable.put({ id: 'my-record', data: blob }); ``` -Note that this means that blobs are _not_ atomic or [ACID](https:/en.wikipedia.org/wiki/ACID) compliant; streaming functionality achieves the opposite behavior of ACID/atomic writes that would prevent access to data as it is being written. +Note that this means that blobs are _not_ atomic or [ACID](https://en.wikipedia.org/wiki/ACID) compliant; streaming functionality achieves the opposite behavior of ACID/atomic writes that would prevent access to data as it is being written. ### Error Handling diff --git a/docs/technical-details/reference/components/applications.md b/docs/technical-details/reference/components/applications.md index 524a7e08..31daf0e1 100644 --- a/docs/technical-details/reference/components/applications.md +++ b/docs/technical-details/reference/components/applications.md @@ -105,13 +105,13 @@ Unlike local development where `package` should be set to a local file path for A local application can be deployed to a remote instance by **omitting** the `package` field. Harper will automatically package the local directory and include that along with the rest of the deployment operation. -Furthermore, the `package` field can be set to any valid [npm dependency value](https:/docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). +Furthermore, the `package` field can be set to any valid [npm dependency value](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). - For applications deployed to npm, specify the package name: `package="@harperdb/status-check"` -- For applications on GitHub, specify the URL: `package="https:/github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` +- For applications on GitHub, specify the URL: `package="https://github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` - Private repositories also work if the correct SSH keys are on the server: `package="git+ssh:/git@github.com:HarperDB/secret-applications.git"` - Reference the [SSH Key](../../../developers/operations-api/components#add-ssh-key) operations for more information on managing SSH keys on a remote instance -- Even tarball URLs are supported: `package="https:/example.com/application.tar.gz"` +- Even tarball URLs are supported: `package="https://example.com/application.tar.gz"` > When using git tags, we highly recommend that you use the semver directive to ensure consistent and reliable installation by npm. In addition to tags, you can also reference branches or commit numbers. @@ -154,7 +154,7 @@ myTarBall: myLocal: package: /Users/harper/local # install from local path myWebsite: - package: https:/harperdb-component # install from URL + package: https://harperdb-component # install from URL ``` Harper will generate a `package.json` like: @@ -166,7 +166,7 @@ Harper will generate a `package.json` like: "myNPMComponent": "npm:harperdb", "myTarBall": "file:/Users/harper/cool-component.tar", "myLocal": "file:/Users/harper/local", - "myWebsite": "https:/harperdb-component" + "myWebsite": "https://harperdb-component" } } ``` diff --git a/docs/technical-details/reference/components/built-in-extensions.md b/docs/technical-details/reference/components/built-in-extensions.md index 150145bd..b583bc8a 100644 --- a/docs/technical-details/reference/components/built-in-extensions.md +++ b/docs/technical-details/reference/components/built-in-extensions.md @@ -41,7 +41,7 @@ dataLoader: ## fastifyRoutes -Specify custom endpoints using [Fastify](https:/fastify.dev/). +Specify custom endpoints using [Fastify](https://fastify.dev/). This component is a [Resource Extension](./extensions#resource-extension) and can be configured with the [`files` and `urlPath`](./extensions#resource-extension-configuration) configuration options. diff --git a/docs/technical-details/reference/components/configuration.md b/docs/technical-details/reference/components/configuration.md index 08fa4cc2..3e6108a0 100644 --- a/docs/technical-details/reference/components/configuration.md +++ b/docs/technical-details/reference/components/configuration.md @@ -46,7 +46,7 @@ Then, within `config.yaml` it can be enabled and configured using: # ... ``` -Since npm allows for a [variety of dependency configurations](https:/docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: +Since npm allows for a [variety of dependency configurations](https://docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: ```json { diff --git a/docs/technical-details/reference/components/extensions.md b/docs/technical-details/reference/components/extensions.md index b2a613b1..f72dfdf7 100644 --- a/docs/technical-details/reference/components/extensions.md +++ b/docs/technical-details/reference/components/extensions.md @@ -12,7 +12,7 @@ Furthermore, what defines an extension separately from a component is that it le All extensions must define a `config.yaml` file and declare an `extensionModule` option. This must be a path to the extension module source code. The path must resolve from the root of the module directory. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. If the plugin is being written in something other than JavaScript (such as TypeScript), ensure that the path resolves to the built version, (i.e. `extensionModule: ./dist/index.js`) @@ -30,9 +30,9 @@ Other than their execution behavior, the `handleFile()` and `setupFile()` method Any [Resource Extension](#resource-extension) can be configured with the `files` and `urlPath` options. These options control how _files_ and _directories_ are resolved in order to be passed to the extension's `handleFile()`, `setupFile()`, `handleDirectory()`, and `setupDirectory()` methods. -> Harper relies on the [fast-glob](https:/github.com/mrmlnc/fast-glob) library for glob pattern matching. +> Harper relies on the [fast-glob](https://github.com/mrmlnc/fast-glob) library for glob pattern matching. -- **files** - `string | string[] | Object` - _required_ - A [glob pattern](https:/github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax) string, array of glob pattern strings, or a more expressive glob options object determining the set of files and directories to be resolved for the extension. If specified as an object, the `source` property is required. By default, Harper **matches files and directories**; this is configurable using the `only` option. +- **files** - `string | string[] | Object` - _required_ - A [glob pattern](https://github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax) string, array of glob pattern strings, or a more expressive glob options object determining the set of files and directories to be resolved for the extension. If specified as an object, the `source` property is required. By default, Harper **matches files and directories**; this is configurable using the `only` option. - **source** - `string | string[]` - _required_ - The glob pattern string or array of strings. - **only** - `'all' | 'files' | 'directories'` - _optional_ - The glob pattern will match only the specified entry type. Defaults to `'all'`. - **ignore** - `string[]` - _optional_ - An array of glob patterns to exclude from matches. This is an alternative way to use negative patterns. Defaults to `[]`. @@ -154,13 +154,13 @@ Returns: `boolean | void | Promise` ## Protocol Extension -A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../globals#server) global API documentation for more information). +A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../globals#server) global API documentation for more information). ### Protocol Extension Configuration In addition to the `files` and `urlPath` [Resource Extension configuration](#resource-extension-configuration) options, and the `package` [Custom Component configuration](#custom-component-configuration) option, Protocol Extensions can also specify additional configuration options. Any options added to the extension configuration (in `config.yaml`), will be passed through to the `options` object of the `start()` and `startOnMainThread()` methods. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: ```yaml '@harperdb/nextjs': diff --git a/docs/technical-details/reference/components/index.md b/docs/technical-details/reference/components/index.md index 42a8d092..b102038c 100644 --- a/docs/technical-details/reference/components/index.md +++ b/docs/technical-details/reference/components/index.md @@ -28,12 +28,12 @@ This technical reference section has detailed information on various component s ## Custom Applications -- [`@harperdb/status-check`](https:/github.com/HarperDB/status-check) -- [`@harperdb/prometheus-exporter`](https:/github.com/HarperDB/prometheus-exporter) -- [`@harperdb/acl-connect`](https:/github.com/HarperDB/acl-connect) +- [`@harperdb/status-check`](https://github.com/HarperDB/status-check) +- [`@harperdb/prometheus-exporter`](https://github.com/HarperDB/prometheus-exporter) +- [`@harperdb/acl-connect`](https://github.com/HarperDB/acl-connect) ## Custom Extensions -- [`@harperdb/nextjs`](https:/github.com/HarperDB/nextjs) -- [`@harperdb/apollo`](https:/github.com/HarperDB/apollo) -- [`@harperdb/astro`](https:/github.com/HarperDB/astro) +- [`@harperdb/nextjs`](https://github.com/HarperDB/nextjs) +- [`@harperdb/apollo`](https://github.com/HarperDB/apollo) +- [`@harperdb/astro`](https://github.com/HarperDB/astro) diff --git a/docs/technical-details/reference/components/plugins.md b/docs/technical-details/reference/components/plugins.md index 8bfbdd25..bdc2010a 100644 --- a/docs/technical-details/reference/components/plugins.md +++ b/docs/technical-details/reference/components/plugins.md @@ -10,7 +10,7 @@ Similar to the existing extension API, a plugin must specify an `pluginModule` o If the plugin is being written in something other than JavaScript (such as TypeScript), ensure that the path resolves to the built version, (i.e. `pluginModule: ./dist/index.js`) -It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since plugins are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https:/docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! +It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since plugins are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https://docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! The key to a plugin is the [`handleApplication()`](#function-handleapplicationscope-scope-void--promisevoid) method. It must be exported by the `pluginModule`, and cannot coexist with any of the other extension methods such as `start`, `handleFile`, etc. The component loader will throw an error if both are defined. @@ -173,7 +173,7 @@ This is the only method a plugin module must export. It can be async and is awai ## Class: `Scope` -- Extends [`EventEmitter`](https:/nodejs.org/docs/latest/api/events.html#class-eventemitter) +- Extends [`EventEmitter`](https://nodejs.org/docs/latest/api/events.html#class-eventemitter) ### Event: `'close'` @@ -323,7 +323,7 @@ Returns: `string` - The directory of the application. This is the root directory ## Class: `OptionsWatcher` -- Extends [`EventEmitter`](https:/nodejs.org/docs/latest/api/events.html#class-eventemitter) +- Extends [`EventEmitter`](https://nodejs.org/docs/latest/api/events.html#class-eventemitter) ### Event: `'change'` @@ -414,7 +414,7 @@ Any valid configuration value type. Essentially, the primitive types, an array o ## Class: `EntryHandler` -Extends: [`EventEmitter`](https:/nodejs.org/docs/latest/api/events.html#class-eventemitter) +Extends: [`EventEmitter`](https://nodejs.org/docs/latest/api/events.html#class-eventemitter) Created by calling [`scope.handleEntry()`](#scopehandleentry) method. @@ -522,7 +522,7 @@ This method returns a promise associated with the ready event of the updated han ### Interface: `BaseEntry` -- **stats** - [`fs.Stats`](https:/nodejs.org/docs/latest/api/fs.html#class-fsstats) | `undefined` - The file system stats for the entry. +- **stats** - [`fs.Stats`](https://nodejs.org/docs/latest/api/fs.html#class-fsstats) | `undefined` - The file system stats for the entry. - **urlPath** - `string` - The recommended URL path of the entry. - **absolutePath** - `string` - The absolute path of the entry. diff --git a/docs/technical-details/reference/content-types.md b/docs/technical-details/reference/content-types.md index d7567f7f..90ab593a 100644 --- a/docs/technical-details/reference/content-types.md +++ b/docs/technical-details/reference/content-types.md @@ -26,4 +26,4 @@ MessagePack is another efficient binary format like CBOR, with support for all H Comma-separated values is an easy to use and understand format that can be readily imported into spreadsheets or used for data processing. CSV lacks hierarchical structure for most data types, and shouldn't be used for frequent/production use, but when you need it, it is available. -In addition, with the REST interface, you can use file-style extensions to indicate an encoding like http:/host/path.csv to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. +In addition, with the REST interface, you can use file-style extensions to indicate an encoding like [https://host/path.csv](https://host/path.csv) to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. diff --git a/docs/technical-details/reference/data-types.md b/docs/technical-details/reference/data-types.md index 39f54bd6..50493a82 100644 --- a/docs/technical-details/reference/data-types.md +++ b/docs/technical-details/reference/data-types.md @@ -20,7 +20,7 @@ Strings, or text, are a sequence of any unicode characters and are internally en Numbers can be stored as signed integers up to a 1000 bits of precision (about 300 digits) or floating point with 64-bit floating point precision, and numbers are automatically stored using the most optimal type. With JSON, numbers are automatically parsed and stored in the most appropriate format. Custom components and applications may use BigInt numbers to store/access integers that are larger than 53-bit. The following GraphQL schema type name are supported: -- `Float` - Any number that can be represented with [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision_floating-point_format) ("double") +- `Float` - Any number that can be represented with [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) ("double") - `Int` - Any integer between from -2147483648 to 2147483647 - `Long` - Any integer between from -9007199254740992 to 9007199254740992 - `BigInt` - Any integer (negative or positive) with less than 300 digits diff --git a/docs/technical-details/reference/dynamic-schema.md b/docs/technical-details/reference/dynamic-schema.md index 740320a1..6eaa6bed 100644 --- a/docs/technical-details/reference/dynamic-schema.md +++ b/docs/technical-details/reference/dynamic-schema.md @@ -31,8 +31,8 @@ With tables that are using dynamic schemas, additional attributes are reflexivel Harper automatically creates two audit attributes used on each record if the table is created without a schema. -- `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. -- `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. +- `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. +- `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. ### Dynamic Schema Example diff --git a/docs/technical-details/reference/globals.md b/docs/technical-details/reference/globals.md index 8e3a64f7..9017c161 100644 --- a/docs/technical-details/reference/globals.md +++ b/docs/technical-details/reference/globals.md @@ -94,15 +94,15 @@ The HTTP request listener to be added to the middleware chain. To continue chain ### `Request` and `Response` -The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https:/developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resources/) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: +The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resources/) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https://developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: #### `Request` A `Request` object is passed to the direct static REST handlers, and preserved as the context for instance methods, and has the following properties: -- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `http:/example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. +- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `https://example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. - `method` - This is the HTTP method of the request. This is a string like `GET`, `POST`, `PUT`, `DELETE`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. - `pathname` - This is the path portion of the URL, without the query string. For example, if the URL is `/path?query=string`, the `pathname` will be `/path`. - `protocol` - This is the protocol of the request, like `http` or `https`. - `data` - This is the deserialized body of the request (based on the type of data specified by `Content-Type` header). @@ -124,17 +124,17 @@ Cache.sourcedFrom(Origin); - `login(username, password): Promise` - This method can be called to start an authenticated session. The login will authenticate the user by username and password. If the authentication was successful, a session will be created and a cookie will be set on the response header that references the session. All subsequent requests from the client that sends the cookie in requests will be authenticated as the user that logged in and the session record will be attached to the request. This method returns a promise that resolves when the login is successful, and rejects if the login is unsuccessful. - `session` - This is the session object that is associated with current cookie-maintained session. This object is used to store session data for the current session. This is `Table` record instance, and can be updated by calling `request.session.update({ key: value })` or session can be retrieved with `request.session.get()`. If the cookie has not been set yet, a cookie will be set the first time a session is updated or a login occurs. -- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https:/nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. -- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https:/nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. +- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. +- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https://nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. #### `Response` REST methods can directly return data that is serialized and returned to users, or it can return a `Response` object (or a promise to a `Response`), or it can return a `Response`-like object with the following properties (or again, a promise to it): - `status` - This is the HTTP status code of the response. This is a number like `200`, `404`, `500`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. - `data` - This is the data to be returned of the response. This will be serialized using Harper's content negotiation. -- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). +- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). #### `HttpOptions` @@ -148,7 +148,7 @@ Properties: #### `HttpServer` -Node.js [`http.Server`](https:/nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https:/nodejs.org/api/https.html#class-httpsserver) instance. +Node.js [`http.Server`](https://nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https://nodejs.org/api/https.html#class-httpsserver) instance. ### `server.socket(listener: ConnectionListener, options: SocketOptions): SocketServer` @@ -158,16 +158,16 @@ Only one socket server will be created. A `securePort` takes precedence. #### `ConnectionListener` -Node.js socket server connection listener as documented in [`net.createServer`](https:/nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https:/nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) +Node.js socket server connection listener as documented in [`net.createServer`](https://nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https://nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) #### `SocketOptions` -- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) instance. -- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https://nodejs.org/api/net.html#class-netserver) instance. +- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. #### `SocketServer` -Node.js [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +Node.js [`net.Server`](https://nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. ### `server.ws(listener: WsListener, options: WsOptions): HttpServer[]` @@ -195,8 +195,8 @@ Type: `(ws: WebSocket, request: Request, chainCompletion: ChainCompletion, next: The WebSocket connection listener. -- The `ws` argument is the [WebSocket](https:/github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. -- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https:/github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. +- The `ws` argument is the [WebSocket](https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. +- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https://github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. - The `chainCompletion` argument is a `Promise` of the associated HTTP server's request chain. Awaiting this promise enables the user to ensure the HTTP request has finished being processed before operating on the WebSocket. - The `next` argument is similar to that of other `next` arguments in Harper's server middlewares. To continue execution of the WebSocket connection listener middleware chain, pass all of the other arguments to this one such as: `next(ws, request, chainCompletion)` @@ -213,13 +213,13 @@ Properties: ### `server.upgrade(listener: UpgradeListener, options: UpgradeOptions): void` -Add a listener to the HTTP Server [upgrade](https:/nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. +Add a listener to the HTTP Server [upgrade](https://nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. This method should be used to delegate HTTP upgrade events to an external WebSocket server instance. Example: -> This example is from the Harper Next.js component. See the complete source code [here](https:/github.com/HarperDB/nextjs/blob/main/extension.js) +> This example is from the Harper Next.js component. See the complete source code [here](https://github.com/HarperDB/nextjs/blob/main/extension.js) ```js server.upgrade( @@ -242,7 +242,7 @@ server.upgrade( Type: `(request, socket, head, next) => void` -The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https:/nodejs.org/api/http.html#event-upgrade_1) event. +The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https://nodejs.org/api/http.html#event-upgrade_1) event. #### `UpgradeOptions` @@ -304,7 +304,7 @@ server.resources.getMatch('/NewResource/some-id', 'my-protocol'); ### `server.operation(operation: Object, context?: Object, authorize?: boolean)` -Execute an operation from the [Operations API](https:/docs.harperdb.io/developers/operations-api) +Execute an operation from the [Operations API](https://docs.harperdb.io/developers/operations-api) Parameters: @@ -312,7 +312,7 @@ Parameters: - **context** - `Object` - `{ username: string}` - _optional_ - The specified user - **authorize** - `boolean` - _optional_ - Indicate the operation should authorize the user or not. Defaults to `false` -Returns a `Promise` with the operation's response as per the [Operations API documentation](https:/docs.harperdb.io/developers/operations-api). +Returns a `Promise` with the operation's response as per the [Operations API documentation](https://docs.harperdb.io/developers/operations-api). ### `server.nodes` diff --git a/docs/technical-details/reference/graphql.md b/docs/technical-details/reference/graphql.md index edcc723b..1626e97c 100644 --- a/docs/technical-details/reference/graphql.md +++ b/docs/technical-details/reference/graphql.md @@ -10,7 +10,7 @@ Get started by setting `graphql: true` in `config.yaml`. This automatically enables a `/graphql` endpoint that can be used for GraphQL queries. -> Harper's GraphQL component is inspired by the [GraphQL Over HTTP](https:/graphql.github.io/graphql-over-http/draft/#) specification; however, it does not fully implement neither that specification nor the [GraphQL](https:/spec.graphql.org/) specification. +> Harper's GraphQL component is inspired by the [GraphQL Over HTTP](https://graphql.github.io/graphql-over-http/draft/#) specification; however, it does not fully implement neither that specification nor the [GraphQL](https://spec.graphql.org/) specification. Queries can either be `GET` or `POST` requests, and both follow essentially the same request format. `GET` requests must use search parameters, and `POST` requests use the request body. @@ -46,7 +46,7 @@ Accept: application/graphql-response+json > Tip: For the best user experience, include the `Accept: application/graphql-response+json` header in your request. This provides better status codes for errors. -The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https:/graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resources/#query) for more complex queries. +The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https://graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resources/#query) for more complex queries. Unlike REST queries, GraphQL queries can specify multiple resources simultaneously: @@ -79,8 +79,8 @@ GET /Owner/?select(id,name,occupation) There are three request parameters for GraphQL queries: `query`, `operationName`, and `variables` 1. `query` - _Required_ - The string representation of the GraphQL document. - 1. Limited to [Executable Definitions](https:/spec.graphql.org/October2021/#executabledefinition) only. - 1. i.e. GraphQL [`query`](https:/graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https:/graphql.org/learn/queries/#fragments). + 1. Limited to [Executable Definitions](https://spec.graphql.org/October2021/#executabledefinition) only. + 1. i.e. GraphQL [`query`](https://graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https://graphql.org/learn/queries/#fragments). 1. If an shorthand, unnamed, or singular named query is provided, they will be executed by default. Otherwise, if there are multiple queries, the `operationName` parameter must be used. 1. `operationName` - _Optional_ - The name of the query operation to execute if multiple queries are provided in the `query` parameter 1. `variables` - _Optional_ - A map of variable values to be used for the specified query diff --git a/docs/technical-details/reference/resources/index.md b/docs/technical-details/reference/resources/index.md index 6fd0664e..dcac65ca 100644 --- a/docs/technical-details/reference/resources/index.md +++ b/docs/technical-details/reference/resources/index.md @@ -80,7 +80,7 @@ export class MyTable extends tables.MyTable { Make sure that if are extending and `export`ing your table with this class, that you remove the `@export` directive in your schema, so that you aren't exporting the same table/class name twice. -All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. +All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. ## Global Variables diff --git a/docs/technical-details/reference/resources/instance-binding.md b/docs/technical-details/reference/resources/instance-binding.md index 7c701976..9017b0e0 100644 --- a/docs/technical-details/reference/resources/instance-binding.md +++ b/docs/technical-details/reference/resources/instance-binding.md @@ -57,7 +57,7 @@ export class MyTable extends tables.MyTable { Make sure that if are extending and `export`ing your table with this class, that you remove the `@export` directive in your schema, so that you aren't exporting the same table/class name twice. -All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. +All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. ## Global Variables diff --git a/docs/technical-details/reference/resources/migration.md b/docs/technical-details/reference/resources/migration.md index 6a6899f0..1d3f091e 100644 --- a/docs/technical-details/reference/resources/migration.md +++ b/docs/technical-details/reference/resources/migration.md @@ -4,7 +4,7 @@ title: Migration to Resource API version 2 (non-instance binding) # Migration to Resource API version 2 (non-instance binding) -The Resource API was inspired by two major design ideas: the REST architectural design and the [Active Record pattern](https:/en.wikipedia.org/wiki/Active_record_pattern) (made popular by Ruby on Rails and heavily used as a pattern in many ORMs). The basic design goal of the Resource API is to integrate these concepts into a single construct that can directly map RESTful methods (specifically the "uniform interface" of HTTP) to an active record data model. However, while the active record pattern has been for _consumption_ of data, implementing methods for endpoint definitions and caching sources as a data _provider_ can be confusing and cumbersome to implement. The updated non-instance binding Resource API is designed to make it easier and more consistent to implement a data provider and interact with records across a table, while maintaining more explicit control over what data is loaded and when. +The Resource API was inspired by two major design ideas: the REST architectural design and the [Active Record pattern](https://en.wikipedia.org/wiki/Active_record_pattern) (made popular by Ruby on Rails and heavily used as a pattern in many ORMs). The basic design goal of the Resource API is to integrate these concepts into a single construct that can directly map RESTful methods (specifically the "uniform interface" of HTTP) to an active record data model. However, while the active record pattern has been for _consumption_ of data, implementing methods for endpoint definitions and caching sources as a data _provider_ can be confusing and cumbersome to implement. The updated non-instance binding Resource API is designed to make it easier and more consistent to implement a data provider and interact with records across a table, while maintaining more explicit control over what data is loaded and when. The updated Resource API is enabled on a per-class basis by setting static `loadAsInstance` property to `false`. When this property is set to `false`, this means that the Resource instances will not be bound to a specific record. Instead instances represent the whole table, capturing the context and current transactional state. Any records in the table can be loaded or modified from `this` instance. There are a number of implications and different behaviors from a Resource class with `static loadAsInstance = false`: diff --git a/docs/technical-details/release-notes/v4-tucker/4.0.0.md b/docs/technical-details/release-notes/v4-tucker/4.0.0.md index 7a3b86bb..b94ea2f8 100644 --- a/docs/technical-details/release-notes/v4-tucker/4.0.0.md +++ b/docs/technical-details/release-notes/v4-tucker/4.0.0.md @@ -9,7 +9,7 @@ sidebar_position: 59999 **Networking & Data Replication (Clustering)** -The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https:/nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. +The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https://nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. - CORE-1464, CORE-1470, : Remove SocketCluster dependencies and all code related to them. - CORE-1465, CORE-1485, CORE-1537, CORE-1538, CORE-1558, CORE-1583, CORE_1665, CORE-1710, CORE-1801, CORE-1865 :Add nats-`server` code as dependency, on install of HarperDB download nats-`server` is possible else fallback to building from source code. diff --git a/docs/technical-details/release-notes/v4-tucker/4.1.0.md b/docs/technical-details/release-notes/v4-tucker/4.1.0.md index a5ac09d5..bd4bc242 100644 --- a/docs/technical-details/release-notes/v4-tucker/4.1.0.md +++ b/docs/technical-details/release-notes/v4-tucker/4.1.0.md @@ -19,7 +19,7 @@ Logging has been revamped and condensed into one `hdb.log` file. See [logging](. A new operation called `cluster_network` was added, this operation will ping the cluster and return a list of enmeshed nodes. -Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https:/docs.harperdb.io/docs/v/4.1/custom-functions/host-static). +Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https://docs.harperdb.io/docs/v/4.1/custom-functions/host-static). Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](../../../developers/operations-api/bulk-operations#import-from-s3). diff --git a/docs/technical-details/release-notes/v4-tucker/4.3.0.md b/docs/technical-details/release-notes/v4-tucker/4.3.0.md index a5c02b23..b4253319 100644 --- a/docs/technical-details/release-notes/v4-tucker/4.3.0.md +++ b/docs/technical-details/release-notes/v4-tucker/4.3.0.md @@ -76,7 +76,7 @@ HarperDB now supports `BigInt` attributes/values with integers (with full precis #### Local Studio Upgrade -HarperDB has upgraded the local studio to match the same version that is offered on http:/studio.harperdb.io. The local studio now has the full robust feature set of the online version. +HarperDB has upgraded the local studio to match the same version that is offered on https://studio.harperdb.io. The local studio now has the full robust feature set of the online version. ### MQTT @@ -122,4 +122,4 @@ In addition to storage improvements, HarperDB now includes functionality for [co Compression is now enabled by default for all records over 4KB. -To learn more on how to configure compression visit [configuration](https:/docs.harperdb.io/docs/v/4.3/deployments/configuration). +To learn more on how to configure compression visit [configuration](https://docs.harperdb.io/docs/v/4.3/deployments/configuration). diff --git a/docs/technical-details/release-notes/v4-tucker/4.4.0.md b/docs/technical-details/release-notes/v4-tucker/4.4.0.md index e5f98221..3fd30827 100644 --- a/docs/technical-details/release-notes/v4-tucker/4.4.0.md +++ b/docs/technical-details/release-notes/v4-tucker/4.4.0.md @@ -25,7 +25,7 @@ Certain operations can now be replicated across the cluster, including the deplo ### Computed Properties -Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation ](../../../developers/applications/defining-schemas), [Resource API](../../reference/resources), and our blog post on [computed properties](https:/www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. +Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation](../../../developers/applications/defining-schemas), [Resource API](../../reference/resources), and our blog post on [computed properties](https://www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. ### Custom Indexing diff --git a/docs/technical-details/release-notes/v4-tucker/4.6.0.md b/docs/technical-details/release-notes/v4-tucker/4.6.0.md index 3100a9cb..e31c1ad6 100644 --- a/docs/technical-details/release-notes/v4-tucker/4.6.0.md +++ b/docs/technical-details/release-notes/v4-tucker/4.6.0.md @@ -11,7 +11,7 @@ sidebar_position: 59399 ### Vector Indexing: Hierarchical Navigable Small World -Harper 4.6 now includes support for vector indexing, which allows for efficient and fast queries on large semantic data sets. Vector indexing is powered by the [Hierarchical Navigable Small World (HNSW) algorithm](https:/arxiv.org/abs/1603.09320) and can be used to index any vector-valued property, and is particularly useful for vector text-embedding data. This provides powerful efficient vector-based searching for semantic and AI-based querying functionality. HNSW is a preferred algorithm for vector indexing and searching because it provides an excellent balance of recall and performance. +Harper 4.6 now includes support for vector indexing, which allows for efficient and fast queries on large semantic data sets. Vector indexing is powered by the [Hierarchical Navigable Small World (HNSW) algorithm](https://arxiv.org/abs/1603.09320) and can be used to index any vector-valued property, and is particularly useful for vector text-embedding data. This provides powerful efficient vector-based searching for semantic and AI-based querying functionality. HNSW is a preferred algorithm for vector indexing and searching because it provides an excellent balance of recall and performance. ### New Extension API with support for dynamic reloading diff --git a/site/redirects.ts b/site/redirects.ts index 5dac947a..1749c7ee 100644 --- a/site/redirects.ts +++ b/site/redirects.ts @@ -9,7 +9,10 @@ type RedirectRule = { // Function to generate redirects with the appropriate base path export function generateRedirects(basePath: string): RedirectRule[] { // Helper to add base path to a route - const withBase = (path: string) => `${basePath}${path}`; + const withBase = (path: string) => { + // If basePath is just '/', return path as-is to avoid double slashes + return basePath === '/' ? path : `${basePath}${path}`; + }; return [ // Operations API diff --git a/site/versioned_docs/version-4.1/add-ons-and-sdks/google-data-studio.md b/site/versioned_docs/version-4.1/add-ons-and-sdks/google-data-studio.md index 6c2c0b36..239b3e0c 100644 --- a/site/versioned_docs/version-4.1/add-ons-and-sdks/google-data-studio.md +++ b/site/versioned_docs/version-4.1/add-ons-and-sdks/google-data-studio.md @@ -4,9 +4,9 @@ title: Google Data Studio # Google Data Studio -[Google Data Studio](https:/datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The HarperDB Google Data Studio connector seamlessly integrates your HarperDB data with Google Data Studio so you can build custom, real-time data visualizations. +[Google Data Studio](https://datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The HarperDB Google Data Studio connector seamlessly integrates your HarperDB data with Google Data Studio so you can build custom, real-time data visualizations. -The HarperDB Google Data Studio Connector is subject to our [Terms of Use](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https:/harperdb.io/legal/privacy-policy/). +The HarperDB Google Data Studio Connector is subject to our [Terms of Use](https://harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https://harperdb.io/legal/privacy-policy/). ## Requirements @@ -14,13 +14,13 @@ The HarperDB database must be accessible through the Internet in order for Googl ## Get Started -Get started by selecting the HarperDB connector from the [Google Data Studio Partner Connector Gallery](https:/datastudio.google.com/u/0/datasources/create). +Get started by selecting the HarperDB connector from the [Google Data Studio Partner Connector Gallery](https://datastudio.google.com/u/0/datasources/create). -1. Log in to https:/datastudio.google.com/. -1. Add a new Data Source using the HarperDB connector. The current release version can be added as a data source by following this link: [HarperDB Google Data Studio Connector](https:/datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60\_VJeO3BhHJPvdd20-S76g). +1. Log in to [https://datastudio.google.com/](https://datastudio.google.com/). +1. Add a new Data Source using the HarperDB connector. The current release version can be added as a data source by following this link: [HarperDB Google Data Studio Connector](https://datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60\_VJeO3BhHJPvdd20-S76g). 1. Authorize the connector to access other servers on your behalf (this allows the connector to contact your database). 1. Enter the Web URL to access your database (preferably with HTTPS), as well as the Basic Auth key you use to access the database. Just include the key, not the word “Basic” at the start of it. -1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:/ will do the same thing, if you prefer. +1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:// will do the same thing, if you prefer. 1. Check the box for “Allow Bad Certs” if your HarperDB instance does not have a valid SSL certificate. HarperDB Cloud always has valid certificates, and so will never require this to be checked. Instances you set up yourself may require this, if you are using self-signed certs. If you are using HarperDB Cloud or another instance you know should always have valid SSL certificates, do not check this box. 1. Choose your Query Type. This determines what information the configuration will ask for after pressing the Next button. * Table will ask you for a Schema and a Table to return all fields of using `SELECT *`. diff --git a/site/versioned_docs/version-4.1/audit-logging.md b/site/versioned_docs/version-4.1/audit-logging.md index 86b2d068..4ad2ce66 100644 --- a/site/versioned_docs/version-4.1/audit-logging.md +++ b/site/versioned_docs/version-4.1/audit-logging.md @@ -12,7 +12,7 @@ Audit log is disabled by default. To use the audit log, set `logging.auditLog` t ### read_audit_log -The `read_audit_log` operation is flexible, enabling users to query with many parameters. All operations search on a single table. Filter options include timestamps, usernames, and table hash values. Additional examples found in the [HarperDB API documentation](https:/api.harperdb.io/). +The `read_audit_log` operation is flexible, enabling users to query with many parameters. All operations search on a single table. Filter options include timestamps, usernames, and table hash values. Additional examples found in the [HarperDB API documentation](https://api.harperdb.io/). **Search by Timestamp** diff --git a/site/versioned_docs/version-4.1/configuration.md b/site/versioned_docs/version-4.1/configuration.md index 2079c9fe..38ee63fa 100644 --- a/site/versioned_docs/version-4.1/configuration.md +++ b/site/versioned_docs/version-4.1/configuration.md @@ -4,7 +4,7 @@ title: Configuration File # Configuration File -HarperDB is configured through a [YAML](https:/yaml.org/) file called `harperdb-config.yaml` located in the operations API root directory (by default this is a directory named `hdb` located in the home directory of the current user). +HarperDB is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the operations API root directory (by default this is a directory named `hdb` located in the home directory of the current user). All available configuration will be populated by default in the config file on install, regardless of whether it is used. @@ -389,7 +389,7 @@ The port the IPC server runs on. The default is `9383`. ### `localStudio` -The `localStudio` section configures the local HarperDB Studio, a simplified GUI for HarperDB hosted on the server. A more comprehensive GUI is hosted by HarperDB at https:/studio.harperdb.io. Note, all database traffic from either `localStudio` or HarperDB Studio is made directly from your browser to the instance. +The `localStudio` section configures the local HarperDB Studio, a simplified GUI for HarperDB hosted on the server. A more comprehensive GUI is hosted by HarperDB at [https://studio.harperdb.io](https://studio.harperdb.io). Note, all database traffic from either `localStudio` or HarperDB Studio is made directly from your browser to the instance. `enabled` - _Type_: boolean; _Default_: false @@ -402,7 +402,6 @@ localStudio: --- - ### `logging` The `logging` section configures HarperDB logging across all HarperDB functionality. HarperDB leverages pm2 for logging. Each process group gets their own log file which is located in `logging.root`. @@ -417,6 +416,7 @@ logging: ``` To access the audit logs, use the API operation `read_audit_log`. It will provide a history of the data, including original records and changes made, in a specified table. + ```json { "operation": "read_audit_log", @@ -424,6 +424,7 @@ To access the audit logs, use the API operation `read_audit_log`. It will provid "table": "dog" } ```` + `file` - _Type_: boolean; _Default_: true Defines whether or not to log to a file. @@ -441,6 +442,7 @@ Control the verbosity of logs. logging: level: error ``` + There exists a log level hierarchy in order as `trace`, `debug`, `info`, `warn`, `error`, `fatal`, and `notify`. When the level is set to `trace` logs will be created for all possible levels. Whereas if the level is set to `fatal`, the only entries logged will be `fatal` and `notify`. The default value is `error`. `root` - _Type_: string; _Default_: <ROOTPATH>/log @@ -467,6 +469,7 @@ logging: maxSize: 100K path: /user/hdb/log ``` +
`enabled` - _Type_: boolean; _Default_: false @@ -491,7 +494,6 @@ Where to store the rotated log file. File naming convention is `HDB-YYYY-MM-DDT-
- `stdStreams` - _Type_: boolean; _Default_: false Log HarperDB logs to the standard output and error streams. The `operationsApi.foreground` flag must be enabled in order to receive the stream. @@ -503,7 +505,6 @@ logging: --- - ### `operationsApi` The `operationsApi` section configures the HarperDB Operations API. @@ -521,11 +522,11 @@ operationsApi: `operationTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time an operation token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time an operation token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `refreshTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time a refresh token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time a refresh token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `foreground` - _Type_: boolean; _Default_: false diff --git a/site/versioned_docs/version-4.1/custom-functions/create-project.md b/site/versioned_docs/version-4.1/custom-functions/create-project.md index 9e856975..cb046fb0 100644 --- a/site/versioned_docs/version-4.1/custom-functions/create-project.md +++ b/site/versioned_docs/version-4.1/custom-functions/create-project.md @@ -24,7 +24,7 @@ Otherwise, to create a project, you have the following options: _This requires a local installation. Remove the .git directory for a clean slate of git history._ ```bash -> git clone https:/github.com/HarperDB/harperdb-custom-functions-template.git ~/hdb/custom_functions/dogs +> git clone https://github.com/HarperDB/harperdb-custom-functions-template.git ~/hdb/custom_functions/dogs ``` 1. **Create a project folder in your Custom Functions root directory** and **initialize** diff --git a/site/versioned_docs/version-4.1/custom-functions/custom-functions-operations.md b/site/versioned_docs/version-4.1/custom-functions/custom-functions-operations.md index 490a730f..34110797 100644 --- a/site/versioned_docs/version-4.1/custom-functions/custom-functions-operations.md +++ b/site/versioned_docs/version-4.1/custom-functions/custom-functions-operations.md @@ -6,7 +6,7 @@ title: Custom Functions Operations One way to manage Custom Functions is through [HarperDB Studio](../harperdb-studio/). It performs all the necessary operations automatically. To get started, navigate to your instance in HarperDB Studio and click the subnav link for “functions”. If you have not yet enabled Custom Functions, it will walk you through the process. Once configuration is complete, you can manage and deploy Custom Functions in minutes. -HarperDB Studio manages your Custom Functions using nine HarperDB operations. You may view these operations within our [API Docs](https:/api.harperdb.io/). A brief overview of each of the operations is below: +HarperDB Studio manages your Custom Functions using nine HarperDB operations. You may view these operations within our [API Docs](https://api.harperdb.io/). A brief overview of each of the operations is below: @@ -32,7 +32,7 @@ HarperDB Studio manages your Custom Functions using nine HarperDB operations. Yo * **add_custom_function_project** - Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. + Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). * **drop_custom_function_project** diff --git a/site/versioned_docs/version-4.1/custom-functions/debugging-custom-function.md b/site/versioned_docs/version-4.1/custom-functions/debugging-custom-function.md index 91d34bd6..f259e716 100644 --- a/site/versioned_docs/version-4.1/custom-functions/debugging-custom-function.md +++ b/site/versioned_docs/version-4.1/custom-functions/debugging-custom-function.md @@ -8,7 +8,7 @@ HarperDB Custom Functions projects are managed by HarperDB’s process manager. -For local debugging and development, it is recommended that you use standard console log statements for logging. For production use, you may want to use HarperDB's logging facilities, so you aren't logging to the console. The [HarperDB Custom Functions template](https:/github.com/HarperDB/harperdb-custom-functions-template) includes the HarperDB logger module in the primary function parameters with the name `logger`. This logger can be used to output messages directly to the HarperDB log using standardized logging level functions, described below. The log level can be set in the [HarperDB Configuration File](../configuration). +For local debugging and development, it is recommended that you use standard console log statements for logging. For production use, you may want to use HarperDB's logging facilities, so you aren't logging to the console. The [HarperDB Custom Functions template](https://github.com/HarperDB/harperdb-custom-functions-template) includes the HarperDB logger module in the primary function parameters with the name `logger`. This logger can be used to output messages directly to the HarperDB log using standardized logging level functions, described below. The log level can be set in the [HarperDB Configuration File](../configuration). HarperDB Logger Functions * `trace(message)`: Write a 'trace' level log, if the configured level allows for it. @@ -24,7 +24,7 @@ For debugging purposes, it is recommended to use `notify` as these messages will ## Viewing the Log -The HarperDB Log can be found on the [Studio Status page](../harperdb-studio/instance-metrics) or in the local Custom Functions log file, `/log/custom_functions.log`. Additionally, you can use the [`read_log` operation](https:/api.harperdb.io/#7f718dd1-afa5-49ce-bc0c-564e17b1c9cf) to query the HarperDB log. +The HarperDB Log can be found on the [Studio Status page](../harperdb-studio/instance-metrics) or in the local Custom Functions log file, `/log/custom_functions.log`. Additionally, you can use the [`read_log` operation](https://api.harperdb.io/#7f718dd1-afa5-49ce-bc0c-564e17b1c9cf) to query the HarperDB log. ### Example 1: Execute Query and Log Results diff --git a/site/versioned_docs/version-4.1/custom-functions/define-helpers.md b/site/versioned_docs/version-4.1/custom-functions/define-helpers.md index eccd9b6a..1719f537 100644 --- a/site/versioned_docs/version-4.1/custom-functions/define-helpers.md +++ b/site/versioned_docs/version-4.1/custom-functions/define-helpers.md @@ -18,7 +18,7 @@ Below is code from the customValidation helper that is referenced in [Define Rou ```javascript const customValidation = async (request,logger) => { - let response = await fetch('https:/jsonplaceholder.typicode.com/todos/1', { headers: { authorization: request.headers.authorization } }); + let response = await fetch('https://jsonplaceholder.typicode.com/todos/1', { headers: { authorization: request.headers.authorization } }); let result = await response.json(); /* diff --git a/site/versioned_docs/version-4.1/custom-functions/define-routes.md b/site/versioned_docs/version-4.1/custom-functions/define-routes.md index 84cef1da..4ea88f43 100644 --- a/site/versioned_docs/version-4.1/custom-functions/define-routes.md +++ b/site/versioned_docs/version-4.1/custom-functions/define-routes.md @@ -4,7 +4,7 @@ title: Define Routes # Define Routes -HarperDB’s Custom Functions is built on top of [Fastify](https:/www.fastify.io/), so our route definitions follow their specifications. Below is a very simple example of a route declaration. +HarperDB’s Custom Functions is built on top of [Fastify](https://www.fastify.io/), so our route definitions follow their specifications. Below is a very simple example of a route declaration. diff --git a/site/versioned_docs/version-4.1/custom-functions/example-projects.md b/site/versioned_docs/version-4.1/custom-functions/example-projects.md index 88ded5fd..a2ce70e3 100644 --- a/site/versioned_docs/version-4.1/custom-functions/example-projects.md +++ b/site/versioned_docs/version-4.1/custom-functions/example-projects.md @@ -6,32 +6,32 @@ title: Example Projects **Library of example projects and tutorials using Custom Functions:** -* [Authorization in HarperDB using Okta Customer Identity Cloud](https:/www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang +* [Authorization in HarperDB using Okta Customer Identity Cloud](https://www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang -* [How to Speed Up your Applications by Caching at the Edge with HarperDB](https:/dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams +* [How to Speed Up your Applications by Caching at the Edge with HarperDB](https://dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams -* [OAuth Authentication in HarperDB using Auth0 & Node.js](https:/www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos +* [OAuth Authentication in HarperDB using Auth0 & Node.js](https://www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos -* [How To Create a CRUD API with Next.js & HarperDB Custom Functions](https:/www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock +* [How To Create a CRUD API with Next.js & HarperDB Custom Functions](https://www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock -* [Build a Dynamic REST API with Custom Functions](https:/harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush +* [Build a Dynamic REST API with Custom Functions](https://harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush -* [How to use HarperDB Custom Functions to Build your Entire Backend](https:/dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden +* [How to use HarperDB Custom Functions to Build your Entire Backend](https://dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden -* [Using TensorFlowJS & HarperDB Custom Functions for Machine Learning](https:/harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft +* [Using TensorFlowJS & HarperDB Custom Functions for Machine Learning](https://harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft -* [Build & Deploy a Fitness App with Python & HarperDB](https:/www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber +* [Build & Deploy a Fitness App with Python & HarperDB](https://www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber -* [Create a Discord Slash Bot using HarperDB Custom Functions](https:/geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty +* [Create a Discord Slash Bot using HarperDB Custom Functions](https://geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty -* [How I used HarperDB Custom Functions to Build a Web App for my Newsletter](https:/blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj +* [How I used HarperDB Custom Functions to Build a Web App for my Newsletter](https://blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj -* [How I used HarperDB Custom Functions and Recharts to create Dashboard](https:/blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary +* [How I used HarperDB Custom Functions and Recharts to create Dashboard](https://blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary -* [How To Use HarperDB Custom Functions With Your React App](https:/dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi +* [How To Use HarperDB Custom Functions With Your React App](https://dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi -* [Build a Web App Using HarperDB’s Custom Functions](https:/www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp +* [Build a Web App Using HarperDB’s Custom Functions](https://www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp -* [How to Web Scrape Using Python, Snscrape & Custom Functions](https:/hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David +* [How to Web Scrape Using Python, Snscrape & Custom Functions](https://hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David -* [What’s the Big Deal w/ Custom Functions](https:/rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast \ No newline at end of file +* [What’s the Big Deal w/ Custom Functions](https://rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast diff --git a/site/versioned_docs/version-4.1/custom-functions/host-static.md b/site/versioned_docs/version-4.1/custom-functions/host-static.md index 0dcd2788..40dc91ce 100644 --- a/site/versioned_docs/version-4.1/custom-functions/host-static.md +++ b/site/versioned_docs/version-4.1/custom-functions/host-static.md @@ -4,13 +4,13 @@ title: Host A Static Web UI # Host A Static Web UI -The [@fastify/static](https:/github.com/fastify/fastify-static) module can be utilized to serve static files. +The [@fastify/static](https://github.com/fastify/fastify-static) module can be utilized to serve static files. Install the module in your project by running `npm i @fastify/static` from inside your project directory. Register `@fastify/static` with the server and set `root` to the absolute path of the directory that contains the static files to serve. -For further information on how to send specific files see the [@fastify/static](https:/github.com/fastify/fastify-static) docs. +For further information on how to send specific files see the [@fastify/static](https://github.com/fastify/fastify-static) docs. ```javascript module.exports = async (server, { hdbCore, logger }) => { diff --git a/site/versioned_docs/version-4.1/custom-functions/requirements-definitions.md b/site/versioned_docs/version-4.1/custom-functions/requirements-definitions.md index a38a0ec6..2fc28f29 100644 --- a/site/versioned_docs/version-4.1/custom-functions/requirements-definitions.md +++ b/site/versioned_docs/version-4.1/custom-functions/requirements-definitions.md @@ -42,12 +42,12 @@ _Please visit our [configuration docs](../configuration) for a more comprehensiv ## Project Structure **project folder** -The name of the folder that holds your project files serves as the root prefix for all the routes you create. All routes created in the **dogs** project folder will have a URL like this: **https:/my-server-url.com:9926/dogs/my/route**. As such, it’s important that any project folders you create avoid any characters that aren’t URL-friendly. You should avoid URL delimiters in your folder names. +The name of the folder that holds your project files serves as the root prefix for all the routes you create. All routes created in the **dogs** project folder will have a URL like this: **[https://my-server-url.com:9926/dogs/my/route](https://my-server-url.com:9926/dogs/my/route)**. As such, it’s important that any project folders you create avoid any characters that aren’t URL-friendly. You should avoid URL delimiters in your folder names. **/routes folder** -Files in the **routes** folder define the requests that your Custom Functions server will handle. They are [standard Fastify route declarations](https:/www.fastify.io/docs/latest/Reference/Routes/), so if you’re familiar with them, you should be up and running in no time. The default components for a route are the url, method, preValidation, and handler. +Files in the **routes** folder define the requests that your Custom Functions server will handle. They are [standard Fastify route declarations](https://www.fastify.io/docs/latest/Reference/Routes/), so if you’re familiar with them, you should be up and running in no time. The default components for a route are the url, method, preValidation, and handler. ```javascript module.exports = async (server, { hdbCore, logger }) => { diff --git a/site/versioned_docs/version-4.1/custom-functions/templates.md b/site/versioned_docs/version-4.1/custom-functions/templates.md index 0fb6401e..1f1c09a2 100644 --- a/site/versioned_docs/version-4.1/custom-functions/templates.md +++ b/site/versioned_docs/version-4.1/custom-functions/templates.md @@ -4,4 +4,4 @@ title: Templates # Templates -Check out our always-expanding library of templates in our open-source [HarperDB-Add-Ons GitHub repo](https:/github.com/HarperDB-Add-Ons). \ No newline at end of file +Check out our always-expanding library of templates in our open-source [HarperDB-Add-Ons GitHub repo](https://github.com/HarperDB-Add-Ons). diff --git a/site/versioned_docs/version-4.1/getting-started/getting-started.md b/site/versioned_docs/version-4.1/getting-started/getting-started.md index 0d1db68f..4fa0c95b 100644 --- a/site/versioned_docs/version-4.1/getting-started/getting-started.md +++ b/site/versioned_docs/version-4.1/getting-started/getting-started.md @@ -12,7 +12,7 @@ The quickest way to get up and running with HarperDB is with HarperDB Cloud, our Before you can start using HarperDB you need to set up an instance. Note, if you would prefer to install HarperDB locally, [check out the installation guides including Linux, Mac, and many other options](../install-harperdb/). -1. [Sign up for the HarperDB Studio](https:/studio.harperdb.io/sign-up) +1. [Sign up for the HarperDB Studio](https://studio.harperdb.io/sign-up) 1. [Create a new HarperDB Cloud instance](../harperdb-studio/instances#create-a-new-instance) > HarperDB Cloud instance provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. @@ -32,7 +32,7 @@ Now that you have a HarperDB instance, you can do pretty much everything you’d Complete HarperDB API documentation is available at api.harperdb.io. The HarperDB Studio features an example code builder that generates API calls in the programming language of your choice. For example purposes, a basic cURL command is shown below to create a schema called dev. ``` -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ diff --git a/site/versioned_docs/version-4.1/harperdb-cloud/instance-size-hardware-specs.md b/site/versioned_docs/version-4.1/harperdb-cloud/instance-size-hardware-specs.md index 74dca186..c1badd67 100644 --- a/site/versioned_docs/version-4.1/harperdb-cloud/instance-size-hardware-specs.md +++ b/site/versioned_docs/version-4.1/harperdb-cloud/instance-size-hardware-specs.md @@ -23,4 +23,4 @@ While HarperDB Cloud bills by RAM, each instance has other specifications associ -*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: https:/aws.amazon.com/ec2/instance-types/. \ No newline at end of file +*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https://aws.amazon.com/ec2/instance-types/](https://aws.amazon.com/ec2/instance-types/). diff --git a/site/versioned_docs/version-4.1/harperdb-cloud/iops-impact.md b/site/versioned_docs/version-4.1/harperdb-cloud/iops-impact.md index 10baf28c..ab936d6e 100644 --- a/site/versioned_docs/version-4.1/harperdb-cloud/iops-impact.md +++ b/site/versioned_docs/version-4.1/harperdb-cloud/iops-impact.md @@ -23,7 +23,7 @@ AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result -You can read more about AWS EBS volume IOPS here: https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. +You can read more about AWS EBS volume IOPS here: [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html). ## Estimating IOPS for HarperDB Instance diff --git a/site/versioned_docs/version-4.1/harperdb-cloud/verizon-5g-wavelength-instances.md b/site/versioned_docs/version-4.1/harperdb-cloud/verizon-5g-wavelength-instances.md index 1aaa838d..1addf12c 100644 --- a/site/versioned_docs/version-4.1/harperdb-cloud/verizon-5g-wavelength-instances.md +++ b/site/versioned_docs/version-4.1/harperdb-cloud/verizon-5g-wavelength-instances.md @@ -12,7 +12,7 @@ HarperDB on Verizon 5G Wavelength brings HarperDB closer to the end user exclusi -Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https:/aws.amazon.com/wavelength/). +Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https://aws.amazon.com/wavelength/). HarperDB 5G Wavelength Instance Specs While HarperDB 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail*. @@ -27,7 +27,7 @@ While HarperDB 5G Wavelength bills by RAM, each instance has other specification -*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https:/aws.amazon.com/ec2/instance-types/). +*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https://aws.amazon.com/ec2/instance-types/). ## HarperDB 5G Wavelength Storage @@ -43,4 +43,4 @@ Smaller gp2 volumes are perfect for trying out the functionality of HarperDB, an -You can read more about [AWS EBS gp2 volume IOPS here](https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes_gp2). \ No newline at end of file +You can read more about [AWS EBS gp2 volume IOPS here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes_gp2). diff --git a/site/versioned_docs/version-4.1/harperdb-studio/create-account.md b/site/versioned_docs/version-4.1/harperdb-studio/create-account.md index 635de7f4..3b0f9a56 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/create-account.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/create-account.md @@ -3,7 +3,7 @@ title: Create a Studio Account --- # Create a Studio Account -Start at the [HarperDB Studio sign up page](https:/studio.harperdb.io/sign-up). +Start at the [HarperDB Studio sign up page](https://studio.harperdb.io/sign-up). 1) Provide the following information: * First Name @@ -11,7 +11,7 @@ Start at the [HarperDB Studio sign up page](https:/studio.harperdb.io/sign-up). * Email Address * Subdomain - *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* * Coupon Code (optional) 2) Review the Privacy Policy and Terms of Service. 3) Click the sign up for free button. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/enable-mixed-content.md b/site/versioned_docs/version-4.1/harperdb-studio/enable-mixed-content.md index 1948d6be..7a3c8524 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/enable-mixed-content.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/enable-mixed-content.md @@ -8,4 +8,4 @@ Enabling mixed content is required in cases where you would like to connect the -A comprehensive guide is provided by Adobe [here](https:/experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). \ No newline at end of file +A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). diff --git a/site/versioned_docs/version-4.1/harperdb-studio/index.md b/site/versioned_docs/version-4.1/harperdb-studio/index.md index 93ba1af7..78d1ebb4 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/index.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/index.md @@ -5,7 +5,7 @@ title: HarperDB Studio # HarperDB Studio HarperDB Studio is the web-based GUI for HarperDB. Studio enables you to administer, navigate, and monitor all of your HarperDB instances in a simple, user friendly interface without any knowledge of the underlying HarperDB API. It’s free to sign up, get started today! -[Sign up for free!](https:/studio.harperdb.io/sign-up) +[Sign up for free!](https://studio.harperdb.io/sign-up) --- ## How does Studio Work? diff --git a/site/versioned_docs/version-4.1/harperdb-studio/instance-configuration.md b/site/versioned_docs/version-4.1/harperdb-studio/instance-configuration.md index 55c01be1..618daceb 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/instance-configuration.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/instance-configuration.md @@ -10,7 +10,7 @@ HarperDB instance configuration can be viewed and managed directly through the H All instance configuration is handled through the **config** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. @@ -68,7 +68,7 @@ Note: For HarperDB Cloud instances, upgrading RAM may add additional CPUs to you 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -*Note, if HarperDB Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* +*Note, if HarperDB Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Update Instance Storage @@ -79,18 +79,18 @@ Note: Instance storage can only be upgraded once every 6 hours. 1) In the **update storage** panel at the bottom left: * Select the new instance storage size. - + * If you do not have a credit card associated with your account, an **Add Credit Card To Account** button will appear. Click that to be taken to the billing screen where you can enter your credit card information before returning to the **config** tab to proceed with the upgrade. - + * If you do have a credit card associated, you will be presented with the updated billing information. - + * Click **Upgrade**. - + 2) The instance will shut down and begin reprovisioning itself. The instance will not be available during this time. You will be returned to the instance dashboard and the instance status will show UPDATING INSTANCE. - + 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. - -*Note, if this process takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* + +*Note, if this process takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Remove Instance diff --git a/site/versioned_docs/version-4.1/harperdb-studio/instance-example-code.md b/site/versioned_docs/version-4.1/harperdb-studio/instance-example-code.md index b4b74e5f..3869f4af 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/instance-example-code.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/instance-example-code.md @@ -6,7 +6,7 @@ title: Instance Example Code Example code prepopulated with the instance URL and authorization token for the logged in database user can be found on the **example code** page of the HarperDB Studio. Code samples are generated based on the HarperDB API Documentation Postman collection. Code samples accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/instance-metrics.md b/site/versioned_docs/version-4.1/harperdb-studio/instance-metrics.md index b2bda847..156208ab 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/instance-metrics.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/instance-metrics.md @@ -6,7 +6,7 @@ title: Instance Metrics The HarperDB Studio display instance status and metrics on the instance status page, which can be accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/instances.md b/site/versioned_docs/version-4.1/harperdb-studio/instances.md index 33e61ab6..1b5ff3aa 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/instances.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/instances.md @@ -13,23 +13,23 @@ Managed installations of HarperDB running on the Verizon network through AWS Wav * **User-Installed Instance** Any HarperDB installation that is managed by you. These include instances hosted within your cloud provider accounts (for example, from the AWS or Digital Ocean Marketplaces), privately hosted instances, or instances installed locally. -All interactions between the Studio and your instances take place directly from your browser. HarperDB stores metadata about your instances, which enables the Studio to display these instances when you log in. Beyond that, all traffic is routed from your browser to the HarperDB instances using the standard [HarperDB API](https:/api.harperdb.io/). +All interactions between the Studio and your instances take place directly from your browser. HarperDB stores metadata about your instances, which enables the Studio to display these instances when you log in. Beyond that, all traffic is routed from your browser to the HarperDB instances using the standard [HarperDB API](https://api.harperdb.io/). ## Organization Instance List -A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. Each instance gets their own card. HarperDB Cloud and user-installed instances are listed together. +A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. Each instance gets their own card. HarperDB Cloud and user-installed instances are listed together. ## Create a New Instance -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. -2) Click the appropriate organization for the instance to be created under. -3) Click the **Create New HarperDB Cloud Instance + Register User-Installed Instance** card. -4) Select your desired Instance Type. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. +2) Click the appropriate organization for the instance to be created under. +3) Click the **Create New HarperDB Cloud Instance + Register User-Installed Instance** card. +4) Select your desired Instance Type. 5) For a HarperDB Cloud Instance or a HarperDB 5G Wavelength Instance, click **Create HarperDB Cloud Instance**. - 1) Fill out Instance Info. + 1) Fill out Instance Info. 1) Enter Instance Name - - *This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com. The Instance URL will be previewed below.* + + *This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com). The Instance URL will be previewed below.* 2) Enter Instance Username @@ -39,7 +39,7 @@ A summary view of all instances within an organization can be viewed by clicking *This is the password of the initial HarperDB instance super user.* - 2) Click **Instance Details** to move to the next page. + 2) Click **Instance Details** to move to the next page. 3) Select Instance Specs 1) Select Instance RAM @@ -54,50 +54,50 @@ A summary view of all instances within an organization can be viewed by clicking *The geographic area where your instance will be provisioned.* - 4) Click **Confirm Instance Details** to move to the next page. - 5) Review your Instance Details, if there is an error, use the back button to correct it. - 6) Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. - 7) Click **Add Instance**. + 4) Click **Confirm Instance Details** to move to the next page. + 5) Review your Instance Details, if there is an error, use the back button to correct it. + 6) Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 7) Click **Add Instance**. 8) Your HarperDB Cloud instance will be provisioned in the background. Provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. - + ## Register User-Installed Instance -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization for the instance to be created under. 3) Click the **Create New HarperDB Cloud Instance + Register User-Installed Instance** card. 4) Select **Register User-Installed Instance**. 1) Fill out Instance Info. - + 1) Enter Instance Name - + *This is used for descriptive purposes only.* 2) Enter Instance Username - + *The username of a HarperDB super user that is already configured in your HarperDB installation.* 3) Enter Instance Password - + *The password of a HarperDB super user that is already configured in your HarperDB installation.* 4) Enter Host - - *The host to access the HarperDB instance. For example, `harperdb.myhost.com` or `localhost`.* + + *The host to access the HarperDB instance. For example, `harperdb.myhost.com` or `localhost`.* 5) Enter Port - + *The port to access the HarperDB instance. HarperDB defaults `9925`.* 6) Select SSL - + *If your instance is running over SSL, select the SSL checkbox. If not, you will need to enable mixed content in your browser to allow the HTTPS Studio to access the HTTP instance. If there are issues connecting to the instance, the Studio will display a red error message.* - - 2) Click **Instance Details** to move to the next page. - 3) Select Instance Specs + + 2) Click **Instance Details** to move to the next page. + 3) Select Instance Specs 1) Select Instance RAM - + *HarperDB instances are billed based on Instance RAM. Selecting additional RAM will enable the ability for faster and more complex queries.* - 4) Click **Confirm Instance Details** to move to the next page. - 5) Review your Instance Details, if there is an error, use the back button to correct it. - 6) Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. - 7) Click **Add Instance**. + 4) Click **Confirm Instance Details** to move to the next page. + 5) Review your Instance Details, if there is an error, use the back button to correct it. + 6) Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 7) Click **Add Instance**. 8) The HarperDB Studio will register your instance and restart it for the registration to take effect. Your instance will be immediately available after this is complete. - + ## Delete an Instance Instance deletion has two different behaviors depending on the instance type. @@ -109,9 +109,9 @@ The instance will be removed from the HarperDB Studio only. This does not uninst An instance can be deleted as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. -2) Click the appropriate organization that the instance belongs to. -3) Identify the proper instance card and click the trash can icon. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. +2) Click the appropriate organization that the instance belongs to. +3) Identify the proper instance card and click the trash can icon. 4) Enter the instance name into the text box. *This is done for confirmation purposes to ensure you do not accidentally delete an instance.* @@ -125,14 +125,14 @@ HarperDB instances can be resized on the [Instance Configuration](./instance-con The Studio enables users to log in and out of different database users from the instance control panel. To log out of an instance: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. -2) Click the appropriate organization that the instance belongs to. -3) Identify the proper instance card and click the lock icon. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. +2) Click the appropriate organization that the instance belongs to. +3) Identify the proper instance card and click the lock icon. 4) You will immediately be logged out of the instance. To log in to an instance: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. 3) Identify the proper instance card, it will have an unlocked icon and a status reading PLEASE LOG IN, and click the center of the card. 4) Enter the database username. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/login-password-reset.md b/site/versioned_docs/version-4.1/harperdb-studio/login-password-reset.md index dddda5c1..46254627 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/login-password-reset.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/login-password-reset.md @@ -8,7 +8,7 @@ title: Login and Password Reset To log into your existing HarperDB Studio account: -1) Navigate to the [HarperDB Studio](https:/studio.harperdb.io/). +1) Navigate to the [HarperDB Studio](https://studio.harperdb.io/). 2) Enter your email address. 3) Enter your password. 4) Click **sign in**. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/manage-charts.md b/site/versioned_docs/version-4.1/harperdb-studio/manage-charts.md index f96505f5..b12a0776 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/manage-charts.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/manage-charts.md @@ -6,7 +6,7 @@ title: Charts The HarperDB Studio includes a charting feature within an instance. They are generated in real time based on your existing data and automatically refreshed every 15 seconds. Instance charts can be accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. 3) Select your desired instance. 4) Click **charts** in the instance control bar. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/manage-clustering.md b/site/versioned_docs/version-4.1/harperdb-studio/manage-clustering.md index 7155249d..36418e18 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/manage-clustering.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/manage-clustering.md @@ -10,7 +10,7 @@ HarperDB instance clustering and replication can be configured directly through All clustering configuration is handled through the **cluster** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/manage-functions.md b/site/versioned_docs/version-4.1/harperdb-studio/manage-functions.md index 3a74d7e5..99673cc9 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/manage-functions.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/manage-functions.md @@ -35,7 +35,7 @@ On the **functions** page of the HarperDB Studio you are presented with a functi Only displayed if there is an existing project. Displays the helper files contained within the selected project. * **/project_name/static** - Only displayed if there is an existing project. Displays the static file count and a link to the static files contained within the selected project. Note, static files cannot currently be deployed through the Studio and must be deployed via the [HarperDB API](https:/api.harperdb.io/) or manually to the server (not applicable with HarperDB Cloud). + Only displayed if there is an existing project. Displays the static file count and a link to the static files contained within the selected project. Note, static files cannot currently be deployed through the Studio and must be deployed via the [HarperDB API](https://api.harperdb.io/) or manually to the server (not applicable with HarperDB Cloud). * **Root File Directory** Displays the root file directory where the Custom Functions projects reside on this instance. @@ -54,7 +54,7 @@ HarperDB Custom Functions Projects can be initialized with the following instruc 3) Click the check mark icon next the appropriate instance. -4) The Studio will take a few moments to provision a new project based on the [Custom Functions template](https:/github.com/HarperDB/harperdb-custom-functions-template). +4) The Studio will take a few moments to provision a new project based on the [Custom Functions template](https://github.com/HarperDB/harperdb-custom-functions-template). 5) The Custom Functions project is now created and ready to modify. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/manage-instance-users.md b/site/versioned_docs/version-4.1/harperdb-studio/manage-instance-users.md index 4871cf88..78cf11b7 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/manage-instance-users.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/manage-instance-users.md @@ -10,7 +10,7 @@ HarperDB instance clustering and replication can be configured directly through Instance user configuration is handled through the **users** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/organizations.md b/site/versioned_docs/version-4.1/harperdb-studio/organizations.md index f9d5cb50..54df0eb1 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/organizations.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/organizations.md @@ -16,42 +16,43 @@ An organization is automatically created for you when you sign up for HarperDB S --- ## List Organizations -A summary view of all organizations your user belongs to can be viewed on the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the HarperDB Studio. +A summary view of all organizations your user belongs to can be viewed on the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the HarperDB Studio. ## Create a New Organization A new organization can be created as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the **Create a New Organization** card. -3) Fill out new organization details +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the **Create a New Organization** card. +3) Fill out new organization details * Enter Organization Name *This is used for descriptive purposes only.* * Enter Organization Subdomain - *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* 4) Click Create Organization. ## Delete an Organization + An organization cannot be deleted until all instances have been removed. An organization can be deleted as follows: -1) Navigate to the HarperDB Studio Organizations page. -2) Identify the proper organization card and click the trash can icon. -3) Enter the organization name into the text box. +1) Navigate to the HarperDB Studio Organizations page. +2) Identify the proper organization card and click the trash can icon. +3) Enter the organization name into the text box. *This is done for confirmation purposes to ensure you do not accidentally delete an organization.* 4) Click the **Do It** button. ## Manage Users -HarperDB Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. - +HarperDB Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. #### Inviting a User + A new user can be invited to an organization as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) In the **add user** box, enter the new user’s email address. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) In the **add user** box, enter the new user’s email address. 5) Click **Add User**. Users may or may not already be HarperDB Studio users when adding them to an organization. If the HarperDB Studio account already exists, the user will receive an email notification alerting them to the organization invitation. If the user does not have a HarperDB Studio account, they will receive an email welcoming them to HarperDB Studio. @@ -59,22 +60,25 @@ Users may or may not already be HarperDB Studio users when adding them to an org --- #### Toggle a User’s Organization Owner Status + Organization owners have full access to the organization including the ability to manage organization users, create, modify, and delete instances, and delete the organization. Users must have accepted their invitation prior to being promoted to an owner. A user’s organization owner status can be toggled owner as follows: -1) Navigate to the HarperDB Studio Organizations page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the HarperDB Studio Organizations page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Toggle the **Is Owner** switch to the desired status. + --- #### Remove a User from an Organization + Users may be removed from an organization at any time. Removing a user from an organization will not delete their HarperDB Studio account, it will only remove their access to the specified organization. A user can be removed from an organization as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Type **DELETE** in the text box in the **Delete User** row. *This is done for confirmation purposes to ensure you do not accidentally delete a user.* @@ -84,7 +88,7 @@ Users may be removed from an organization at any time. Removing a user from an o Billing is configured per organization and will be billed to the stored credit card at appropriate intervals (monthly or annually depending on the registered instance). Billing settings can be configured as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 2) Click the appropriate organization card. 3) Click **billing** at the top of the screen. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/query-instance-data.md b/site/versioned_docs/version-4.1/harperdb-studio/query-instance-data.md index 5c3ae28f..5dd2d8c6 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/query-instance-data.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/query-instance-data.md @@ -6,7 +6,7 @@ title: Query Instance Data SQL queries can be executed directly through the HarperDB Studio with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. 3) Select your desired instance. 4) Click **query** in the instance control bar. diff --git a/site/versioned_docs/version-4.1/harperdb-studio/resources.md b/site/versioned_docs/version-4.1/harperdb-studio/resources.md index 3eaf0a4a..01bd8f8a 100644 --- a/site/versioned_docs/version-4.1/harperdb-studio/resources.md +++ b/site/versioned_docs/version-4.1/harperdb-studio/resources.md @@ -8,36 +8,34 @@ HarperDB Studio resources are available regardless of whether or not you are log # HarperDB Marketplace -The [HarperDB Marketplace](https:/studio.harperdb.io/resources/marketplace/active) is a collection of SDKs and connectors that enable developers to expand upon HarperDB for quick and easy solution development. Extensions are built and supported by the HarperDB Community. Each extension is hosted on the appropriate package manager or host. +The [HarperDB Marketplace](https://studio.harperdb.io/resources/marketplace/active) is a collection of SDKs and connectors that enable developers to expand upon HarperDB for quick and easy solution development. Extensions are built and supported by the HarperDB Community. Each extension is hosted on the appropriate package manager or host. To download a Marketplace extension: -1) Navigate to the [HarperDB Marketplace](https:/studio.harperdb.io/resources/marketplace/active) page. -2) Identity the extension you would like to use. -3) Either click the link to the package. +1) Navigate to the [HarperDB Marketplace](https://studio.harperdb.io/resources/marketplace/active) page. +2) Identity the extension you would like to use. +3) Either click the link to the package. 4) Follow the extension’s instructions to proceed. You can submit your rating for each extension by clicking on the stars. ## HarperDB Drivers -HarperDB offers standard drivers to connect real-time HarperDB data with BI, analytics, reporting and data visualization technologies. Drivers are built and maintained by [CData Software](https:/www.cdata.com/drivers/harperdb/). - - +HarperDB offers standard drivers to connect real-time HarperDB data with BI, analytics, reporting and data visualization technologies. Drivers are built and maintained by [CData Software](https://www.cdata.com/drivers/harperdb/). To download a driver: -1) Navigate to the [HarperDB Drivers](https:/studio.harperdb.io/resources/marketplace/active) page. -2) Identity the driver you would like to use. -3) Click the download link. +1) Navigate to the [HarperDB Drivers](https://studio.harperdb.io/resources/marketplace/active) page. +2) Identity the driver you would like to use. +3) Click the download link. 4) For additional instructions, visit the support link on the driver card. ## Video Tutorials -HarperDB offers video tutorials available in the Studio on the [HarperDB Tutorials](https:/studio.harperdb.io/resources/tutorials/UExsZ1RNVEtzeXBTNUdJbjRZaTNOeEM0aW5YX3RBNU85SS4yODlGNEE0NkRGMEEzMEQy) page as well as our [YouTube channel](https:/www.youtube.com/playlist?list=PLlgTMTKsypS5GIn4Yi3NxC4inX_tA5O9I). The HarperDB Studio is changing all the time, as a result these, the videos may not include all of the current Studio features. +HarperDB offers video tutorials available in the Studio on the [HarperDB Tutorials](https://studio.harperdb.io/resources/tutorials/UExsZ1RNVEtzeXBTNUdJbjRZaTNOeEM0aW5YX3RBNU85SS4yODlGNEE0NkRGMEEzMEQy) page as well as our [YouTube channel](https://www.youtube.com/playlist?list=PLlgTMTKsypS5GIn4Yi3NxC4inX_tA5O9I). The HarperDB Studio is changing all the time, as a result these, the videos may not include all of the current Studio features. ## Example Code -The [code examples](https:/studio.harperdb.io/resources/examples/QuickStart%20Examples/Create%20dev%20Schema) page offers example code for many different programming languages. These samples will include a placeholder for your authorization token. Full code examples with the authorization token prepopulated are available within individual instance pages. \ No newline at end of file +The [code examples](https://studio.harperdb.io/resources/examples/QuickStart%20Examples/Create%20dev%20Schema) page offers example code for many different programming languages. These samples will include a placeholder for your authorization token. Full code examples with the authorization token prepopulated are available within individual instance pages. diff --git a/site/versioned_docs/version-4.1/index.md b/site/versioned_docs/version-4.1/index.md index fe8e0795..27237f68 100644 --- a/site/versioned_docs/version-4.1/index.md +++ b/site/versioned_docs/version-4.1/index.md @@ -10,8 +10,8 @@ HarperDB's documentation covers installation, getting started, APIs, security, a * [Install HarperDB Locally](./install-harperdb/) * [Getting Started](./getting-started/) -* [HarperDB Operations API](https:/api.harperdb.io) +* [HarperDB Operations API](https://api.harperdb.io) * [HarperDB Studio](./harperdb-studio/) * [HarperDB Cloud](./harperdb-cloud/) -* [Developer Project Examples](https:/github.com/search?q=harperdb) +* [Developer Project Examples](https://github.com/search?q=harperdb) * [Support](./support) diff --git a/site/versioned_docs/version-4.1/install-harperdb/index.md b/site/versioned_docs/version-4.1/install-harperdb/index.md index 72c05115..917d656d 100644 --- a/site/versioned_docs/version-4.1/install-harperdb/index.md +++ b/site/versioned_docs/version-4.1/install-harperdb/index.md @@ -4,11 +4,11 @@ title: Install HarperDB # Install HarperDB -This documentation contains information for installing HarperDB locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with HarperDB Cloud](https:/studio.harperdb.io/sign-up). HarperDB is a cross-platform database; we recommend Linux for production use, but HarperDB can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. +This documentation contains information for installing HarperDB locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with HarperDB Cloud](https://studio.harperdb.io/sign-up). HarperDB is a cross-platform database; we recommend Linux for production use, but HarperDB can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. -HarperDB runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing HarperDB, itself). Node.js can be downloaded and installed from [their site](https:/nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https:/github.com/nvm-sh/nvm), but generally NVM can be installed with: +HarperDB runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing HarperDB, itself). Node.js can be downloaded and installed from [their site](https://nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https://github.com/nvm-sh/nvm), but generally NVM can be installed with: ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` And then logout and login, and then install Node.js using nvm. We recommend using LTS, but support all currently maintained Node versions (which is currently version 14 and newer, and make sure to always uses latest minor/patch for the major version): @@ -32,16 +32,15 @@ If you are setting up a production server on Linux, [we have much more extensive # With Docker -If you would like to run HarperDB in Docker, install [Docker Desktop](https:/docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https:/docs.docker.com/engine/install/) on your Linux server. +If you would like to run HarperDB in Docker, install [Docker Desktop](https://docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https://docs.docker.com/engine/install/) on your Linux server. -Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https:/hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a HarperDB container. +Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https://hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a HarperDB container. # Offline Install If you need to install HarperDB on a device that doesn't have an Internet connection, you can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM): -Download Install Package - +Download Install Package Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: @@ -51,11 +50,11 @@ npm install -g harperdb-X.X.X.tgz harperdb install For more information visit the [HarperDB Command Line Interface](../harperdb-cli) guide. - # Installation on Less Common Platforms HarperDB comes with binaries for standard AMD64/x64 or ARM64 CPU architectures on Linux, Windows (x64 only), and Mac (including Apple Silicon). However, if you are installing on a less common platform (Alpine, for example), you will need to ensure that you have build tools installed for the installation process to compile the binaries (this is handled automatically), including: -* [Go](https:/go.dev/dl/): version 1.19.1 + +* [Go](https://go.dev/dl/): version 1.19.1 * GCC * Make * Python v3.7, v3.8, v3.9, or v3.10 diff --git a/site/versioned_docs/version-4.1/install-harperdb/linux.md b/site/versioned_docs/version-4.1/install-harperdb/linux.md index 8435985c..c40d9563 100644 --- a/site/versioned_docs/version-4.1/install-harperdb/linux.md +++ b/site/versioned_docs/version-4.1/install-harperdb/linux.md @@ -124,7 +124,7 @@ echo "ubuntu hard nofile 1000000" | sudo tee -a /etc/security/limits.conf Install Node Version Manager (nvm) ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Load nvm (or logout and then login) @@ -133,7 +133,7 @@ Load nvm (or logout and then login) . ~/.nvm/nvm.sh ``` -Install Node.js using nvm ([read more about specific Node version requirements](https:/www.npmjs.com/package/harperdb#prerequisites)) +Install Node.js using nvm ([read more about specific Node version requirements](https://www.npmjs.com/package/harperdb#prerequisites)) ```bash nvm install diff --git a/site/versioned_docs/version-4.1/jobs.md b/site/versioned_docs/version-4.1/jobs.md index e91330c7..98c901fe 100644 --- a/site/versioned_docs/version-4.1/jobs.md +++ b/site/versioned_docs/version-4.1/jobs.md @@ -16,19 +16,19 @@ The job status can be **COMPLETE** or **IN_PROGRESS**. Example job operations include: -[csv data load](https:/api.harperdb.io/#0186bc25-b9ae-44e7-bd9e-8edc0f289aa2) +[csv data load](https://api.harperdb.io/#0186bc25-b9ae-44e7-bd9e-8edc0f289aa2) -[csv file load](https:/api.harperdb.io/#c4b71011-8a1d-4cb2-8678-31c0363fea5e) +[csv file load](https://api.harperdb.io/#c4b71011-8a1d-4cb2-8678-31c0363fea5e) -[csv url load](https:/api.harperdb.io/#d1e9f433-e250-49db-b44d-9ce2dcd92d32) +[csv url load](https://api.harperdb.io/#d1e9f433-e250-49db-b44d-9ce2dcd92d32) -[import from s3](https:/api.harperdb.io/#820b3947-acbe-41f9-858b-2413cabc3a18) +[import from s3](https://api.harperdb.io/#820b3947-acbe-41f9-858b-2413cabc3a18) -[delete_records_before](https:/api.harperdb.io/#8de87e47-73a8-4298-b858-ca75dc5765c2) +[delete_records_before](https://api.harperdb.io/#8de87e47-73a8-4298-b858-ca75dc5765c2) -[export_local](https:/api.harperdb.io/#49a02517-ada9-4198-b48d-8707db905be0) +[export_local](https://api.harperdb.io/#49a02517-ada9-4198-b48d-8707db905be0) -[export_to_s3](https:/api.harperdb.io/#f6393e9f-e272-4180-a42c-ff029d93ddd4) +[export_to_s3](https://api.harperdb.io/#f6393e9f-e272-4180-a42c-ff029d93ddd4) Example Response from a Job Operation @@ -42,7 +42,7 @@ Whenever one of these operations is initiated, an asynchronous job is created an ## Managing Jobs -To check on a job's status, use the [get_job](https:/api.harperdb.io/#d501bef7-dbb7-4714-b535-e466f6583dce) operation. +To check on a job's status, use the [get_job](https://api.harperdb.io/#d501bef7-dbb7-4714-b535-e466f6583dce) operation. Get Job Request @@ -77,7 +77,7 @@ Get Job Response ## Finding Jobs -To find jobs (if the id is not know) use the [search_jobs_by_start_date](https:/api.harperdb.io/#4474ca16-e4c2-4740-81b5-14ed98c5eeab) operation. +To find jobs (if the id is not know) use the [search_jobs_by_start_date](https://api.harperdb.io/#4474ca16-e4c2-4740-81b5-14ed98c5eeab) operation. Search Jobs Request diff --git a/site/versioned_docs/version-4.1/logging.md b/site/versioned_docs/version-4.1/logging.md index 06d2eadc..bfb3a3bf 100644 --- a/site/versioned_docs/version-4.1/logging.md +++ b/site/versioned_docs/version-4.1/logging.md @@ -33,7 +33,7 @@ The log level can be changed by modifying `logging.level` in the config file `ha ## Clustering Logging -HarperDB clustering utilizes two [Nats](https:/nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of HarperDB +HarperDB clustering utilizes two [Nats](https://nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of HarperDB and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. diff --git a/site/versioned_docs/version-4.1/reference/dynamic-schema.md b/site/versioned_docs/version-4.1/reference/dynamic-schema.md index c700e42d..b2394550 100644 --- a/site/versioned_docs/version-4.1/reference/dynamic-schema.md +++ b/site/versioned_docs/version-4.1/reference/dynamic-schema.md @@ -31,12 +31,12 @@ Additional attributes are reflexively added via insert and update operations (in HarperDB automatically creates two audit attributes used on each record. -* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. -* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. +* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. +* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. ### Dynamic Schema Example -To better understand the behavior let’s take a look at an example. This example utilizes [HarperDB API operations](https:/api.harperdb.io/). +To better understand the behavior let’s take a look at an example. This example utilizes [HarperDB API operations](https://api.harperdb.io/). **Create a Schema** diff --git a/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.0.0.md b/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.0.0.md index 49770307..d2aa32b2 100644 --- a/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.0.0.md +++ b/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.0.0.md @@ -8,7 +8,7 @@ sidebar_position: 59999 **Networking & Data Replication (Clustering)** -The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https:/nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. +The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https://nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. * CORE-1464, CORE-1470, : Remove SocketCluster dependencies and all code related to them. * CORE-1465, CORE-1485, CORE-1537, CORE-1538, CORE-1558, CORE-1583, CORE_1665, CORE-1710, CORE-1801, CORE-1865 :Add nats-`server` code as dependency, on install of HarperDB download nats-`server` is possible else fallback to building from source code. * CORE-1593, CORE-1761: Add `nats.js` as project dependency. diff --git a/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.1.0.md b/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.1.0.md index 539ed67d..55472591 100644 --- a/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.1.0.md +++ b/site/versioned_docs/version-4.1/release-notes/v4-tucker/4.1.0.md @@ -21,7 +21,7 @@ A new operation called `cluster_network` was added, this operation will ping the Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](../../custom-functions/host-static). -Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](https:/api.harperdb.io/#aa74bbdf-668c-4536-80f1-b91bb13e5024). +Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](https://api.harperdb.io/#aa74bbdf-668c-4536-80f1-b91bb13e5024). Due to the AWS SDK v2 reaching end of life support we have updated to v3. This has caused some breaking changes in our operations `import_from_s3` and `export_to_s3`: * A new attribute `region` will need to be supplied diff --git a/site/versioned_docs/version-4.1/security/basic-auth.md b/site/versioned_docs/version-4.1/security/basic-auth.md index f251f27a..3f393e90 100644 --- a/site/versioned_docs/version-4.1/security/basic-auth.md +++ b/site/versioned_docs/version-4.1/security/basic-auth.md @@ -22,7 +22,7 @@ A header is added to each HTTP request. The header key is **“Authorization” In the below code sample, you can see where we add the authorization header to the request. This needs to be added for each and every HTTP request for HarperDB. -_Note: This function uses btoa. Learn about [btoa here](https:/developer.mozilla.org/en-US/docs/Web/API/btoa)._ +*Note: This function uses btoa. Learn about [btoa here](https://developer.mozilla.org/en-US/docs/Web/API/btoa).* ```javascript function callHarperDB(call_object, operation, callback){ diff --git a/site/versioned_docs/version-4.1/security/certificate-management.md b/site/versioned_docs/version-4.1/security/certificate-management.md index 2a840f78..8b2fe046 100644 --- a/site/versioned_docs/version-4.1/security/certificate-management.md +++ b/site/versioned_docs/version-4.1/security/certificate-management.md @@ -46,7 +46,7 @@ Instead of enabling HTTPS for HarperDB, Nginx can be used as a reverse proxy for Install Nginx, configure Nginx to use certificates issued from your own CA or a public CA, then configure Nginx to listen for HTTPS requests and forward to HarperDB as HTTP requests. -[Certbot](https:/certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. +[Certbot](https://certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. ### Option: External Reverse Proxy diff --git a/site/versioned_docs/version-4.1/security/configuration.md b/site/versioned_docs/version-4.1/security/configuration.md index 53fad411..550ad6aa 100644 --- a/site/versioned_docs/version-4.1/security/configuration.md +++ b/site/versioned_docs/version-4.1/security/configuration.md @@ -10,7 +10,7 @@ HarperDB was set up to require very minimal configuration to work out of the box ## CORS -HarperDB allows for managing [cross-origin HTTP requests](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). By default, HarperDB enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: +HarperDB allows for managing [cross-origin HTTP requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). By default, HarperDB enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: 1) Open the harperdb-config.yaml file this can be found in <ROOTPATH>, the location you specified during install. @@ -27,7 +27,7 @@ HarperDB allows for managing [cross-origin HTTP requests](https:/developer.mozil 2) To create an access list you set `corsAccessList` to a comma-separated list of domains. - i.e. `corsAccessList` is `http:/harperdb.io,http:/products.harperdb.io` + i.e. `corsAccessList` is `https://harperdb.io,https://products.harperdb.io` 3) To clear out the access list and allow all domains: `corsAccessList` is `[null]` diff --git a/site/versioned_docs/version-4.1/security/jwt-auth.md b/site/versioned_docs/version-4.1/security/jwt-auth.md index 8447c5ff..f5678915 100644 --- a/site/versioned_docs/version-4.1/security/jwt-auth.md +++ b/site/versioned_docs/version-4.1/security/jwt-auth.md @@ -94,4 +94,4 @@ Token timeouts are configurable in [harperdb-config.yaml](../configuration) with * `operationsApi.authentication.refreshTokenTimeout`: Defines the length of time until the refresh_token expires (default 30d). -A full list of valid values for both parameters can be found [here](https:/github.com/vercel/ms). \ No newline at end of file +A full list of valid values for both parameters can be found [here](https://github.com/vercel/ms). diff --git a/site/versioned_docs/version-4.1/sql-guide/date-functions.md b/site/versioned_docs/version-4.1/sql-guide/date-functions.md index f19d2126..f632b4ed 100644 --- a/site/versioned_docs/version-4.1/sql-guide/date-functions.md +++ b/site/versioned_docs/version-4.1/sql-guide/date-functions.md @@ -4,9 +4,9 @@ title: SQL Date Functions # SQL Date Functions -HarperDB utilizes [Coordinated Universal Time (UTC)](https:/en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. +HarperDB utilizes [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. -When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https:/en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https:/tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. +When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https://tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. ### CURRENT_DATE() @@ -117,7 +117,7 @@ AS date_diff_result" returns ### DATE_FORMAT(date, format) -Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https:/momentjs.com/docs/#/displaying/format/). +Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https://momentjs.com/docs/#/displaying/format/). ``` "SELECT DATE_FORMAT(1524412627973, 'YYYY-MM-DD HH:mm:ss') diff --git a/site/versioned_docs/version-4.1/sql-guide/features-matrix.md b/site/versioned_docs/version-4.1/sql-guide/features-matrix.md index f0ee3072..db9a216c 100644 --- a/site/versioned_docs/version-4.1/sql-guide/features-matrix.md +++ b/site/versioned_docs/version-4.1/sql-guide/features-matrix.md @@ -4,7 +4,7 @@ title: SQL Features Matrix # SQL Features Matrix -HarperDB provides access to most SQL functions, and we’re always expanding that list. Check below to see if we cover what you need. If not, feel free to [add a Feature Request](https:/feedback.harperdb.io/). +HarperDB provides access to most SQL functions, and we’re always expanding that list. Check below to see if we cover what you need. If not, feel free to [add a Feature Request](https://feedback.harperdb.io/). | INSERT | | diff --git a/site/versioned_docs/version-4.1/sql-guide/functions.md b/site/versioned_docs/version-4.1/sql-guide/functions.md index ccd6f247..b9a10787 100644 --- a/site/versioned_docs/version-4.1/sql-guide/functions.md +++ b/site/versioned_docs/version-4.1/sql-guide/functions.md @@ -20,7 +20,7 @@ This SQL keywords reference contains the SQL functions available in HarperDB. | ARRAY* | ARRAY(_expression_) | Returns a list of data as a field. | | DISTINCT_ARRAY* | DISTINCT_ARRAY(_expression_) | When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set. | -*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https:/www.harperdb.io/post/sql-queries-to-complex-objects). +*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https://www.harperdb.io/post/sql-queries-to-complex-objects). ### Conversion diff --git a/site/versioned_docs/version-4.1/sql-guide/json-search.md b/site/versioned_docs/version-4.1/sql-guide/json-search.md index 3c48c308..3a187db1 100644 --- a/site/versioned_docs/version-4.1/sql-guide/json-search.md +++ b/site/versioned_docs/version-4.1/sql-guide/json-search.md @@ -4,7 +4,7 @@ title: SQL JSON Search # SQL JSON Search -HarperDB automatically indexes all top level attributes in a row / object written to a table. However, any attributes which holds JSON does not have its nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, HarperDB offers a special SQL function called SEARCH_JSON. The SEARCH_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](http:/docs.jsonata.org/overview.html) into our SQL engine. +HarperDB automatically indexes all top level attributes in a row / object written to a table. However, any attributes which holds JSON does not have its nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, HarperDB offers a special SQL function called SEARCH_JSON. The SEARCH_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](https://docs.jsonata.org/overview.html) into our SQL engine. ## Syntax @@ -174,8 +174,6 @@ As seen above we execute the same name filter against the cast array, the primar -To see further SEARCH_JSON examples in action view our Postman Collection that provides a sample schema & data with query examples: https:/api.harperdb.io/ +To see further SEARCH_JSON examples in action view our Postman Collection that provides a sample schema & data with query examples: [https://api.harperdb.io/](https://api.harperdb.io/) - - -To learn more about how to build expressions check out the JSONata documentation: http:/docs.jsonata.org/overview \ No newline at end of file +To learn more about how to build expressions check out the JSONata documentation: [https://docs.jsonata.org/overview](https://docs.jsonata.org/overview) diff --git a/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/geoequal.md b/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/geoequal.md index 6c665e06..01d93f62 100644 --- a/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/geoequal.md +++ b/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/geoequal.md @@ -3,7 +3,7 @@ title: geoEqual --- # geoEqual -Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https:/developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. +Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see [https://developers.arcgis.com/documentation/spatial-references/](https://developers.arcgis.com/documentation/spatial-references/). Returns a Boolean. ## Syntax geoEqual(_geo1_, _geo2_) diff --git a/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/index.md b/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/index.md index e692e812..ce656c0f 100644 --- a/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/index.md +++ b/site/versioned_docs/version-4.1/sql-guide/sql-geospatial-functions/index.md @@ -4,11 +4,11 @@ title: SQL Geospatial Functions # SQL Geospatial Functions -HarperDB geospatial features require data to be stored in a single column using the [GeoJSON standard](http:/geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. +HarperDB geospatial features require data to be stored in a single column using the [GeoJSON standard](https://geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. -If you are new to GeoJSON you should check out the full specification here: http:/geojson.org/. There are a few important things to point out before getting started. +If you are new to GeoJSON you should check out the full specification here: [https://geojson.org/](https://geojson.org/). There are a few important things to point out before getting started. diff --git a/site/versioned_docs/version-4.1/support.md b/site/versioned_docs/version-4.1/support.md index b89a8e5f..c30c3983 100644 --- a/site/versioned_docs/version-4.1/support.md +++ b/site/versioned_docs/version-4.1/support.md @@ -4,10 +4,10 @@ title: Support # Support -HarperDB support is available with all paid instances. Support tickets are managed via our [Zendesk portal](https:/harperdbhelp.zendesk.com/hc/en-us/requests/new). Once a ticket is submitted the HarperDB team will triage your request and get back to you as soon as possible. Additionally, you can join our [Slack community](https:/harperdbcommunity.slack.com/join/shared\_invite/zt-e8w6u1pu-2UFAXl\_f4ZHo7F7DVkHIDA#/) where HarperDB team members and others in the community are frequently active to help answer questions. +HarperDB support is available with all paid instances. Support tickets are managed via our [Zendesk portal](https://harperdbhelp.zendesk.com/hc/en-us/requests/new). Once a ticket is submitted the HarperDB team will triage your request and get back to you as soon as possible. Additionally, you can join our [Slack community](https://harperdbcommunity.slack.com/join/shared\_invite/zt-e8w6u1pu-2UFAXl\_f4ZHo7F7DVkHIDA#/) where HarperDB team members and others in the community are frequently active to help answer questions. -* [Submit a Support Ticket](https:/harperdbhelp.zendesk.com/hc/en-us/requests/new) -* [Join Our Slack Community](https:/harperdbcommunity.slack.com/join/shared\_invite/zt-e8w6u1pu-2UFAXl\_f4ZHo7F7DVkHIDA#/) +* [Submit a Support Ticket](https://harperdbhelp.zendesk.com/hc/en-us/requests/new) +* [Join Our Slack Community](https://harperdbcommunity.slack.com/join/shared\_invite/zt-e8w6u1pu-2UFAXl\_f4ZHo7F7DVkHIDA#/) *** diff --git a/site/versioned_docs/version-4.1/upgrade-hdb-instance.md b/site/versioned_docs/version-4.1/upgrade-hdb-instance.md index af7ba7b1..87e33305 100644 --- a/site/versioned_docs/version-4.1/upgrade-hdb-instance.md +++ b/site/versioned_docs/version-4.1/upgrade-hdb-instance.md @@ -19,9 +19,9 @@ Upgrading HarperDB is a two-step process. First the latest version of HarperDB m ## Node Version Manager (nvm) -[Node Version Manager (nvm)](http:/nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https:/nvm.sh/. +[Node Version Manager (nvm)](https://nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: [https://nvm.sh/](https://nvm.sh/). -HarperDB supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https:/www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: +HarperDB supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https://www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: ```bash nvm install diff --git a/site/versioned_docs/version-4.2/administration/cloning.md b/site/versioned_docs/version-4.2/administration/cloning.md index 32f73933..4cc38a0a 100644 --- a/site/versioned_docs/version-4.2/administration/cloning.md +++ b/site/versioned_docs/version-4.2/administration/cloning.md @@ -19,7 +19,7 @@ To run clone node either of the following variables must be set: For example: ``` -HDB_LEADER_URL=https:/node-1.my-domain.com:9925 HDB_LEADER_CLUSTERING_HOST=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb +HDB_LEADER_URL=https://node-1.my-domain.com:9925 HDB_LEADER_CLUSTERING_HOST=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb ``` #### Command line variables @@ -31,7 +31,7 @@ HDB_LEADER_URL=https:/node-1.my-domain.com:9925 HDB_LEADER_CLUSTERING_HOST=node- For example: ``` -harperdb --HDB_LEADER_URL https:/node-1.my-domain.com:9925 --HDB_LEADER_CLUSTERING_HOST node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... +harperdb --HDB_LEADER_URL https://node-1.my-domain.com:9925 --HDB_LEADER_CLUSTERING_HOST node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... ``` If an instance already exists in the location you are cloning to, clone node will not run. It will instead proceed with starting HarperDB. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/create-account.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/create-account.md index 635de7f4..3b0f9a56 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/create-account.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/create-account.md @@ -3,7 +3,7 @@ title: Create a Studio Account --- # Create a Studio Account -Start at the [HarperDB Studio sign up page](https:/studio.harperdb.io/sign-up). +Start at the [HarperDB Studio sign up page](https://studio.harperdb.io/sign-up). 1) Provide the following information: * First Name @@ -11,7 +11,7 @@ Start at the [HarperDB Studio sign up page](https:/studio.harperdb.io/sign-up). * Email Address * Subdomain - *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* * Coupon Code (optional) 2) Review the Privacy Policy and Terms of Service. 3) Click the sign up for free button. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/enable-mixed-content.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/enable-mixed-content.md index 1948d6be..7a3c8524 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/enable-mixed-content.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/enable-mixed-content.md @@ -8,4 +8,4 @@ Enabling mixed content is required in cases where you would like to connect the -A comprehensive guide is provided by Adobe [here](https:/experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). \ No newline at end of file +A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/index.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/index.md index 93ba1af7..78d1ebb4 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/index.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/index.md @@ -5,7 +5,7 @@ title: HarperDB Studio # HarperDB Studio HarperDB Studio is the web-based GUI for HarperDB. Studio enables you to administer, navigate, and monitor all of your HarperDB instances in a simple, user friendly interface without any knowledge of the underlying HarperDB API. It’s free to sign up, get started today! -[Sign up for free!](https:/studio.harperdb.io/sign-up) +[Sign up for free!](https://studio.harperdb.io/sign-up) --- ## How does Studio Work? diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-configuration.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-configuration.md index 55c01be1..618daceb 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-configuration.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-configuration.md @@ -10,7 +10,7 @@ HarperDB instance configuration can be viewed and managed directly through the H All instance configuration is handled through the **config** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. @@ -68,7 +68,7 @@ Note: For HarperDB Cloud instances, upgrading RAM may add additional CPUs to you 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -*Note, if HarperDB Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* +*Note, if HarperDB Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Update Instance Storage @@ -79,18 +79,18 @@ Note: Instance storage can only be upgraded once every 6 hours. 1) In the **update storage** panel at the bottom left: * Select the new instance storage size. - + * If you do not have a credit card associated with your account, an **Add Credit Card To Account** button will appear. Click that to be taken to the billing screen where you can enter your credit card information before returning to the **config** tab to proceed with the upgrade. - + * If you do have a credit card associated, you will be presented with the updated billing information. - + * Click **Upgrade**. - + 2) The instance will shut down and begin reprovisioning itself. The instance will not be available during this time. You will be returned to the instance dashboard and the instance status will show UPDATING INSTANCE. - + 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. - -*Note, if this process takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* + +*Note, if this process takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Remove Instance diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-example-code.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-example-code.md index b4b74e5f..3869f4af 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-example-code.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-example-code.md @@ -6,7 +6,7 @@ title: Instance Example Code Example code prepopulated with the instance URL and authorization token for the logged in database user can be found on the **example code** page of the HarperDB Studio. Code samples are generated based on the HarperDB API Documentation Postman collection. Code samples accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-metrics.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-metrics.md index f084df63..bf95850b 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-metrics.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/instance-metrics.md @@ -6,7 +6,7 @@ title: Instance Metrics The HarperDB Studio display instance status and metrics on the instance status page, which can be accessed with the following instructions: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **status** in the instance control bar. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/instances.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/instances.md index 7c209629..da82e000 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/instances.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/instances.md @@ -14,11 +14,11 @@ All interactions between the Studio and your instances take place directly from ## Organization Instance List -A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. Each instance gets their own card. HarperDB Cloud and user-installed instances are listed together. +A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. Each instance gets their own card. HarperDB Cloud and user-installed instances are listed together. ## Create a New Instance -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New HarperDB Cloud Instance + Register User-Installed Instance** card. 1. Select your desired Instance Type. @@ -26,7 +26,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Fill out Instance Info. 1. Enter Instance Name - _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com. The Instance URL will be previewed below._ + _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com). The Instance URL will be previewed below._ 1. Enter Instance Username _This is the username of the initial HarperDB instance super user._ @@ -46,14 +46,14 @@ A summary view of all instances within an organization can be viewed by clicking _The geographic area where your instance will be provisioned._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. Your HarperDB Cloud instance will be provisioned in the background. Provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. ## Register User-Installed Instance -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization for the instance to be created under. 3) Click the **Create New HarperDB Cloud Instance + Register User-Installed Instance** card. 4) Select **Register User-Installed Instance**. @@ -83,7 +83,7 @@ A summary view of all instances within an organization can be viewed by clicking _HarperDB instances are billed based on Instance RAM. Selecting additional RAM will enable the ability for faster and more complex queries._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. The HarperDB Studio will register your instance and restart it for the registration to take effect. Your instance will be immediately available after this is complete. @@ -96,7 +96,7 @@ Instance deletion has two different behaviors depending on the instance type. An instance can be deleted as follows: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the trash can icon. 1. Enter the instance name into the text box. @@ -112,14 +112,14 @@ HarperDB instances can be resized on the [Instance Configuration](./instance-con The Studio enables users to log in and out of different database users from the instance control panel. To log out of an instance: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the lock icon. 1. You will immediately be logged out of the instance. To log in to an instance: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card, it will have an unlocked icon and a status reading PLEASE LOG IN, and click the center of the card. 1. Enter the database username. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/login-password-reset.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/login-password-reset.md index dddda5c1..46254627 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/login-password-reset.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/login-password-reset.md @@ -8,7 +8,7 @@ title: Login and Password Reset To log into your existing HarperDB Studio account: -1) Navigate to the [HarperDB Studio](https:/studio.harperdb.io/). +1) Navigate to the [HarperDB Studio](https://studio.harperdb.io/). 2) Enter your email address. 3) Enter your password. 4) Click **sign in**. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-charts.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-charts.md index 38c8bc0d..9c3cb18f 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-charts.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-charts.md @@ -6,7 +6,7 @@ title: Manage Charts The HarperDB Studio includes a charting feature within an instance. They are generated in real time based on your existing data and automatically refreshed every 15 seconds. Instance charts can be accessed with the following instructions: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **charts** in the instance control bar. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-clustering.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-clustering.md index 7155249d..36418e18 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-clustering.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-clustering.md @@ -10,7 +10,7 @@ HarperDB instance clustering and replication can be configured directly through All clustering configuration is handled through the **cluster** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-functions.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-functions.md index 3a74d7e5..99673cc9 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-functions.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-functions.md @@ -35,7 +35,7 @@ On the **functions** page of the HarperDB Studio you are presented with a functi Only displayed if there is an existing project. Displays the helper files contained within the selected project. * **/project_name/static** - Only displayed if there is an existing project. Displays the static file count and a link to the static files contained within the selected project. Note, static files cannot currently be deployed through the Studio and must be deployed via the [HarperDB API](https:/api.harperdb.io/) or manually to the server (not applicable with HarperDB Cloud). + Only displayed if there is an existing project. Displays the static file count and a link to the static files contained within the selected project. Note, static files cannot currently be deployed through the Studio and must be deployed via the [HarperDB API](https://api.harperdb.io/) or manually to the server (not applicable with HarperDB Cloud). * **Root File Directory** Displays the root file directory where the Custom Functions projects reside on this instance. @@ -54,7 +54,7 @@ HarperDB Custom Functions Projects can be initialized with the following instruc 3) Click the check mark icon next the appropriate instance. -4) The Studio will take a few moments to provision a new project based on the [Custom Functions template](https:/github.com/HarperDB/harperdb-custom-functions-template). +4) The Studio will take a few moments to provision a new project based on the [Custom Functions template](https://github.com/HarperDB/harperdb-custom-functions-template). 5) The Custom Functions project is now created and ready to modify. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-instance-users.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-instance-users.md index 4871cf88..78cf11b7 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-instance-users.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/manage-instance-users.md @@ -10,7 +10,7 @@ HarperDB instance clustering and replication can be configured directly through Instance user configuration is handled through the **users** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/organizations.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/organizations.md index f9d5cb50..54df0eb1 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/organizations.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/organizations.md @@ -16,42 +16,43 @@ An organization is automatically created for you when you sign up for HarperDB S --- ## List Organizations -A summary view of all organizations your user belongs to can be viewed on the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the HarperDB Studio. +A summary view of all organizations your user belongs to can be viewed on the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the HarperDB Studio. ## Create a New Organization A new organization can be created as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the **Create a New Organization** card. -3) Fill out new organization details +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the **Create a New Organization** card. +3) Fill out new organization details * Enter Organization Name *This is used for descriptive purposes only.* * Enter Organization Subdomain - *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* 4) Click Create Organization. ## Delete an Organization + An organization cannot be deleted until all instances have been removed. An organization can be deleted as follows: -1) Navigate to the HarperDB Studio Organizations page. -2) Identify the proper organization card and click the trash can icon. -3) Enter the organization name into the text box. +1) Navigate to the HarperDB Studio Organizations page. +2) Identify the proper organization card and click the trash can icon. +3) Enter the organization name into the text box. *This is done for confirmation purposes to ensure you do not accidentally delete an organization.* 4) Click the **Do It** button. ## Manage Users -HarperDB Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. - +HarperDB Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. #### Inviting a User + A new user can be invited to an organization as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) In the **add user** box, enter the new user’s email address. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) In the **add user** box, enter the new user’s email address. 5) Click **Add User**. Users may or may not already be HarperDB Studio users when adding them to an organization. If the HarperDB Studio account already exists, the user will receive an email notification alerting them to the organization invitation. If the user does not have a HarperDB Studio account, they will receive an email welcoming them to HarperDB Studio. @@ -59,22 +60,25 @@ Users may or may not already be HarperDB Studio users when adding them to an org --- #### Toggle a User’s Organization Owner Status + Organization owners have full access to the organization including the ability to manage organization users, create, modify, and delete instances, and delete the organization. Users must have accepted their invitation prior to being promoted to an owner. A user’s organization owner status can be toggled owner as follows: -1) Navigate to the HarperDB Studio Organizations page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the HarperDB Studio Organizations page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Toggle the **Is Owner** switch to the desired status. + --- #### Remove a User from an Organization + Users may be removed from an organization at any time. Removing a user from an organization will not delete their HarperDB Studio account, it will only remove their access to the specified organization. A user can be removed from an organization as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Type **DELETE** in the text box in the **Delete User** row. *This is done for confirmation purposes to ensure you do not accidentally delete a user.* @@ -84,7 +88,7 @@ Users may be removed from an organization at any time. Removing a user from an o Billing is configured per organization and will be billed to the stored credit card at appropriate intervals (monthly or annually depending on the registered instance). Billing settings can be configured as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 2) Click the appropriate organization card. 3) Click **billing** at the top of the screen. diff --git a/site/versioned_docs/version-4.2/administration/harperdb-studio/query-instance-data.md b/site/versioned_docs/version-4.2/administration/harperdb-studio/query-instance-data.md index 5c3ae28f..5dd2d8c6 100644 --- a/site/versioned_docs/version-4.2/administration/harperdb-studio/query-instance-data.md +++ b/site/versioned_docs/version-4.2/administration/harperdb-studio/query-instance-data.md @@ -6,7 +6,7 @@ title: Query Instance Data SQL queries can be executed directly through the HarperDB Studio with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. 3) Select your desired instance. 4) Click **query** in the instance control bar. diff --git a/site/versioned_docs/version-4.2/administration/jobs.md b/site/versioned_docs/version-4.2/administration/jobs.md index e7eccad2..1c629b45 100644 --- a/site/versioned_docs/version-4.2/administration/jobs.md +++ b/site/versioned_docs/version-4.2/administration/jobs.md @@ -16,19 +16,19 @@ The job status can be **COMPLETE** or **IN\_PROGRESS**. Example job operations include: -[csv data load](https:/api.harperdb.io/#0186bc25-b9ae-44e7-bd9e-8edc0f289aa2) +[csv data load](https://api.harperdb.io/#0186bc25-b9ae-44e7-bd9e-8edc0f289aa2) -[csv file load](https:/api.harperdb.io/#c4b71011-8a1d-4cb2-8678-31c0363fea5e) +[csv file load](https://api.harperdb.io/#c4b71011-8a1d-4cb2-8678-31c0363fea5e) -[csv url load](https:/api.harperdb.io/#d1e9f433-e250-49db-b44d-9ce2dcd92d32) +[csv url load](https://api.harperdb.io/#d1e9f433-e250-49db-b44d-9ce2dcd92d32) -[import from s3](https:/api.harperdb.io/#820b3947-acbe-41f9-858b-2413cabc3a18) +[import from s3](https://api.harperdb.io/#820b3947-acbe-41f9-858b-2413cabc3a18) -[delete\_records\_before](https:/api.harperdb.io/#8de87e47-73a8-4298-b858-ca75dc5765c2) +[delete\_records\_before](https://api.harperdb.io/#8de87e47-73a8-4298-b858-ca75dc5765c2) -[export\_local](https:/api.harperdb.io/#49a02517-ada9-4198-b48d-8707db905be0) +[export\_local](https://api.harperdb.io/#49a02517-ada9-4198-b48d-8707db905be0) -[export\_to\_s3](https:/api.harperdb.io/#f6393e9f-e272-4180-a42c-ff029d93ddd4) +[export\_to\_s3](https://api.harperdb.io/#f6393e9f-e272-4180-a42c-ff029d93ddd4) Example Response from a Job Operation @@ -42,7 +42,7 @@ Whenever one of these operations is initiated, an asynchronous job is created an ## Managing Jobs -To check on a job's status, use the [get\_job](https:/api.harperdb.io/#d501bef7-dbb7-4714-b535-e466f6583dce) operation. +To check on a job's status, use the [get\_job](https://api.harperdb.io/#d501bef7-dbb7-4714-b535-e466f6583dce) operation. Get Job Request @@ -77,7 +77,7 @@ Get Job Response ## Finding Jobs -To find jobs (if the ID is not known) use the [search\_jobs\_by\_start\_date](https:/api.harperdb.io/#4474ca16-e4c2-4740-81b5-14ed98c5eeab) operation. +To find jobs (if the ID is not known) use the [search\_jobs\_by\_start\_date](https://api.harperdb.io/#4474ca16-e4c2-4740-81b5-14ed98c5eeab) operation. Search Jobs Request diff --git a/site/versioned_docs/version-4.2/administration/logging/standard-logging.md b/site/versioned_docs/version-4.2/administration/logging/standard-logging.md index d586da1c..cf120e3b 100644 --- a/site/versioned_docs/version-4.2/administration/logging/standard-logging.md +++ b/site/versioned_docs/version-4.2/administration/logging/standard-logging.md @@ -38,7 +38,7 @@ The log level can be changed by modifying `logging.level` in the config file `ha ## Clustering Logging -HarperDB clustering utilizes two [Nats](https:/nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of HarperDB and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. +HarperDB clustering utilizes two [Nats](https://nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of HarperDB and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. ## Log File vs Standard Streams diff --git a/site/versioned_docs/version-4.2/deployments/configuration.md b/site/versioned_docs/version-4.2/deployments/configuration.md index c10ba2a8..23427879 100644 --- a/site/versioned_docs/version-4.2/deployments/configuration.md +++ b/site/versioned_docs/version-4.2/deployments/configuration.md @@ -4,7 +4,7 @@ title: Configuration File # Configuration File -HarperDB is configured through a [YAML](https:/yaml.org/) file called `harperdb-config.yaml` located in the operations API root directory (by default this is a directory named `hdb` located in the home directory of the current user). +HarperDB is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the operations API root directory (by default this is a directory named `hdb` located in the home directory of the current user). All available configuration will be populated by default in the config file on install, regardless of whether it is used. @@ -340,7 +340,7 @@ clustering: ### `localStudio` -The `localStudio` section configures the local HarperDB Studio, a simplified GUI for HarperDB hosted on the server. A more comprehensive GUI is hosted by HarperDB at https:/studio.harperdb.io. Note, all database traffic from either `localStudio` or HarperDB Studio is made directly from your browser to the instance. +The `localStudio` section configures the local HarperDB Studio, a simplified GUI for HarperDB hosted on the server. A more comprehensive GUI is hosted by HarperDB at [https://studio.harperdb.io](https://studio.harperdb.io). Note, all database traffic from either `localStudio` or HarperDB Studio is made directly from your browser to the instance. `enabled` - _Type_: boolean; _Default_: false @@ -485,11 +485,11 @@ This will enable cookie-based sessions to maintain an authenticated session. Thi `operationTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time an operation token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time an operation token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `refreshTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time a refresh token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time a refresh token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). ### `operationsApi` diff --git a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/index.md b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/index.md index ae2ec1a7..05b953a0 100644 --- a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/index.md +++ b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/index.md @@ -4,6 +4,6 @@ title: HarperDB Cloud # HarperDB Cloud -[HarperDB Cloud](https:/studio.harperdb.io/) is the easiest way to test drive HarperDB, it’s HarperDB-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. HarperDB Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. +[HarperDB Cloud](https://studio.harperdb.io/) is the easiest way to test drive HarperDB, it’s HarperDB-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. HarperDB Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. You can create a new [HarperDB Cloud instance in the HarperDB Studio](../../administration/harperdb-studio/instances#create-a-new-instance). diff --git a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/instance-size-hardware-specs.md b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/instance-size-hardware-specs.md index 0e970b13..676d536d 100644 --- a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/instance-size-hardware-specs.md +++ b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/instance-size-hardware-specs.md @@ -20,4 +20,4 @@ While HarperDB Cloud bills by RAM, each instance has other specifications associ | m5.16xlarge | 256 | 64 | 20 | Up to 3.1 GHz Intel Xeon Platinum 8000 | | m5.24xlarge | 384 | 96 | 25 | Up to 3.1 GHz Intel Xeon Platinum 8000 | -\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https:/aws.amazon.com/ec2/instance-types/](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https://aws.amazon.com/ec2/instance-types/](https://aws.amazon.com/ec2/instance-types/). diff --git a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/iops-impact.md b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/iops-impact.md index 1c8496d5..8d1b952a 100644 --- a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/iops-impact.md +++ b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/iops-impact.md @@ -18,7 +18,7 @@ HarperDB Cloud utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp3 AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result, all HarperDB Cloud storage options will offer 3,000 IOPS. We plan to offer scalable IOPS as an option in the future. -You can read more about AWS EBS volume IOPS here: https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. +You can read more about AWS EBS volume IOPS here: [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html). ## Estimating IOPS for HarperDB Instance diff --git a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md index c5a565e9..f2100f77 100644 --- a/site/versioned_docs/version-4.2/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md +++ b/site/versioned_docs/version-4.2/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md @@ -8,7 +8,7 @@ These instances are only accessible from the Verizon network. When accessing you HarperDB on Verizon 5G Wavelength brings HarperDB closer to the end user exclusively on the Verizon network resulting in as little as single-digit millisecond response time from HarperDB to the client. -Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https:/aws.amazon.com/wavelength/). +Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https://aws.amazon.com/wavelength/). HarperDB 5G Wavelength Instance Specs While HarperDB 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail\*. @@ -18,7 +18,7 @@ HarperDB 5G Wavelength Instance Specs While HarperDB 5G Wavelength bills by RAM, | t3.xlarge | 16 | 4 | Up to 5 | Up to 3.1 GHz Intel Xeon Platinum Processor | | r5.2xlarge | 64 | 8 | Up to 10 | Up to 3.1 GHz Intel Xeon Platinum Processor | -\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https://aws.amazon.com/ec2/instance-types/). ## HarperDB 5G Wavelength Storage @@ -28,4 +28,4 @@ AWS EBS gp2 volumes have a baseline performance level, which determines the numb Smaller gp2 volumes are perfect for trying out the functionality of HarperDB, and might also work well for applications that don’t perform many database transactions. For applications that perform a moderate or high number of transactions, we recommend that you use a larger HarperDB volume. Learn more about the [impact of IOPS on performance here](./iops-impact). -You can read more about [AWS EBS gp2 volume IOPS here](https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). +You can read more about [AWS EBS gp2 volume IOPS here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). diff --git a/site/versioned_docs/version-4.2/deployments/install-harperdb/index.md b/site/versioned_docs/version-4.2/deployments/install-harperdb/index.md index 32a23e0b..a131c3c7 100644 --- a/site/versioned_docs/version-4.2/deployments/install-harperdb/index.md +++ b/site/versioned_docs/version-4.2/deployments/install-harperdb/index.md @@ -6,12 +6,12 @@ title: Install HarperDB ## Install HarperDB -This documentation contains information for installing HarperDB locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with HarperDB Cloud](https:/studio.harperdb.io/sign-up). HarperDB is a cross-platform database; we recommend Linux for production use, but HarperDB can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. +This documentation contains information for installing HarperDB locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with HarperDB Cloud](https://studio.harperdb.io/sign-up). HarperDB is a cross-platform database; we recommend Linux for production use, but HarperDB can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. -HarperDB runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing HarperDB, itself). Node.js can be downloaded and installed from [their site](https:/nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https:/github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: +HarperDB runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing HarperDB, itself). Node.js can be downloaded and installed from [their site](https://nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https://github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash ``` And then logout and login, and then install Node.js using nvm. We recommend using LTS, but support all currently maintained Node versions (which is currently version 14 and newer, and make sure to always uses latest minor/patch for the major version): @@ -35,15 +35,15 @@ If you are setting up a production server on Linux, [we have much more extensive ## With Docker -If you would like to run HarperDB in Docker, install [Docker Desktop](https:/docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https:/docs.docker.com/engine/install/) on your Linux server. +If you would like to run HarperDB in Docker, install [Docker Desktop](https://docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https://docs.docker.com/engine/install/) on your Linux server. -Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https:/hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a HarperDB container. +Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https://hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a HarperDB container. ## Offline Install If you need to install HarperDB on a device that doesn't have an Internet connection, you can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM): -[Download Install Package](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) +[Download Install Package](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: @@ -57,7 +57,7 @@ For more information visit the [HarperDB Command Line Interface](../harperdb-cli HarperDB comes with binaries for standard AMD64/x64 or ARM64 CPU architectures on Linux, Windows (x64 only), and Mac (including Apple Silicon). However, if you are installing on a less common platform (Alpine, for example), you will need to ensure that you have build tools installed for the installation process to compile the binaries (this is handled automatically), including: -* [Go](https:/go.dev/dl/): version 1.19.1 +* [Go](https://go.dev/dl/): version 1.19.1 * GCC * Make * Python v3.7, v3.8, v3.9, or v3.10 diff --git a/site/versioned_docs/version-4.2/deployments/install-harperdb/linux.md b/site/versioned_docs/version-4.2/deployments/install-harperdb/linux.md index bf02830e..1d0013b5 100644 --- a/site/versioned_docs/version-4.2/deployments/install-harperdb/linux.md +++ b/site/versioned_docs/version-4.2/deployments/install-harperdb/linux.md @@ -128,7 +128,7 @@ echo "ubuntu hard nofile 1000000" | sudo tee -a /etc/security/limits.conf Install Node Version Manager (nvm) ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Load nvm (or logout and then login) @@ -137,7 +137,7 @@ Load nvm (or logout and then login) . ~/.nvm/nvm.sh ``` -Install Node.js using nvm ([read more about specific Node version requirements](https:/www.npmjs.com/package/harperdb#prerequisites)) +Install Node.js using nvm ([read more about specific Node version requirements](https://www.npmjs.com/package/harperdb#prerequisites)) ```bash nvm install diff --git a/site/versioned_docs/version-4.2/deployments/upgrade-hdb-instance.md b/site/versioned_docs/version-4.2/deployments/upgrade-hdb-instance.md index 0b7c6e3f..b5f54570 100644 --- a/site/versioned_docs/version-4.2/deployments/upgrade-hdb-instance.md +++ b/site/versioned_docs/version-4.2/deployments/upgrade-hdb-instance.md @@ -19,9 +19,9 @@ Upgrading HarperDB is a two-step process. First the latest version of HarperDB m ## Node Version Manager (nvm) -[Node Version Manager (nvm)](http:/nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https:/nvm.sh/. +[Node Version Manager (nvm)](https://nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: [https://nvm.sh/](https://nvm.sh/). -HarperDB supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https:/www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: +HarperDB supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https://www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: ```bash nvm install diff --git a/site/versioned_docs/version-4.2/developers/applications/caching.md b/site/versioned_docs/version-4.2/developers/applications/caching.md index 7f228b5e..268adb74 100644 --- a/site/versioned_docs/version-4.2/developers/applications/caching.md +++ b/site/versioned_docs/version-4.2/developers/applications/caching.md @@ -29,8 +29,8 @@ Next, you need to define the source for your cache. External data sources could ```javascript class ThirdPartyAPI extends Resource { async get() { - return (await fetch(`http:/some-api.com/${this.getId()}`)).json(); - } + return (await fetch(`https://some-api.com/${this.getId()}`)).json(); + } } ``` @@ -45,10 +45,10 @@ Now we have a fully configured and connected cache. If you access data from `MyC ```mermaid flowchart TD - Client1(Client 1)-->Cache(Caching Table) - Client2(Client 2)-->Cache - Cache-->Resource(Data Source Connector) - Resource-->API(Remote Data Source API) + Client1(Client 1)-->Cache(Caching Table) + Client2(Client 2)-->Cache + Cache-->Resource(Data Source Connector) + Resource-->API(Remote Data Source API) ``` HarperDB handles waiting for an existing cache resolution to finish and uses its result. This prevents a "cache stampede" when entries expire, ensuring that multiple requests to a cache entry will all wait on a single request to the data source. @@ -65,11 +65,11 @@ In the example above, we simply retrieved data to fulfill a cache request. We ma ```javascript class ThirdPartyAPI extends Resource { - async get() { - let response = await fetch(`http:/some-api.com/${this.getId()}`); - this.getContext().lastModified = response.headers.get('Last-Modified'); - return response.json(); - } + async get() { + let response = await fetch(`https://some-api.com/${this.getId()}`); + this.getContext().lastModified = response.headers.get('Last-Modified'); + return response.json(); + } } ``` @@ -79,19 +79,19 @@ In addition, we can also specify when a cached record "expires". When a cached r ```javascript class ThirdPartyAPI extends Resource { - async get() { - const context = this.getContext(); - let headers = new Headers(); - if (context.replacingVersion) / this is the existing cached record - headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); - let response = await fetch(`http:/some-api.com/${this.getId()}`, { headers }); - let cacheInfo = response.headers.get('Cache-Control'); - let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; - if (maxAge) / we can set a specific expiration time by setting context.expiresAt - context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time - / we can just revalidate and return the record if the origin has confirmed that it has the same version: - if (response.status === 304) return context.replacingRecord; - ... + async get() { + const context = this.getContext(); + let headers = new Headers(); + if (context.replacingVersion) / this is the existing cached record + headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); + let response = await fetch(`https://some-api.com/${this.getId()}`, { headers }); + let cacheInfo = response.headers.get('Cache-Control'); + let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; + if (maxAge) / we can set a specific expiration time by setting context.expiresAt + context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time + / we can just revalidate and return the record if the origin has confirmed that it has the same version: + if (response.status === 304) return context.replacingRecord; + ... ``` ## Active Caching and Invalidation @@ -105,10 +105,10 @@ One way to provide more active caching is to specifically invalidate individual ```javascript const { MyTable } = tables; export class MyTableEndpoint extends MyTable { - async post(data) { - if (data.invalidate) / use this flag as a marker - this.invalidate(); - } + async post(data) { + if (data.invalidate) / use this flag as a marker + this.invalidate(); + } } ``` @@ -120,20 +120,20 @@ We can provide more control of an active cache with subscriptions. If there is a ```javascript class ThirdPartyAPI extends Resource { - async *subscribe() { - do { - / get the next data change event from the source - let update = (await fetch(`http:/some-api.com/latest-update`)).json(); - const event = { / define the change event (which will update the cache) - type: 'put', / this would indicate that the event includes the new data value - id: / the primary key of the record that updated - value: / the new value of the record that updated - timestamp: / the timestamp of when the data change occurred - }; - yield event; / this returns this event, notifying the cache of the change - } while(true); - } - async get() { + async *subscribe() { + do { + / get the next data change event from the source + let update = (await fetch(`https://some-api.com/latest-update`)).json(); + const event = { / define the change event (which will update the cache) + type: 'put', / this would indicate that the event includes the new data value + id: / the primary key of the record that updated + value: / the new value of the record that updated + timestamp: / the timestamp of when the data change occurred + }; + yield event; / this returns this event, notifying the cache of the change + } while(true); + } + async get() { ... ``` @@ -160,24 +160,24 @@ By default, HarperDB will only run the subscribe method on one thread. HarperDB ```javascript class ThirdPartyAPI extends Resource { - static subscribeOnThisThread(threadIndex) { - return threadIndex < 2; / run on two threads (the first two threads) - } - async *subscribe() { - .... + static subscribeOnThisThread(threadIndex) { + return threadIndex < 2; / run on two threads (the first two threads) + } + async *subscribe() { + .... ``` An alternative to using asynchronous generators is to use a subscription stream and send events to it. A default subscription stream (that doesn't generate its own events) is available from the Resource's default subscribe method: ```javascript class ThirdPartyAPI extends Resource { - subscribe() { - const subscription = super.subscribe(); - setupListeningToRemoteService().on('update', (event) => { - subscription.send(event); - }); - return subscription; - } + subscribe() { + const subscription = super.subscribe(); + setupListeningToRemoteService().on('update', (event) => { + subscription.send(event); + }); + return subscription; + } } ``` @@ -191,18 +191,18 @@ The cache we have defined so far only has data flowing from the data source to t ```javascript class ThirdPartyAPI extends Resource { - async put(data) { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'PUT', - body: JSON.stringify(data) - }); - } - async delete() { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'DELETE', - }); - } - ... + async put(data) { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'PUT', + body: JSON.stringify(data) + }); + } + async delete() { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'DELETE', + }); + } + ... ``` When doing an insert or update to the MyCache table, the data will be sent to the underlying data source through the `put` method and the new record value will be stored in the cache as well. @@ -213,12 +213,12 @@ When you are using a caching table, it is important to remember that any resourc ```javascript class MyCache extends tables.MyCache { - async post(data) { + async post(data) { / if the data is not cached locally, retrieves from source: await this.ensuredLoaded(); / now we can be sure that the data is loaded, and can access properties this.quantity = this.quantity - data.purchases; - } + } } ``` @@ -241,8 +241,8 @@ With our passive update examples, we have provided a data source handler with a ```javascript const { Post, Comment } = tables; class BlogSource extends Resource { - get() { - let post = await (await fetch(`http:/my-blog-server/${this.getId()}`).json()); + get() { + let post = await (await fetch(`https://my-blog-server/${this.getId()}`).json()); for (let comment of comments) { await Comment.put(comment, this); / save this comment as part of our current context and transaction } diff --git a/site/versioned_docs/version-4.2/developers/applications/define-routes.md b/site/versioned_docs/version-4.2/developers/applications/define-routes.md index 222d14cf..a22e4148 100644 --- a/site/versioned_docs/version-4.2/developers/applications/define-routes.md +++ b/site/versioned_docs/version-4.2/developers/applications/define-routes.md @@ -4,14 +4,14 @@ title: Define Fastify Routes # Define Fastify Routes -HarperDB’s applications provide an extension for loading [Fastify](https:/www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with HarperDB's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. +HarperDB’s applications provide an extension for loading [Fastify](https://www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with HarperDB's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. -The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https:/github.com/HarperDB/application-template)): +The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https://github.com/HarperDB/application-template)): ```yaml fastifyRoutes: # This loads files that define fastify routes using fastify's auto-loader files: routes/*.js # specify the location of route definition modules - path: . # relative to the app-name, like http:/server/app-name/route-name + path: . # relative to the app-name, like https://server/app-name/route-name ``` By default, route URLs are configured to be: diff --git a/site/versioned_docs/version-4.2/developers/applications/defining-schemas.md b/site/versioned_docs/version-4.2/developers/applications/defining-schemas.md index d1204f15..61ef5fd2 100644 --- a/site/versioned_docs/version-4.2/developers/applications/defining-schemas.md +++ b/site/versioned_docs/version-4.2/developers/applications/defining-schemas.md @@ -6,7 +6,7 @@ title: Defining Schemas Schemas define tables and their attributes. Schemas can be declaratively defined in HarperDB's using GraphQL schema definitions. Schemas definitions can be used to ensure that tables exist (that are required for applications), and have the appropriate attributes. Schemas can define the primary key, data types for attributes, if they are required, and specify which attributes should be indexed. The [introduction to applications provides](./) a helpful introduction to how to use schemas as part of database application development. -Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https:/graphql.org/learn/schema/). +Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https://graphql.org/learn/schema/). An example schema that defines a couple tables might look like: @@ -92,7 +92,7 @@ HarperDB supports the following field types in addition to user defined (object) * String: String/text. * Int: A 32-bit signed integer (from -2147483648 to 2147483647). * Long: A 54-bit signed integer (from -9007199254740992 to 9007199254740992). -* Float: Any number (any number that can be represented as a [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision\_floating-point\_format). Note that all numbers are stored in the most compact representation available). +* Float: Any number (any number that can be represented as a [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision\_floating-point\_format). Note that all numbers are stored in the most compact representation available). * Boolean: true or false. * ID: A string (but indicates it is not intended to be legible). * Any: Any primitive, object, or array is allowed. diff --git a/site/versioned_docs/version-4.2/developers/applications/example-projects.md b/site/versioned_docs/version-4.2/developers/applications/example-projects.md index 2eb92ba4..5bd07e77 100644 --- a/site/versioned_docs/version-4.2/developers/applications/example-projects.md +++ b/site/versioned_docs/version-4.2/developers/applications/example-projects.md @@ -6,32 +6,32 @@ title: Example Projects **Library of example HarperDB applications and components:** -* [Authorization in HarperDB using Okta Customer Identity Cloud](https:/www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang +* [Authorization in HarperDB using Okta Customer Identity Cloud](https://www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang -* [How to Speed Up your Applications by Caching at the Edge with HarperDB](https:/dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams +* [How to Speed Up your Applications by Caching at the Edge with HarperDB](https://dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams -* [OAuth Authentication in HarperDB using Auth0 & Node.js](https:/www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos +* [OAuth Authentication in HarperDB using Auth0 & Node.js](https://www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos -* [How To Create a CRUD API with Next.js & HarperDB Custom Functions](https:/www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock +* [How To Create a CRUD API with Next.js & HarperDB Custom Functions](https://www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock -* [Build a Dynamic REST API with Custom Functions](https:/harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush +* [Build a Dynamic REST API with Custom Functions](https://harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush -* [How to use HarperDB Custom Functions to Build your Entire Backend](https:/dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden +* [How to use HarperDB Custom Functions to Build your Entire Backend](https://dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden -* [Using TensorFlowJS & HarperDB Custom Functions for Machine Learning](https:/harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft +* [Using TensorFlowJS & HarperDB Custom Functions for Machine Learning](https://harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft -* [Build & Deploy a Fitness App with Python & HarperDB](https:/www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber +* [Build & Deploy a Fitness App with Python & HarperDB](https://www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber -* [Create a Discord Slash Bot using HarperDB Custom Functions](https:/geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty +* [Create a Discord Slash Bot using HarperDB Custom Functions](https://geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty -* [How I used HarperDB Custom Functions to Build a Web App for my Newsletter](https:/blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj +* [How I used HarperDB Custom Functions to Build a Web App for my Newsletter](https://blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj -* [How I used HarperDB Custom Functions and Recharts to create Dashboard](https:/blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary +* [How I used HarperDB Custom Functions and Recharts to create Dashboard](https://blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary -* [How To Use HarperDB Custom Functions With Your React App](https:/dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi +* [How To Use HarperDB Custom Functions With Your React App](https://dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi -* [Build a Web App Using HarperDB’s Custom Functions](https:/www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp +* [Build a Web App Using HarperDB’s Custom Functions](https://www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp -* [How to Web Scrape Using Python, Snscrape & Custom Functions](https:/hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David +* [How to Web Scrape Using Python, Snscrape & Custom Functions](https://hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David -* [What’s the Big Deal w/ Custom Functions](https:/rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast \ No newline at end of file +* [What’s the Big Deal w/ Custom Functions](https://rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast diff --git a/site/versioned_docs/version-4.2/developers/applications/index.md b/site/versioned_docs/version-4.2/developers/applications/index.md index bad0c09f..dca036c4 100644 --- a/site/versioned_docs/version-4.2/developers/applications/index.md +++ b/site/versioned_docs/version-4.2/developers/applications/index.md @@ -10,7 +10,7 @@ HarperDB is more than a database, it's a distributed clustering platform allowin In this guide, we are going to explore the evermore extensible architecture that HarperDB 4.2 and greater provides by building a HarperDB component, a fundamental building-block of the HarperDB ecosystem. -When working through this guide, we recommend you use the [HarperDB Application Template](https:/github.com/HarperDB/application-template) repo as a reference. +When working through this guide, we recommend you use the [HarperDB Application Template](https://github.com/HarperDB/application-template) repo as a reference. ## Understanding the Component Application Architecture @@ -40,10 +40,10 @@ We assume you are running HarperDB version 4.2 or greater, which supports Harper ### Scaffolding our Application Directory -Let's create and initialize a new directory for our application. It is recommended that you start by using the [HarperDB application template](https:/github.com/HarperDB/application-template). Assuming you have `git` installed, you can create your project directory by cloning: +Let's create and initialize a new directory for our application. It is recommended that you start by using the [HarperDB application template](https://github.com/HarperDB/application-template). Assuming you have `git` installed, you can create your project directory by cloning: ```shell -> git clone https:/github.com/HarperDB/application-template my-app +> git clone https://github.com/HarperDB/application-template my-app > cd my-app ``` @@ -78,7 +78,7 @@ Locally developing your application and then committing your app to a source con The core of a HarperDB application is the database, so let's create a database table! -A quick and expressive way to define a table is through a [GraphQL Schema](https:/graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): +A quick and expressive way to define a table is through a [GraphQL Schema](https://graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): ```graphql type Dog @table { @@ -185,7 +185,7 @@ If-None-Match: "etag-id" # browsers can automatically provide this ## Querying -Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../rest). Simple queries can be crafted through [URL query parameters](https:/en.wikipedia.org/wiki/Query\_string). +Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../rest). Simple queries can be crafted through [URL query parameters](https://en.wikipedia.org/wiki/Query\_string). In order to maintain reasonable query speed on a database as it grows in size, it is critical to select and establish the proper indexes. So, before we add the `@export` declaration to our `Dog` table and begin querying it, let's take a moment to target some table properties for indexing. We'll use `name` and `breed` as indexed table properties on our `Dog` table. All we need to do to accomplish this is tag these properties with the `@indexed` directive: @@ -228,8 +228,8 @@ Congratulations, you now have created a secure database application backend with This guide assumes that you're building a HarperDB application locally. If you have a cloud instance available, you can deploy it by doing the following: * Commit and push your application component directory code (i.e., the `my-app` directory) to a Github repo. In this tutorial we started with a clone of the application-template. To commit and push to your own repository, change the origin to your repo: `git remote set-url origin git@github.com:your-account/your-repo.git` -* Go to the applications section of your target cloud instance in the [HarperDB Studio](https:/studio.harperdb.io) -* In the left-hand menu of the applications IDE, click 'deploy' and specify a package location reference that follows the [npm package specification](https:/docs.npmjs.com/cli/v8/using-npm/package-spec) (i.e., a string like `HarperDB/Application-Template` or a URL like `https:/github.com/HarperDB/application-template`, for example, that npm knows how to install). +* Go to the applications section of your target cloud instance in the [HarperDB Studio](https://studio.harperdb.io) +* In the left-hand menu of the applications IDE, click 'deploy' and specify a package location reference that follows the [npm package specification](https://docs.npmjs.com/cli/v8/using-npm/package-spec) (i.e., a string like `HarperDB/Application-Template` or a URL like `https://github.com/HarperDB/application-template`, for example, that npm knows how to install). You can also deploy your application from your repository by directly using the [`deploy_component` operation](../operations-api/components#deploy-component). @@ -331,7 +331,7 @@ We can also directly implement the Resource class and use it to create new data const { Breed } = tables; / our Breed table class BreedSource extends Resource { / define a data source async get() { - return (await fetch(`http:/best-dog-site.com/${this.getId()}`)).json(); + return (await fetch(`https://best-dog-site.com/${this.getId()}`)).json(); } } / define that our breed table is a cache of data from the data source above, with a specified expiration @@ -344,7 +344,7 @@ HarperDB provides a powerful JavaScript API with significant capabilities that g ## Configuring Applications/Components -Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https:/github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. +Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https://github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. This config file allows you define a location for static files, as well (that are directly delivered as-is for incoming HTTP requests). diff --git a/site/versioned_docs/version-4.2/developers/components/drivers.md b/site/versioned_docs/version-4.2/developers/components/drivers.md index 0f1c063e..87066c72 100644 --- a/site/versioned_docs/version-4.2/developers/components/drivers.md +++ b/site/versioned_docs/version-4.2/developers/components/drivers.md @@ -9,4 +9,4 @@ description: >- -
DriverDocsDownload
Power BIPowerBI DocsWindows
TableauTableau DocsWindows
Mac
Driver JAR
ExcelExcel DocsWindows
JDBCJDBC DocsWindows
Mac
Driver JAR
ODBCODBC DocsWindows
Mac
Linux (RPM)
Linux (DEB)
ADOADO DocsWindows
CmdletsCmdlets DocsWindows
SSISSSIS DocsWindows
+
DriverDocsDownload
Power BIPowerBI DocsWindows
TableauTableau DocsWindows
Mac
Driver JAR
ExcelExcel DocsWindows
JDBCJDBC DocsWindows
Mac
Driver JAR
ODBCODBC DocsWindows
Mac
Linux (RPM)
Linux (DEB)
ADOADO DocsWindows
CmdletsCmdlets DocsWindows
SSISSSIS DocsWindows
diff --git a/site/versioned_docs/version-4.2/developers/components/google-data-studio.md b/site/versioned_docs/version-4.2/developers/components/google-data-studio.md index e33fb2bd..324bb5ce 100644 --- a/site/versioned_docs/version-4.2/developers/components/google-data-studio.md +++ b/site/versioned_docs/version-4.2/developers/components/google-data-studio.md @@ -4,9 +4,9 @@ title: Google Data Studio # Google Data Studio -[Google Data Studio](https:/datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The HarperDB Google Data Studio connector seamlessly integrates your HarperDB data with Google Data Studio so you can build custom, real-time data visualizations. +[Google Data Studio](https://datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The HarperDB Google Data Studio connector seamlessly integrates your HarperDB data with Google Data Studio so you can build custom, real-time data visualizations. -The HarperDB Google Data Studio Connector is subject to our [Terms of Use](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https:/harperdb.io/legal/privacy-policy/). +The HarperDB Google Data Studio Connector is subject to our [Terms of Use](https://harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https://harperdb.io/legal/privacy-policy/). ## Requirements @@ -14,13 +14,13 @@ The HarperDB database must be accessible through the Internet in order for Googl ## Get Started -Get started by selecting the HarperDB connector from the [Google Data Studio Partner Connector Gallery](https:/datastudio.google.com/u/0/datasources/create). +Get started by selecting the HarperDB connector from the [Google Data Studio Partner Connector Gallery](https://datastudio.google.com/u/0/datasources/create). -1. Log in to https:/datastudio.google.com/. -1. Add a new Data Source using the HarperDB connector. The current release version can be added as a data source by following this link: [HarperDB Google Data Studio Connector](https:/datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60\_VJeO3BhHJPvdd20-S76g). +1. Log in to [https://datastudio.google.com/](https://datastudio.google.com/). +1. Add a new Data Source using the HarperDB connector. The current release version can be added as a data source by following this link: [HarperDB Google Data Studio Connector](https://datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60\_VJeO3BhHJPvdd20-S76g). 1. Authorize the connector to access other servers on your behalf (this allows the connector to contact your database). 1. Enter the Web URL to access your database (preferably with HTTPS), as well as the Basic Auth key you use to access the database. Just include the key, not the word “Basic” at the start of it. -1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:/ will do the same thing, if you prefer. +1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:// will do the same thing, if you prefer. 1. Check the box for “Allow Bad Certs” if your HarperDB instance does not have a valid SSL certificate. [HarperDB Cloud](../../deployments/harperdb-cloud/) always has valid certificates, and so will never require this to be checked. Instances you set up yourself may require this, if you are using self-signed certs. If you are using [HarperDB Cloud](../../deployments/harperdb-cloud/) or another instance you know should always have valid SSL certificates, do not check this box. 1. Choose your Query Type. This determines what information the configuration will ask for after pressing the Next button. * Table will ask you for a Schema and a Table to return all fields of using `SELECT *`. diff --git a/site/versioned_docs/version-4.2/developers/components/index.md b/site/versioned_docs/version-4.2/developers/components/index.md index 4901c49f..e0e82581 100644 --- a/site/versioned_docs/version-4.2/developers/components/index.md +++ b/site/versioned_docs/version-4.2/developers/components/index.md @@ -8,9 +8,9 @@ HarperDB is a highly extensible database application platform with support for a * [SDK libraries](./sdks) are available for connecting to HarperDB from different languages. * [Drivers](./drivers) are available for connecting to HarperDB from different products and tools. -* [HarperDB-Add-Ons repositories](https:/github.com/orgs/HarperDB-Add-Ons/repositories) lists various templates and add-ons for HarperDB. -* [HarperDB repositories](https:/github.com/orgs/HarperDB-Add-Ons/repositories) include additional tools for HarperDB. -* You can also [search github.com for ever-growing list of projects that use, or work with, HarperDB](https:/github.com/search?q=harperdb\&type=repositories) +* [HarperDB-Add-Ons repositories](https://github.com/orgs/HarperDB-Add-Ons/repositories) lists various templates and add-ons for HarperDB. +* [HarperDB repositories](https://github.com/orgs/HarperDB-Add-Ons/repositories) include additional tools for HarperDB. +* You can also [search github.com for ever-growing list of projects that use, or work with, HarperDB](https://github.com/search?q=harperdb\&type=repositories) * [Google Data Studio](./google-data-studio) is a visualization tool for building charts and tables from HarperDB data. ## Components diff --git a/site/versioned_docs/version-4.2/developers/components/installing.md b/site/versioned_docs/version-4.2/developers/components/installing.md index aac137ea..2c6741a2 100644 --- a/site/versioned_docs/version-4.2/developers/components/installing.md +++ b/site/versioned_docs/version-4.2/developers/components/installing.md @@ -28,7 +28,7 @@ myTarBall: myLocal: package: /Users/harper/local # install from local path myWebsite: - package: https:/harperdb-component # install from URL + package: https://harperdb-component # install from URL ``` When HarperDB is run or restarted it checks to see if there are any new or updated components. If there are, it will dynamically create a package.json file in the `rootPath` directory and call `npm install`. @@ -44,7 +44,7 @@ The package.json file that is created will look something like this. "myNPMComponent": "npm:harperdb", "myTarBall": "file:/Users/harper/cool-component.tar", "myLocal": "file:/Users/harper/local", - "myWebsite": "https:/harperdb-component" + "myWebsite": "https://harperdb-component" } } ``` diff --git a/site/versioned_docs/version-4.2/developers/components/operations.md b/site/versioned_docs/version-4.2/developers/components/operations.md index fc5d2bf9..95ca23c8 100644 --- a/site/versioned_docs/version-4.2/developers/components/operations.md +++ b/site/versioned_docs/version-4.2/developers/components/operations.md @@ -25,7 +25,7 @@ HarperDB Studio manages your applications using nine HarperDB operations. You ma Deletes the specified file. * **add\_component\_project** - Creates a new project folder in the applications root project directory. It also inserts into the new directory the contents of our applications Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. + Creates a new project folder in the applications root project directory. It also inserts into the new directory the contents of our applications Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). * **drop\_component\_project** Deletes the specified project folder and all of its contents. diff --git a/site/versioned_docs/version-4.2/developers/components/sdks.md b/site/versioned_docs/version-4.2/developers/components/sdks.md index 9064851e..04f87e6f 100644 --- a/site/versioned_docs/version-4.2/developers/components/sdks.md +++ b/site/versioned_docs/version-4.2/developers/components/sdks.md @@ -9,13 +9,13 @@ description: >- | SDK/Tool | Description | Installation | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | -| [HarperDB.NET.Client](https:/www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | -| [Websocket Client](https:/www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | -| [Gatsby HarperDB Source](https:/www.npmjs.com/package/gatsby-source-harperdb) | Use HarperDB as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | -| [HarperDB.EntityFrameworkCore](https:/www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The HarperDB EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | -| [Python SDK](https:/pypi.org/project/harperdb/) | Python3 implementations of HarperDB API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | -| [HarperDB Flutter SDK](https:/github.com/HarperDB/harperdb-sdk-flutter) | A HarperDB SDK for Flutter | `flutter pub add harperdb` | -| [React Hook](https:/www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | -| [Node Red Node](https:/flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to HarperDB using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | -| [NodeJS SDK](https:/www.npmjs.com/package/harperive) | A HarperDB SDK for NodeJS | `npm i -s harperive` | -| [HarperDB Cargo Crate](https:/crates.io/crates/harperdb) | A HarperDB SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | +| [HarperDB.NET.Client](https://www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | +| [Websocket Client](https://www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | +| [Gatsby HarperDB Source](https://www.npmjs.com/package/gatsby-source-harperdb) | Use HarperDB as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | +| [HarperDB.EntityFrameworkCore](https://www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The HarperDB EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | +| [Python SDK](https://pypi.org/project/harperdb/) | Python3 implementations of HarperDB API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | +| [HarperDB Flutter SDK](https://github.com/HarperDB/harperdb-sdk-flutter) | A HarperDB SDK for Flutter | `flutter pub add harperdb` | +| [React Hook](https://www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | +| [Node Red Node](https://flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to HarperDB using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | +| [NodeJS SDK](https://www.npmjs.com/package/harperive) | A HarperDB SDK for NodeJS | `npm i -s harperive` | +| [HarperDB Cargo Crate](https://crates.io/crates/harperdb) | A HarperDB SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | diff --git a/site/versioned_docs/version-4.2/developers/components/writing-extensions.md b/site/versioned_docs/version-4.2/developers/components/writing-extensions.md index 3a0b0ea1..6a9ba7a0 100644 --- a/site/versioned_docs/version-4.2/developers/components/writing-extensions.md +++ b/site/versioned_docs/version-4.2/developers/components/writing-extensions.md @@ -44,7 +44,7 @@ export function start(options: { port: number, server: {}}) { } ``` -Here, the `request` object will have the following structure (this is based on Node's request, but augmented to conform to a subset of the [WHATWG Request API](https:/developer.mozilla.org/en-US/docs/Web/API/Request)): +Here, the `request` object will have the following structure (this is based on Node's request, but augmented to conform to a subset of the [WHATWG Request API](https://developer.mozilla.org/en-US/docs/Web/API/Request)): ```typescript interface Request { @@ -55,7 +55,7 @@ interface Request { } ``` -The returned `response` object should have the following structure (again, following a structural subset of the [WHATWG Response API](https:/developer.mozilla.org/en-US/docs/Web/API/Response)): +The returned `response` object should have the following structure (again, following a structural subset of the [WHATWG Response API](https://developer.mozilla.org/en-US/docs/Web/API/Response)): ```typescript interface Response { @@ -150,4 +150,4 @@ contentTypes.set('text/xml', { Extensions will also be categorized as trusted or untrusted. For some HarperDB installations, administrators may choose to constrain users to only using trusted extensions for security reasons (such multi-tenancy requirements or added defense in depth). Most installations do not impose such constraints, but this may exist in some situations. -An extension can be automatically considered trusted if it conforms to the requirements of [Secure EcmaScript](https:/www.npmjs.com/package/ses/v/0.7.0) (basically strict mode code that doesn't modify any global objects), and either does not use any other modules, or only uses modules from other trusted extensions/components. An extension can be marked as trusted by review by the HarperDB team as well, but developers should not expect that HarperDB can review all extensions. Untrusted extensions can access any other packages/modules, and may have many additional capabilities. +An extension can be automatically considered trusted if it conforms to the requirements of [Secure EcmaScript](https://www.npmjs.com/package/ses/v/0.7.0) (basically strict mode code that doesn't modify any global objects), and either does not use any other modules, or only uses modules from other trusted extensions/components. An extension can be marked as trusted by review by the HarperDB team as well, but developers should not expect that HarperDB can review all extensions. Untrusted extensions can access any other packages/modules, and may have many additional capabilities. diff --git a/site/versioned_docs/version-4.2/developers/operations-api/advanced-json-sql-examples.md b/site/versioned_docs/version-4.2/developers/operations-api/advanced-json-sql-examples.md index 1584a0c4..c26161b7 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/advanced-json-sql-examples.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/advanced-json-sql-examples.md @@ -84,7 +84,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo "operation": "csv_url_load", "database": "movies", "table": "movie", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" } ``` @@ -108,7 +108,7 @@ Inserts data from a hosted CSV file into the "credits" table using the 'csv_url_ "operation": "csv_url_load", "database": "movies", "table": "credits", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" } ``` diff --git a/site/versioned_docs/version-4.2/developers/operations-api/bulk-operations.md b/site/versioned_docs/version-4.2/developers/operations-api/bulk-operations.md index 048ec5d4..59430b69 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/bulk-operations.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/bulk-operations.md @@ -20,7 +20,7 @@ Ingests CSV data, provided directly in the operation as an `insert`, `update` or "database": "dev", "action": "insert", "table": "breed", - "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" + "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" } ``` @@ -82,7 +82,7 @@ Ingests CSV data, provided via URL, as an `insert`, `update` or `upsert` into th "action": "insert", "database": "dev", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.2/developers/operations-api/clustering.md b/site/versioned_docs/version-4.2/developers/operations-api/clustering.md index bb7c0632..6933acfd 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/clustering.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/clustering.md @@ -150,7 +150,7 @@ _Operation is restricted to super_user roles only_ --- ## Add Node -Registers an additional HarperDB instance with associated subscriptions. Learn more about HarperDB clustering here: https:/harperdb.io/docs/clustering/. +Registers an additional HarperDB instance with associated subscriptions. Learn more about HarperDB clustering here: [https://harperdb.io/docs/clustering/](https://harperdb.io/docs/clustering/). _Operation is restricted to super_user roles only_ @@ -164,6 +164,7 @@ _Operation is restricted to super_user roles only_ * start_time _(optional)_ - How far back to go to get transactions from node being added. Must be in UTC YYYY-MM-DDTHH:mm:ss.sssZ format ### Body + ```json { "operation": "add_node", @@ -181,6 +182,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "message": "Successfully added 'ec2-3-22-181-22' to manifest" @@ -190,7 +192,8 @@ _Operation is restricted to super_user roles only_ --- ## Update Node -Modifies an existing HarperDB instance registration and associated subscriptions. Learn more about HarperDB clustering here: https:/harperdb.io/docs/clustering/. + +Modifies an existing HarperDB instance registration and associated subscriptions. Learn more about HarperDB clustering here: [https://harperdb.io/docs/clustering/](https://harperdb.io/docs/clustering/). _Operation is restricted to super_user roles only_ @@ -203,6 +206,7 @@ _Operation is restricted to super_user roles only_ * publish - a boolean which determines if transactions on the local table should be replicated on the remote table ### Body + ```json { "operation": "update_node", @@ -219,6 +223,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "message": "Successfully updated 'ec2-3-22-181-22'" @@ -228,13 +233,15 @@ _Operation is restricted to super_user roles only_ --- ## Cluster Status -Returns an array of status objects from a cluster. A status object will contain the clustering node name, whether or not clustering is enabled, and a list of possible connections. Learn more about HarperDB clustering here: https:/harperdb.io/docs/clustering/. + +Returns an array of status objects from a cluster. A status object will contain the clustering node name, whether or not clustering is enabled, and a list of possible connections. Learn more about HarperDB clustering here: [https://harperdb.io/docs/clustering/](https://harperdb.io/docs/clustering/). _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `cluster_status` ### Body + ```json { "operation": "cluster_status" @@ -242,6 +249,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "node_name": "ec2-18-221-143-69", @@ -269,11 +277,11 @@ _Operation is restricted to super_user roles only_ } ``` - --- ## Cluster Network -Returns an object array of enmeshed nodes. Each node object will contain the name of the node, the amount of time (in milliseconds) it took for it to respond, the names of the nodes it is enmeshed with and the routes set in its config file. Learn more about HarperDB clustering here: [https:/harperdb.io/docs/clustering/](https:/harperdb.io/docs/clustering/). + +Returns an object array of enmeshed nodes. Each node object will contain the name of the node, the amount of time (in milliseconds) it took for it to respond, the names of the nodes it is enmeshed with and the routes set in its config file. Learn more about HarperDB clustering here: [https://harperdb.io/docs/clustering/](https://harperdb.io/docs/clustering/). _Operation is restricted to super_user roles only_ @@ -291,6 +299,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "nodes": [ @@ -318,7 +327,8 @@ _Operation is restricted to super_user roles only_ --- ## Remove Node -Removes a HarperDB instance and associated subscriptions from the cluster. Learn more about HarperDB clustering here: https:/harperdb.io/docs/clustering/. + +Removes a HarperDB instance and associated subscriptions from the cluster. Learn more about HarperDB clustering here: [https://harperdb.io/docs/clustering/](https://harperdb.io/docs/clustering/). _Operation is restricted to super_user roles only_ @@ -326,6 +336,7 @@ _Operation is restricted to super_user roles only_ * name _(required)_ - The name of the node you are de-registering ### Body + ```json { "operation": "remove_node", @@ -334,6 +345,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "message": "Successfully removed 'ec2-3-22-181-22' from manifest" @@ -343,8 +355,9 @@ _Operation is restricted to super_user roles only_ --- ## Configure Cluster + Bulk create/remove subscriptions for any number of remote nodes. Resets and replaces any existing clustering setup. -Learn more about HarperDB clustering here: https:/harperdb.io/docs/clustering/. +Learn more about HarperDB clustering here: [https://harperdb.io/docs/clustering/](https://harperdb.io/docs/clustering/). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.2/developers/operations-api/components.md b/site/versioned_docs/version-4.2/developers/operations-api/components.md index 17ba5f0a..3b5fcd1e 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/components.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/components.md @@ -34,9 +34,9 @@ Will deploy a component using either a base64-encoded string representation of a If deploying with the `payload` option, HarperDB will decrypt the base64-encoded string, reconstitute the .tar file of your project folder, and extract it to the component root project directory.\ -If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https:/docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: +If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: ``` -https:/github.com/HarperDB/application-template#semver:v1.0.0 +https://github.com/HarperDB/application-template#semver:v1.0.0 ``` or this can be shortened to: ``` @@ -49,13 +49,13 @@ git+ssh:/git@github.com:my-org/my-app.git#semver:v1.0.0 ``` Or you can use a Github token: ``` -https:/@github.com/my-org/my-app#semver:v1.0.0 +https://@github.com/my-org/my-app#semver:v1.0.0 ``` Or you can use a GitLab Project Access Token: ``` -https:/my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 +https://my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 ``` -Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https:/docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). +Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https://docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). _Note: After deploying a component a restart may be required_ diff --git a/site/versioned_docs/version-4.2/developers/operations-api/custom-functions.md b/site/versioned_docs/version-4.2/developers/operations-api/custom-functions.md index bf9537fc..e6e8ef11 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/custom-functions.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/custom-functions.md @@ -160,7 +160,7 @@ _Operation is restricted to super_user roles only_ ## Add Custom Function Project -Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. +Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.2/developers/operations-api/index.md b/site/versioned_docs/version-4.2/developers/operations-api/index.md index cf2db22d..e0f26443 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/index.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/index.md @@ -7,7 +7,7 @@ title: Operations API The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling HarperDB. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../../../deployments/configuration), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](../../../developers/security/basic-auth) or [JWT authentication](../../../developers/security/jwt-auth). For example, a request to create a table would be performed as: ```http -POST http:/my-harperdb-server:9925/ +POST https://my-harperdb-server:9925/ Authorization: Basic YourBase64EncodedInstanceUser:Pass Content-Type: application/json @@ -34,14 +34,14 @@ The operations API reference is available below and categorized by topic: * [SQL Operations](./sql-operations) * [Advanced JSON SQL Examples](./advanced-json-sql-examples) -• [Past Release API Documentation](https:/olddocs.harperdb.io) +• [Past Release API Documentation](https://olddocs.harperdb.io) ## More Examples Here is an example of using `curl` to make an operations API request: ```bash -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ diff --git a/site/versioned_docs/version-4.2/developers/operations-api/logs.md b/site/versioned_docs/version-4.2/developers/operations-api/logs.md index 3da8a570..00a1fde8 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/logs.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/logs.md @@ -5,7 +5,7 @@ title: Logs # Logs ## Read HarperDB Log -Returns log outputs from the primary HarperDB log based on the provided search criteria. Read more about HarperDB logging here: https:/docs.harperdb.io/docs/logging#read-logs-via-the-api. +Returns log outputs from the primary HarperDB log based on the provided search criteria. Read more about HarperDB logging here: [https://docs.harperdb.io/docs/logging#read-logs-via-the-api](https://docs.harperdb.io/docs/logging#read-logs-via-the-api). _Operation is restricted to super_user roles only_ @@ -16,6 +16,7 @@ _Operation is restricted to super_user roles only_ * from _(optional)_ - date to begin showing log results. Must be `YYYY-MM-DD` or `YYYY-MM-DD hh:mm:ss` * until _(optional)_ - date to end showing log results. Must be `YYYY-MM-DD` or `YYYY-MM-DD hh:mm:ss` * order _(optional)_ - order to display logs desc or asc by timestamp + ### Body ```json @@ -31,6 +32,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -58,11 +60,11 @@ _Operation is restricted to super_user roles only_ ``` - --- ## Read Transaction Log -Returns all transactions logged for the specified database table. You may filter your results with the optional from, to, and limit fields. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_transaction_log. + +Returns all transactions logged for the specified database table. You may filter your results with the optional from, to, and limit fields. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_transaction_log](https://docs.harperdb.io/docs/transaction-logging#read_transaction_log). _Operation is restricted to super_user roles only_ @@ -87,6 +89,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -263,6 +266,7 @@ _Operation is restricted to super_user roles only_ --- ## Delete Transaction Logs Before + Deletes transaction log data for the specified database table that is older than the specified timestamp. _Operation is restricted to super_user roles only_ @@ -273,6 +277,7 @@ _Operation is restricted to super_user roles only_ * timestamp _(required)_ - records older than this date will be deleted. Format is millisecond-based epoch in UTC ### Body + ```json { "operation": "delete_transaction_logs_before", @@ -283,6 +288,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "message": "Starting job with id 26a6d3a6-6d77-40f9-bee7-8d6ef479a126" @@ -292,7 +298,8 @@ _Operation is restricted to super_user roles only_ --- ## Read Audit Log -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns a verbose history of all transactions logged for the specified database table, including original data records. You may filter your results with the optional search_type and search_values fields. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns a verbose history of all transactions logged for the specified database table, including original data records. You may filter your results with the optional search_type and search_values fields. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ @@ -313,6 +320,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -390,11 +398,11 @@ _Operation is restricted to super_user roles only_ ] ``` - --- ## Read Audit Log by timestamp -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table between the specified time window. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table between the specified time window. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ @@ -423,6 +431,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -523,11 +532,11 @@ _Operation is restricted to super_user roles only_ ] ``` - --- ## Read Audit Log by username -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed by the specified user. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed by the specified user. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ @@ -552,6 +561,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "admin": [ @@ -654,11 +664,11 @@ _Operation is restricted to super_user roles only_ } ``` - --- ## Read Audit Log by hash_value -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed to the specified hash value(s). Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed to the specified hash value(s). Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.2/developers/operations-api/quickstart-examples.md b/site/versioned_docs/version-4.2/developers/operations-api/quickstart-examples.md index e74b7979..68844ff4 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/quickstart-examples.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/quickstart-examples.md @@ -246,7 +246,7 @@ Let's add some more Harper doggies! We can add as many dog objects as we want in We need to populate the 'breed' table with some data so we can reference it later. For larger data sets, we recommend using our CSV upload option. -Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and HarperDB will take care of the rest. You can pull the breeds.csv file from here: https:/s3.amazonaws.com/complimentarydata/breeds.csv +Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and HarperDB will take care of the rest. You can pull the breeds.csv file from here: [https://s3.amazonaws.com/complimentarydata/breeds.csv](https://s3.amazonaws.com/complimentarydata/breeds.csv) ### Body @@ -254,7 +254,7 @@ Each header in a column will be considered as an attribute, and each row in the { "operation": "csv_url_load", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.2/developers/operations-api/users-and-roles.md b/site/versioned_docs/version-4.2/developers/operations-api/users-and-roles.md index 59b33a51..19834424 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/users-and-roles.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/users-and-roles.md @@ -5,13 +5,14 @@ title: Users and Roles # Users and Roles ## List Roles -Returns a list of all roles. Learn more about HarperDB roles here: https:/harperdb.io/docs/security/users-roles/. +Returns a list of all roles. Learn more about HarperDB roles here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `list_roles` ### Body + ```json { "operation": "list_roles" @@ -19,6 +20,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -72,7 +74,8 @@ _Operation is restricted to super_user roles only_ --- ## Add Role -Creates a new role with the specified permissions. Learn more about HarperDB roles here: [https:/harperdb.io/docs/security/users-roles/](https:/harperdb.io/docs/security/users-roles/). + +Creates a new role with the specified permissions. Learn more about HarperDB roles here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super_user roles only_ @@ -83,6 +86,7 @@ _Operation is restricted to super_user roles only_ * structure_user (optional) - boolean OR array of schema names (as strings). If boolean, user can create new schemas and tables. If array of strings, users can only manage tables within the specified schemas. This overrides any individual table permissions for specified schemas, or for all schemas if the value is true. ### Body + ```json { "operation": "add_role", @@ -113,6 +117,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "role": "develope3r", @@ -147,7 +152,8 @@ _Operation is restricted to super_user roles only_ --- ## Alter Role -Modifies an existing role with the specified permissions. updates permissions from an existing role. Learn more about HarperDB roles here: [https:/harperdb.io/docs/security/users-roles/](https:/harperdb.io/docs/security/users-roles/). + +Modifies an existing role with the specified permissions. updates permissions from an existing role. Learn more about HarperDB roles here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super_user roles only_ @@ -191,6 +197,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "id": "a7cb91e9-32e4-4dbf-a327-fab4fa9191ea", @@ -224,7 +231,8 @@ _Operation is restricted to super_user roles only_ --- ## Drop Role -Deletes an existing role from the database. NOTE: Role with associated users cannot be dropped. Learn more about HarperDB roles here: https:/harperdb.io/docs/security/users-roles/. + +Deletes an existing role from the database. NOTE: Role with associated users cannot be dropped. Learn more about HarperDB roles here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super_user roles only_ @@ -232,6 +240,7 @@ _Operation is restricted to super_user roles only_ * id _(required)_ - this is the id of the role you are dropping ### Body + ```json { "operation": "drop_role", @@ -240,6 +249,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "message": "developer successfully deleted" @@ -249,13 +259,15 @@ _Operation is restricted to super_user roles only_ --- ## List Users -Returns a list of all users. Learn more about HarperDB users here: https:/harperdb.io/docs/security/users-roles/. + +Returns a list of all users. Learn more about HarperDB users here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `list_users` ### Body + ```json { "operation": "list_users" @@ -263,6 +275,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -360,11 +373,13 @@ _Operation is restricted to super_user roles only_ --- ## User Info + Returns user data for the associated user credentials. * operation _(required)_ - must always be `user_info` ### Body + ```json { "operation": "user_info" @@ -372,6 +387,7 @@ Returns user data for the associated user credentials. ``` ### Response: 200 + ```json { "__createdtime__": 1610749235611, @@ -393,7 +409,8 @@ Returns user data for the associated user credentials. --- ## Add User -Creates a new user with the specified role and credentials. Learn more about HarperDB users here: https:/harperdb.io/docs/security/users-roles/. + +Creates a new user with the specified role and credentials. Learn more about HarperDB users here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super_user roles only_ @@ -404,6 +421,7 @@ _Operation is restricted to super_user roles only_ * active _(required)_ - boolean value for status of user's access to your HarperDB instance. If set to false, user will not be able to access your instance of HarperDB. ### Body + ```json { "operation": "add_user", @@ -415,6 +433,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "message": "hdb_user successfully added" @@ -424,17 +443,19 @@ _Operation is restricted to super_user roles only_ --- ## Alter User -Modifies an existing user's role and/or credentials. Learn more about HarperDB users here: https:/harperdb.io/docs/security/users-roles/. + +Modifies an existing user's role and/or credentials. Learn more about HarperDB users here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super\_user roles only_ - * operation _(required)_ - must always be `alter_user` - * username _(required)_ - username assigned to the user. It can not be altered after adding the user. It serves as the hash. - * password _(optional)_ - clear text for password. HarperDB will encrypt the password upon receipt - * role _(optional)_ - `role` name value of the role you wish to assign to the user. See `add_role` for more detail - * active _(optional)_ - status of user's access to your HarperDB instance. See `add_role` for more detail +* operation _(required)_ - must always be `alter_user` +* username _(required)_ - username assigned to the user. It can not be altered after adding the user. It serves as the hash. +* password _(optional)_ - clear text for password. HarperDB will encrypt the password upon receipt +* role _(optional)_ - `role` name value of the role you wish to assign to the user. See `add_role` for more detail +* active _(optional)_ - status of user's access to your HarperDB instance. See `add_role` for more detail ### Body + ```json { "operation": "alter_user", @@ -446,6 +467,7 @@ _Operation is restricted to super\_user roles only_ ``` ### Response: 200 + ```json { "message": "updated 1 of 1 records", @@ -461,7 +483,8 @@ _Operation is restricted to super\_user roles only_ --- ## Drop User -Deletes an existing user by username. Learn more about HarperDB users here: https:/harperdb.io/docs/security/users-roles/. + +Deletes an existing user by username. Learn more about HarperDB users here: [https://harperdb.io/docs/security/users-roles/](https://harperdb.io/docs/security/users-roles/). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.2/developers/operations-api/utilities.md b/site/versioned_docs/version-4.2/developers/operations-api/utilities.md index 8e8a80d5..1a89ce4c 100644 --- a/site/versioned_docs/version-4.2/developers/operations-api/utilities.md +++ b/site/versioned_docs/version-4.2/developers/operations-api/utilities.md @@ -172,7 +172,7 @@ _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `install_node_modules` * projects _(required)_ - must ba an array of custom functions projects. -* dry_run _(optional)_ - refers to the npm --dry-run flag: [https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. +* dry_run _(optional)_ - refers to the npm --dry-run flag: [https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. ### Body ```json diff --git a/site/versioned_docs/version-4.2/developers/real-time.md b/site/versioned_docs/version-4.2/developers/real-time.md index bcb84756..d87f03e7 100644 --- a/site/versioned_docs/version-4.2/developers/real-time.md +++ b/site/versioned_docs/version-4.2/developers/real-time.md @@ -71,10 +71,10 @@ Non-retained messages are generally a good choice for applications like chat, wh ### WebSockets -WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss:/server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: +WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss://server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: ```javascript -let ws = new WebSocket('wss:/server/my-resource/341'); +let ws = new WebSocket('wss://server/my-resource/341'); ws.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); @@ -119,7 +119,7 @@ export class Example extends Resource { Server Sent Events (SSE) are also supported through the REST server interface, and provide a simple and efficient mechanism for web-based applications to receive real-time updates. For consistency of push delivery, SSE connections go through the `connect()` method on resources, much like WebSockets. The primary difference is that `connect` is called without any `incomingMessages` argument, since SSE is a one-directional transport mechanism. This can be used much like WebSockets, specifying a resource URL path will connect to that resource, and by default provides a stream of messages for changes and messages for that resource. For example, you can connect to receive notification in a browser for a resource like: ```javascript -let eventSource = new EventSource('https:/server/my-resource/341', { withCredentials: true }); +let eventSource = new EventSource('https://server/my-resource/341', { withCredentials: true }); eventSource.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); diff --git a/site/versioned_docs/version-4.2/developers/rest.md b/site/versioned_docs/version-4.2/developers/rest.md index 6b44783f..c08765d3 100644 --- a/site/versioned_docs/version-4.2/developers/rest.md +++ b/site/versioned_docs/version-4.2/developers/rest.md @@ -105,7 +105,7 @@ GET /my-resource/?property=value&property2=another-value Note that only one of the properties needs to be indexed for this query to execute. -We can also specify different comparators such as less than and greater than queries using [FIQL](https:/datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: +We can also specify different comparators such as less than and greater than queries using [FIQL](https://datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: ```http GET /my-resource/?age=gt=20 diff --git a/site/versioned_docs/version-4.2/developers/security/basic-auth.md b/site/versioned_docs/version-4.2/developers/security/basic-auth.md index 00ab8b6d..0c928c69 100644 --- a/site/versioned_docs/version-4.2/developers/security/basic-auth.md +++ b/site/versioned_docs/version-4.2/developers/security/basic-auth.md @@ -14,7 +14,7 @@ A header is added to each HTTP request. The header key is **“Authorization”* In the below code sample, you can see where we add the authorization header to the request. This needs to be added for each and every HTTP request for HarperDB. -_Note: This function uses btoa. Learn about_ [_btoa here_](https:/developer.mozilla.org/en-US/docs/Web/API/btoa)_._ +_Note: This function uses btoa. Learn about_ [_btoa here_](https://developer.mozilla.org/en-US/docs/Web/API/btoa)_._ ```javascript function callHarperDB(call_object, operation, callback){ diff --git a/site/versioned_docs/version-4.2/developers/security/certificate-management.md b/site/versioned_docs/version-4.2/developers/security/certificate-management.md index eb69df74..12b56eda 100644 --- a/site/versioned_docs/version-4.2/developers/security/certificate-management.md +++ b/site/versioned_docs/version-4.2/developers/security/certificate-management.md @@ -49,7 +49,7 @@ Instead of enabling HTTPS for HarperDB, Nginx can be used as a reverse proxy for Install Nginx, configure Nginx to use certificates issued from your own CA or a public CA, then configure Nginx to listen for HTTPS requests and forward to HarperDB as HTTP requests. -[Certbot](https:/certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. +[Certbot](https://certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. ### Option: External Reverse Proxy diff --git a/site/versioned_docs/version-4.2/developers/security/configuration.md b/site/versioned_docs/version-4.2/developers/security/configuration.md index 67d959fd..f5feb51b 100644 --- a/site/versioned_docs/version-4.2/developers/security/configuration.md +++ b/site/versioned_docs/version-4.2/developers/security/configuration.md @@ -8,7 +8,7 @@ HarperDB was set up to require very minimal configuration to work out of the box ## CORS -HarperDB allows for managing [cross-origin HTTP requests](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, HarperDB enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: +HarperDB allows for managing [cross-origin HTTP requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, HarperDB enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: 1. Open the harperdb-config.yaml file, which can be found in \, the location you specified during install. 1. In harperdb-config.yaml there should be 2 entries under `operationsApi.network`: cors and corsAccessList. @@ -19,7 +19,7 @@ HarperDB allows for managing [cross-origin HTTP requests](https:/developer.mozil 1. The `corsAccessList` will only be recognized by the system when `cors` is `true` 1. To create an access list you set `corsAccessList` to a comma-separated list of domains. - i.e. `corsAccessList` is `http:/harperdb.io,http:/products.harperdb.io` + i.e. `corsAccessList` is `https://harperdb.io,https://products.harperdb.io` 1. To clear out the access list and allow all domains: `corsAccessList` is `[null]` ## SSL diff --git a/site/versioned_docs/version-4.2/developers/security/jwt-auth.md b/site/versioned_docs/version-4.2/developers/security/jwt-auth.md index f48fe0ee..18072f70 100644 --- a/site/versioned_docs/version-4.2/developers/security/jwt-auth.md +++ b/site/versioned_docs/version-4.2/developers/security/jwt-auth.md @@ -93,4 +93,4 @@ Token timeouts are configurable in [harperdb-config.yaml](../../deployments/conf * `operationsApi.authentication.operationTokenTimeout`: Defines the length of time until the operation\_token expires (default 1d). * `operationsApi.authentication.refreshTokenTimeout`: Defines the length of time until the refresh\_token expires (default 30d). -A full list of valid values for both parameters can be found [here](https:/github.com/vercel/ms). +A full list of valid values for both parameters can be found [here](https://github.com/vercel/ms). diff --git a/site/versioned_docs/version-4.2/developers/sql-guide/date-functions.md b/site/versioned_docs/version-4.2/developers/sql-guide/date-functions.md index f19d2126..f632b4ed 100644 --- a/site/versioned_docs/version-4.2/developers/sql-guide/date-functions.md +++ b/site/versioned_docs/version-4.2/developers/sql-guide/date-functions.md @@ -4,9 +4,9 @@ title: SQL Date Functions # SQL Date Functions -HarperDB utilizes [Coordinated Universal Time (UTC)](https:/en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. +HarperDB utilizes [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. -When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https:/en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https:/tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. +When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https://tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. ### CURRENT_DATE() @@ -117,7 +117,7 @@ AS date_diff_result" returns ### DATE_FORMAT(date, format) -Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https:/momentjs.com/docs/#/displaying/format/). +Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https://momentjs.com/docs/#/displaying/format/). ``` "SELECT DATE_FORMAT(1524412627973, 'YYYY-MM-DD HH:mm:ss') diff --git a/site/versioned_docs/version-4.2/developers/sql-guide/features-matrix.md b/site/versioned_docs/version-4.2/developers/sql-guide/features-matrix.md index f0ee3072..db9a216c 100644 --- a/site/versioned_docs/version-4.2/developers/sql-guide/features-matrix.md +++ b/site/versioned_docs/version-4.2/developers/sql-guide/features-matrix.md @@ -4,7 +4,7 @@ title: SQL Features Matrix # SQL Features Matrix -HarperDB provides access to most SQL functions, and we’re always expanding that list. Check below to see if we cover what you need. If not, feel free to [add a Feature Request](https:/feedback.harperdb.io/). +HarperDB provides access to most SQL functions, and we’re always expanding that list. Check below to see if we cover what you need. If not, feel free to [add a Feature Request](https://feedback.harperdb.io/). | INSERT | | diff --git a/site/versioned_docs/version-4.2/developers/sql-guide/functions.md b/site/versioned_docs/version-4.2/developers/sql-guide/functions.md index ccd6f247..b9a10787 100644 --- a/site/versioned_docs/version-4.2/developers/sql-guide/functions.md +++ b/site/versioned_docs/version-4.2/developers/sql-guide/functions.md @@ -20,7 +20,7 @@ This SQL keywords reference contains the SQL functions available in HarperDB. | ARRAY* | ARRAY(_expression_) | Returns a list of data as a field. | | DISTINCT_ARRAY* | DISTINCT_ARRAY(_expression_) | When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set. | -*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https:/www.harperdb.io/post/sql-queries-to-complex-objects). +*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https://www.harperdb.io/post/sql-queries-to-complex-objects). ### Conversion diff --git a/site/versioned_docs/version-4.2/developers/sql-guide/json-search.md b/site/versioned_docs/version-4.2/developers/sql-guide/json-search.md index 7d160413..204f2c67 100644 --- a/site/versioned_docs/version-4.2/developers/sql-guide/json-search.md +++ b/site/versioned_docs/version-4.2/developers/sql-guide/json-search.md @@ -4,7 +4,7 @@ title: SQL JSON Search # SQL JSON Search -HarperDB automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, HarperDB offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](http:/docs.jsonata.org/overview.html) into our SQL engine. +HarperDB automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, HarperDB offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](https://docs.jsonata.org/overview.html) into our SQL engine. ## Syntax @@ -170,4 +170,4 @@ As seen above we execute the same name filter against the cast array, the primar To see further SEARCH\_JSON examples in action view our Postman Collection that provides a [sample schema & data with query examples](../operations-api/advanced-json-sql-examples). -To learn more about how to build expressions check out the JSONata documentation: [http:/docs.jsonata.org/overview](http:/docs.jsonata.org/overview) +To learn more about how to build expressions check out the JSONata documentation: [https://docs.jsonata.org/overview](https://docs.jsonata.org/overview) diff --git a/site/versioned_docs/version-4.2/developers/sql-guide/sql-geospatial-functions.md b/site/versioned_docs/version-4.2/developers/sql-guide/sql-geospatial-functions.md index e557b5be..73c9632e 100644 --- a/site/versioned_docs/version-4.2/developers/sql-guide/sql-geospatial-functions.md +++ b/site/versioned_docs/version-4.2/developers/sql-guide/sql-geospatial-functions.md @@ -4,19 +4,16 @@ title: SQL Geospatial Functions # SQL Geospatial Functions -HarperDB geospatial features require data to be stored in a single column using the [GeoJSON standard](http:/geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. +HarperDB geospatial features require data to be stored in a single column using the [GeoJSON standard](https://geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. -If you are new to GeoJSON you should check out the full specification here: http:/geojson.org/. There are a few important things to point out before getting started. +If you are new to GeoJSON you should check out the full specification here: [https://geojson.org/](https://geojson.org/). There are a few important things to point out before getting started. - - -1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. -2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. +1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. +2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. 3) Note if you are using Postman for you testing. Due to limitations in the Postman client, you will need to escape quotes in your strings and your SQL will need to be passed on a single line. - In the examples contained in the left-hand navigation, schema and table names may change, but all GeoJSON data will be stored in a column named geo_data. # geoArea @@ -24,14 +21,17 @@ In the examples contained in the left-hand navigation, schema and table names ma The geoArea() function returns the area of one or more features in square meters. ### Syntax + geoArea(_geoJSON_) ### Parameters + | Parameter | Description | |-----------|---------------------------------| | geoJSON | Required. One or more features. | #### Example 1 + Calculate the area, in square meters, of a manually passed GeoJSON polygon. ``` @@ -50,6 +50,7 @@ SELECT geoArea('{ ``` #### Example 2 + Find all records that have an area less than 1 square mile (or 2589988 square meters). ``` @@ -58,18 +59,22 @@ WHERE geoArea(geo_data) < 2589988 ``` # geoLength + Takes a GeoJSON and measures its length in the specified units (default is kilometers). ## Syntax + geoLength(_geoJSON_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| geoJSON | Required. GeoJSON to measure. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| geoJSON | Required. GeoJSON to measure. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the length, in kilometers, of a manually passed GeoJSON linestring. ``` @@ -87,6 +92,7 @@ SELECT geoLength('{ ``` ### Example 2 + Find all data plus the calculated length in miles of the GeoJSON, restrict the response to only lengths less than 5 miles, and return the data in order of lengths smallest to largest. ``` @@ -95,19 +101,24 @@ FROM dev.locations WHERE geoLength(geo_data, 'miles') < 5 ORDER BY length ASC ``` + # geoDifference + Returns a new polygon with the difference of the second polygon clipped from the first polygon. ## Syntax + geoDifference(_polygon1, polygon2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|----------------------------------------------------------------------------| -| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | +| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | ### Example + Return a GeoJSON Polygon that removes City Park (_polygon2_) from Colorado (_polygon1_). ``` @@ -149,19 +160,23 @@ SELECT geoDifference('{ ``` # geoDistance + Calculates the distance between two points in units (default is kilometers). ## Syntax + geoDistance(_point1, point2_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the distance, in miles, between HarperDB’s headquarters and the Washington Monument. ``` @@ -169,6 +184,7 @@ SELECT geoDistance('[-104.979127,39.761563]', '[-77.035248,38.889475]', 'miles') ``` ### Example 2 + Find all locations that are within 40 kilometers of a given point, return that distance in miles, and sort by distance in an ascending order. ``` @@ -179,20 +195,24 @@ ORDER BY distance ASC ``` # geoNear + Determines if point1 and point2 are within a specified distance from each other, default units are kilometers. Returns a Boolean. ## Syntax + geoNear(_point1, point2, distance_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| distance | Required. The maximum distance in units as an integer or decimal. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| distance | Required. The maximum distance in units as an integer or decimal. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Return all locations within 50 miles of a given point. ``` @@ -202,6 +222,7 @@ WHERE geoNear('[-104.979127,39.761563]', geo_data, 50, 'miles') ``` ### Example 2 + Return all locations within 2 degrees of the earth of a given point. (Each degree lat/long is about 69 miles [111 kilometers]). Return all data and the distance in miles, sorted by ascending distance. ``` @@ -212,18 +233,22 @@ ORDER BY distance ASC ``` # geoContains + Determines if geo2 is completely contained by geo1. Returns a Boolean. ## Syntax + geoContains(_geo1, geo2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------| -| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | +| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | ### Example 1 + Return all locations within the state of Colorado (passed as a GeoJSON string). ``` @@ -248,6 +273,7 @@ WHERE geoContains('{ ``` ### Example 2 + Return all locations which contain HarperDB Headquarters. ``` @@ -274,7 +300,8 @@ WHERE geoContains(geo_data, '{ ``` # geoEqual -Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https:/developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. + +Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see [https://developers.arcgis.com/documentation/spatial-references/](https://developers.arcgis.com/documentation/spatial-references/). Returns a Boolean. ## Syntax geoEqual(_geo1_, _geo2_) diff --git a/site/versioned_docs/version-4.2/getting-started.md b/site/versioned_docs/version-4.2/getting-started.md index 3f2a5e53..24fa7e74 100644 --- a/site/versioned_docs/version-4.2/getting-started.md +++ b/site/versioned_docs/version-4.2/getting-started.md @@ -36,7 +36,7 @@ HarperDB is more than just a database, with HarperDB you build "database applica To set up a HarperDB cloud instance, simply sign up and create a new instance: -1. [Sign up for the HarperDB Studio](https:/studio.harperdb.io/sign-up) +1. [Sign up for the HarperDB Studio](https://studio.harperdb.io/sign-up) 1. [Create a new HarperDB Cloud instance](./administration/harperdb-studio/instances#create-a-new-instance) Note that a local instance and cloud instance are not mutually exclusive. You can register your local instance in the HarperDB Studio, and a common development flow is to develop locally and then deploy your application to your cloud instance. @@ -66,7 +66,7 @@ The Operations API provides extensive administrative capabilities for HarperDB, The HarperDB Operations API is single endpoint, which means the only thing that needs to change across different calls is the body. For example purposes, a basic cURL command is shown below to create a schema called dev. To change this behavior, swap out the operation in the `data-raw` body parameter. ``` -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ @@ -77,8 +77,8 @@ curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ ## Support and Learning More -If you find yourself in need of additional support you can submit a [HarperDB support ticket](https:/harperdbhelp.zendesk.com/hc/en-us/requests/new). You can also learn more about available HarperDB projects by searching [Github](https:/github.com/search?q=harperdb). +If you find yourself in need of additional support you can submit a [HarperDB support ticket](https://harperdbhelp.zendesk.com/hc/en-us/requests/new). You can also learn more about available HarperDB projects by searching [Github](https://github.com/search?q=harperdb). ### Video Tutorials -[HarperDB video tutorials are available on our YouTube channel](https:/www.youtube.com/@harperdbio). HarperDB and the HarperDB Studio are constantly changing, as such, there may be small discrepancies in UI/UX. +[HarperDB video tutorials are available on our YouTube channel](https://www.youtube.com/@harperdbio). HarperDB and the HarperDB Studio are constantly changing, as such, there may be small discrepancies in UI/UX. diff --git a/site/versioned_docs/version-4.2/technical-details/reference/dynamic-schema.md b/site/versioned_docs/version-4.2/technical-details/reference/dynamic-schema.md index c10aaf8e..33be93bb 100644 --- a/site/versioned_docs/version-4.2/technical-details/reference/dynamic-schema.md +++ b/site/versioned_docs/version-4.2/technical-details/reference/dynamic-schema.md @@ -31,8 +31,8 @@ With tables that are using dynamic schemas, additional attributes are reflexivel HarperDB automatically creates two audit attributes used on each record if the table is created without a schema. -* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. -* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. +* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. +* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. ### Dynamic Schema Example diff --git a/site/versioned_docs/version-4.2/technical-details/reference/resource.md b/site/versioned_docs/version-4.2/technical-details/reference/resource.md index 708e8457..cb775d4c 100644 --- a/site/versioned_docs/version-4.2/technical-details/reference/resource.md +++ b/site/versioned_docs/version-4.2/technical-details/reference/resource.md @@ -235,7 +235,7 @@ When a resource is accessed as a data source: ### `operation(operationObject: Object, authorize?: boolean): Promise` -This method is available on tables and will execute a HarperDB 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](https:/api.harperdb.io/) 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 HarperDB 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](https://api.harperdb.io/) 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` diff --git a/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.0.0.md b/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.0.0.md index 49770307..d2aa32b2 100644 --- a/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.0.0.md +++ b/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.0.0.md @@ -8,7 +8,7 @@ sidebar_position: 59999 **Networking & Data Replication (Clustering)** -The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https:/nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. +The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https://nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. * CORE-1464, CORE-1470, : Remove SocketCluster dependencies and all code related to them. * CORE-1465, CORE-1485, CORE-1537, CORE-1538, CORE-1558, CORE-1583, CORE_1665, CORE-1710, CORE-1801, CORE-1865 :Add nats-`server` code as dependency, on install of HarperDB download nats-`server` is possible else fallback to building from source code. * CORE-1593, CORE-1761: Add `nats.js` as project dependency. diff --git a/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.1.0.md b/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.1.0.md index 80b4e5d2..49c45741 100644 --- a/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.1.0.md +++ b/site/versioned_docs/version-4.2/technical-details/release-notes/v4-tucker/4.1.0.md @@ -19,9 +19,9 @@ Logging has been revamped and condensed into one `hdb.log` file. See [logginglog A new operation called `cluster_network` was added, this operation will ping the cluster and return a list of enmeshed nodes. -Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https:/docs.harperdb.io/docs/v/4.1/custom-functions/host-static). +Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https://docs.harperdb.io/docs/v/4.1/custom-functions/host-static). -Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](https:/api.harperdb.io/#aa74bbdf-668c-4536-80f1-b91bb13e5024). +Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](https://api.harperdb.io/#aa74bbdf-668c-4536-80f1-b91bb13e5024). Due to the AWS SDK v2 reaching end of life support we have updated to v3. This has caused some breaking changes in our operations `import_from_s3` and `export_to_s3`: diff --git a/site/versioned_docs/version-4.3/administration/administration.md b/site/versioned_docs/version-4.3/administration/administration.md index 8fbe7b80..462c089a 100644 --- a/site/versioned_docs/version-4.3/administration/administration.md +++ b/site/versioned_docs/version-4.3/administration/administration.md @@ -24,7 +24,7 @@ HarperDB provides robust capabilities for analytics and observability to facilit * Analytics provides statistics on usage, request counts, load, memory usage with historical tracking. The analytics data can be [accessed through querying](../technical-details/reference/analytics). * A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](../developers/operations-api/utilities). * Information about the current cluster configuration and status can be found in the [cluster APIs](../developers/operations-api/clustering). -* Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https:/github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor HarperDB with Graphana. +* Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https://github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor HarperDB with Graphana. ### Replication Transaction Logging diff --git a/site/versioned_docs/version-4.3/administration/cloning.md b/site/versioned_docs/version-4.3/administration/cloning.md index ed4e1d79..8d8351a7 100644 --- a/site/versioned_docs/version-4.3/administration/cloning.md +++ b/site/versioned_docs/version-4.3/administration/cloning.md @@ -25,7 +25,7 @@ To start clone run `harperdb` in the CLI with either of the following variables For example: ``` -HDB_LEADER_URL=https:/node-1.my-domain.com:9925 HDB_LEADER_CLUSTERING_HOST=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb +HDB_LEADER_URL=https://node-1.my-domain.com:9925 HDB_LEADER_CLUSTERING_HOST=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb ``` #### Command line variables @@ -37,7 +37,7 @@ HDB_LEADER_URL=https:/node-1.my-domain.com:9925 HDB_LEADER_CLUSTERING_HOST=node- For example: ``` -harperdb --HDB_LEADER_URL https:/node-1.my-domain.com:9925 --HDB_LEADER_CLUSTERING_HOST node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... +harperdb --HDB_LEADER_URL https://node-1.my-domain.com:9925 --HDB_LEADER_CLUSTERING_HOST node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... ``` Each time clone is run it will set a value `cloned: true` in `harperdb-config.yaml`. This value will prevent clone from @@ -161,7 +161,7 @@ docker run -d \ -v :/home/harperdb/hdb \ -e HDB_LEADER_PASSWORD=password \ -e HDB_LEADER_USERNAME=admin \ - -e HDB_LEADER_URL=https:/1.123.45.6:9925 \ + -e HDB_LEADER_URL=https://1.123.45.6:9925 \ -e HDB_LEADER_CLUSTERING_HOST=1.123.45.6 \ -p 9925:9925 \ -p 9926:9926 \ diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/create-account.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/create-account.md index 635de7f4..3b0f9a56 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/create-account.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/create-account.md @@ -3,7 +3,7 @@ title: Create a Studio Account --- # Create a Studio Account -Start at the [HarperDB Studio sign up page](https:/studio.harperdb.io/sign-up). +Start at the [HarperDB Studio sign up page](https://studio.harperdb.io/sign-up). 1) Provide the following information: * First Name @@ -11,7 +11,7 @@ Start at the [HarperDB Studio sign up page](https:/studio.harperdb.io/sign-up). * Email Address * Subdomain - *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* * Coupon Code (optional) 2) Review the Privacy Policy and Terms of Service. 3) Click the sign up for free button. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/enable-mixed-content.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/enable-mixed-content.md index 1948d6be..7a3c8524 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/enable-mixed-content.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/enable-mixed-content.md @@ -8,4 +8,4 @@ Enabling mixed content is required in cases where you would like to connect the -A comprehensive guide is provided by Adobe [here](https:/experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). \ No newline at end of file +A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/index.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/index.md index 8765927c..13dd6bd1 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/index.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/index.md @@ -5,9 +5,9 @@ title: HarperDB Studio # HarperDB Studio HarperDB Studio is the web-based GUI for HarperDB. Studio enables you to administer, navigate, and monitor all of your HarperDB instances in a simple, user-friendly interface without any knowledge of the underlying HarperDB API. It’s free to sign up, get started today! -[Sign up for free!](https:/studio.harperdb.io/sign-up) +[Sign up for free!](https://studio.harperdb.io/sign-up) -HarperDB now includes a simplified local Studio that is packaged with all HarperDB installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https:/studio.harperdb.io). +HarperDB now includes a simplified local Studio that is packaged with all HarperDB installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https://studio.harperdb.io). --- ## How does Studio Work? diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-configuration.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-configuration.md index ec800055..18ccec17 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-configuration.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-configuration.md @@ -10,7 +10,7 @@ HarperDB instance configuration can be viewed and managed directly through the H All instance configuration is handled through the **config** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. @@ -70,7 +70,7 @@ Note: For HarperDB Cloud instances, upgrading RAM may add additional CPUs to you 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -*Note, if HarperDB Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* +*Note, if HarperDB Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Update Instance Storage @@ -81,18 +81,18 @@ Note: Instance storage can only be upgraded once every 6 hours. 1) In the **update storage** panel at the bottom left: * Select the new instance storage size. - + * If you do not have a credit card associated with your account, an **Add Credit Card To Account** button will appear. Click that to be taken to the billing screen where you can enter your credit card information before returning to the **config** tab to proceed with the upgrade. - + * If you do have a credit card associated, you will be presented with the updated billing information. - + * Click **Upgrade**. - + 2) The instance will shut down and begin reprovisioning itself. The instance will not be available during this time. You will be returned to the instance dashboard and the instance status will show UPDATING INSTANCE. - + 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. - -*Note, if this process takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* + +*Note, if this process takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Remove Instance diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-metrics.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-metrics.md index f084df63..bf95850b 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-metrics.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/instance-metrics.md @@ -6,7 +6,7 @@ title: Instance Metrics The HarperDB Studio display instance status and metrics on the instance status page, which can be accessed with the following instructions: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **status** in the instance control bar. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/instances.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/instances.md index 548deb5a..86633e1c 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/instances.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/instances.md @@ -14,11 +14,11 @@ All interactions between the Studio and your instances take place directly from ## Organization Instance List -A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. Each instance gets their own card. HarperDB Cloud and Enterprise instances are listed together. +A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. Each instance gets their own card. HarperDB Cloud and Enterprise instances are listed together. ## Create a New Instance -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New HarperDB Cloud Instance + Register Enterprise Instance** card. 1. Select your desired Instance Type. @@ -26,7 +26,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Fill out Instance Info. 1. Enter Instance Name - _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com. The Instance URL will be previewed below._ + _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com). The Instance URL will be previewed below._ 1. Enter Instance Username _This is the username of the initial HarperDB instance super user._ @@ -46,14 +46,14 @@ A summary view of all instances within an organization can be viewed by clicking _The geographic area where your instance will be provisioned._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. Your HarperDB Cloud instance will be provisioned in the background. Provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. ## Register Enterprise Instance -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization for the instance to be created under. 3) Click the **Create New HarperDB Cloud Instance + Register Enterprise Instance** card. 4) Select **Register Enterprise Instance**. @@ -83,7 +83,7 @@ A summary view of all instances within an organization can be viewed by clicking _HarperDB instances are billed based on Instance RAM. Selecting additional RAM will enable the ability for faster and more complex queries._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. The HarperDB Studio will register your instance and restart it for the registration to take effect. Your instance will be immediately available after this is complete. @@ -96,7 +96,7 @@ Instance deletion has two different behaviors depending on the instance type. An instance can be deleted as follows: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the trash can icon. 1. Enter the instance name into the text box. @@ -112,14 +112,14 @@ HarperDB instances can be resized on the [Instance Configuration](./instance-con The Studio enables users to log in and out of different database users from the instance control panel. To log out of an instance: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the lock icon. 1. You will immediately be logged out of the instance. To log in to an instance: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card, it will have an unlocked icon and a status reading PLEASE LOG IN, and click the center of the card. 1. Enter the database username. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/login-password-reset.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/login-password-reset.md index dddda5c1..46254627 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/login-password-reset.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/login-password-reset.md @@ -8,7 +8,7 @@ title: Login and Password Reset To log into your existing HarperDB Studio account: -1) Navigate to the [HarperDB Studio](https:/studio.harperdb.io/). +1) Navigate to the [HarperDB Studio](https://studio.harperdb.io/). 2) Enter your email address. 3) Enter your password. 4) Click **sign in**. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-applications.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-applications.md index 57126c96..e690bdc9 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-applications.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-applications.md @@ -36,14 +36,14 @@ The Applications editor stores unsaved changes in cache. This means that occasio ## Accessing Your Application Endpoints Accessing your application endpoints varies with which type of endpoint you're creating. All endpoints, regardless of type, will be accessed via the [HarperDB HTTP port found in the HarperDB configuration file](../../deployments/configuration#http). The default port is `9926`, but you can verify what your instances is set to by navigating to the [instance config page](./instance-configuration) and examining the read only JSON version of your instance's config file looking specifically for either the `http: port: 9926` or `http: securePort: 9926` configs. If `port` is set, you will access your endpoints via `http` and if `securePort` is set, you will access your endpoints via `https`. -Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https:/localhost:9926`. +Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https://localhost:9926`. - **Standard REST Endpoints**\ -Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https:/localhost:9926/Dog/1`. +Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https://localhost:9926/Dog/1`. - **Augmented REST Endpoints**\ -HarperDB Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https:/localhost:9926/DogWithHumanAge/1`. +HarperDB Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https://localhost:9926/DogWithHumanAge/1`. - **Fastify Routes**\ -If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [HarperDB Application Template](https:/github.com/HarperDB/application-template/blob/main/routes/index.js), where we've named our project `application-template`, we would access the `getAll` route at `https:/localhost/application-template/getAll`. +If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [HarperDB Application Template](https://github.com/HarperDB/application-template/blob/main/routes/index.js), where we've named our project `application-template`, we would access the `getAll` route at `https://localhost/application-template/getAll`. ## Creating a New Application diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-charts.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-charts.md index cb73ae99..453bfbae 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-charts.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-charts.md @@ -6,7 +6,7 @@ title: Manage Charts The HarperDB Studio includes a charting feature within an instance. They are generated in real time based on your existing data and automatically refreshed every 15 seconds. Instance charts can be accessed with the following instructions: -1. Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **charts** in the instance control bar. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-instance-users.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-instance-users.md index 02a0a32d..29cf3659 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-instance-users.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-instance-users.md @@ -8,7 +8,7 @@ HarperDB users and roles can be managed directly through the HarperDB Studio. It Instance user configuration is handled through the **users** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-replication.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-replication.md index 3ee158bd..bf6b463e 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-replication.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/manage-replication.md @@ -10,7 +10,7 @@ HarperDB instance clustering and replication can be configured directly through All clustering configuration is handled through the **replication** page of the HarperDB Studio, accessed with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/organizations.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/organizations.md index 888469d7..cc6ab6ac 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/organizations.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/organizations.md @@ -16,42 +16,43 @@ An organization is automatically created for you when you sign up for HarperDB S --- ## List Organizations -A summary view of all organizations your user belongs to can be viewed on the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the HarperDB Studio. +A summary view of all organizations your user belongs to can be viewed on the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the HarperDB Studio. ## Create a New Organization A new organization can be created as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the **Create a New Organization** card. -3) Fill out new organization details +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the **Create a New Organization** card. +3) Fill out new organization details * Enter Organization Name *This is used for descriptive purposes only.* * Enter Organization Subdomain - *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your HarperDB Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* 4) Click Create Organization. ## Delete an Organization + An organization cannot be deleted until all instances have been removed. An organization can be deleted as follows: -1) Navigate to the HarperDB Studio Organizations page. -2) Identify the proper organization card and click the trash can icon. -3) Enter the organization name into the text box. +1) Navigate to the HarperDB Studio Organizations page. +2) Identify the proper organization card and click the trash can icon. +3) Enter the organization name into the text box. *This is done for confirmation purposes to ensure you do not accidentally delete an organization.* 4) Click the **Do It** button. ## Manage Users -HarperDB Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. - +HarperDB Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. #### Inviting a User + A new user can be invited to an organization as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) In the **add user** box, enter the new user’s email address. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) In the **add user** box, enter the new user’s email address. 5) Click **Add User**. Users may or may not already be HarperDB Studio users when adding them to an organization. If the HarperDB Studio account already exists, the user will receive an email notification alerting them to the organization invitation. If the user does not have a HarperDB Studio account, they will receive an email welcoming them to HarperDB Studio. @@ -59,22 +60,25 @@ Users may or may not already be HarperDB Studio users when adding them to an org --- #### Toggle a User’s Organization Owner Status + Organization owners have full access to the organization including the ability to manage organization users, create, modify, and delete instances, and delete the organization. Users must have accepted their invitation prior to being promoted to an owner. A user’s organization owner status can be toggled owner as follows: -1) Navigate to the HarperDB Studio Organizations page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the HarperDB Studio Organizations page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Toggle the **Is Owner** switch to the desired status. + --- #### Remove a User from an Organization + Users may be removed from an organization at any time. Removing a user from an organization will not delete their HarperDB Studio account, it will only remove their access to the specified organization. A user can be removed from an organization as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Type **DELETE** in the text box in the **Delete User** row. *This is done for confirmation purposes to ensure you do not accidentally delete a user.* @@ -84,7 +88,7 @@ Users may be removed from an organization at any time. Removing a user from an o Billing is configured per organization and will be billed to the stored credit card at appropriate intervals (monthly or annually depending on the registered instance). Billing settings can be configured as follows: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 2) Click the appropriate organization card. 3) Click **billing** at the top of the screen. diff --git a/site/versioned_docs/version-4.3/administration/harperdb-studio/query-instance-data.md b/site/versioned_docs/version-4.3/administration/harperdb-studio/query-instance-data.md index 5c3ae28f..5dd2d8c6 100644 --- a/site/versioned_docs/version-4.3/administration/harperdb-studio/query-instance-data.md +++ b/site/versioned_docs/version-4.3/administration/harperdb-studio/query-instance-data.md @@ -6,7 +6,7 @@ title: Query Instance Data SQL queries can be executed directly through the HarperDB Studio with the following instructions: -1) Navigate to the [HarperDB Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [HarperDB Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. 3) Select your desired instance. 4) Click **query** in the instance control bar. diff --git a/site/versioned_docs/version-4.3/administration/logging/standard-logging.md b/site/versioned_docs/version-4.3/administration/logging/standard-logging.md index d586da1c..cf120e3b 100644 --- a/site/versioned_docs/version-4.3/administration/logging/standard-logging.md +++ b/site/versioned_docs/version-4.3/administration/logging/standard-logging.md @@ -38,7 +38,7 @@ The log level can be changed by modifying `logging.level` in the config file `ha ## Clustering Logging -HarperDB clustering utilizes two [Nats](https:/nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of HarperDB and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. +HarperDB clustering utilizes two [Nats](https://nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of HarperDB and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. ## Log File vs Standard Streams diff --git a/site/versioned_docs/version-4.3/deployments/configuration.md b/site/versioned_docs/version-4.3/deployments/configuration.md index 23c92368..d1a4452d 100644 --- a/site/versioned_docs/version-4.3/deployments/configuration.md +++ b/site/versioned_docs/version-4.3/deployments/configuration.md @@ -4,7 +4,7 @@ title: Configuration File # Configuration File -HarperDB is configured through a [YAML](https:/yaml.org/) file called `harperdb-config.yaml` located in the HarperDB root directory (by default this is a directory named `hdb` located in the home directory of the current user). +HarperDB is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the HarperDB root directory (by default this is a directory named `hdb` located in the home directory of the current user). Some configuration will be populated by default in the config file on install, regardless of whether it is used. @@ -413,7 +413,7 @@ clustering: ### `localStudio` -The `localStudio` section configures the local HarperDB Studio, a GUI for HarperDB hosted on the server. A hosted version of the HarperDB Studio with licensing and provisioning options is available at https:/studio.harperdb.io. Note, all database traffic from either `localStudio` or HarperDB Studio is made directly from your browser to the instance. +The `localStudio` section configures the local HarperDB Studio, a GUI for HarperDB hosted on the server. A hosted version of the HarperDB Studio with licensing and provisioning options is available at [https://studio.harperdb.io](https://studio.harperdb.io). Note, all database traffic from either `localStudio` or HarperDB Studio is made directly from your browser to the instance. `enabled` - _Type_: boolean; _Default_: false @@ -558,11 +558,11 @@ This will enable cookie-based sessions to maintain an authenticated session. Thi `operationTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time an operation token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time an operation token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `refreshTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time a refresh token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time a refresh token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). ### `operationsApi` @@ -957,7 +957,7 @@ The name of the component. This will be used to name the folder where the compon A reference to your [component](../developers/components/installing) package.This could be a remote git repo, a local folder/file or an NPM package. HarperDB will add this package to a package.json file and call `npm install` on it, so any reference that works with that paradigm will work here. -Read more about npm install [here](https:/docs.npmjs.com/cli/v8/commands/npm-install) +Read more about npm install [here](https://docs.npmjs.com/cli/v8/commands/npm-install) `port` - _Type_: number _Default_: whatever is set in `http.port` diff --git a/site/versioned_docs/version-4.3/deployments/harperdb-cli.md b/site/versioned_docs/version-4.3/deployments/harperdb-cli.md index 804bc749..dd439c2e 100644 --- a/site/versioned_docs/version-4.3/deployments/harperdb-cli.md +++ b/site/versioned_docs/version-4.3/deployments/harperdb-cli.md @@ -153,7 +153,7 @@ last_updated_record: 1724483231970.9949 `harperdb set_configuration logging_level=error` -`harperdb deploy_component project=my-cool-app package=https:/github.com/HarperDB/application-template` +`harperdb deploy_component project=my-cool-app package=https://github.com/HarperDB/application-template` `harperdb get_components` diff --git a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/index.md b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/index.md index ae2ec1a7..05b953a0 100644 --- a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/index.md +++ b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/index.md @@ -4,6 +4,6 @@ title: HarperDB Cloud # HarperDB Cloud -[HarperDB Cloud](https:/studio.harperdb.io/) is the easiest way to test drive HarperDB, it’s HarperDB-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. HarperDB Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. +[HarperDB Cloud](https://studio.harperdb.io/) is the easiest way to test drive HarperDB, it’s HarperDB-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. HarperDB Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. You can create a new [HarperDB Cloud instance in the HarperDB Studio](../../administration/harperdb-studio/instances#create-a-new-instance). diff --git a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/instance-size-hardware-specs.md b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/instance-size-hardware-specs.md index 0e970b13..676d536d 100644 --- a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/instance-size-hardware-specs.md +++ b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/instance-size-hardware-specs.md @@ -20,4 +20,4 @@ While HarperDB Cloud bills by RAM, each instance has other specifications associ | m5.16xlarge | 256 | 64 | 20 | Up to 3.1 GHz Intel Xeon Platinum 8000 | | m5.24xlarge | 384 | 96 | 25 | Up to 3.1 GHz Intel Xeon Platinum 8000 | -\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https:/aws.amazon.com/ec2/instance-types/](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https://aws.amazon.com/ec2/instance-types/](https://aws.amazon.com/ec2/instance-types/). diff --git a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/iops-impact.md b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/iops-impact.md index 1c8496d5..8d1b952a 100644 --- a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/iops-impact.md +++ b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/iops-impact.md @@ -18,7 +18,7 @@ HarperDB Cloud utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp3 AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result, all HarperDB Cloud storage options will offer 3,000 IOPS. We plan to offer scalable IOPS as an option in the future. -You can read more about AWS EBS volume IOPS here: https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. +You can read more about AWS EBS volume IOPS here: [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html). ## Estimating IOPS for HarperDB Instance diff --git a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md index c5a565e9..f2100f77 100644 --- a/site/versioned_docs/version-4.3/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md +++ b/site/versioned_docs/version-4.3/deployments/harperdb-cloud/verizon-5g-wavelength-instances.md @@ -8,7 +8,7 @@ These instances are only accessible from the Verizon network. When accessing you HarperDB on Verizon 5G Wavelength brings HarperDB closer to the end user exclusively on the Verizon network resulting in as little as single-digit millisecond response time from HarperDB to the client. -Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https:/aws.amazon.com/wavelength/). +Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https://aws.amazon.com/wavelength/). HarperDB 5G Wavelength Instance Specs While HarperDB 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail\*. @@ -18,7 +18,7 @@ HarperDB 5G Wavelength Instance Specs While HarperDB 5G Wavelength bills by RAM, | t3.xlarge | 16 | 4 | Up to 5 | Up to 3.1 GHz Intel Xeon Platinum Processor | | r5.2xlarge | 64 | 8 | Up to 10 | Up to 3.1 GHz Intel Xeon Platinum Processor | -\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https://aws.amazon.com/ec2/instance-types/). ## HarperDB 5G Wavelength Storage @@ -28,4 +28,4 @@ AWS EBS gp2 volumes have a baseline performance level, which determines the numb Smaller gp2 volumes are perfect for trying out the functionality of HarperDB, and might also work well for applications that don’t perform many database transactions. For applications that perform a moderate or high number of transactions, we recommend that you use a larger HarperDB volume. Learn more about the [impact of IOPS on performance here](./iops-impact). -You can read more about [AWS EBS gp2 volume IOPS here](https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). +You can read more about [AWS EBS gp2 volume IOPS here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). diff --git a/site/versioned_docs/version-4.3/deployments/install-harperdb/index.md b/site/versioned_docs/version-4.3/deployments/install-harperdb/index.md index 8e105aac..42b2663b 100644 --- a/site/versioned_docs/version-4.3/deployments/install-harperdb/index.md +++ b/site/versioned_docs/version-4.3/deployments/install-harperdb/index.md @@ -6,12 +6,12 @@ title: Install HarperDB ## Install HarperDB -This documentation contains information for installing HarperDB locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with HarperDB Cloud](https:/studio.harperdb.io/sign-up). HarperDB is a cross-platform database; we recommend Linux for production use, but HarperDB can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. +This documentation contains information for installing HarperDB locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with HarperDB Cloud](https://studio.harperdb.io/sign-up). HarperDB is a cross-platform database; we recommend Linux for production use, but HarperDB can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. -HarperDB runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing HarperDB, itself). Node.js can be downloaded and installed from [their site](https:/nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https:/github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: +HarperDB runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing HarperDB, itself). Node.js can be downloaded and installed from [their site](https://nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https://github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash ``` And then logout and login, and then install Node.js using nvm. We recommend using LTS, but support all currently maintained Node versions (which is currently version 14 and newer, and make sure to always uses latest minor/patch for the major version): @@ -35,15 +35,15 @@ If you are setting up a production server on Linux, [we have much more extensive ## With Docker -If you would like to run HarperDB in Docker, install [Docker Desktop](https:/docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https:/docs.docker.com/engine/install/) on your Linux server. +If you would like to run HarperDB in Docker, install [Docker Desktop](https://docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https://docs.docker.com/engine/install/) on your Linux server. -Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https:/hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a HarperDB container. +Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https://hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a HarperDB container. ## Offline Install If you need to install HarperDB on a device that doesn't have an Internet connection, you can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM): -[Download Install Package](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) +[Download Install Package](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: @@ -55,7 +55,7 @@ npm install -g harperdb-X.X.X.tgz harperdb install HarperDB comes with binaries for standard AMD64/x64 or ARM64 CPU architectures on Linux, Windows (x64 only), and Mac (including Apple Silicon). However, if you are installing on a less common platform (Alpine, for example), you will need to ensure that you have build tools installed for the installation process to compile the binaries (this is handled automatically), including: -* [Go](https:/go.dev/dl/): version 1.19.1 +* [Go](https://go.dev/dl/): version 1.19.1 * GCC * Make * Python v3.7, v3.8, v3.9, or v3.10 diff --git a/site/versioned_docs/version-4.3/deployments/install-harperdb/linux.md b/site/versioned_docs/version-4.3/deployments/install-harperdb/linux.md index 6cea34ad..026e9fe0 100644 --- a/site/versioned_docs/version-4.3/deployments/install-harperdb/linux.md +++ b/site/versioned_docs/version-4.3/deployments/install-harperdb/linux.md @@ -128,7 +128,7 @@ echo "ubuntu hard nofile 1000000" | sudo tee -a /etc/security/limits.conf Install Node Version Manager (nvm) ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Load nvm (or logout and then login) @@ -137,7 +137,7 @@ Load nvm (or logout and then login) . ~/.nvm/nvm.sh ``` -Install Node.js using nvm ([read more about specific Node version requirements](https:/www.npmjs.com/package/harperdb#prerequisites)) +Install Node.js using nvm ([read more about specific Node version requirements](https://www.npmjs.com/package/harperdb#prerequisites)) ```bash nvm install diff --git a/site/versioned_docs/version-4.3/deployments/upgrade-hdb-instance.md b/site/versioned_docs/version-4.3/deployments/upgrade-hdb-instance.md index 0b7c6e3f..b5f54570 100644 --- a/site/versioned_docs/version-4.3/deployments/upgrade-hdb-instance.md +++ b/site/versioned_docs/version-4.3/deployments/upgrade-hdb-instance.md @@ -19,9 +19,9 @@ Upgrading HarperDB is a two-step process. First the latest version of HarperDB m ## Node Version Manager (nvm) -[Node Version Manager (nvm)](http:/nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https:/nvm.sh/. +[Node Version Manager (nvm)](https://nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: [https://nvm.sh/](https://nvm.sh/). -HarperDB supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https:/www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: +HarperDB supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https://www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: ```bash nvm install diff --git a/site/versioned_docs/version-4.3/developers/applications/caching.md b/site/versioned_docs/version-4.3/developers/applications/caching.md index 6ebad89a..a5bf75c3 100644 --- a/site/versioned_docs/version-4.3/developers/applications/caching.md +++ b/site/versioned_docs/version-4.3/developers/applications/caching.md @@ -32,8 +32,8 @@ Next, you need to define the source for your cache. External data sources could ```javascript class ThirdPartyAPI extends Resource { async get() { - return (await fetch(`http:/some-api.com/${this.getId()}`)).json(); - } + return (await fetch(`https://some-api.com/${this.getId()}`)).json(); + } } ``` @@ -48,13 +48,12 @@ Now we have a fully configured and connected caching table. If you access data f ```mermaid flowchart TD - Client1(Client 1)-->Cache(Caching Table) - Client2(Client 2)-->Cache - Cache-->Resource(Data Source Connector) - Resource-->API(Remote Data Source API) + Client1(Client 1)-->Cache(Caching Table) + Client2(Client 2)-->Cache + Cache-->Resource(Data Source Connector) + Resource-->API(Remote Data Source API) ``` - HarperDB handles waiting for an existing cache resolution to finish and uses its result. This prevents a "cache stampede" when entries expire, ensuring that multiple requests to a cache entry will all wait on a single request to the data source. Cache tables with an expiration are periodically pruned for expired entries. Because this is done periodically, there is usually some amount of time between when a record has expired and when the record is actually evicted (the cached data is removed). But when a record is checked for availability, the expiration time is used to determine if the record is fresh (and the cache entry can be used). @@ -69,11 +68,11 @@ In the example above, we simply retrieved data to fulfill a cache request. We ma ```javascript class ThirdPartyAPI extends Resource { - async get() { - let response = await fetch(`http:/some-api.com/${this.getId()}`); - this.getContext().lastModified = response.headers.get('Last-Modified'); - return response.json(); - } + async get() { + let response = await fetch(`https://some-api.com/${this.getId()}`); + this.getContext().lastModified = response.headers.get('Last-Modified'); + return response.json(); + } } ``` @@ -83,19 +82,19 @@ In addition, we can also specify when a cached record "expires". When a cached r ```javascript class ThirdPartyAPI extends Resource { - async get() { - const context = this.getContext(); - let headers = new Headers(); - if (context.replacingVersion) / this is the existing cached record - headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); - let response = await fetch(`http:/some-api.com/${this.getId()}`, { headers }); - let cacheInfo = response.headers.get('Cache-Control'); - let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; - if (maxAge) / we can set a specific expiration time by setting context.expiresAt - context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time - / we can just revalidate and return the record if the origin has confirmed that it has the same version: - if (response.status === 304) return context.replacingRecord; - ... + async get() { + const context = this.getContext(); + let headers = new Headers(); + if (context.replacingVersion) / this is the existing cached record + headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); + let response = await fetch(`https://some-api.com/${this.getId()}`, { headers }); + let cacheInfo = response.headers.get('Cache-Control'); + let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; + if (maxAge) / we can set a specific expiration time by setting context.expiresAt + context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time + / we can just revalidate and return the record if the origin has confirmed that it has the same version: + if (response.status === 304) return context.replacingRecord; + ... ``` ## Active Caching and Invalidation @@ -109,10 +108,10 @@ One way to provide more active caching is to specifically invalidate individual ```javascript const { MyTable } = tables; export class MyTableEndpoint extends MyTable { - async post(data) { - if (data.invalidate) / use this flag as a marker - this.invalidate(); - } + async post(data) { + if (data.invalidate) / use this flag as a marker + this.invalidate(); + } } ``` @@ -124,20 +123,20 @@ We can provide more control of an active cache with subscriptions. If there is a ```javascript class ThirdPartyAPI extends Resource { - async *subscribe() { + async *subscribe() { setInterval(() => { / every second retrieve more data - / get the next data change event from the source - let update = (await fetch(`http:/some-api.com/latest-update`)).json(); - const event = { / define the change event (which will update the cache) - type: 'put', / this would indicate that the event includes the new data value - id: / the primary key of the record that updated - value: / the new value of the record that updated - timestamp: / the timestamp of when the data change occurred - }; - yield event; / this returns this event, notifying the cache of the change + / get the next data change event from the source + let update = (await fetch(`https://some-api.com/latest-update`)).json(); + const event = { / define the change event (which will update the cache) + type: 'put', / this would indicate that the event includes the new data value + id: / the primary key of the record that updated + value: / the new value of the record that updated + timestamp: / the timestamp of when the data change occurred + }; + yield event; / this returns this event, notifying the cache of the change }, 1000); - } - async get() { + } + async get() { ... ``` @@ -164,24 +163,24 @@ By default, HarperDB will only run the subscribe method on one thread. HarperDB ```javascript class ThirdPartyAPI extends Resource { - static subscribeOnThisThread(threadIndex) { - return threadIndex < 2; / run on two threads (the first two threads) - } - async *subscribe() { - .... + static subscribeOnThisThread(threadIndex) { + return threadIndex < 2; / run on two threads (the first two threads) + } + async *subscribe() { + .... ``` An alternative to using asynchronous generators is to use a subscription stream and send events to it. A default subscription stream (that doesn't generate its own events) is available from the Resource's default subscribe method: ```javascript class ThirdPartyAPI extends Resource { - subscribe() { - const subscription = super.subscribe(); - setupListeningToRemoteService().on('update', (event) => { - subscription.send(event); - }); - return subscription; - } + subscribe() { + const subscription = super.subscribe(); + setupListeningToRemoteService().on('update', (event) => { + subscription.send(event); + }); + return subscription; + } } ``` @@ -195,18 +194,18 @@ The cache we have defined so far only has data flowing from the data source to t ```javascript class ThirdPartyAPI extends Resource { - async put(data) { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'PUT', - body: JSON.stringify(data) - }); - } - async delete() { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'DELETE', - }); - } - ... + async put(data) { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'PUT', + body: JSON.stringify(data) + }); + } + async delete() { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'DELETE', + }); + } + ... ``` When doing an insert or update to the MyCache table, the data will be sent to the underlying data source through the `put` method and the new record value will be stored in the cache as well. @@ -217,12 +216,12 @@ When you are using a caching table, it is important to remember that any resourc ```javascript class MyCache extends tables.MyCache { - async post(data) { + async post(data) { / if the data is not cached locally, retrieves from source: await this.ensuredLoaded(); / now we can be sure that the data is loaded, and can access properties this.quantity = this.quantity - data.purchases; - } + } } ``` @@ -237,8 +236,8 @@ With our passive update examples, we have provided a data source handler with a ```javascript const { Post, Comment } = tables; class BlogSource extends Resource { - get() { - let post = await (await fetch(`http:/my-blog-server/${this.getId()}`).json()); + get() { + let post = await (await fetch(`https://my-blog-server/${this.getId()}`).json()); for (let comment of comments) { await Comment.put(comment, this); / save this comment as part of our current context and transaction } diff --git a/site/versioned_docs/version-4.3/developers/applications/define-routes.md b/site/versioned_docs/version-4.3/developers/applications/define-routes.md index 6a9ed34b..450238f2 100644 --- a/site/versioned_docs/version-4.3/developers/applications/define-routes.md +++ b/site/versioned_docs/version-4.3/developers/applications/define-routes.md @@ -4,14 +4,14 @@ title: Define Fastify Routes # Define Fastify Routes -HarperDB’s applications provide an extension for loading [Fastify](https:/www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with HarperDB's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. +HarperDB’s applications provide an extension for loading [Fastify](https://www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with HarperDB's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. -The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https:/github.com/HarperDB/application-template)): +The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https://github.com/HarperDB/application-template)): ```yaml fastifyRoutes: # This loads files that define fastify routes using fastify's auto-loader files: routes/*.js # specify the location of route definition modules - path: . # relative to the app-name, like http:/server/app-name/route-name + path: . # relative to the app-name, like https://server/app-name/route-name ``` By default, route URLs are configured to be: diff --git a/site/versioned_docs/version-4.3/developers/applications/defining-schemas.md b/site/versioned_docs/version-4.3/developers/applications/defining-schemas.md index 29a0c12d..70e293c2 100644 --- a/site/versioned_docs/version-4.3/developers/applications/defining-schemas.md +++ b/site/versioned_docs/version-4.3/developers/applications/defining-schemas.md @@ -6,7 +6,7 @@ title: Defining Schemas Schemas define tables and their attributes. Schemas can be declaratively defined in HarperDB's using GraphQL schema definitions. Schemas definitions can be used to ensure that tables exist (that are required for applications), and have the appropriate attributes. Schemas can define the primary key, data types for attributes, if they are required, and specify which attributes should be indexed. The [introduction to applications provides](./) a helpful introduction to how to use schemas as part of database application development. -Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https:/graphql.org/learn/schema/). +Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https://graphql.org/learn/schema/). An example schema that defines a couple tables might look like: @@ -138,7 +138,7 @@ HarperDB supports the following field types in addition to user defined (object) * `String`: String/text. * `Int`: A 32-bit signed integer (from -2147483648 to 2147483647). * `Long`: A 54-bit signed integer (from -9007199254740992 to 9007199254740992). -* `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision\_floating-point\_format). Note that all numbers are stored in the most compact representation available). +* `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision\_floating-point\_format). Note that all numbers are stored in the most compact representation available). * `BigInt`: Any integer (negative or positive) with less than 300 digits. (Note that `BigInt` is a distinct and separate type from standard numbers in JavaScript, so custom code should handle this type appropriately.) * `Boolean`: true or false. * `ID`: A string (but indicates it is not intended to be human readable). @@ -152,7 +152,7 @@ It is important to note that HarperDB does not currently support renaming tables ### OpenAPI Specification -_The [OpenAPI Specification](https:/spec.openapis.org/oas/v3.1.0) defines a standard, programming language-agnostic interface description for HTTP APIs, +_The [OpenAPI Specification](https://spec.openapis.org/oas/v3.1.0) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ diff --git a/site/versioned_docs/version-4.3/developers/applications/example-projects.md b/site/versioned_docs/version-4.3/developers/applications/example-projects.md index 2eb92ba4..5bd07e77 100644 --- a/site/versioned_docs/version-4.3/developers/applications/example-projects.md +++ b/site/versioned_docs/version-4.3/developers/applications/example-projects.md @@ -6,32 +6,32 @@ title: Example Projects **Library of example HarperDB applications and components:** -* [Authorization in HarperDB using Okta Customer Identity Cloud](https:/www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang +* [Authorization in HarperDB using Okta Customer Identity Cloud](https://www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang -* [How to Speed Up your Applications by Caching at the Edge with HarperDB](https:/dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams +* [How to Speed Up your Applications by Caching at the Edge with HarperDB](https://dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams -* [OAuth Authentication in HarperDB using Auth0 & Node.js](https:/www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos +* [OAuth Authentication in HarperDB using Auth0 & Node.js](https://www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos -* [How To Create a CRUD API with Next.js & HarperDB Custom Functions](https:/www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock +* [How To Create a CRUD API with Next.js & HarperDB Custom Functions](https://www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock -* [Build a Dynamic REST API with Custom Functions](https:/harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush +* [Build a Dynamic REST API with Custom Functions](https://harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush -* [How to use HarperDB Custom Functions to Build your Entire Backend](https:/dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden +* [How to use HarperDB Custom Functions to Build your Entire Backend](https://dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden -* [Using TensorFlowJS & HarperDB Custom Functions for Machine Learning](https:/harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft +* [Using TensorFlowJS & HarperDB Custom Functions for Machine Learning](https://harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft -* [Build & Deploy a Fitness App with Python & HarperDB](https:/www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber +* [Build & Deploy a Fitness App with Python & HarperDB](https://www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber -* [Create a Discord Slash Bot using HarperDB Custom Functions](https:/geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty +* [Create a Discord Slash Bot using HarperDB Custom Functions](https://geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty -* [How I used HarperDB Custom Functions to Build a Web App for my Newsletter](https:/blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj +* [How I used HarperDB Custom Functions to Build a Web App for my Newsletter](https://blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj -* [How I used HarperDB Custom Functions and Recharts to create Dashboard](https:/blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary +* [How I used HarperDB Custom Functions and Recharts to create Dashboard](https://blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary -* [How To Use HarperDB Custom Functions With Your React App](https:/dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi +* [How To Use HarperDB Custom Functions With Your React App](https://dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi -* [Build a Web App Using HarperDB’s Custom Functions](https:/www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp +* [Build a Web App Using HarperDB’s Custom Functions](https://www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp -* [How to Web Scrape Using Python, Snscrape & Custom Functions](https:/hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David +* [How to Web Scrape Using Python, Snscrape & Custom Functions](https://hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David -* [What’s the Big Deal w/ Custom Functions](https:/rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast \ No newline at end of file +* [What’s the Big Deal w/ Custom Functions](https://rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast diff --git a/site/versioned_docs/version-4.3/developers/applications/index.md b/site/versioned_docs/version-4.3/developers/applications/index.md index 7fee6bd8..ceb2aef6 100644 --- a/site/versioned_docs/version-4.3/developers/applications/index.md +++ b/site/versioned_docs/version-4.3/developers/applications/index.md @@ -10,7 +10,7 @@ HarperDB is more than a database, it's a distributed clustering platform allowin In this guide, we are going to explore the evermore extensible architecture that HarperDB provides by building a HarperDB component, a fundamental building-block of the HarperDB ecosystem. -When working through this guide, we recommend you use the [HarperDB Application Template](https:/github.com/HarperDB/application-template) repo as a reference. +When working through this guide, we recommend you use the [HarperDB Application Template](https://github.com/HarperDB/application-template) repo as a reference. ## Understanding the Component Application Architecture @@ -40,10 +40,10 @@ We assume you are running HarperDB version 4.2 or greater, which supports Harper ### Scaffolding our Application Directory -Let's create and initialize a new directory for our application. It is recommended that you start by using the [HarperDB application template](https:/github.com/HarperDB/application-template). Assuming you have `git` installed, you can create your project directory by cloning: +Let's create and initialize a new directory for our application. It is recommended that you start by using the [HarperDB application template](https://github.com/HarperDB/application-template). Assuming you have `git` installed, you can create your project directory by cloning: ```shell -> git clone https:/github.com/HarperDB/application-template my-app +> git clone https://github.com/HarperDB/application-template my-app > cd my-app ``` @@ -79,7 +79,7 @@ Locally developing your application and then committing your app to a source con The core of a HarperDB application is the database, so let's create a database table! -A quick and expressive way to define a table is through a [GraphQL Schema](https:/graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): +A quick and expressive way to define a table is through a [GraphQL Schema](https://graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): ```graphql type Dog @table { @@ -186,7 +186,7 @@ If-None-Match: "etag-id" # browsers can automatically provide this ## Querying -Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../rest). Simple queries can be crafted through [URL query parameters](https:/en.wikipedia.org/wiki/Query\_string). +Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../rest). Simple queries can be crafted through [URL query parameters](https://en.wikipedia.org/wiki/Query\_string). In order to maintain reasonable query speed on a database as it grows in size, it is critical to select and establish the proper indexes. So, before we add the `@export` declaration to our `Dog` table and begin querying it, let's take a moment to target some table properties for indexing. We'll use `name` and `breed` as indexed table properties on our `Dog` table. All we need to do to accomplish this is tag these properties with the `@indexed` directive: @@ -230,7 +230,7 @@ This guide assumes that you're building a HarperDB application locally. If you h * Commit and push your application component directory code (i.e., the `my-app` directory) to a Github repo. In this tutorial we started with a clone of the application-template. To commit and push to your own repository, change the origin to your repo: `git remote set-url origin git@github.com:your-account/your-repo.git` * Go to the applications section of your target cloud instance in the [HarperDB Studio](../../administration/harperdb-studio/manage-applications). -* In the left-hand menu of the applications IDE, click 'deploy' and specify a package location reference that follows the [npm package specification](https:/docs.npmjs.com/cli/v8/using-npm/package-spec) (i.e., a string like `HarperDB/Application-Template` or a URL like `https:/github.com/HarperDB/application-template`, for example, that npm knows how to install). +* In the left-hand menu of the applications IDE, click 'deploy' and specify a package location reference that follows the [npm package specification](https://docs.npmjs.com/cli/v8/using-npm/package-spec) (i.e., a string like `HarperDB/Application-Template` or a URL like `https://github.com/HarperDB/application-template`, for example, that npm knows how to install). You can also deploy your application from your repository by directly using the [`deploy_component` operation](../operations-api/components#deploy-component). @@ -332,7 +332,7 @@ We can also directly implement the Resource class and use it to create new data const { Breed } = tables; / our Breed table class BreedSource extends Resource { / define a data source async get() { - return (await fetch(`http:/best-dog-site.com/${this.getId()}`)).json(); + return (await fetch(`https://best-dog-site.com/${this.getId()}`)).json(); } } / define that our breed table is a cache of data from the data source above, with a specified expiration @@ -345,7 +345,7 @@ HarperDB provides a powerful JavaScript API with significant capabilities that g ## Configuring Applications/Components -Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https:/github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. +Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https://github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. This config file allows you define a location for static files, as well (that are directly delivered as-is for incoming HTTP requests). diff --git a/site/versioned_docs/version-4.3/developers/components/drivers.md b/site/versioned_docs/version-4.3/developers/components/drivers.md index 0f1c063e..87066c72 100644 --- a/site/versioned_docs/version-4.3/developers/components/drivers.md +++ b/site/versioned_docs/version-4.3/developers/components/drivers.md @@ -9,4 +9,4 @@ description: >- -
DriverDocsDownload
Power BIPowerBI DocsWindows
TableauTableau DocsWindows
Mac
Driver JAR
ExcelExcel DocsWindows
JDBCJDBC DocsWindows
Mac
Driver JAR
ODBCODBC DocsWindows
Mac
Linux (RPM)
Linux (DEB)
ADOADO DocsWindows
CmdletsCmdlets DocsWindows
SSISSSIS DocsWindows
+
DriverDocsDownload
Power BIPowerBI DocsWindows
TableauTableau DocsWindows
Mac
Driver JAR
ExcelExcel DocsWindows
JDBCJDBC DocsWindows
Mac
Driver JAR
ODBCODBC DocsWindows
Mac
Linux (RPM)
Linux (DEB)
ADOADO DocsWindows
CmdletsCmdlets DocsWindows
SSISSSIS DocsWindows
diff --git a/site/versioned_docs/version-4.3/developers/components/google-data-studio.md b/site/versioned_docs/version-4.3/developers/components/google-data-studio.md index e33fb2bd..324bb5ce 100644 --- a/site/versioned_docs/version-4.3/developers/components/google-data-studio.md +++ b/site/versioned_docs/version-4.3/developers/components/google-data-studio.md @@ -4,9 +4,9 @@ title: Google Data Studio # Google Data Studio -[Google Data Studio](https:/datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The HarperDB Google Data Studio connector seamlessly integrates your HarperDB data with Google Data Studio so you can build custom, real-time data visualizations. +[Google Data Studio](https://datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The HarperDB Google Data Studio connector seamlessly integrates your HarperDB data with Google Data Studio so you can build custom, real-time data visualizations. -The HarperDB Google Data Studio Connector is subject to our [Terms of Use](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https:/harperdb.io/legal/privacy-policy/). +The HarperDB Google Data Studio Connector is subject to our [Terms of Use](https://harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https://harperdb.io/legal/privacy-policy/). ## Requirements @@ -14,13 +14,13 @@ The HarperDB database must be accessible through the Internet in order for Googl ## Get Started -Get started by selecting the HarperDB connector from the [Google Data Studio Partner Connector Gallery](https:/datastudio.google.com/u/0/datasources/create). +Get started by selecting the HarperDB connector from the [Google Data Studio Partner Connector Gallery](https://datastudio.google.com/u/0/datasources/create). -1. Log in to https:/datastudio.google.com/. -1. Add a new Data Source using the HarperDB connector. The current release version can be added as a data source by following this link: [HarperDB Google Data Studio Connector](https:/datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60\_VJeO3BhHJPvdd20-S76g). +1. Log in to [https://datastudio.google.com/](https://datastudio.google.com/). +1. Add a new Data Source using the HarperDB connector. The current release version can be added as a data source by following this link: [HarperDB Google Data Studio Connector](https://datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60\_VJeO3BhHJPvdd20-S76g). 1. Authorize the connector to access other servers on your behalf (this allows the connector to contact your database). 1. Enter the Web URL to access your database (preferably with HTTPS), as well as the Basic Auth key you use to access the database. Just include the key, not the word “Basic” at the start of it. -1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:/ will do the same thing, if you prefer. +1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:// will do the same thing, if you prefer. 1. Check the box for “Allow Bad Certs” if your HarperDB instance does not have a valid SSL certificate. [HarperDB Cloud](../../deployments/harperdb-cloud/) always has valid certificates, and so will never require this to be checked. Instances you set up yourself may require this, if you are using self-signed certs. If you are using [HarperDB Cloud](../../deployments/harperdb-cloud/) or another instance you know should always have valid SSL certificates, do not check this box. 1. Choose your Query Type. This determines what information the configuration will ask for after pressing the Next button. * Table will ask you for a Schema and a Table to return all fields of using `SELECT *`. diff --git a/site/versioned_docs/version-4.3/developers/components/index.md b/site/versioned_docs/version-4.3/developers/components/index.md index 4901c49f..e0e82581 100644 --- a/site/versioned_docs/version-4.3/developers/components/index.md +++ b/site/versioned_docs/version-4.3/developers/components/index.md @@ -8,9 +8,9 @@ HarperDB is a highly extensible database application platform with support for a * [SDK libraries](./sdks) are available for connecting to HarperDB from different languages. * [Drivers](./drivers) are available for connecting to HarperDB from different products and tools. -* [HarperDB-Add-Ons repositories](https:/github.com/orgs/HarperDB-Add-Ons/repositories) lists various templates and add-ons for HarperDB. -* [HarperDB repositories](https:/github.com/orgs/HarperDB-Add-Ons/repositories) include additional tools for HarperDB. -* You can also [search github.com for ever-growing list of projects that use, or work with, HarperDB](https:/github.com/search?q=harperdb\&type=repositories) +* [HarperDB-Add-Ons repositories](https://github.com/orgs/HarperDB-Add-Ons/repositories) lists various templates and add-ons for HarperDB. +* [HarperDB repositories](https://github.com/orgs/HarperDB-Add-Ons/repositories) include additional tools for HarperDB. +* You can also [search github.com for ever-growing list of projects that use, or work with, HarperDB](https://github.com/search?q=harperdb\&type=repositories) * [Google Data Studio](./google-data-studio) is a visualization tool for building charts and tables from HarperDB data. ## Components diff --git a/site/versioned_docs/version-4.3/developers/components/installing.md b/site/versioned_docs/version-4.3/developers/components/installing.md index aac137ea..2c6741a2 100644 --- a/site/versioned_docs/version-4.3/developers/components/installing.md +++ b/site/versioned_docs/version-4.3/developers/components/installing.md @@ -28,7 +28,7 @@ myTarBall: myLocal: package: /Users/harper/local # install from local path myWebsite: - package: https:/harperdb-component # install from URL + package: https://harperdb-component # install from URL ``` When HarperDB is run or restarted it checks to see if there are any new or updated components. If there are, it will dynamically create a package.json file in the `rootPath` directory and call `npm install`. @@ -44,7 +44,7 @@ The package.json file that is created will look something like this. "myNPMComponent": "npm:harperdb", "myTarBall": "file:/Users/harper/cool-component.tar", "myLocal": "file:/Users/harper/local", - "myWebsite": "https:/harperdb-component" + "myWebsite": "https://harperdb-component" } } ``` diff --git a/site/versioned_docs/version-4.3/developers/components/operations.md b/site/versioned_docs/version-4.3/developers/components/operations.md index fc5d2bf9..95ca23c8 100644 --- a/site/versioned_docs/version-4.3/developers/components/operations.md +++ b/site/versioned_docs/version-4.3/developers/components/operations.md @@ -25,7 +25,7 @@ HarperDB Studio manages your applications using nine HarperDB operations. You ma Deletes the specified file. * **add\_component\_project** - Creates a new project folder in the applications root project directory. It also inserts into the new directory the contents of our applications Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. + Creates a new project folder in the applications root project directory. It also inserts into the new directory the contents of our applications Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). * **drop\_component\_project** Deletes the specified project folder and all of its contents. diff --git a/site/versioned_docs/version-4.3/developers/components/sdks.md b/site/versioned_docs/version-4.3/developers/components/sdks.md index 9064851e..04f87e6f 100644 --- a/site/versioned_docs/version-4.3/developers/components/sdks.md +++ b/site/versioned_docs/version-4.3/developers/components/sdks.md @@ -9,13 +9,13 @@ description: >- | SDK/Tool | Description | Installation | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | -| [HarperDB.NET.Client](https:/www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | -| [Websocket Client](https:/www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | -| [Gatsby HarperDB Source](https:/www.npmjs.com/package/gatsby-source-harperdb) | Use HarperDB as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | -| [HarperDB.EntityFrameworkCore](https:/www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The HarperDB EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | -| [Python SDK](https:/pypi.org/project/harperdb/) | Python3 implementations of HarperDB API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | -| [HarperDB Flutter SDK](https:/github.com/HarperDB/harperdb-sdk-flutter) | A HarperDB SDK for Flutter | `flutter pub add harperdb` | -| [React Hook](https:/www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | -| [Node Red Node](https:/flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to HarperDB using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | -| [NodeJS SDK](https:/www.npmjs.com/package/harperive) | A HarperDB SDK for NodeJS | `npm i -s harperive` | -| [HarperDB Cargo Crate](https:/crates.io/crates/harperdb) | A HarperDB SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | +| [HarperDB.NET.Client](https://www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | +| [Websocket Client](https://www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | +| [Gatsby HarperDB Source](https://www.npmjs.com/package/gatsby-source-harperdb) | Use HarperDB as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | +| [HarperDB.EntityFrameworkCore](https://www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The HarperDB EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | +| [Python SDK](https://pypi.org/project/harperdb/) | Python3 implementations of HarperDB API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | +| [HarperDB Flutter SDK](https://github.com/HarperDB/harperdb-sdk-flutter) | A HarperDB SDK for Flutter | `flutter pub add harperdb` | +| [React Hook](https://www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | +| [Node Red Node](https://flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to HarperDB using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | +| [NodeJS SDK](https://www.npmjs.com/package/harperive) | A HarperDB SDK for NodeJS | `npm i -s harperive` | +| [HarperDB Cargo Crate](https://crates.io/crates/harperdb) | A HarperDB SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | diff --git a/site/versioned_docs/version-4.3/developers/components/writing-extensions.md b/site/versioned_docs/version-4.3/developers/components/writing-extensions.md index 51ba8de7..653a1ed1 100644 --- a/site/versioned_docs/version-4.3/developers/components/writing-extensions.md +++ b/site/versioned_docs/version-4.3/developers/components/writing-extensions.md @@ -44,7 +44,7 @@ export function start(options: { port: number, server: {}}) { } ``` -Here, the `request` object will have the following structure (this is based on Node's request, but augmented to conform to a subset of the [WHATWG Request API](https:/developer.mozilla.org/en-US/docs/Web/API/Request)): +Here, the `request` object will have the following structure (this is based on Node's request, but augmented to conform to a subset of the [WHATWG Request API](https://developer.mozilla.org/en-US/docs/Web/API/Request)): ```typescript interface Request { @@ -55,7 +55,7 @@ interface Request { } ``` -The returned `response` object should have the following structure (again, following a structural subset of the [WHATWG Response API](https:/developer.mozilla.org/en-US/docs/Web/API/Response)): +The returned `response` object should have the following structure (again, following a structural subset of the [WHATWG Response API](https://developer.mozilla.org/en-US/docs/Web/API/Response)): ```typescript interface Response { @@ -168,4 +168,4 @@ contentTypes.set('text/xml', { In the future, extensions may be categorized as trusted or untrusted. For some HarperDB installations, administrators may choose to constrain users to only using trusted extensions for security reasons (such multi-tenancy requirements or added defense in depth). Most installations do not impose such constraints, but this may exist in some situations. -An extension can be automatically considered trusted if it conforms to the requirements of [Secure EcmaScript](https:/www.npmjs.com/package/ses/v/0.7.0) (basically strict mode code that doesn't modify any global objects), and either does not use any other modules, or only uses modules from other trusted extensions/components. An extension can be marked as trusted by review by the HarperDB team as well, but developers should not expect that HarperDB can review all extensions. Untrusted extensions can access any other packages/modules, and may have many additional capabilities. +An extension can be automatically considered trusted if it conforms to the requirements of [Secure EcmaScript](https://www.npmjs.com/package/ses/v/0.7.0) (basically strict mode code that doesn't modify any global objects), and either does not use any other modules, or only uses modules from other trusted extensions/components. An extension can be marked as trusted by review by the HarperDB team as well, but developers should not expect that HarperDB can review all extensions. Untrusted extensions can access any other packages/modules, and may have many additional capabilities. diff --git a/site/versioned_docs/version-4.3/developers/operations-api/advanced-json-sql-examples.md b/site/versioned_docs/version-4.3/developers/operations-api/advanced-json-sql-examples.md index 1584a0c4..c26161b7 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/advanced-json-sql-examples.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/advanced-json-sql-examples.md @@ -84,7 +84,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo "operation": "csv_url_load", "database": "movies", "table": "movie", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" } ``` @@ -108,7 +108,7 @@ Inserts data from a hosted CSV file into the "credits" table using the 'csv_url_ "operation": "csv_url_load", "database": "movies", "table": "credits", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" } ``` diff --git a/site/versioned_docs/version-4.3/developers/operations-api/bulk-operations.md b/site/versioned_docs/version-4.3/developers/operations-api/bulk-operations.md index 048ec5d4..59430b69 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/bulk-operations.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/bulk-operations.md @@ -20,7 +20,7 @@ Ingests CSV data, provided directly in the operation as an `insert`, `update` or "database": "dev", "action": "insert", "table": "breed", - "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" + "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" } ``` @@ -82,7 +82,7 @@ Ingests CSV data, provided via URL, as an `insert`, `update` or `upsert` into th "action": "insert", "database": "dev", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.3/developers/operations-api/components.md b/site/versioned_docs/version-4.3/developers/operations-api/components.md index 17ba5f0a..3b5fcd1e 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/components.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/components.md @@ -34,9 +34,9 @@ Will deploy a component using either a base64-encoded string representation of a If deploying with the `payload` option, HarperDB will decrypt the base64-encoded string, reconstitute the .tar file of your project folder, and extract it to the component root project directory.\ -If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https:/docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: +If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: ``` -https:/github.com/HarperDB/application-template#semver:v1.0.0 +https://github.com/HarperDB/application-template#semver:v1.0.0 ``` or this can be shortened to: ``` @@ -49,13 +49,13 @@ git+ssh:/git@github.com:my-org/my-app.git#semver:v1.0.0 ``` Or you can use a Github token: ``` -https:/@github.com/my-org/my-app#semver:v1.0.0 +https://@github.com/my-org/my-app#semver:v1.0.0 ``` Or you can use a GitLab Project Access Token: ``` -https:/my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 +https://my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 ``` -Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https:/docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). +Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https://docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). _Note: After deploying a component a restart may be required_ diff --git a/site/versioned_docs/version-4.3/developers/operations-api/custom-functions.md b/site/versioned_docs/version-4.3/developers/operations-api/custom-functions.md index bf9537fc..e6e8ef11 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/custom-functions.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/custom-functions.md @@ -160,7 +160,7 @@ _Operation is restricted to super_user roles only_ ## Add Custom Function Project -Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. +Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.3/developers/operations-api/index.md b/site/versioned_docs/version-4.3/developers/operations-api/index.md index cf2db22d..e0f26443 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/index.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/index.md @@ -7,7 +7,7 @@ title: Operations API The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling HarperDB. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../../../deployments/configuration), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](../../../developers/security/basic-auth) or [JWT authentication](../../../developers/security/jwt-auth). For example, a request to create a table would be performed as: ```http -POST http:/my-harperdb-server:9925/ +POST https://my-harperdb-server:9925/ Authorization: Basic YourBase64EncodedInstanceUser:Pass Content-Type: application/json @@ -34,14 +34,14 @@ The operations API reference is available below and categorized by topic: * [SQL Operations](./sql-operations) * [Advanced JSON SQL Examples](./advanced-json-sql-examples) -• [Past Release API Documentation](https:/olddocs.harperdb.io) +• [Past Release API Documentation](https://olddocs.harperdb.io) ## More Examples Here is an example of using `curl` to make an operations API request: ```bash -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ diff --git a/site/versioned_docs/version-4.3/developers/operations-api/logs.md b/site/versioned_docs/version-4.3/developers/operations-api/logs.md index a6c39c46..82b7d252 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/logs.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/logs.md @@ -5,17 +5,18 @@ title: Logs # Logs ## Read HarperDB Log -Returns log outputs from the primary HarperDB log based on the provided search criteria. Read more about HarperDB logging here: https:/docs.harperdb.io/docs/logging#read-logs-via-the-api. +Returns log outputs from the primary HarperDB log based on the provided search criteria. Read more about HarperDB logging here: [https://docs.harperdb.io/docs/logging#read-logs-via-the-api](https://docs.harperdb.io/docs/logging#read-logs-via-the-api). _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `read_Log` * start _(optional)_ - result to start with. Default is 0, the first log in `hdb.log`. Must be a number * limit _(optional)_ - number of results returned. Default behavior is 1000. Must be a number -* level _(optional)_ - error level to filter on. Default behavior is all levels. Must be `notify`, `error`, `warn`, `info`, `debug` or `trace` -* from _(optional)_ - date to begin showing log results. Must be `YYYY-MM-DD` or `YYYY-MM-DD hh:mm:ss`. Default is first log in `hdb.log` +* level _(optional)_ - error level to filter on. Default behavior is all levels. Must be `notify`, `error`, `warn`, `info`, `debug` or `trace` +* from _(optional)_ - date to begin showing log results. Must be `YYYY-MM-DD` or `YYYY-MM-DD hh:mm:ss`. Default is first log in `hdb.log` * until _(optional)_ - date to end showing log results. Must be `YYYY-MM-DD` or `YYYY-MM-DD hh:mm:ss`. Default is last log in `hdb.log` * order _(optional)_ - order to display logs desc or asc by timestamp. By default, will maintain `hdb.log` order + ### Body ```json @@ -31,6 +32,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -58,11 +60,11 @@ _Operation is restricted to super_user roles only_ ``` - --- ## Read Transaction Log -Returns all transactions logged for the specified database table. You may filter your results with the optional from, to, and limit fields. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_transaction_log. + +Returns all transactions logged for the specified database table. You may filter your results with the optional from, to, and limit fields. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_transaction_log](https://docs.harperdb.io/docs/transaction-logging#read_transaction_log). _Operation is restricted to super_user roles only_ @@ -87,6 +89,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -263,6 +266,7 @@ _Operation is restricted to super_user roles only_ --- ## Delete Transaction Logs Before + Deletes transaction log data for the specified database table that is older than the specified timestamp. _Operation is restricted to super_user roles only_ @@ -273,6 +277,7 @@ _Operation is restricted to super_user roles only_ * timestamp _(required)_ - records older than this date will be deleted. Format is millisecond-based epoch in UTC ### Body + ```json { "operation": "delete_transaction_logs_before", @@ -283,6 +288,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "message": "Starting job with id 26a6d3a6-6d77-40f9-bee7-8d6ef479a126" @@ -292,7 +298,8 @@ _Operation is restricted to super_user roles only_ --- ## Read Audit Log -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns a verbose history of all transactions logged for the specified database table, including original data records. You may filter your results with the optional search_type and search_values fields. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns a verbose history of all transactions logged for the specified database table, including original data records. You may filter your results with the optional search_type and search_values fields. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ @@ -313,6 +320,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -390,11 +398,11 @@ _Operation is restricted to super_user roles only_ ] ``` - --- ## Read Audit Log by timestamp -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table between the specified time window. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table between the specified time window. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ @@ -423,6 +431,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json [ { @@ -523,11 +532,11 @@ _Operation is restricted to super_user roles only_ ] ``` - --- ## Read Audit Log by username -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed by the specified user. Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed by the specified user. Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ @@ -552,6 +561,7 @@ _Operation is restricted to super_user roles only_ ``` ### Response: 200 + ```json { "admin": [ @@ -654,11 +664,11 @@ _Operation is restricted to super_user roles only_ } ``` - --- ## Read Audit Log by hash_value -AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed to the specified hash value(s). Read more about HarperDB transaction logs here: https:/docs.harperdb.io/docs/transaction-logging#read_audit_log. + +AuditLog must be enabled in the HarperDB configuration file to make this request. Returns the transactions logged for the specified database table which were committed to the specified hash value(s). Read more about HarperDB transaction logs here: [https://docs.harperdb.io/docs/transaction-logging#read_audit_log](https://docs.harperdb.io/docs/transaction-logging#read_audit_log). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.3/developers/operations-api/quickstart-examples.md b/site/versioned_docs/version-4.3/developers/operations-api/quickstart-examples.md index e1ef734a..e007f35c 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/quickstart-examples.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/quickstart-examples.md @@ -248,7 +248,7 @@ Let's add some more Harper doggies! We can add as many dog objects as we want in We need to populate the 'breed' table with some data so we can reference it later. For larger data sets, we recommend using our CSV upload option. -Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and HarperDB will take care of the rest. You can pull the breeds.csv file from here: https:/s3.amazonaws.com/complimentarydata/breeds.csv +Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and HarperDB will take care of the rest. You can pull the breeds.csv file from here: [https://s3.amazonaws.com/complimentarydata/breeds.csv](https://s3.amazonaws.com/complimentarydata/breeds.csv) ### Body @@ -256,7 +256,7 @@ Each header in a column will be considered as an attribute, and each row in the { "operation": "csv_url_load", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.3/developers/operations-api/utilities.md b/site/versioned_docs/version-4.3/developers/operations-api/utilities.md index 7ba696ae..2c22dcaa 100644 --- a/site/versioned_docs/version-4.3/developers/operations-api/utilities.md +++ b/site/versioned_docs/version-4.3/developers/operations-api/utilities.md @@ -173,7 +173,7 @@ _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `install_node_modules` * projects _(required)_ - must ba an array of custom functions projects. -* dry_run _(optional)_ - refers to the npm --dry-run flag: [https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. +* dry_run _(optional)_ - refers to the npm --dry-run flag: [https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. ### Body ```json diff --git a/site/versioned_docs/version-4.3/developers/real-time.md b/site/versioned_docs/version-4.3/developers/real-time.md index dd2d88c9..8b400b78 100644 --- a/site/versioned_docs/version-4.3/developers/real-time.md +++ b/site/versioned_docs/version-4.3/developers/real-time.md @@ -72,10 +72,10 @@ Non-retained messages are generally a good choice for applications like chat, wh ### WebSockets -WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss:/server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: +WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss://server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: ```javascript -let ws = new WebSocket('wss:/server/my-resource/341'); +let ws = new WebSocket('wss://server/my-resource/341'); ws.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); @@ -120,7 +120,7 @@ export class Example extends Resource { Server Sent Events (SSE) are also supported through the REST server interface, and provide a simple and efficient mechanism for web-based applications to receive real-time updates. For consistency of push delivery, SSE connections go through the `connect()` method on resources, much like WebSockets. The primary difference is that `connect` is called without any `incomingMessages` argument, since SSE is a one-directional transport mechanism. This can be used much like WebSockets, specifying a resource URL path will connect to that resource, and by default provides a stream of messages for changes and messages for that resource. For example, you can connect to receive notification in a browser for a resource like: ```javascript -let eventSource = new EventSource('https:/server/my-resource/341', { withCredentials: true }); +let eventSource = new EventSource('https://server/my-resource/341', { withCredentials: true }); eventSource.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); diff --git a/site/versioned_docs/version-4.3/developers/rest.md b/site/versioned_docs/version-4.3/developers/rest.md index 90348887..2b260782 100644 --- a/site/versioned_docs/version-4.3/developers/rest.md +++ b/site/versioned_docs/version-4.3/developers/rest.md @@ -105,7 +105,7 @@ GET /my-resource/?property=value&property2=another-value Note that only one of the attributes needs to be indexed for this query to execute. -We can also specify different comparators such as less than and greater than queries using [FIQL](https:/datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: +We can also specify different comparators such as less than and greater than queries using [FIQL](https://datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: ```http GET /my-resource/?age=gt=20 diff --git a/site/versioned_docs/version-4.3/developers/security/basic-auth.md b/site/versioned_docs/version-4.3/developers/security/basic-auth.md index 56367bb2..7e5fbcaa 100644 --- a/site/versioned_docs/version-4.3/developers/security/basic-auth.md +++ b/site/versioned_docs/version-4.3/developers/security/basic-auth.md @@ -14,7 +14,7 @@ A header is added to each HTTP request. The header key is **“Authorization”* In the below code sample, you can see where we add the authorization header to the request. This needs to be added for each and every HTTP request for HarperDB. -_Note: This function uses btoa. Learn about_ [_btoa here_](https:/developer.mozilla.org/en-US/docs/Web/API/btoa)_._ +_Note: This function uses btoa. Learn about_ [_btoa here_](https://developer.mozilla.org/en-US/docs/Web/API/btoa)_._ ```javascript function callHarperDB(call_object, operation, callback){ diff --git a/site/versioned_docs/version-4.3/developers/security/certificate-management.md b/site/versioned_docs/version-4.3/developers/security/certificate-management.md index eb69df74..12b56eda 100644 --- a/site/versioned_docs/version-4.3/developers/security/certificate-management.md +++ b/site/versioned_docs/version-4.3/developers/security/certificate-management.md @@ -49,7 +49,7 @@ Instead of enabling HTTPS for HarperDB, Nginx can be used as a reverse proxy for Install Nginx, configure Nginx to use certificates issued from your own CA or a public CA, then configure Nginx to listen for HTTPS requests and forward to HarperDB as HTTP requests. -[Certbot](https:/certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. +[Certbot](https://certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. ### Option: External Reverse Proxy diff --git a/site/versioned_docs/version-4.3/developers/security/configuration.md b/site/versioned_docs/version-4.3/developers/security/configuration.md index 67d959fd..f5feb51b 100644 --- a/site/versioned_docs/version-4.3/developers/security/configuration.md +++ b/site/versioned_docs/version-4.3/developers/security/configuration.md @@ -8,7 +8,7 @@ HarperDB was set up to require very minimal configuration to work out of the box ## CORS -HarperDB allows for managing [cross-origin HTTP requests](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, HarperDB enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: +HarperDB allows for managing [cross-origin HTTP requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, HarperDB enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: 1. Open the harperdb-config.yaml file, which can be found in \, the location you specified during install. 1. In harperdb-config.yaml there should be 2 entries under `operationsApi.network`: cors and corsAccessList. @@ -19,7 +19,7 @@ HarperDB allows for managing [cross-origin HTTP requests](https:/developer.mozil 1. The `corsAccessList` will only be recognized by the system when `cors` is `true` 1. To create an access list you set `corsAccessList` to a comma-separated list of domains. - i.e. `corsAccessList` is `http:/harperdb.io,http:/products.harperdb.io` + i.e. `corsAccessList` is `https://harperdb.io,https://products.harperdb.io` 1. To clear out the access list and allow all domains: `corsAccessList` is `[null]` ## SSL diff --git a/site/versioned_docs/version-4.3/developers/security/jwt-auth.md b/site/versioned_docs/version-4.3/developers/security/jwt-auth.md index f48fe0ee..18072f70 100644 --- a/site/versioned_docs/version-4.3/developers/security/jwt-auth.md +++ b/site/versioned_docs/version-4.3/developers/security/jwt-auth.md @@ -93,4 +93,4 @@ Token timeouts are configurable in [harperdb-config.yaml](../../deployments/conf * `operationsApi.authentication.operationTokenTimeout`: Defines the length of time until the operation\_token expires (default 1d). * `operationsApi.authentication.refreshTokenTimeout`: Defines the length of time until the refresh\_token expires (default 30d). -A full list of valid values for both parameters can be found [here](https:/github.com/vercel/ms). +A full list of valid values for both parameters can be found [here](https://github.com/vercel/ms). diff --git a/site/versioned_docs/version-4.3/developers/sql-guide/date-functions.md b/site/versioned_docs/version-4.3/developers/sql-guide/date-functions.md index 2ae9addf..b6a79ed1 100644 --- a/site/versioned_docs/version-4.3/developers/sql-guide/date-functions.md +++ b/site/versioned_docs/version-4.3/developers/sql-guide/date-functions.md @@ -8,9 +8,9 @@ HarperDB encourages developers to utilize other querying tools over SQL for perf # SQL Date Functions -HarperDB utilizes [Coordinated Universal Time (UTC)](https:/en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. +HarperDB utilizes [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. -When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https:/en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https:/tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. +When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https://tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. ### CURRENT_DATE() @@ -121,7 +121,7 @@ AS date_diff_result" returns ### DATE_FORMAT(date, format) -Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https:/momentjs.com/docs/#/displaying/format/). +Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https://momentjs.com/docs/#/displaying/format/). ``` "SELECT DATE_FORMAT(1524412627973, 'YYYY-MM-DD HH:mm:ss') diff --git a/site/versioned_docs/version-4.3/developers/sql-guide/features-matrix.md b/site/versioned_docs/version-4.3/developers/sql-guide/features-matrix.md index 7856dbfd..63539ac3 100644 --- a/site/versioned_docs/version-4.3/developers/sql-guide/features-matrix.md +++ b/site/versioned_docs/version-4.3/developers/sql-guide/features-matrix.md @@ -8,7 +8,7 @@ HarperDB encourages developers to utilize other querying tools over SQL for perf # SQL Features Matrix -HarperDB provides access to most SQL functions, and we’re always expanding that list. Check below to see if we cover what you need. If not, feel free to [add a Feature Request](https:/feedback.harperdb.io/). +HarperDB provides access to most SQL functions, and we’re always expanding that list. Check below to see if we cover what you need. If not, feel free to [add a Feature Request](https://feedback.harperdb.io/). | INSERT | | diff --git a/site/versioned_docs/version-4.3/developers/sql-guide/functions.md b/site/versioned_docs/version-4.3/developers/sql-guide/functions.md index d7957037..480f46f4 100644 --- a/site/versioned_docs/version-4.3/developers/sql-guide/functions.md +++ b/site/versioned_docs/version-4.3/developers/sql-guide/functions.md @@ -24,7 +24,7 @@ This SQL keywords reference contains the SQL functions available in HarperDB. | ARRAY* | ARRAY(_expression_) | Returns a list of data as a field. | | DISTINCT_ARRAY* | DISTINCT_ARRAY(_expression_) | When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set. | -*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https:/www.harperdb.io/post/sql-queries-to-complex-objects). +*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https://www.harperdb.io/post/sql-queries-to-complex-objects). ### Conversion diff --git a/site/versioned_docs/version-4.3/developers/sql-guide/json-search.md b/site/versioned_docs/version-4.3/developers/sql-guide/json-search.md index 86010c5c..c22cf74f 100644 --- a/site/versioned_docs/version-4.3/developers/sql-guide/json-search.md +++ b/site/versioned_docs/version-4.3/developers/sql-guide/json-search.md @@ -8,7 +8,7 @@ HarperDB encourages developers to utilize other querying tools over SQL for perf # SQL JSON Search -HarperDB automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, HarperDB offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](http:/docs.jsonata.org/overview.html) into our SQL engine. +HarperDB automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, HarperDB offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](https://docs.jsonata.org/overview.html) into our SQL engine. ## Syntax @@ -174,4 +174,4 @@ As seen above we execute the same name filter against the cast array, the primar To see further SEARCH\_JSON examples in action view our Postman Collection that provides a [sample database & data with query examples](../operations-api/advanced-json-sql-examples). -To learn more about how to build expressions check out the JSONata documentation: [http:/docs.jsonata.org/overview](http:/docs.jsonata.org/overview) +To learn more about how to build expressions check out the JSONata documentation: [https://docs.jsonata.org/overview](https://docs.jsonata.org/overview) diff --git a/site/versioned_docs/version-4.3/developers/sql-guide/sql-geospatial-functions.md b/site/versioned_docs/version-4.3/developers/sql-guide/sql-geospatial-functions.md index df398174..1037610f 100644 --- a/site/versioned_docs/version-4.3/developers/sql-guide/sql-geospatial-functions.md +++ b/site/versioned_docs/version-4.3/developers/sql-guide/sql-geospatial-functions.md @@ -8,19 +8,16 @@ HarperDB encourages developers to utilize other querying tools over SQL for perf # SQL Geospatial Functions -HarperDB geospatial features require data to be stored in a single column using the [GeoJSON standard](http:/geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. +HarperDB geospatial features require data to be stored in a single column using the [GeoJSON standard](https://geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. -If you are new to GeoJSON you should check out the full specification here: http:/geojson.org/. There are a few important things to point out before getting started. +If you are new to GeoJSON you should check out the full specification here: [https://geojson.org/](https://geojson.org/). There are a few important things to point out before getting started. - - -1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. -2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. +1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. +2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. 3) Note if you are using Postman for you testing. Due to limitations in the Postman client, you will need to escape quotes in your strings and your SQL will need to be passed on a single line. - In the examples contained in the left-hand navigation, database and table names may change, but all GeoJSON data will be stored in a column named geo_data. # geoArea @@ -28,14 +25,17 @@ In the examples contained in the left-hand navigation, database and table names The geoArea() function returns the area of one or more features in square meters. ### Syntax + geoArea(_geoJSON_) ### Parameters + | Parameter | Description | |-----------|---------------------------------| | geoJSON | Required. One or more features. | #### Example 1 + Calculate the area, in square meters, of a manually passed GeoJSON polygon. ``` @@ -54,6 +54,7 @@ SELECT geoArea('{ ``` #### Example 2 + Find all records that have an area less than 1 square mile (or 2589988 square meters). ``` @@ -62,18 +63,22 @@ WHERE geoArea(geo_data) < 2589988 ``` # geoLength + Takes a GeoJSON and measures its length in the specified units (default is kilometers). ## Syntax + geoLength(_geoJSON_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| geoJSON | Required. GeoJSON to measure. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| geoJSON | Required. GeoJSON to measure. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the length, in kilometers, of a manually passed GeoJSON linestring. ``` @@ -91,6 +96,7 @@ SELECT geoLength('{ ``` ### Example 2 + Find all data plus the calculated length in miles of the GeoJSON, restrict the response to only lengths less than 5 miles, and return the data in order of lengths smallest to largest. ``` @@ -99,19 +105,24 @@ FROM dev.locations WHERE geoLength(geo_data, 'miles') < 5 ORDER BY length ASC ``` + # geoDifference + Returns a new polygon with the difference of the second polygon clipped from the first polygon. ## Syntax + geoDifference(_polygon1, polygon2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|----------------------------------------------------------------------------| -| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | +| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | ### Example + Return a GeoJSON Polygon that removes City Park (_polygon2_) from Colorado (_polygon1_). ``` @@ -153,19 +164,23 @@ SELECT geoDifference('{ ``` # geoDistance + Calculates the distance between two points in units (default is kilometers). ## Syntax + geoDistance(_point1, point2_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the distance, in miles, between HarperDB’s headquarters and the Washington Monument. ``` @@ -173,6 +188,7 @@ SELECT geoDistance('[-104.979127,39.761563]', '[-77.035248,38.889475]', 'miles') ``` ### Example 2 + Find all locations that are within 40 kilometers of a given point, return that distance in miles, and sort by distance in an ascending order. ``` @@ -183,20 +199,24 @@ ORDER BY distance ASC ``` # geoNear + Determines if point1 and point2 are within a specified distance from each other, default units are kilometers. Returns a Boolean. ## Syntax + geoNear(_point1, point2, distance_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| distance | Required. The maximum distance in units as an integer or decimal. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| distance | Required. The maximum distance in units as an integer or decimal. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Return all locations within 50 miles of a given point. ``` @@ -206,6 +226,7 @@ WHERE geoNear('[-104.979127,39.761563]', geo_data, 50, 'miles') ``` ### Example 2 + Return all locations within 2 degrees of the earth of a given point. (Each degree lat/long is about 69 miles [111 kilometers]). Return all data and the distance in miles, sorted by ascending distance. ``` @@ -216,18 +237,22 @@ ORDER BY distance ASC ``` # geoContains + Determines if geo2 is completely contained by geo1. Returns a Boolean. ## Syntax + geoContains(_geo1, geo2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------| -| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | +| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | ### Example 1 + Return all locations within the state of Colorado (passed as a GeoJSON string). ``` @@ -252,6 +277,7 @@ WHERE geoContains('{ ``` ### Example 2 + Return all locations which contain HarperDB Headquarters. ``` @@ -278,7 +304,8 @@ WHERE geoContains(geo_data, '{ ``` # geoEqual -Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https:/developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. + +Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see [https://developers.arcgis.com/documentation/spatial-references/](https://developers.arcgis.com/documentation/spatial-references/). Returns a Boolean. ## Syntax geoEqual(_geo1_, _geo2_) diff --git a/site/versioned_docs/version-4.3/getting-started.md b/site/versioned_docs/version-4.3/getting-started.md index fa4edb5d..bf6f2a59 100644 --- a/site/versioned_docs/version-4.3/getting-started.md +++ b/site/versioned_docs/version-4.3/getting-started.md @@ -36,7 +36,7 @@ HarperDB is more than just a database, with HarperDB you build "database applica To set up a HarperDB cloud instance, simply sign up and create a new instance: -1. [Sign up for the HarperDB Studio](https:/studio.harperdb.io/sign-up) +1. [Sign up for the HarperDB Studio](https://studio.harperdb.io/sign-up) 1. [Create a new HarperDB Cloud instance](./administration/harperdb-studio/instances#create-a-new-instance) Note that a local instance and cloud instance are not mutually exclusive. You can register your local instance in the HarperDB Studio, and a common development flow is to develop locally and then deploy your application to your cloud instance. @@ -66,7 +66,7 @@ The Operations API provides extensive administrative capabilities for HarperDB, The HarperDB Operations API is single endpoint, which means the only thing that needs to change across different calls is the body. For example purposes, a basic cURL command is shown below to create a database called dev. To change this behavior, swap out the operation in the `data-raw` body parameter. ``` -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ @@ -77,8 +77,8 @@ curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ ## Support and Learning More -If you find yourself in need of additional support you can submit a [HarperDB support ticket](https:/harperdbhelp.zendesk.com/hc/en-us/requests/new). You can also learn more about available HarperDB projects by searching [Github](https:/github.com/search?q=harperdb). +If you find yourself in need of additional support you can submit a [HarperDB support ticket](https://harperdbhelp.zendesk.com/hc/en-us/requests/new). You can also learn more about available HarperDB projects by searching [Github](https://github.com/search?q=harperdb). ### Video Tutorials -[HarperDB video tutorials are available on our YouTube channel](https:/www.youtube.com/@harperdbio). HarperDB and the HarperDB Studio are constantly changing, as such, there may be small discrepancies in UI/UX. +[HarperDB video tutorials are available on our YouTube channel](https://www.youtube.com/@harperdbio). HarperDB and the HarperDB Studio are constantly changing, as such, there may be small discrepancies in UI/UX. diff --git a/site/versioned_docs/version-4.3/technical-details/reference/content-types.md b/site/versioned_docs/version-4.3/technical-details/reference/content-types.md index d2bc096a..3311a86b 100644 --- a/site/versioned_docs/version-4.3/technical-details/reference/content-types.md +++ b/site/versioned_docs/version-4.3/technical-details/reference/content-types.md @@ -26,4 +26,4 @@ MessagePack is another efficient binary format like CBOR, with support for all H Comma-separated values is an easy to use and understand format that can be readily imported into spreadsheets or used for data processing. CSV lacks hierarchical structure for most data types, and shouldn't be used for frequent/production use, but when you need it, it is available. -In addition, with the REST interface, you can use file-style extensions to indicate an encoding like http:/host/path.csv to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. \ No newline at end of file +In addition, with the REST interface, you can use file-style extensions to indicate an encoding like [https://host/path.csv](https://host/path.csv) to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. diff --git a/site/versioned_docs/version-4.3/technical-details/reference/data-types.md b/site/versioned_docs/version-4.3/technical-details/reference/data-types.md index c8acebe4..0aa23cce 100644 --- a/site/versioned_docs/version-4.3/technical-details/reference/data-types.md +++ b/site/versioned_docs/version-4.3/technical-details/reference/data-types.md @@ -20,7 +20,7 @@ Strings, or text, are a sequence of any unicode characters and are internally en Numbers can be stored as signed integers up to a 1000 bits of precision (about 300 digits) or floating point with 64-bit floating point precision, and numbers are automatically stored using the most optimal type. With JSON, numbers are automatically parsed and stored in the most appropriate format. Custom components and applications may use BigInt numbers to store/access integers that are larger than 53-bit. The following GraphQL schema type name are supported: -* `Float` - Any number that can be represented with [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision\_floating-point\_format) ("double") +* `Float` - Any number that can be represented with [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision\_floating-point\_format) ("double") * `Int` - Any integer between from -2147483648 to 2147483647 * `Long` - Any integer between from -9007199254740992 to 9007199254740992 * `BigInt` - Any integer (negative or positive) with less than 300 digits diff --git a/site/versioned_docs/version-4.3/technical-details/reference/dynamic-schema.md b/site/versioned_docs/version-4.3/technical-details/reference/dynamic-schema.md index 57624117..5047dc40 100644 --- a/site/versioned_docs/version-4.3/technical-details/reference/dynamic-schema.md +++ b/site/versioned_docs/version-4.3/technical-details/reference/dynamic-schema.md @@ -31,8 +31,8 @@ With tables that are using dynamic schemas, additional attributes are reflexivel HarperDB automatically creates two audit attributes used on each record if the table is created without a schema. -* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. -* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. +* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. +* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. ### Dynamic Schema Example diff --git a/site/versioned_docs/version-4.3/technical-details/reference/globals.md b/site/versioned_docs/version-4.3/technical-details/reference/globals.md index c615d1c5..8e29ddd0 100644 --- a/site/versioned_docs/version-4.3/technical-details/reference/globals.md +++ b/site/versioned_docs/version-4.3/technical-details/reference/globals.md @@ -93,11 +93,11 @@ The HTTP request listener to be added to the middleware chain. To continue chain #### `Request` -An implementation of WHATWG [Request](https:/developer.mozilla.org/en-US/docs/Web/API/Request) class. +An implementation of WHATWG [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) class. #### `Response` -An implementation of WHATWG [Response](https:/developer.mozilla.org/en-US/docs/Web/API/Response) class. +An implementation of WHATWG [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) class. #### `HttpOptions` @@ -113,7 +113,7 @@ Properties: #### `HttpServer` -Node.js [`http.Server`](https:/nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https:/nodejs.org/api/https.html#class-httpsserver) instance. +Node.js [`http.Server`](https://nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https://nodejs.org/api/https.html#class-httpsserver) instance. ### `server.socket(listener: ConnectionListener, options: SocketOptions): SocketServer` @@ -123,16 +123,16 @@ Only one socket server will be created. A `securePort` takes precedence. #### `ConnectionListener` -Node.js socket server connection listener as documented in [`net.createServer`](https:/nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https:/nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) +Node.js socket server connection listener as documented in [`net.createServer`](https://nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https://nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) #### `SocketOptions` -- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) instance. -- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https://nodejs.org/api/net.html#class-netserver) instance. +- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. #### `SocketServer` -Node.js [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +Node.js [`net.Server`](https://nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. ### `server.ws(listener: WsListener, options: WsOptions): HttpServer[]` @@ -142,15 +142,15 @@ Example: ```js server.ws((ws, request, chainCompletion) => { - chainCompletion.then(() => { - ws.on('error', console.error); + chainCompletion.then(() => { + ws.on('error', console.error); - ws.on('message', function message(data) { - console.log('received: %s', data); - }); + ws.on('message', function message(data) { + console.log('received: %s', data); + }); - ws.send('something'); - }); + ws.send('something'); + }); }); ``` @@ -160,8 +160,8 @@ Type: `(ws: WebSocket, request: Request, chainCompletion: ChainCompletion, next: The WebSocket connection listener. -- The `ws` argument is the [WebSocket](https:/github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. -- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https:/github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. +- The `ws` argument is the [WebSocket](https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. +- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https://github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. - The `chainCompletion` argument is a `Promise` of the associated HTTP server's request chain. Awaiting this promise enables the user to ensure the HTTP request has finished being processed before operating on the WebSocket. - The `next` argument is similar to that of other `next` arguments in Harper's server middlewares. To continue execution of the WebSocket connection listener middleware chain, pass all of the other arguments to this one such as: `next(ws, request, chainCompletion)` @@ -180,13 +180,13 @@ Properties: ### `server.upgrade(listener: UpgradeListener, options: UpgradeOptions): void` -Add a listener to the HTTP Server [upgrade](https:/nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. +Add a listener to the HTTP Server [upgrade](https://nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. This method should be used to delegate HTTP upgrade events to an external WebSocket server instance. Example: -> This example is from the HarperDB Next.js component. See the complete source code [here](https:/github.com/HarperDB/nextjs/blob/main/extension.js) +> This example is from the HarperDB Next.js component. See the complete source code [here](https://github.com/HarperDB/nextjs/blob/main/extension.js) ```js server.upgrade( @@ -209,7 +209,7 @@ server.upgrade( Type: `(request, socket, head, next) => void` -The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https:/nodejs.org/api/http.html#event-upgrade_1) event. +The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https://nodejs.org/api/http.html#event-upgrade_1) event. #### `UpgradeOptions` diff --git a/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.0.0.md b/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.0.0.md index 49770307..d2aa32b2 100644 --- a/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.0.0.md +++ b/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.0.0.md @@ -8,7 +8,7 @@ sidebar_position: 59999 **Networking & Data Replication (Clustering)** -The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https:/nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. +The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https://nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. * CORE-1464, CORE-1470, : Remove SocketCluster dependencies and all code related to them. * CORE-1465, CORE-1485, CORE-1537, CORE-1538, CORE-1558, CORE-1583, CORE_1665, CORE-1710, CORE-1801, CORE-1865 :Add nats-`server` code as dependency, on install of HarperDB download nats-`server` is possible else fallback to building from source code. * CORE-1593, CORE-1761: Add `nats.js` as project dependency. diff --git a/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.1.0.md b/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.1.0.md index 2b3805d2..511f20fd 100644 --- a/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.1.0.md +++ b/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.1.0.md @@ -19,7 +19,7 @@ Logging has been revamped and condensed into one `hdb.log` file. See [logginglog A new operation called `cluster_network` was added, this operation will ping the cluster and return a list of enmeshed nodes. -Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https:/docs.harperdb.io/docs/v/4.1/custom-functions/host-static). +Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https://docs.harperdb.io/docs/v/4.1/custom-functions/host-static). Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](../../../developers/operations-api/bulk-operations#import-from-s3). diff --git a/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.3.0.md b/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.3.0.md index ebbffbee..9c27498a 100644 --- a/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.3.0.md +++ b/site/versioned_docs/version-4.3/technical-details/release-notes/v4-tucker/4.3.0.md @@ -63,7 +63,7 @@ HarperDB now supports `BigInt` attributes/values with integers (with full precis ### Local Studio Upgrade -HarperDB has upgraded the local studio to match the same version that is offered on http:/studio.harperdb.io. The local studio now has the full robust feature set of the online version. +HarperDB has upgraded the local studio to match the same version that is offered on [https://studio.harperdb.io](https://studio.harperdb.io). The local studio now has the full robust feature set of the online version. ## MQTT diff --git a/site/versioned_docs/version-4.4/administration/administration.md b/site/versioned_docs/version-4.4/administration/administration.md index 4577a9d9..cdd6e71f 100644 --- a/site/versioned_docs/version-4.4/administration/administration.md +++ b/site/versioned_docs/version-4.4/administration/administration.md @@ -24,4 +24,4 @@ Harper provides robust capabilities for analytics and observability to facilitat * Analytics provides statistics on usage, request counts, load, memory usage with historical tracking. The analytics data can be [accessed through querying](../technical-details/reference/analytics). * A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](../developers/operations-api/utilities). * Information about the current cluster configuration and status can be found in the [cluster APIs](../developers/operations-api/clustering). -* Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https:/github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. +* Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https://github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. diff --git a/site/versioned_docs/version-4.4/administration/cloning.md b/site/versioned_docs/version-4.4/administration/cloning.md index 1550814f..3c599ff1 100644 --- a/site/versioned_docs/version-4.4/administration/cloning.md +++ b/site/versioned_docs/version-4.4/administration/cloning.md @@ -25,7 +25,7 @@ To start clone run `harperdb` in the CLI with either of the following variables For example: ``` -HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb +HDB_LEADER_URL=https://node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb ``` #### Command line variables @@ -37,7 +37,7 @@ HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-d For example: ``` -harperdb --HDB_LEADER_URL https:/node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... +harperdb --HDB_LEADER_URL https://node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... ``` Each time clone is run it will set a value `cloned: true` in `harperdb-config.yaml`. This value will prevent clone from @@ -140,7 +140,7 @@ docker run -d \ -v :/home/harperdb/hdb \ -e HDB_LEADER_PASSWORD=password \ -e HDB_LEADER_USERNAME=admin \ - -e HDB_LEADER_URL=https:/1.123.45.6:9925 \ + -e HDB_LEADER_URL=https://1.123.45.6:9925 \ -e REPLICATION_HOSTNAME=1.123.45.6 \ -p 9925:9925 \ -p 9926:9926 \ diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/create-account.md b/site/versioned_docs/version-4.4/administration/harper-studio/create-account.md index fdc23cfb..a826ed12 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/create-account.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/create-account.md @@ -3,7 +3,7 @@ title: Create a Studio Account --- # Create a Studio Account -Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). +Start at the [Harper Studio sign up page](https://studio.harperdb.io/sign-up). 1) Provide the following information: * First Name @@ -11,7 +11,7 @@ Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). * Email Address * Subdomain - *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* * Coupon Code (optional) 2) Review the Privacy Policy and Terms of Service. 3) Click the sign up for free button. diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/enable-mixed-content.md b/site/versioned_docs/version-4.4/administration/harper-studio/enable-mixed-content.md index 85b7f8a7..a1e5e4d8 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/enable-mixed-content.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/enable-mixed-content.md @@ -8,4 +8,4 @@ Enabling mixed content is required in cases where you would like to connect the -A comprehensive guide is provided by Adobe [here](https:/experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). \ No newline at end of file +A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/index.md b/site/versioned_docs/version-4.4/administration/harper-studio/index.md index 6db20847..bdb43da5 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/index.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/index.md @@ -5,9 +5,9 @@ title: Harper Studio # Harper Studio Harper Studio is the web-based GUI for Harper. Studio enables you to administer, navigate, and monitor all of your Harper instances in a simple, user-friendly interface without any knowledge of the underlying Harper API. It’s free to sign up, get started today! -[Sign up for free!](https:/studio.harperdb.io/sign-up) +[Sign up for free!](https://studio.harperdb.io/sign-up) -Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https:/studio.harperdb.io). +Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https://studio.harperdb.io). --- ## How does Studio Work? diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/instance-configuration.md b/site/versioned_docs/version-4.4/administration/harper-studio/instance-configuration.md index fe0d295f..cbf07b38 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/instance-configuration.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/instance-configuration.md @@ -10,7 +10,7 @@ Harper instance configuration can be viewed and managed directly through the Har All instance configuration is handled through the **config** page of the Harper Studio, accessed with the following instructions: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. @@ -70,7 +70,7 @@ Note: For Harper Cloud instances, upgrading RAM may add additional CPUs to your 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -*Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* +*Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Update Instance Storage @@ -81,18 +81,18 @@ Note: Instance storage can only be upgraded once every 6 hours. 1) In the **update storage** panel at the bottom left: * Select the new instance storage size. - + * If you do not have a credit card associated with your account, an **Add Credit Card To Account** button will appear. Click that to be taken to the billing screen where you can enter your credit card information before returning to the **config** tab to proceed with the upgrade. - + * If you do have a credit card associated, you will be presented with the updated billing information. - + * Click **Upgrade**. - + 2) The instance will shut down and begin reprovisioning itself. The instance will not be available during this time. You will be returned to the instance dashboard and the instance status will show UPDATING INSTANCE. - + 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. - -*Note, if this process takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* + +*Note, if this process takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Remove Instance diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/instance-metrics.md b/site/versioned_docs/version-4.4/administration/harper-studio/instance-metrics.md index eae954f1..e9b48939 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/instance-metrics.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/instance-metrics.md @@ -6,7 +6,7 @@ title: Instance Metrics The Harper Studio display instance status and metrics on the instance status page, which can be accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **status** in the instance control bar. diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/instances.md b/site/versioned_docs/version-4.4/administration/harper-studio/instances.md index f44fb609..bb54493d 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/instances.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/instances.md @@ -14,11 +14,11 @@ All interactions between the Studio and your instances take place directly from ## Organization Instance List -A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. +A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. ## Create a New Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select your desired Instance Type. @@ -26,7 +26,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Fill out Instance Info. 1. Enter Instance Name - _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com. The Instance URL will be previewed below._ + _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com). The Instance URL will be previewed below._ 1. Enter Instance Username _This is the username of the initial Harper instance super user._ @@ -46,13 +46,13 @@ A summary view of all instances within an organization can be viewed by clicking _The geographic area where your instance will be provisioned._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. Your Harper Cloud instance will be provisioned in the background. Provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. ## Register Enterprise Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select **Register Enterprise Instance**. @@ -82,7 +82,7 @@ A summary view of all instances within an organization can be viewed by clicking _Harper instances are billed based on Instance RAM. Selecting additional RAM will enable the ability for faster and more complex queries._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. The Harper Studio will register your instance and restart it for the registration to take effect. Your instance will be immediately available after this is complete. @@ -95,7 +95,7 @@ Instance deletion has two different behaviors depending on the instance type. An instance can be deleted as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the trash can icon. 1. Enter the instance name into the text box. @@ -111,14 +111,14 @@ Harper instances can be resized on the [Instance Configuration](./instance-confi The Studio enables users to log in and out of different database users from the instance control panel. To log out of an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the lock icon. 1. You will immediately be logged out of the instance. To log in to an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card, it will have an unlocked icon and a status reading PLEASE LOG IN, and click the center of the card. 1. Enter the database username. diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/login-password-reset.md b/site/versioned_docs/version-4.4/administration/harper-studio/login-password-reset.md index 2d1e7eac..2dd71fe3 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/login-password-reset.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/login-password-reset.md @@ -8,7 +8,7 @@ title: Login and Password Reset To log into your existing Harper Studio account: -1) Navigate to the [Harper Studio](https:/studio.harperdb.io/). +1) Navigate to the [Harper Studio](https://studio.harperdb.io/). 2) Enter your email address. 3) Enter your password. 4) Click **sign in**. diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/manage-applications.md b/site/versioned_docs/version-4.4/administration/harper-studio/manage-applications.md index 16974445..5c51915f 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/manage-applications.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/manage-applications.md @@ -35,14 +35,14 @@ The Applications editor stores unsaved changes in cache. This means that occasio Accessing your application endpoints varies with which type of endpoint you're creating. All endpoints, regardless of type, will be accessed via the [Harper HTTP port found in the Harper configuration file](../../deployments/configuration#http). The default port is `9926`, but you can verify what your instances is set to by navigating to the [instance config page](./instance-configuration) and examining the read only JSON version of your instance's config file looking specifically for either the `http: port: 9926` or `http: securePort: 9926` configs. If `port` is set, you will access your endpoints via `http` and if `securePort` is set, you will access your endpoints via `https`. -Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https:/localhost:9926`. +Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https://localhost:9926`. * **Standard REST Endpoints**\ - Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https:/localhost:9926/Dog/1`. + Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https://localhost:9926/Dog/1`. * **Augmented REST Endpoints**\ - Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https:/localhost:9926/DogWithHumanAge/1`. + Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https://localhost:9926/DogWithHumanAge/1`. * **Fastify Routes**\ - If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https:/github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https:/localhost/application-template/getAll`. + If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https://github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https://localhost/application-template/getAll`. ## Creating a New Application diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/manage-instance-users.md b/site/versioned_docs/version-4.4/administration/harper-studio/manage-instance-users.md index a99ae4c6..23bcaa49 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/manage-instance-users.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/manage-instance-users.md @@ -8,7 +8,7 @@ Harper users and roles can be managed directly through the Harper Studio. It is Instance user configuration is handled through the **users** page of the Harper Studio, accessed with the following instructions: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/manage-replication.md b/site/versioned_docs/version-4.4/administration/harper-studio/manage-replication.md index 78a457a9..02951470 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/manage-replication.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/manage-replication.md @@ -10,7 +10,7 @@ Harper instance clustering and replication can be configured directly through th All clustering configuration is handled through the **replication** page of the Harper Studio, accessed with the following instructions: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.4/administration/harper-studio/organizations.md b/site/versioned_docs/version-4.4/administration/harper-studio/organizations.md index fede2cd8..d486abbc 100644 --- a/site/versioned_docs/version-4.4/administration/harper-studio/organizations.md +++ b/site/versioned_docs/version-4.4/administration/harper-studio/organizations.md @@ -16,42 +16,43 @@ An organization is automatically created for you when you sign up for Harper Stu --- ## List Organizations -A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. +A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. ## Create a New Organization A new organization can be created as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the **Create a New Organization** card. -3) Fill out new organization details +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the **Create a New Organization** card. +3) Fill out new organization details * Enter Organization Name *This is used for descriptive purposes only.* * Enter Organization Subdomain - *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* 4) Click Create Organization. ## Delete an Organization + An organization cannot be deleted until all instances have been removed. An organization can be deleted as follows: -1) Navigate to the Harper Studio Organizations page. -2) Identify the proper organization card and click the trash can icon. -3) Enter the organization name into the text box. +1) Navigate to the Harper Studio Organizations page. +2) Identify the proper organization card and click the trash can icon. +3) Enter the organization name into the text box. *This is done for confirmation purposes to ensure you do not accidentally delete an organization.* 4) Click the **Do It** button. ## Manage Users -Harper Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. - +Harper Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. #### Inviting a User + A new user can be invited to an organization as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) In the **add user** box, enter the new user’s email address. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) In the **add user** box, enter the new user’s email address. 5) Click **Add User**. Users may or may not already be Harper Studio users when adding them to an organization. If the Harper Studio account already exists, the user will receive an email notification alerting them to the organization invitation. If the user does not have a Harper Studio account, they will receive an email welcoming them to Harper Studio. @@ -59,22 +60,25 @@ Users may or may not already be Harper Studio users when adding them to an organ --- #### Toggle a User’s Organization Owner Status + Organization owners have full access to the organization including the ability to manage organization users, create, modify, and delete instances, and delete the organization. Users must have accepted their invitation prior to being promoted to an owner. A user’s organization owner status can be toggled owner as follows: -1) Navigate to the Harper Studio Organizations page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the Harper Studio Organizations page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Toggle the **Is Owner** switch to the desired status. + --- #### Remove a User from an Organization + Users may be removed from an organization at any time. Removing a user from an organization will not delete their Harper Studio account, it will only remove their access to the specified organization. A user can be removed from an organization as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Type **DELETE** in the text box in the **Delete User** row. *This is done for confirmation purposes to ensure you do not accidentally delete a user.* @@ -84,7 +88,7 @@ Users may be removed from an organization at any time. Removing a user from an o Billing is configured per organization and will be billed to the stored credit card at appropriate intervals (monthly or annually depending on the registered instance). Billing settings can be configured as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 2) Click the appropriate organization card. 3) Click **billing** at the top of the screen. diff --git a/site/versioned_docs/version-4.4/administration/logging/standard-logging.md b/site/versioned_docs/version-4.4/administration/logging/standard-logging.md index 7194fff4..c7c2fe7a 100644 --- a/site/versioned_docs/version-4.4/administration/logging/standard-logging.md +++ b/site/versioned_docs/version-4.4/administration/logging/standard-logging.md @@ -38,7 +38,7 @@ The log level can be changed by modifying `logging.level` in the config file `ha ## Clustering Logging -Harper clustering utilizes two [NATS](https:/nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. +Harper clustering utilizes two [NATS](https://nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. ## Log File vs Standard Streams diff --git a/site/versioned_docs/version-4.4/deployments/configuration.md b/site/versioned_docs/version-4.4/deployments/configuration.md index 5aeb3f8a..a54698ea 100644 --- a/site/versioned_docs/version-4.4/deployments/configuration.md +++ b/site/versioned_docs/version-4.4/deployments/configuration.md @@ -4,7 +4,7 @@ title: Configuration File # Configuration File -Harper is configured through a [YAML](https:/yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). +Harper is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). Some configuration will be populated by default in the config file on install, regardless of whether it is used. @@ -68,7 +68,7 @@ An array of allowable domains with CORS `corsAccessControlAllowHeaders` - _Type_: string; _Default_: 'Accept, Content-Type, Authorization' -A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. +A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. `headersTimeout` - _Type_: integer; _Default_: 60,000 milliseconds (1 minute) @@ -181,10 +181,10 @@ The `replication` section configures [Harper replication](../developers/replicat ```yaml replication: hostname: server-one - url: wss:/server-one:9925 + url: wss://server-one:9925 databases: "*" routes: - - wss:/server-two:9925 + - wss://server-two:9925 port: null securePort: 9925, enableRootCAs: true @@ -222,7 +222,7 @@ replication: copyTablesToCatchUp: true hostname: server-one routes: - - wss:/server-two:9925 # URL based route + - wss://server-two:9925 # URL based route - hostname: server-three # define a hostname and port port: 9930 startTime: 2024-02-06T15:30:00Z @@ -250,7 +250,7 @@ Replication will first attempt to catch up using the audit log. If unsuccessful, The `clustering` section configures the NATS clustering engine, this is used to replicate data between instances of Harper. -_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https:/nats.io/about/) _to facilitate the cluster._ +_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https://nats.io/about/) _to facilitate the cluster._ Clustering offers a lot of different configurations, however in a majority of cases the only options you will need to pay attention to are: @@ -488,7 +488,7 @@ clustering: ### `localStudio` -The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at https:/studio.harperdb.io. Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. +The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at [https://studio.harperdb.io](https://studio.harperdb.io). Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. `enabled` - _Type_: boolean; _Default_: false @@ -663,11 +663,11 @@ This will enable cookie-based sessions to maintain an authenticated session. Thi `operationTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time an operation token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time an operation token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `refreshTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time a refresh token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time a refresh token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). ### `operationsApi` @@ -1059,7 +1059,7 @@ The name of the component. This will be used to name the folder where the compon A reference to your [component](../developers/components/managing#adding-components-to-root) package. This could be a remote git repo, a local folder/file or an NPM package. Harper will add this package to a package.json file and call `npm install` on it, so any reference that works with that paradigm will work here. -Read more about npm install [here](https:/docs.npmjs.com/cli/v8/commands/npm-install) +Read more about npm install [here](https://docs.npmjs.com/cli/v8/commands/npm-install) `port` - _Type_: number _Default_: whatever is set in `http.port` diff --git a/site/versioned_docs/version-4.4/deployments/harper-cli.md b/site/versioned_docs/version-4.4/deployments/harper-cli.md index 91240516..90c8e61e 100644 --- a/site/versioned_docs/version-4.4/deployments/harper-cli.md +++ b/site/versioned_docs/version-4.4/deployments/harper-cli.md @@ -157,7 +157,7 @@ last_updated_record: 1724483231970.9949 `harperdb set_configuration logging_level=error` -`harperdb deploy_component project=my-cool-app package=https:/github.com/HarperDB/application-template` +`harperdb deploy_component project=my-cool-app package=https://github.com/HarperDB/application-template` `harperdb get_components` @@ -174,7 +174,7 @@ The CLI can also be used to run operations on remote Harper instances. To do thi ```bash export CLI_TARGET_USERNAME=HDB_ADMIN export CLI_TARGET_PASSWORD=password -harperdb describe_database database=dev target=https:/server.com:9925 +harperdb describe_database database=dev target=https://server.com:9925 ``` The same set of operations API are available for remote operations as well. @@ -184,11 +184,11 @@ The same set of operations API are available for remote operations as well. When using remote operations, you can deploy a local component to the remote instance. If you omit the `package` parameter, you can deploy the current directory. This will package the current directory and send it to the target server (also `deploy` is allowed as an alias to `deploy_component`): ```bash -harperdb deploy target=https:/server.com:9925 +harperdb deploy target=https://server.com:9925 ``` If you are interacting with a cluster, you may wish to include the `replicated=true` parameter to ensure that the deployment operation is replicated to all nodes in the cluster. You will also need to restart afterwards to apply the changes (here seen with the replicated parameter): ```bash -harperdb restart target=https:/server.com:9925 replicated=true +harperdb restart target=https://server.com:9925 replicated=true ``` diff --git a/site/versioned_docs/version-4.4/deployments/harper-cloud/index.md b/site/versioned_docs/version-4.4/deployments/harper-cloud/index.md index fbf2d81e..c0785d0d 100644 --- a/site/versioned_docs/version-4.4/deployments/harper-cloud/index.md +++ b/site/versioned_docs/version-4.4/deployments/harper-cloud/index.md @@ -4,6 +4,6 @@ title: Harper Cloud # Harper Cloud -[Harper Cloud](https:/studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. +[Harper Cloud](https://studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. You can create a new Harper Cloud instance in the Harper Studio. diff --git a/site/versioned_docs/version-4.4/deployments/harper-cloud/instance-size-hardware-specs.md b/site/versioned_docs/version-4.4/deployments/harper-cloud/instance-size-hardware-specs.md index 72979d8d..6ea4c7d2 100644 --- a/site/versioned_docs/version-4.4/deployments/harper-cloud/instance-size-hardware-specs.md +++ b/site/versioned_docs/version-4.4/deployments/harper-cloud/instance-size-hardware-specs.md @@ -20,4 +20,4 @@ While Harper Cloud bills by RAM, each instance has other specifications associat | m5.16xlarge | 256 | 64 | 20 | Up to 3.1 GHz Intel Xeon Platinum 8000 | | m5.24xlarge | 384 | 96 | 25 | Up to 3.1 GHz Intel Xeon Platinum 8000 | -\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https:/aws.amazon.com/ec2/instance-types/](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https://aws.amazon.com/ec2/instance-types/](https://aws.amazon.com/ec2/instance-types/). diff --git a/site/versioned_docs/version-4.4/deployments/harper-cloud/iops-impact.md b/site/versioned_docs/version-4.4/deployments/harper-cloud/iops-impact.md index f316fc30..9a8a0732 100644 --- a/site/versioned_docs/version-4.4/deployments/harper-cloud/iops-impact.md +++ b/site/versioned_docs/version-4.4/deployments/harper-cloud/iops-impact.md @@ -18,7 +18,7 @@ Harper Cloud utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp3) AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result, all Harper Cloud storage options will offer 3,000 IOPS. We plan to offer scalable IOPS as an option in the future. -You can read more about AWS EBS volume IOPS here: https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. +You can read more about AWS EBS volume IOPS here: [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html). ## Estimating IOPS for Harper Instance diff --git a/site/versioned_docs/version-4.4/deployments/harper-cloud/verizon-5g-wavelength-instances.md b/site/versioned_docs/version-4.4/deployments/harper-cloud/verizon-5g-wavelength-instances.md index 1589acc3..31796700 100644 --- a/site/versioned_docs/version-4.4/deployments/harper-cloud/verizon-5g-wavelength-instances.md +++ b/site/versioned_docs/version-4.4/deployments/harper-cloud/verizon-5g-wavelength-instances.md @@ -8,7 +8,7 @@ These instances are only accessible from the Verizon network. When accessing you Harper on Verizon 5G Wavelength brings Harper closer to the end user exclusively on the Verizon network resulting in as little as single-digit millisecond response time from Harper to the client. -Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https:/aws.amazon.com/wavelength/). +Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https://aws.amazon.com/wavelength/). Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail\*. @@ -18,7 +18,7 @@ Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, eac | t3.xlarge | 16 | 4 | Up to 5 | Up to 3.1 GHz Intel Xeon Platinum Processor | | r5.2xlarge | 64 | 8 | Up to 10 | Up to 3.1 GHz Intel Xeon Platinum Processor | -\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https://aws.amazon.com/ec2/instance-types/). ## Harper 5G Wavelength Storage @@ -28,4 +28,4 @@ AWS EBS gp2 volumes have a baseline performance level, which determines the numb Smaller gp2 volumes are perfect for trying out the functionality of Harper, and might also work well for applications that don’t perform many database transactions. For applications that perform a moderate or high number of transactions, we recommend that you use a larger Harper volume. Learn more about the [impact of IOPS on performance here](./iops-impact). -You can read more about [AWS EBS gp2 volume IOPS here](https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). +You can read more about [AWS EBS gp2 volume IOPS here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). diff --git a/site/versioned_docs/version-4.4/deployments/install-harper/index.md b/site/versioned_docs/version-4.4/deployments/install-harper/index.md index 99335044..ea2f1a45 100644 --- a/site/versioned_docs/version-4.4/deployments/install-harper/index.md +++ b/site/versioned_docs/version-4.4/deployments/install-harper/index.md @@ -6,12 +6,12 @@ title: Install Harper ## Install Harper -This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https:/studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. +This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https://studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. -Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https:/nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https:/github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: +Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https://nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https://github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash ``` And then logout and login, and then install Node.js using nvm. We recommend using LTS, but support all currently maintained Node versions (which is currently version 14 and newer, and make sure to always uses latest minor/patch for the major version): @@ -35,15 +35,15 @@ If you are setting up a production server on Linux, [we have much more extensive ## With Docker -If you would like to run Harper in Docker, install [Docker Desktop](https:/docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https:/docs.docker.com/engine/install/) on your Linux server. +If you would like to run Harper in Docker, install [Docker Desktop](https://docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https://docs.docker.com/engine/install/) on your Linux server. -Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https:/hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. +Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https://hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. ## Offline Install If you need to install Harper on a device that doesn't have an Internet connection, you can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM): -[Download Install Package](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) +[Download Install Package](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: @@ -55,7 +55,7 @@ npm install -g harperdb-X.X.X.tgz harperdb install Harper comes with binaries for standard AMD64/x64 or ARM64 CPU architectures on Linux, Windows (x64 only), and Mac (including Apple Silicon). However, if you are installing on a less common platform (Alpine, for example), you will need to ensure that you have build tools installed for the installation process to compile the binaries (this is handled automatically), including: -* [Go](https:/go.dev/dl/): version 1.19.1 +* [Go](https://go.dev/dl/): version 1.19.1 * GCC * Make * Python v3.7, v3.8, v3.9, or v3.10 diff --git a/site/versioned_docs/version-4.4/deployments/install-harper/linux.md b/site/versioned_docs/version-4.4/deployments/install-harper/linux.md index cece27b9..93c25ec9 100644 --- a/site/versioned_docs/version-4.4/deployments/install-harper/linux.md +++ b/site/versioned_docs/version-4.4/deployments/install-harper/linux.md @@ -128,7 +128,7 @@ echo "ubuntu hard nofile 1000000" | sudo tee -a /etc/security/limits.conf Install Node Version Manager (nvm) ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Load nvm (or logout and then login) @@ -137,7 +137,7 @@ Load nvm (or logout and then login) . ~/.nvm/nvm.sh ``` -Install Node.js using nvm ([read more about specific Node version requirements](https:/www.npmjs.com/package/harperdb#prerequisites)) +Install Node.js using nvm ([read more about specific Node version requirements](https://www.npmjs.com/package/harperdb#prerequisites)) ```bash nvm install diff --git a/site/versioned_docs/version-4.4/deployments/upgrade-hdb-instance.md b/site/versioned_docs/version-4.4/deployments/upgrade-hdb-instance.md index f5f403e7..7d5662cc 100644 --- a/site/versioned_docs/version-4.4/deployments/upgrade-hdb-instance.md +++ b/site/versioned_docs/version-4.4/deployments/upgrade-hdb-instance.md @@ -19,9 +19,9 @@ Upgrading Harper is a two-step process. First the latest version of Harper must ## Node Version Manager (nvm) -[Node Version Manager (nvm)](http:/nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https:/nvm.sh/. +[Node Version Manager (nvm)](https://nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: [https://nvm.sh/](https://nvm.sh/). -Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https:/www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: +Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https://www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: ```bash nvm install @@ -103,7 +103,7 @@ To enable Plexus on a node that is already running NATS, you will need to update ```yaml replication: - url: wss:/my-cluster-node-1:9925 + url: wss://my-cluster-node-1:9925 hostname: node-1 ``` @@ -129,7 +129,7 @@ replication: { "operation": "add_node", "hostname:": "node-1", - "url": "wss:/my-cluster-node-1:9925" + "url": "wss://my-cluster-node-1:9925" } ``` diff --git a/site/versioned_docs/version-4.4/developers/applications/caching.md b/site/versioned_docs/version-4.4/developers/applications/caching.md index c857c2a3..f14995e3 100644 --- a/site/versioned_docs/version-4.4/developers/applications/caching.md +++ b/site/versioned_docs/version-4.4/developers/applications/caching.md @@ -32,8 +32,8 @@ Next, you need to define the source for your cache. External data sources could ```javascript class ThirdPartyAPI extends Resource { async get() { - return (await fetch(`http:/some-api.com/${this.getId()}`)).json(); - } + return (await fetch(`https://some-api.com/${this.getId()}`)).json(); + } } ``` @@ -48,13 +48,12 @@ Now we have a fully configured and connected caching table. If you access data f ```mermaid flowchart TD - Client1(Client 1)-->Cache(Caching Table) - Client2(Client 2)-->Cache - Cache-->Resource(Data Source Connector) - Resource-->API(Remote Data Source API) + Client1(Client 1)-->Cache(Caching Table) + Client2(Client 2)-->Cache + Cache-->Resource(Data Source Connector) + Resource-->API(Remote Data Source API) ``` - Harper handles waiting for an existing cache resolution to finish and uses its result. This prevents a "cache stampede" when entries expire, ensuring that multiple requests to a cache entry will all wait on a single request to the data source. Cache tables with an expiration are periodically pruned for expired entries. Because this is done periodically, there is usually some amount of time between when a record has expired and when the record is actually evicted (the cached data is removed). But when a record is checked for availability, the expiration time is used to determine if the record is fresh (and the cache entry can be used). @@ -69,11 +68,11 @@ In the example above, we simply retrieved data to fulfill a cache request. We ma ```javascript class ThirdPartyAPI extends Resource { - async get() { - let response = await fetch(`http:/some-api.com/${this.getId()}`); - this.getContext().lastModified = response.headers.get('Last-Modified'); - return response.json(); - } + async get() { + let response = await fetch(`https://some-api.com/${this.getId()}`); + this.getContext().lastModified = response.headers.get('Last-Modified'); + return response.json(); + } } ``` @@ -83,19 +82,19 @@ In addition, we can also specify when a cached record "expires". When a cached r ```javascript class ThirdPartyAPI extends Resource { - async get() { - const context = this.getContext(); - let headers = new Headers(); - if (context.replacingVersion) / this is the existing cached record - headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); - let response = await fetch(`http:/some-api.com/${this.getId()}`, { headers }); - let cacheInfo = response.headers.get('Cache-Control'); - let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; - if (maxAge) / we can set a specific expiration time by setting context.expiresAt - context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time - / we can just revalidate and return the record if the origin has confirmed that it has the same version: - if (response.status === 304) return context.replacingRecord; - ... + async get() { + const context = this.getContext(); + let headers = new Headers(); + if (context.replacingVersion) / this is the existing cached record + headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); + let response = await fetch(`https://some-api.com/${this.getId()}`, { headers }); + let cacheInfo = response.headers.get('Cache-Control'); + let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; + if (maxAge) / we can set a specific expiration time by setting context.expiresAt + context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time + / we can just revalidate and return the record if the origin has confirmed that it has the same version: + if (response.status === 304) return context.replacingRecord; + ... ``` ## Active Caching and Invalidation @@ -109,10 +108,10 @@ One way to provide more active caching is to specifically invalidate individual ```javascript const { MyTable } = tables; export class MyTableEndpoint extends MyTable { - async post(data) { - if (data.invalidate) / use this flag as a marker - this.invalidate(); - } + async post(data) { + if (data.invalidate) / use this flag as a marker + this.invalidate(); + } } ``` @@ -124,20 +123,20 @@ We can provide more control of an active cache with subscriptions. If there is a ```javascript class ThirdPartyAPI extends Resource { - async *subscribe() { + async *subscribe() { setInterval(() => { / every second retrieve more data - / get the next data change event from the source - let update = (await fetch(`http:/some-api.com/latest-update`)).json(); - const event = { / define the change event (which will update the cache) - type: 'put', / this would indicate that the event includes the new data value - id: / the primary key of the record that updated - value: / the new value of the record that updated - timestamp: / the timestamp of when the data change occurred - }; - yield event; / this returns this event, notifying the cache of the change + / get the next data change event from the source + let update = (await fetch(`https://some-api.com/latest-update`)).json(); + const event = { / define the change event (which will update the cache) + type: 'put', / this would indicate that the event includes the new data value + id: / the primary key of the record that updated + value: / the new value of the record that updated + timestamp: / the timestamp of when the data change occurred + }; + yield event; / this returns this event, notifying the cache of the change }, 1000); - } - async get() { + } + async get() { ... ``` @@ -164,24 +163,24 @@ By default, Harper will only run the subscribe method on one thread. Harper is m ```javascript class ThirdPartyAPI extends Resource { - static subscribeOnThisThread(threadIndex) { - return threadIndex < 2; / run on two threads (the first two threads) - } - async *subscribe() { - .... + static subscribeOnThisThread(threadIndex) { + return threadIndex < 2; / run on two threads (the first two threads) + } + async *subscribe() { + .... ``` An alternative to using asynchronous generators is to use a subscription stream and send events to it. A default subscription stream (that doesn't generate its own events) is available from the Resource's default subscribe method: ```javascript class ThirdPartyAPI extends Resource { - subscribe() { - const subscription = super.subscribe(); - setupListeningToRemoteService().on('update', (event) => { - subscription.send(event); - }); - return subscription; - } + subscribe() { + const subscription = super.subscribe(); + setupListeningToRemoteService().on('update', (event) => { + subscription.send(event); + }); + return subscription; + } } ``` @@ -195,18 +194,18 @@ The cache we have defined so far only has data flowing from the data source to t ```javascript class ThirdPartyAPI extends Resource { - async put(data) { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'PUT', - body: JSON.stringify(data) - }); - } - async delete() { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'DELETE', - }); - } - ... + async put(data) { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'PUT', + body: JSON.stringify(data) + }); + } + async delete() { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'DELETE', + }); + } + ... ``` When doing an insert or update to the MyCache table, the data will be sent to the underlying data source through the `put` method and the new record value will be stored in the cache as well. @@ -217,12 +216,12 @@ When you are using a caching table, it is important to remember that any resourc ```javascript class MyCache extends tables.MyCache { - async post(data) { + async post(data) { / if the data is not cached locally, retrieves from source: await this.ensuredLoaded(); / now we can be sure that the data is loaded, and can access properties this.quantity = this.quantity - data.purchases; - } + } } ``` @@ -237,8 +236,8 @@ With our passive update examples, we have provided a data source handler with a ```javascript const { Post, Comment } = tables; class BlogSource extends Resource { - get() { - const post = await (await fetch(`http:/my-blog-server/${this.getId()}`).json()); + get() { + const post = await (await fetch(`https://my-blog-server/${this.getId()}`).json()); for (let comment of post.comments) { await Comment.put(comment, this); / save this comment as part of our current context and transaction } diff --git a/site/versioned_docs/version-4.4/developers/applications/define-routes.md b/site/versioned_docs/version-4.4/developers/applications/define-routes.md index 9d3a1526..3dd91c18 100644 --- a/site/versioned_docs/version-4.4/developers/applications/define-routes.md +++ b/site/versioned_docs/version-4.4/developers/applications/define-routes.md @@ -4,14 +4,14 @@ title: Define Fastify Routes # Define Fastify Routes -Harper’s applications provide an extension for loading [Fastify](https:/www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. +Harper’s applications provide an extension for loading [Fastify](https://www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. -The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https:/github.com/HarperDB/application-template)): +The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https://github.com/HarperDB/application-template)): ```yaml fastifyRoutes: # This loads files that define fastify routes using fastify's auto-loader files: routes/*.js # specify the location of route definition modules - path: . # relative to the app-name, like http:/server/app-name/route-name + path: . # relative to the app-name, like https://server/app-name/route-name ``` By default, route URLs are configured to be: diff --git a/site/versioned_docs/version-4.4/developers/applications/defining-schemas.md b/site/versioned_docs/version-4.4/developers/applications/defining-schemas.md index 35ef736d..35db07d9 100644 --- a/site/versioned_docs/version-4.4/developers/applications/defining-schemas.md +++ b/site/versioned_docs/version-4.4/developers/applications/defining-schemas.md @@ -6,7 +6,7 @@ title: Defining Schemas Schemas define tables and their attributes. Schemas can be declaratively defined in Harper's using GraphQL schema definitions. Schemas definitions can be used to ensure that tables exist (that are required for applications), and have the appropriate attributes. Schemas can define the primary key, data types for attributes, if they are required, and specify which attributes should be indexed. The [introduction to applications provides](./) a helpful introduction to how to use schemas as part of database application development. -Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https:/graphql.org/learn/schema/). +Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https://graphql.org/learn/schema/). An example schema that defines a couple tables might look like: @@ -161,7 +161,7 @@ type Product @table { } ``` -For more in-depth information on computed properties, visit our blog [here](https:/www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) +For more in-depth information on computed properties, visit our blog [here](https://www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) ### Field Directives @@ -198,7 +198,7 @@ Harper supports the following field types in addition to user defined (object) t * `String`: String/text. * `Int`: A 32-bit signed integer (from -2147483648 to 2147483647). * `Long`: A 54-bit signed integer (from -9007199254740992 to 9007199254740992). -* `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision_floating-point_format). Note that all numbers are stored in the most compact representation available). +* `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision_floating-point_format). Note that all numbers are stored in the most compact representation available). * `BigInt`: Any integer (negative or positive) with less than 300 digits. (Note that `BigInt` is a distinct and separate type from standard numbers in JavaScript, so custom code should handle this type appropriately.) * `Boolean`: true or false. * `ID`: A string (but indicates it is not intended to be human readable). @@ -212,7 +212,7 @@ It is important to note that Harper does not currently support renaming tables. ### OpenAPI Specification -_The_ [_OpenAPI Specification_](https:/spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ +_The_ [_OpenAPI Specification_](https://spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ If a set of endpoints are configured through a Harper GraphQL schema, those endpoints can be described by using a default REST endpoint called `GET /openapi`. diff --git a/site/versioned_docs/version-4.4/developers/applications/example-projects.md b/site/versioned_docs/version-4.4/developers/applications/example-projects.md index 466ce267..c3e23aae 100644 --- a/site/versioned_docs/version-4.4/developers/applications/example-projects.md +++ b/site/versioned_docs/version-4.4/developers/applications/example-projects.md @@ -6,32 +6,32 @@ title: Example Projects **Library of example Harper applications and components:** -* [Authorization in Harper using Okta Customer Identity Cloud](https:/www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang +* [Authorization in Harper using Okta Customer Identity Cloud](https://www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang -* [How to Speed Up your Applications by Caching at the Edge with Harper](https:/dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams +* [How to Speed Up your Applications by Caching at the Edge with Harper](https://dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams -* [OAuth Authentication in Harper using Auth0 & Node.js](https:/www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos +* [OAuth Authentication in Harper using Auth0 & Node.js](https://www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos -* [How To Create a CRUD API with Next.js & Harper Custom Functions](https:/www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock +* [How To Create a CRUD API with Next.js & Harper Custom Functions](https://www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock -* [Build a Dynamic REST API with Custom Functions](https:/harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush +* [Build a Dynamic REST API with Custom Functions](https://harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush -* [How to use Harper Custom Functions to Build your Entire Backend](https:/dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden +* [How to use Harper Custom Functions to Build your Entire Backend](https://dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden -* [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https:/harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft +* [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https://harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft -* [Build & Deploy a Fitness App with Python & Harper](https:/www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber +* [Build & Deploy a Fitness App with Python & Harper](https://www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber -* [Create a Discord Slash Bot using Harper Custom Functions](https:/geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty +* [Create a Discord Slash Bot using Harper Custom Functions](https://geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty -* [How I used Harper Custom Functions to Build a Web App for my Newsletter](https:/blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj +* [How I used Harper Custom Functions to Build a Web App for my Newsletter](https://blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj -* [How I used Harper Custom Functions and Recharts to create Dashboard](https:/blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary +* [How I used Harper Custom Functions and Recharts to create Dashboard](https://blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary -* [How To Use Harper Custom Functions With Your React App](https:/dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi +* [How To Use Harper Custom Functions With Your React App](https://dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi -* [Build a Web App Using Harper’s Custom Functions](https:/www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp +* [Build a Web App Using Harper’s Custom Functions](https://www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp -* [How to Web Scrape Using Python, Snscrape & Custom Functions](https:/hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David +* [How to Web Scrape Using Python, Snscrape & Custom Functions](https://hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David -* [What’s the Big Deal w/ Custom Functions](https:/rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast \ No newline at end of file +* [What’s the Big Deal w/ Custom Functions](https://rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast diff --git a/site/versioned_docs/version-4.4/developers/applications/index.md b/site/versioned_docs/version-4.4/developers/applications/index.md index 6c40ca60..4a5cecf4 100644 --- a/site/versioned_docs/version-4.4/developers/applications/index.md +++ b/site/versioned_docs/version-4.4/developers/applications/index.md @@ -10,7 +10,7 @@ Harper is more than a database, it's a distributed clustering platform allowing In this guide, we are going to explore the evermore extensible architecture that Harper provides by building a Harper component, a fundamental building-block of the Harper ecosystem. -When working through this guide, we recommend you use the [Harper Application Template](https:/github.com/HarperDB/application-template) repo as a reference. +When working through this guide, we recommend you use the [Harper Application Template](https://github.com/HarperDB/application-template) repo as a reference. ## Understanding the Component Application Architecture @@ -40,10 +40,10 @@ We assume you are running Harper version 4.2 or greater, which supports Harper A ### Scaffolding our Application Directory -Let's create and initialize a new directory for our application. It is recommended that you start by using the [Harper application template](https:/github.com/HarperDB/application-template). Assuming you have `git` installed, you can create your project directory by cloning: +Let's create and initialize a new directory for our application. It is recommended that you start by using the [Harper application template](https://github.com/HarperDB/application-template). Assuming you have `git` installed, you can create your project directory by cloning: ```shell -> git clone https:/github.com/HarperDB/application-template my-app +> git clone https://github.com/HarperDB/application-template my-app > cd my-app ``` @@ -79,7 +79,7 @@ Locally developing your application and then committing your app to a source con The core of a Harper application is the database, so let's create a database table! -A quick and expressive way to define a table is through a [GraphQL Schema](https:/graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): +A quick and expressive way to define a table is through a [GraphQL Schema](https://graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): ```graphql type Dog @table { @@ -186,7 +186,7 @@ If-None-Match: "etag-id" # browsers can automatically provide this ## Querying -Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../rest). Simple queries can be crafted through [URL query parameters](https:/en.wikipedia.org/wiki/Query_string). +Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../rest). Simple queries can be crafted through [URL query parameters](https://en.wikipedia.org/wiki/Query_string). In order to maintain reasonable query speed on a database as it grows in size, it is critical to select and establish the proper indexes. So, before we add the `@export` declaration to our `Dog` table and begin querying it, let's take a moment to target some table properties for indexing. We'll use `name` and `breed` as indexed table properties on our `Dog` table. All we need to do to accomplish this is tag these properties with the `@indexed` directive: @@ -232,7 +232,7 @@ This guide assumes that you're building a Harper application locally. If you hav * Commit and push your application component directory code (i.e., the `my-app` directory) to a Github repo. In this tutorial we started with a clone of the application-template. To commit and push to your own repository, change the origin to your repo: `git remote set-url origin git@github.com:your-account/your-repo.git` * Go to the applications section of your target cloud instance in the Harper Studio. -* In the left-hand menu of the applications IDE, click 'deploy' and specify a package location reference that follows the [npm package specification](https:/docs.npmjs.com/cli/v8/using-npm/package-spec) (i.e., a string like `HarperDB/Application-Template` or a URL like `https:/github.com/HarperDB/application-template`, for example, that npm knows how to install). +* In the left-hand menu of the applications IDE, click 'deploy' and specify a package location reference that follows the [npm package specification](https://docs.npmjs.com/cli/v8/using-npm/package-spec) (i.e., a string like `HarperDB/Application-Template` or a URL like `https://github.com/HarperDB/application-template`, for example, that npm knows how to install). You can also deploy your application from your repository by directly using the [`deploy_component` operation](../operations-api/components#deploy-component). @@ -334,7 +334,7 @@ We can also directly implement the Resource class and use it to create new data const { Breed } = tables; / our Breed table class BreedSource extends Resource { / define a data source async get() { - return (await fetch(`http:/best-dog-site.com/${this.getId()}`)).json(); + return (await fetch(`https://best-dog-site.com/${this.getId()}`)).json(); } } / define that our breed table is a cache of data from the data source above, with a specified expiration @@ -347,7 +347,7 @@ Harper provides a powerful JavaScript API with significant capabilities that go ## Configuring Applications/Components -Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https:/github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. +Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https://github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. This config file allows you define a location for static files, as well (that are directly delivered as-is for incoming HTTP requests). diff --git a/site/versioned_docs/version-4.4/developers/applications/web-applications.md b/site/versioned_docs/version-4.4/developers/applications/web-applications.md index d9892b9a..02fd1893 100644 --- a/site/versioned_docs/version-4.4/developers/applications/web-applications.md +++ b/site/versioned_docs/version-4.4/developers/applications/web-applications.md @@ -22,11 +22,11 @@ using popular frameworks is a simple and straightforward process. Get started today with one of our examples: -- [Next.js](https:/github.com/HarperDB/nextjs-example) -- [React SSR](https:/github.com/HarperDB/react-ssr-example) -- [Vue SSR](https:/github.com/HarperDB/vue-ssr-example) -- [Svelte SSR](https:/github.com/HarperDB/svelte-ssr-example) -- [Solid SSR](https:/github.com/HarperDB/solid-ssr-example) +- [Next.js](https://github.com/HarperDB/nextjs-example) +- [React SSR](https://github.com/HarperDB/react-ssr-example) +- [Vue SSR](https://github.com/HarperDB/vue-ssr-example) +- [Svelte SSR](https://github.com/HarperDB/svelte-ssr-example) +- [Solid SSR](https://github.com/HarperDB/solid-ssr-example) ## Cookie Support @@ -59,5 +59,5 @@ Harper includes built-in support for Cross-Origin Resource Sharing (CORS), which Make sure to check out our developer videos too: -- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https:/youtu.be/GqLEwteFJYY) -- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https:/youtu.be/L-tnBNhO9Fc) \ No newline at end of file +- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https://youtu.be/GqLEwteFJYY) +- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https://youtu.be/L-tnBNhO9Fc) diff --git a/site/versioned_docs/version-4.4/developers/components/built-in.md b/site/versioned_docs/version-4.4/developers/components/built-in.md index 81d4ddbf..274d6ab5 100644 --- a/site/versioned_docs/version-4.4/developers/components/built-in.md +++ b/site/versioned_docs/version-4.4/developers/components/built-in.md @@ -17,7 +17,7 @@ Harper provides extended features using built-in components. They do **not** nee ## fastifyRoutes -Specify custom endpoints using [Fastify](https:/fastify.dev/). +Specify custom endpoints using [Fastify](https://fastify.dev/). This component is a [Resource Extension](./reference#resource-extension) and can be configured with the [`files`, `path`, and `root`](./reference#resource-extension-configuration) configuration options. @@ -30,7 +30,7 @@ fastifyRoutes: ## graphql -> GraphQL querying provides functionality for mapping GraphQL querying functionality to exported resources, and is based on the [GraphQL Over HTTP / GraphQL specifications](https:/graphql.github.io/graphql-over-http/draft/#) (it is designed to intuitively map queries to Harper resources, but does not implement the full [specification](https:/spec.graphql.org/) of resolvers, subscribers, and mutations). +> GraphQL querying provides functionality for mapping GraphQL querying functionality to exported resources, and is based on the [GraphQL Over HTTP / GraphQL specifications](https://graphql.github.io/graphql-over-http/draft/#) (it is designed to intuitively map queries to Harper resources, but does not implement the full [specification](https://spec.graphql.org/) of resolvers, subscribers, and mutations). Enables GraphQL querying via a `/graphql` endpoint loosely implementing the GraphQL Over HTTP specification. @@ -107,7 +107,7 @@ roles: ## static -Specify which files to server statically from the Harper HTTP endpoint. Built using the [send](https:/www.npmjs.com/package/send) and [serve-static](https:/www.npmjs.com/package/serve-static) modules. +Specify which files to server statically from the Harper HTTP endpoint. Built using the [send](https://www.npmjs.com/package/send) and [serve-static](https://www.npmjs.com/package/serve-static) modules. This component is a [Resource Extension](./reference#resource-extension) and can be configured with the [`files`, `path`, and `root`](./reference#resource-extension-configuration) configuration options. diff --git a/site/versioned_docs/version-4.4/developers/components/index.md b/site/versioned_docs/version-4.4/developers/components/index.md index 14b3cde8..639d8c7a 100644 --- a/site/versioned_docs/version-4.4/developers/components/index.md +++ b/site/versioned_docs/version-4.4/developers/components/index.md @@ -6,7 +6,7 @@ title: Components Harper components are a core Harper concept defined as flexible JavaScript based _extensions_ of the highly extensible core Harper platform. They are executed by Harper directly and have complete access to the Harper [Global APIs](../../technical-details/reference/globals) (such as `Resource`, `databases`, and `tables`). -A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../applications/) is a component that uses many other components. The [application template](https:/github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as `rest` (for automatic REST endpoint generation), `graphqlSchema` (for table schema definitions), and many more. +A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../applications/) is a component that uses many other components. The [application template](https://github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as `rest` (for automatic REST endpoint generation), `graphqlSchema` (for table schema definitions), and many more. From management to development, the following pages document everything a developer needs to know about Harper components. @@ -18,8 +18,8 @@ From management to development, the following pages document everything a develo The following list is all of Harper's officially maintained, custom components. They are all available on npm and GitHub. -- [`@harperdb/nextjs`](https:/github.com/HarperDB/nextjs) -- [`@harperdb/apollo`](https:/github.com/HarperDB/apollo) -- [`@harperdb/status-check`](https:/github.com/HarperDB/status-check) -- [`@harperdb/prometheus-exporter`](https:/github.com/HarperDB/prometheus-exporter) -- [`@harperdb/acl-connect`](https:/github.com/HarperDB/acl-connect) \ No newline at end of file +- [`@harperdb/nextjs`](https://github.com/HarperDB/nextjs) +- [`@harperdb/apollo`](https://github.com/HarperDB/apollo) +- [`@harperdb/status-check`](https://github.com/HarperDB/status-check) +- [`@harperdb/prometheus-exporter`](https://github.com/HarperDB/prometheus-exporter) +- [`@harperdb/acl-connect`](https://github.com/HarperDB/acl-connect) diff --git a/site/versioned_docs/version-4.4/developers/components/managing.md b/site/versioned_docs/version-4.4/developers/components/managing.md index 31155ed3..5acf800c 100644 --- a/site/versioned_docs/version-4.4/developers/components/managing.md +++ b/site/versioned_docs/version-4.4/developers/components/managing.md @@ -101,13 +101,13 @@ Unlike local development where `package` should be set to a local file path for A local component can be deployed to a remote instance by **omitting** the `package` field. Harper will automatically package the local directory and include that along with the rest of the deployment operation. -Furthermore, the `package` field can be set to any valid [npm dependency value](https:/docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). +Furthermore, the `package` field can be set to any valid [npm dependency value](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). * For components deployed to npm, specify the package name: `package="@harperdb/status-check"` -* For components on GitHub, specify the URL: `package="https:/github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` +* For components on GitHub, specify the URL: `package="https://github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` * Private repositories also work if the correct SSH keys are on the server: `package="git+ssh:/git@github.com:HarperDB/secret-component.git"` * Reference the [SSH Key](../operations-api/components#add-ssh-key) operations for more information on managing SSH keys on a remote instance -* Even tarball URLs are supported: `package="https:/example.com/component.tar.gz"` +* Even tarball URLs are supported: `package="https://example.com/component.tar.gz"` > When using git tags, we highly recommend that you use the semver directive to ensure consistent and reliable installation by npm. In addition to tags, you can also reference branches or commit numbers. @@ -150,7 +150,7 @@ myTarBall: myLocal: package: /Users/harper/local # install from local path myWebsite: - package: https:/harperdb-component # install from URL + package: https://harperdb-component # install from URL ``` Harper will generate a `package.json` like: @@ -162,7 +162,7 @@ Harper will generate a `package.json` like: "myNPMComponent": "npm:harperdb", "myTarBall": "file:/Users/harper/cool-component.tar", "myLocal": "file:/Users/harper/local", - "myWebsite": "https:/harperdb-component" + "myWebsite": "https://harperdb-component" } } ``` diff --git a/site/versioned_docs/version-4.4/developers/components/reference.md b/site/versioned_docs/version-4.4/developers/components/reference.md index 22d55063..42fc5b0e 100644 --- a/site/versioned_docs/version-4.4/developers/components/reference.md +++ b/site/versioned_docs/version-4.4/developers/components/reference.md @@ -8,7 +8,7 @@ The technical definition of a Harper component is fairly loose. In the absolute, Harper provides many features as _built-in components_, these can be used directly without installing any other dependencies. -Other features are provided by _custom components_. These can be npm packages such as [@harperdb/nextjs](https:/github.com/HarperDB/nextjs) and [@harperdb/apollo](https:/github.com/HarperDB/apollo) (which are maintained by Harper), or something maintained by the community. Custom components follow the same configuration rules and use the same APIs that Harper's built-in components do. The only difference is that they must be apart of the component's dependencies. +Other features are provided by _custom components_. These can be npm packages such as [@harperdb/nextjs](https://github.com/HarperDB/nextjs) and [@harperdb/apollo](https://github.com/HarperDB/apollo) (which are maintained by Harper), or something maintained by the community. Custom components follow the same configuration rules and use the same APIs that Harper's built-in components do. The only difference is that they must be apart of the component's dependencies. > Documentation is available for all [built-in](./built-in) and [custom](./#custom-components) Harper components. @@ -54,7 +54,7 @@ Then, within `config.yaml` it can be enabled and configured using: # ... ``` -Since npm allows for a [variety of dependency configurations](https:/docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: +Since npm allows for a [variety of dependency configurations](https://docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: ```json { @@ -107,11 +107,11 @@ Functionally, what makes an extension a component is the contents of `config.yam - **extensionModule** - `string` - _required_ - A path to the extension module source code. The path must resolve from the root of the extension module directory. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. If the extension is being written in something other than JavaScript (such as TypeScript), ensure that the path resolves to the built version, (i.e. `extensionModule: ./dist/index.js`) -It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since extensions are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https:/docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! +It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since extensions are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https://docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! Furthermore, what defines an extension separately from a component is that it leverages any of the [Resource Extension](#resource-extension-api) or [Protocol Extension](#protocol-extension-api) APIs. The key is in the name, **extensions are extensible**. @@ -219,13 +219,13 @@ Returns: `boolean | void | Promise` ### Protocol Extension -A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../../technical-details/reference/globals#server) global API documentation for more information). +A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../../technical-details/reference/globals#server) global API documentation for more information). #### Protocol Extension Configuration In addition to the `files`, `path`, and `root` [Resource Extension configuration](#resource-extension-configuration) options, and the `package` [Custom Component configuration](#custom-component-configuration) option, Protocol Extensions can also specify additional configuration options. Any options added to the extension configuration (in `config.yaml`), will be passed through to the `options` object of the `start()` and `startOnMainThread()` methods. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: ```yaml '@harperdb/nextjs': diff --git a/site/versioned_docs/version-4.4/developers/miscellaneous/google-data-studio.md b/site/versioned_docs/version-4.4/developers/miscellaneous/google-data-studio.md index 47fd80bd..53236fea 100644 --- a/site/versioned_docs/version-4.4/developers/miscellaneous/google-data-studio.md +++ b/site/versioned_docs/version-4.4/developers/miscellaneous/google-data-studio.md @@ -4,9 +4,9 @@ title: Google Data Studio # Google Data Studio -[Google Data Studio](https:/datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. +[Google Data Studio](https://datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. -The Harper Google Data Studio Connector is subject to our [Terms of Use](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https:/harperdb.io/legal/privacy-policy/). +The Harper Google Data Studio Connector is subject to our [Terms of Use](https://harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https://harperdb.io/legal/privacy-policy/). ## Requirements @@ -14,13 +14,13 @@ The Harper database must be accessible through the Internet in order for Google ## Get Started -Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https:/datastudio.google.com/u/0/datasources/create). +Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https://datastudio.google.com/u/0/datasources/create). -1. Log in to https:/datastudio.google.com/. -1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https:/datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). +1. Log in to [https://datastudio.google.com/](https://datastudio.google.com/). +1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https://datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). 1. Authorize the connector to access other servers on your behalf (this allows the connector to contact your database). 1. Enter the Web URL to access your database (preferably with HTTPS), as well as the Basic Auth key you use to access the database. Just include the key, not the word “Basic” at the start of it. -1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:/ will do the same thing, if you prefer. +1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:// will do the same thing, if you prefer. 1. Check the box for “Allow Bad Certs” if your Harper instance does not have a valid SSL certificate. [Harper Cloud](../../deployments/harper-cloud/) always has valid certificates, and so will never require this to be checked. Instances you set up yourself may require this, if you are using self-signed certs. If you are using [Harper Cloud](../../deployments/harper-cloud/) or another instance you know should always have valid SSL certificates, do not check this box. 1. Choose your Query Type. This determines what information the configuration will ask for after pressing the Next button. * Table will ask you for a Schema and a Table to return all fields of using `SELECT *`. diff --git a/site/versioned_docs/version-4.4/developers/miscellaneous/sdks.md b/site/versioned_docs/version-4.4/developers/miscellaneous/sdks.md index 13998f80..33ec0bed 100644 --- a/site/versioned_docs/version-4.4/developers/miscellaneous/sdks.md +++ b/site/versioned_docs/version-4.4/developers/miscellaneous/sdks.md @@ -9,14 +9,14 @@ description: >- | SDK/Tool | Description | Installation | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | -| [HarperDB.NET.Client](https:/www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | -| [Websocket Client](https:/www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | -| [Gatsby HarperDB Source](https:/www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | -| [HarperDB.EntityFrameworkCore](https:/www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | -| [Python SDK](https:/pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | -| [HarperDB Flutter SDK](https:/github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | -| [React Hook](https:/www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | -| [Node Red Node](https:/flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | -| [NodeJS SDK](https:/www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | -| [HarperDB Cargo Crate](https:/crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | -| [HarperDB Go SDK](https:/github.com/HarperDB-Add-Ons/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB-Add-Ons/sdk-go` | +| [HarperDB.NET.Client](https://www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | +| [Websocket Client](https://www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | +| [Gatsby HarperDB Source](https://www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | +| [HarperDB.EntityFrameworkCore](https://www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | +| [Python SDK](https://pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | +| [HarperDB Flutter SDK](https://github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | +| [React Hook](https://www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | +| [Node Red Node](https://flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | +| [NodeJS SDK](https://www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | +| [HarperDB Cargo Crate](https://crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | +| [HarperDB Go SDK](https://github.com/HarperDB-Add-Ons/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB-Add-Ons/sdk-go` | diff --git a/site/versioned_docs/version-4.4/developers/operations-api/advanced-json-sql-examples.md b/site/versioned_docs/version-4.4/developers/operations-api/advanced-json-sql-examples.md index 61c26f47..5b7a2c8e 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/advanced-json-sql-examples.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/advanced-json-sql-examples.md @@ -84,7 +84,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo "operation": "csv_url_load", "database": "movies", "table": "movie", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" } ``` @@ -108,7 +108,7 @@ Inserts data from a hosted CSV file into the "credits" table using the 'csv_url_ "operation": "csv_url_load", "database": "movies", "table": "credits", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" } ``` diff --git a/site/versioned_docs/version-4.4/developers/operations-api/bulk-operations.md b/site/versioned_docs/version-4.4/developers/operations-api/bulk-operations.md index 836087d3..133bf9e8 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/bulk-operations.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/bulk-operations.md @@ -20,7 +20,7 @@ Ingests CSV data, provided directly in the operation as an `insert`, `update` or "database": "dev", "action": "insert", "table": "breed", - "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" + "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" } ``` @@ -82,7 +82,7 @@ Ingests CSV data, provided via URL, as an `insert`, `update` or `upsert` into th "action": "insert", "database": "dev", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.4/developers/operations-api/clustering.md b/site/versioned_docs/version-4.4/developers/operations-api/clustering.md index d9909cd3..17679214 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/clustering.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/clustering.md @@ -146,7 +146,7 @@ _Operation is restricted to super\_user roles only_ "type": "cluster-status", "connections": [ { - "url": "wss:/server-two:9925", + "url": "wss://server-two:9925", "subscriptions": [ { "schema": "dev", @@ -252,7 +252,7 @@ _Operation is restricted to super\_user roles only_ { "operation": "cluster_set_routes", "routes": [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 @@ -267,7 +267,7 @@ _Operation is restricted to super\_user roles only_ { "message": "cluster routes successfully set", "set": [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 @@ -299,7 +299,7 @@ _Operation is restricted to super\_user roles only_ ```json [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 diff --git a/site/versioned_docs/version-4.4/developers/operations-api/components.md b/site/versioned_docs/version-4.4/developers/operations-api/components.md index 442d16bd..927761bb 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/components.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/components.md @@ -39,10 +39,10 @@ Will deploy a component using either a base64-encoded string representation of a If deploying with the `payload` option, Harper will decrypt the base64-encoded string, reconstitute the .tar file of your project folder, and extract it to the component root project directory. -If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https:/docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: +If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: ``` -https:/github.com/HarperDB/application-template#semver:v1.0.0 +https://github.com/HarperDB/application-template#semver:v1.0.0 ``` or this can be shortened to: @@ -60,16 +60,16 @@ git+ssh:/git@github.com:my-org/my-app.git#semver:v1.0.0 Or you can use a Github token: ``` -https:/@github.com/my-org/my-app#semver:v1.0.0 +https://@github.com/my-org/my-app#semver:v1.0.0 ``` Or you can use a GitLab Project Access Token: ``` -https:/my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 +https://my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 ``` -Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https:/docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node\_modules in the hdb root directory (typically `~/hdb/node_modules`). +Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https://docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node\_modules in the hdb root directory (typically `~/hdb/node_modules`). _Note: After deploying a component a restart may be required_ diff --git a/site/versioned_docs/version-4.4/developers/operations-api/custom-functions.md b/site/versioned_docs/version-4.4/developers/operations-api/custom-functions.md index 308544f6..042ff263 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/custom-functions.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/custom-functions.md @@ -160,7 +160,7 @@ _Operation is restricted to super_user roles only_ ## Add Custom Function Project -Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. +Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.4/developers/operations-api/index.md b/site/versioned_docs/version-4.4/developers/operations-api/index.md index 6d4c2517..5d63fb68 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/index.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/index.md @@ -7,7 +7,7 @@ title: Operations API The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling Harper. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../../deployments/configuration#operationsapi), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](../security/basic-auth) or [JWT authentication](../security/jwt-auth). For example, a request to create a table would be performed as: ```http -POST http:/my-harperdb-server:9925/ +POST https://my-harperdb-server:9925/ Authorization: Basic YourBase64EncodedInstanceUser:Pass Content-Type: application/json @@ -35,14 +35,14 @@ The operations API reference is available below and categorized by topic: * [SQL Operations](./sql-operations) * [Advanced JSON SQL Examples](./advanced-json-sql-examples) -• [Past Release API Documentation](https:/olddocs.harperdb.io) +• [Past Release API Documentation](https://olddocs.harperdb.io) ## More Examples Here is an example of using `curl` to make an operations API request: ```bash -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ diff --git a/site/versioned_docs/version-4.4/developers/operations-api/quickstart-examples.md b/site/versioned_docs/version-4.4/developers/operations-api/quickstart-examples.md index 9159efca..109d9cc8 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/quickstart-examples.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/quickstart-examples.md @@ -248,7 +248,7 @@ Let's add some more Harper doggies! We can add as many dog objects as we want in We need to populate the 'breed' table with some data so we can reference it later. For larger data sets, we recommend using our CSV upload option. -Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: https:/s3.amazonaws.com/complimentarydata/breeds.csv +Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: [https://s3.amazonaws.com/complimentarydata/breeds.csv](https://s3.amazonaws.com/complimentarydata/breeds.csv) ### Body @@ -256,7 +256,7 @@ Each header in a column will be considered as an attribute, and each row in the { "operation": "csv_url_load", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.4/developers/operations-api/utilities.md b/site/versioned_docs/version-4.4/developers/operations-api/utilities.md index 4d09f5cd..6cfec533 100644 --- a/site/versioned_docs/version-4.4/developers/operations-api/utilities.md +++ b/site/versioned_docs/version-4.4/developers/operations-api/utilities.md @@ -175,7 +175,7 @@ _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `install_node_modules` * projects _(required)_ - must ba an array of custom functions projects. -* dry_run _(optional)_ - refers to the npm --dry-run flag: [https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. +* dry_run _(optional)_ - refers to the npm --dry-run flag: [https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. ### Body ```json @@ -261,7 +261,7 @@ _Operation is restricted to super_user roles only_ "hostname": "node1", "databases": "*", "routes": null, - "url": "wss:/127.0.0.1:9925" + "url": "wss://127.0.0.1:9925" }, "componentsRoot": "/Users/hdb/components", "localStudio": { diff --git a/site/versioned_docs/version-4.4/developers/real-time.md b/site/versioned_docs/version-4.4/developers/real-time.md index 5f90e075..0e73f64d 100644 --- a/site/versioned_docs/version-4.4/developers/real-time.md +++ b/site/versioned_docs/version-4.4/developers/real-time.md @@ -86,10 +86,10 @@ Non-retained messages are generally a good choice for applications like chat, wh ### WebSockets -WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss:/server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: +WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss://server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: ```javascript -let ws = new WebSocket('wss:/server/my-resource/341'); +let ws = new WebSocket('wss://server/my-resource/341'); ws.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); @@ -134,7 +134,7 @@ export class Example extends Resource { Server Sent Events (SSE) are also supported through the REST server interface, and provide a simple and efficient mechanism for web-based applications to receive real-time updates. For consistency of push delivery, SSE connections go through the `connect()` method on resources, much like WebSockets. The primary difference is that `connect` is called without any `incomingMessages` argument, since SSE is a one-directional transport mechanism. This can be used much like WebSockets, specifying a resource URL path will connect to that resource, and by default provides a stream of messages for changes and messages for that resource. For example, you can connect to receive notification in a browser for a resource like: ```javascript -let eventSource = new EventSource('https:/server/my-resource/341', { withCredentials: true }); +let eventSource = new EventSource('https://server/my-resource/341', { withCredentials: true }); eventSource.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); diff --git a/site/versioned_docs/version-4.4/developers/replication/index.md b/site/versioned_docs/version-4.4/developers/replication/index.md index d84fe214..938bffd2 100644 --- a/site/versioned_docs/version-4.4/developers/replication/index.md +++ b/site/versioned_docs/version-4.4/developers/replication/index.md @@ -28,7 +28,7 @@ In this example, the current node is `server-one`, and it will connect to `serve replication: hostname: server-one routes: - - wss:/server-two:9925 # URL based route + - wss://server-two:9925 # URL based route - hostname: server-three # define a hostname and port port: 9930 ``` @@ -45,7 +45,7 @@ You can also use the [operations API](../operations-api/clustering) to dynamical These operations will also dynamically generating certificates as needed, if there are no existing signed certificates, or if the existing certificates are not valid for the new node. -Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https:/highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). +Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https://highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). By default, Harper will replicate all the data in all the databases. You can configure which databases are replicated, and then override this behavior on a per-table basis. For example, you can indicate which databases should be replicated by default, here indicating you want to replicate the `data` and `system` databases: diff --git a/site/versioned_docs/version-4.4/developers/rest.md b/site/versioned_docs/version-4.4/developers/rest.md index 882f975a..6a6db875 100644 --- a/site/versioned_docs/version-4.4/developers/rest.md +++ b/site/versioned_docs/version-4.4/developers/rest.md @@ -107,7 +107,7 @@ GET /my-resource/?property=value&property2=another-value Note that only one of the attributes needs to be indexed for this query to execute. -We can also specify different comparators such as less than and greater than queries using [FIQL](https:/datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: +We can also specify different comparators such as less than and greater than queries using [FIQL](https://datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: ```http GET /my-resource/?age=gt=20 diff --git a/site/versioned_docs/version-4.4/developers/security/basic-auth.md b/site/versioned_docs/version-4.4/developers/security/basic-auth.md index 6736f2c8..0faa7d4c 100644 --- a/site/versioned_docs/version-4.4/developers/security/basic-auth.md +++ b/site/versioned_docs/version-4.4/developers/security/basic-auth.md @@ -14,7 +14,7 @@ A header is added to each HTTP request. The header key is **“Authorization”* In the below code sample, you can see where we add the authorization header to the request. This needs to be added for each and every HTTP request for Harper. -_Note: This function uses btoa. Learn about_ [_btoa here_](https:/developer.mozilla.org/en-US/docs/Web/API/btoa)_._ +_Note: This function uses btoa. Learn about_ [_btoa here_](https://developer.mozilla.org/en-US/docs/Web/API/btoa)_._ ```javascript function callHarperDB(call_object, operation, callback){ diff --git a/site/versioned_docs/version-4.4/developers/security/certificate-management.md b/site/versioned_docs/version-4.4/developers/security/certificate-management.md index fdc8cc22..bb27577b 100644 --- a/site/versioned_docs/version-4.4/developers/security/certificate-management.md +++ b/site/versioned_docs/version-4.4/developers/security/certificate-management.md @@ -61,7 +61,7 @@ Instead of enabling HTTPS for Harper, Nginx can be used as a reverse proxy for H Install Nginx, configure Nginx to use certificates issued from your own CA or a public CA, then configure Nginx to listen for HTTPS requests and forward to Harper as HTTP requests. -[Certbot](https:/certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. +[Certbot](https://certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. ### Option: External Reverse Proxy diff --git a/site/versioned_docs/version-4.4/developers/security/configuration.md b/site/versioned_docs/version-4.4/developers/security/configuration.md index f21eb9b2..7638ef86 100644 --- a/site/versioned_docs/version-4.4/developers/security/configuration.md +++ b/site/versioned_docs/version-4.4/developers/security/configuration.md @@ -8,7 +8,7 @@ Harper was set up to require very minimal configuration to work out of the box. ## CORS -Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: +Harper allows for managing [cross-origin HTTP requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: 1. Open the harperdb-config.yaml file, which can be found in \, the location you specified during install. 1. In harperdb-config.yaml there should be 2 entries under `operationsApi.network`: cors and corsAccessList. @@ -19,7 +19,7 @@ Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla 1. The `corsAccessList` will only be recognized by the system when `cors` is `true` 1. To create an access list you set `corsAccessList` to a comma-separated list of domains. - i.e. `corsAccessList` is `http:/harpersystems.dev,http:/products.harpersystems.dev` + i.e. `corsAccessList` is `https://harpersystems.dev,https://products.harpersystems.dev` 1. To clear out the access list and allow all domains: `corsAccessList` is `[null]` ## SSL diff --git a/site/versioned_docs/version-4.4/developers/security/jwt-auth.md b/site/versioned_docs/version-4.4/developers/security/jwt-auth.md index a62d2841..5dda54ed 100644 --- a/site/versioned_docs/version-4.4/developers/security/jwt-auth.md +++ b/site/versioned_docs/version-4.4/developers/security/jwt-auth.md @@ -93,4 +93,4 @@ Token timeouts are configurable in [harperdb-config.yaml](../../deployments/conf * `operationsApi.authentication.operationTokenTimeout`: Defines the length of time until the operation\_token expires (default 1d). * `operationsApi.authentication.refreshTokenTimeout`: Defines the length of time until the refresh\_token expires (default 30d). -A full list of valid values for both parameters can be found [here](https:/github.com/vercel/ms). +A full list of valid values for both parameters can be found [here](https://github.com/vercel/ms). diff --git a/site/versioned_docs/version-4.4/developers/sql-guide/date-functions.md b/site/versioned_docs/version-4.4/developers/sql-guide/date-functions.md index 4ce2c203..8503ca91 100644 --- a/site/versioned_docs/version-4.4/developers/sql-guide/date-functions.md +++ b/site/versioned_docs/version-4.4/developers/sql-guide/date-functions.md @@ -8,9 +8,9 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Date Functions -Harper utilizes [Coordinated Universal Time (UTC)](https:/en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. +Harper utilizes [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. -When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https:/en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https:/tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. +When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https://tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. ### CURRENT_DATE() @@ -121,7 +121,7 @@ AS date_diff_result" returns ### DATE_FORMAT(date, format) -Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https:/momentjs.com/docs/#/displaying/format/). +Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https://momentjs.com/docs/#/displaying/format/). ``` "SELECT DATE_FORMAT(1524412627973, 'YYYY-MM-DD HH:mm:ss') diff --git a/site/versioned_docs/version-4.4/developers/sql-guide/functions.md b/site/versioned_docs/version-4.4/developers/sql-guide/functions.md index eeebd8b4..70b9cdfe 100644 --- a/site/versioned_docs/version-4.4/developers/sql-guide/functions.md +++ b/site/versioned_docs/version-4.4/developers/sql-guide/functions.md @@ -24,7 +24,7 @@ This SQL keywords reference contains the SQL functions available in Harper. | ARRAY* | ARRAY(_expression_) | Returns a list of data as a field. | | DISTINCT_ARRAY* | DISTINCT_ARRAY(_expression_) | When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set. | -*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https:/www.harperdb.io/post/sql-queries-to-complex-objects). +*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https://www.harperdb.io/post/sql-queries-to-complex-objects). ### Conversion diff --git a/site/versioned_docs/version-4.4/developers/sql-guide/json-search.md b/site/versioned_docs/version-4.4/developers/sql-guide/json-search.md index 0727b07f..a7dddd0a 100644 --- a/site/versioned_docs/version-4.4/developers/sql-guide/json-search.md +++ b/site/versioned_docs/version-4.4/developers/sql-guide/json-search.md @@ -8,7 +8,7 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL JSON Search -Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](http:/docs.jsonata.org/overview.html) into our SQL engine. +Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](https://docs.jsonata.org/overview.html) into our SQL engine. ## Syntax @@ -174,4 +174,4 @@ As seen above we execute the same name filter against the cast array, the primar To see further SEARCH\_JSON examples in action view our Postman Collection that provides a [sample database & data with query examples](../operations-api/advanced-json-sql-examples). -To learn more about how to build expressions check out the JSONata documentation: [http:/docs.jsonata.org/overview](http:/docs.jsonata.org/overview) +To learn more about how to build expressions check out the JSONata documentation: [https://docs.jsonata.org/overview](https://docs.jsonata.org/overview) diff --git a/site/versioned_docs/version-4.4/developers/sql-guide/sql-geospatial-functions.md b/site/versioned_docs/version-4.4/developers/sql-guide/sql-geospatial-functions.md index 17ea789a..59978c1d 100644 --- a/site/versioned_docs/version-4.4/developers/sql-guide/sql-geospatial-functions.md +++ b/site/versioned_docs/version-4.4/developers/sql-guide/sql-geospatial-functions.md @@ -8,19 +8,16 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Geospatial Functions -Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](http:/geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. +Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](https://geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. -If you are new to GeoJSON you should check out the full specification here: http:/geojson.org/. There are a few important things to point out before getting started. +If you are new to GeoJSON you should check out the full specification here: [https://geojson.org/](https://geojson.org/). There are a few important things to point out before getting started. - - -1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. -2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. +1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. +2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. 3) Note if you are using Postman for you testing. Due to limitations in the Postman client, you will need to escape quotes in your strings and your SQL will need to be passed on a single line. - In the examples contained in the left-hand navigation, database and table names may change, but all GeoJSON data will be stored in a column named geo_data. # geoArea @@ -28,14 +25,17 @@ In the examples contained in the left-hand navigation, database and table names The geoArea() function returns the area of one or more features in square meters. ### Syntax + geoArea(_geoJSON_) ### Parameters + | Parameter | Description | |-----------|---------------------------------| | geoJSON | Required. One or more features. | #### Example 1 + Calculate the area, in square meters, of a manually passed GeoJSON polygon. ``` @@ -54,6 +54,7 @@ SELECT geoArea('{ ``` #### Example 2 + Find all records that have an area less than 1 square mile (or 2589988 square meters). ``` @@ -62,18 +63,22 @@ WHERE geoArea(geo_data) < 2589988 ``` # geoLength + Takes a GeoJSON and measures its length in the specified units (default is kilometers). ## Syntax + geoLength(_geoJSON_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| geoJSON | Required. GeoJSON to measure. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| geoJSON | Required. GeoJSON to measure. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the length, in kilometers, of a manually passed GeoJSON linestring. ``` @@ -91,6 +96,7 @@ SELECT geoLength('{ ``` ### Example 2 + Find all data plus the calculated length in miles of the GeoJSON, restrict the response to only lengths less than 5 miles, and return the data in order of lengths smallest to largest. ``` @@ -99,19 +105,24 @@ FROM dev.locations WHERE geoLength(geo_data, 'miles') < 5 ORDER BY length ASC ``` + # geoDifference + Returns a new polygon with the difference of the second polygon clipped from the first polygon. ## Syntax + geoDifference(_polygon1, polygon2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|----------------------------------------------------------------------------| -| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | +| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | ### Example + Return a GeoJSON Polygon that removes City Park (_polygon2_) from Colorado (_polygon1_). ``` @@ -153,19 +164,23 @@ SELECT geoDifference('{ ``` # geoDistance + Calculates the distance between two points in units (default is kilometers). ## Syntax + geoDistance(_point1, point2_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the distance, in miles, between Harper’s headquarters and the Washington Monument. ``` @@ -173,6 +188,7 @@ SELECT geoDistance('[-104.979127,39.761563]', '[-77.035248,38.889475]', 'miles') ``` ### Example 2 + Find all locations that are within 40 kilometers of a given point, return that distance in miles, and sort by distance in an ascending order. ``` @@ -183,20 +199,24 @@ ORDER BY distance ASC ``` # geoNear + Determines if point1 and point2 are within a specified distance from each other, default units are kilometers. Returns a Boolean. ## Syntax + geoNear(_point1, point2, distance_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| distance | Required. The maximum distance in units as an integer or decimal. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| distance | Required. The maximum distance in units as an integer or decimal. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Return all locations within 50 miles of a given point. ``` @@ -206,6 +226,7 @@ WHERE geoNear('[-104.979127,39.761563]', geo_data, 50, 'miles') ``` ### Example 2 + Return all locations within 2 degrees of the earth of a given point. (Each degree lat/long is about 69 miles [111 kilometers]). Return all data and the distance in miles, sorted by ascending distance. ``` @@ -216,18 +237,22 @@ ORDER BY distance ASC ``` # geoContains + Determines if geo2 is completely contained by geo1. Returns a Boolean. ## Syntax + geoContains(_geo1, geo2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------| -| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | +| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | ### Example 1 + Return all locations within the state of Colorado (passed as a GeoJSON string). ``` @@ -252,6 +277,7 @@ WHERE geoContains('{ ``` ### Example 2 + Return all locations which contain Harper Headquarters. ``` @@ -278,7 +304,8 @@ WHERE geoContains(geo_data, '{ ``` # geoEqual -Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https:/developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. + +Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see [https://developers.arcgis.com/documentation/spatial-references/](https://developers.arcgis.com/documentation/spatial-references/). Returns a Boolean. ## Syntax geoEqual(_geo1_, _geo2_) diff --git a/site/versioned_docs/version-4.4/getting-started.md b/site/versioned_docs/version-4.4/getting-started.md index 77daf75b..6f7dcace 100644 --- a/site/versioned_docs/version-4.4/getting-started.md +++ b/site/versioned_docs/version-4.4/getting-started.md @@ -36,7 +36,7 @@ Harper is more than just a database, with Harper you build "database application To set up a Harper cloud instance, simply sign up and create a new instance: -1. [Sign up for the Harper Studio](https:/studio.harperdb.io/sign-up) +1. [Sign up for the Harper Studio](https://studio.harperdb.io/sign-up) 1. Create a new Harper Cloud instance Note that a local instance and cloud instance are not mutually exclusive. You can register your local instance in the Harper Studio, and a common development flow is to develop locally and then deploy your application to your cloud instance. @@ -66,7 +66,7 @@ The Operations API provides extensive administrative capabilities for Harper, an The Harper Operations API is single endpoint, which means the only thing that needs to change across different calls is the body. For example purposes, a basic cURL command is shown below to create a database called dev. To change this behavior, swap out the operation in the `data-raw` body parameter. ``` -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ @@ -77,8 +77,8 @@ curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ ## Support and Learning More -If you find yourself in need of additional support you can submit a [Harper support ticket](https:/harperdbhelp.zendesk.com/hc/en-us/requests/new). You can also learn more about available Harper projects by searching [Github](https:/github.com/search?q=harperdb). +If you find yourself in need of additional support you can submit a [Harper support ticket](https://harperdbhelp.zendesk.com/hc/en-us/requests/new). You can also learn more about available Harper projects by searching [Github](https://github.com/search?q=harperdb). ### Video Tutorials -[Harper video tutorials are available on our YouTube channel](https:/www.youtube.com/@harperdbio). Harper and the Harper Studio are constantly changing, as such, there may be small discrepancies in UI/UX. +[Harper video tutorials are available on our YouTube channel](https://www.youtube.com/@harperdbio). Harper and the Harper Studio are constantly changing, as such, there may be small discrepancies in UI/UX. diff --git a/site/versioned_docs/version-4.4/index.md b/site/versioned_docs/version-4.4/index.md index 3812e62f..dfd62488 100644 --- a/site/versioned_docs/version-4.4/index.md +++ b/site/versioned_docs/version-4.4/index.md @@ -5,7 +5,7 @@ title: Harper Docs # Harper Docs :::info -[Connect with our team!](https:/www.harpersystems.dev/contact) +[Connect with our team!](https://www.harpersystems.dev/contact) ::: ## What is Harper? Performance, Simplicity, and Scale. @@ -24,7 +24,7 @@ What we realized is that networking systems together in this way is inefficient ## Build With Harper -Start by running Harper locally with [npm](https:/www.npmjs.com/package/harperdb) or [Docker](https:/hub.docker.com/r/harperdb/harperdb). +Start by running Harper locally with [npm](https://www.npmjs.com/package/harperdb) or [Docker](https://hub.docker.com/r/harperdb/harperdb). Since technology tends to be built around the storage, processing, and transfer of data, start by [defining your schema](./developers/applications/#creating-our-first-table) with the `schema.graphql` file in the root of the application directory. @@ -39,7 +39,7 @@ If you would like to jump into the most advanced capabilities, learn about [comp For a more comprehensive deep dive, take a look at our [Getting Started Guide](./getting-started). :::warning -Need help? Please don’t hesitate to [reach out](https:/www.harpersystems.dev/contact). +Need help? Please don’t hesitate to [reach out](https://www.harpersystems.dev/contact). ::: ## Popular Use Cases @@ -48,7 +48,7 @@ With so much functionality built in, the use cases span nearly all application s ### Online Catalogs & Content Delivery -For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https:/github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https:/www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. +For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https://github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https://www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. ### Data Delivery Networks @@ -58,7 +58,7 @@ For use cases like real-time sports updates, flight tracking, and zero-day softw Capturing, storing, and processing real-time data streams from client and IoT systems typically requires a stack of technology. Harper’s selective data replication and self-healing connections make for an ideal multi-tier system where edge and cloud systems both run Harper, making everything more performant. -[We’re happy](https:/www.harpersystems.dev/contact) to walk you through how to do this. +[We’re happy](https://www.harpersystems.dev/contact) to walk you through how to do this. ## Getting Started diff --git a/site/versioned_docs/version-4.4/technical-details/reference/content-types.md b/site/versioned_docs/version-4.4/technical-details/reference/content-types.md index 735b268d..90ab593a 100644 --- a/site/versioned_docs/version-4.4/technical-details/reference/content-types.md +++ b/site/versioned_docs/version-4.4/technical-details/reference/content-types.md @@ -26,4 +26,4 @@ MessagePack is another efficient binary format like CBOR, with support for all H Comma-separated values is an easy to use and understand format that can be readily imported into spreadsheets or used for data processing. CSV lacks hierarchical structure for most data types, and shouldn't be used for frequent/production use, but when you need it, it is available. -In addition, with the REST interface, you can use file-style extensions to indicate an encoding like http:/host/path.csv to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. \ No newline at end of file +In addition, with the REST interface, you can use file-style extensions to indicate an encoding like [https://host/path.csv](https://host/path.csv) to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. diff --git a/site/versioned_docs/version-4.4/technical-details/reference/data-types.md b/site/versioned_docs/version-4.4/technical-details/reference/data-types.md index 2ae66e4b..9beea167 100644 --- a/site/versioned_docs/version-4.4/technical-details/reference/data-types.md +++ b/site/versioned_docs/version-4.4/technical-details/reference/data-types.md @@ -20,7 +20,7 @@ Strings, or text, are a sequence of any unicode characters and are internally en Numbers can be stored as signed integers up to a 1000 bits of precision (about 300 digits) or floating point with 64-bit floating point precision, and numbers are automatically stored using the most optimal type. With JSON, numbers are automatically parsed and stored in the most appropriate format. Custom components and applications may use BigInt numbers to store/access integers that are larger than 53-bit. The following GraphQL schema type name are supported: -* `Float` - Any number that can be represented with [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision\_floating-point\_format) ("double") +* `Float` - Any number that can be represented with [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision\_floating-point\_format) ("double") * `Int` - Any integer between from -2147483648 to 2147483647 * `Long` - Any integer between from -9007199254740992 to 9007199254740992 * `BigInt` - Any integer (negative or positive) with less than 300 digits diff --git a/site/versioned_docs/version-4.4/technical-details/reference/dynamic-schema.md b/site/versioned_docs/version-4.4/technical-details/reference/dynamic-schema.md index 05abd4d5..8cce2f1a 100644 --- a/site/versioned_docs/version-4.4/technical-details/reference/dynamic-schema.md +++ b/site/versioned_docs/version-4.4/technical-details/reference/dynamic-schema.md @@ -31,8 +31,8 @@ With tables that are using dynamic schemas, additional attributes are reflexivel Harper automatically creates two audit attributes used on each record if the table is created without a schema. -* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. -* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. +* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. +* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. ### Dynamic Schema Example diff --git a/site/versioned_docs/version-4.4/technical-details/reference/globals.md b/site/versioned_docs/version-4.4/technical-details/reference/globals.md index e07b496b..a5db50a7 100644 --- a/site/versioned_docs/version-4.4/technical-details/reference/globals.md +++ b/site/versioned_docs/version-4.4/technical-details/reference/globals.md @@ -93,13 +93,14 @@ The HTTP request listener to be added to the middleware chain. To continue chain ### `Request` and `Response` -The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https:/developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resource) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: +The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resource) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https://developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: #### `Request` A `Request` object is passed to the direct static REST handlers, and preserved as the context for instance methods, and has the following properties: -- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `http:/example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. + +- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `https://example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. - `method` - This is the HTTP method of the request. This is a string like `GET`, `POST`, `PUT`, `DELETE`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. - `pathname` - This is the path portion of the URL, without the query string. For example, if the URL is `/path?query=string`, the `pathname` will be `/path`. - `protocol` - This is the protocol of the request, like `http` or `https`. - `data` - This is the deserialized body of the request (based on the type of data specified by `Content-Type` header). @@ -108,16 +109,17 @@ A `Request` object is passed to the direct static REST handlers, and preserved a - `sendEarlyHints(link: string, headers?: object): void` - This method sends an early hints response to the client, prior to actually returning a response. This is useful for sending a link header to the client to indicate that another resource should be preloaded. The `headers` argument can be used to send additional headers with the early hints response, in addition to the `link`. - `login(username, password): Promise` - This method can be called to start an authenticated session. The login will authenticate the user by username and password. If the authentication was successful, a session will be created and a cookie will be set on the response header that references the session. All subsequent requests from the client that sends the cookie in requests will be authenticated as the user that logged in and the session record will be attached to the request. This method returns a promise that resolves when the login is successful, and rejects if the login is unsuccessful. - `session` - This is the session object that is associated with current cookie-maintained session. This object is used to store session data for the current session. This is `Table` record instance, and can be updated by calling `request.session.update({ key: value })` or session can be retrieved with `request.session.get()`. If the cookie has not been set yet, a cookie will be set the first time a session is updated or a login occurs. -- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https:/nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. -- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https:/nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. +- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. +- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https://nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. #### `Response` REST methods can directly return data that is serialized and returned to users, or it can return a `Response` object (or a promise to a `Response`), or it can return a `Response`-like object with the following properties (or again, a promise to it): + - `status` - This is the HTTP status code of the response. This is a number like `200`, `404`, `500`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. -- `data` - This is the data to be returned of the response. This will be serialized using Harper's content negotiation. -- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. +- `data` - This is the data to be returned of the response. This will be serialized using Harper's content negotiation. +- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). #### `HttpOptions` @@ -125,13 +127,13 @@ Type: `Object` Properties: -* `runFirst` - _optional_ - `boolean` - Add listener to the front of the middleware chain. Defaults to `false` -* `port` - _optional_ - `number` - Specify which HTTP server middleware chain to add the listener to. Defaults to the Harper system default HTTP port configured by `harperdb-config.yaml`, generally `9926` -* `securePort` - _optional_ - `number` - Specify which HTTPS server middleware chain to add the listener to. Defaults to the Harper system default HTTP secure port configured by `harperdb-config.yaml`, generally `9927` +- `runFirst` - _optional_ - `boolean` - Add listener to the front of the middleware chain. Defaults to `false` +- `port` - _optional_ - `number` - Specify which HTTP server middleware chain to add the listener to. Defaults to the Harper system default HTTP port configured by `harperdb-config.yaml`, generally `9926` +- `securePort` - _optional_ - `number` - Specify which HTTPS server middleware chain to add the listener to. Defaults to the Harper system default HTTP secure port configured by `harperdb-config.yaml`, generally `9927` #### `HttpServer` -Node.js [`http.Server`](https:/nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https:/nodejs.org/api/https.html#class-httpsserver) instance. +Node.js [`http.Server`](https://nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https://nodejs.org/api/https.html#class-httpsserver) instance. ### `server.socket(listener: ConnectionListener, options: SocketOptions): SocketServer` @@ -141,16 +143,16 @@ Only one socket server will be created. A `securePort` takes precedence. #### `ConnectionListener` -Node.js socket server connection listener as documented in [`net.createServer`](https:/nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https:/nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) +Node.js socket server connection listener as documented in [`net.createServer`](https://nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https://nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) #### `SocketOptions` -* `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) instance. -* `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https://nodejs.org/api/net.html#class-netserver) instance. +- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. #### `SocketServer` -Node.js [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +Node.js [`net.Server`](https://nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. ### `server.ws(listener: WsListener, options: WsOptions): HttpServer[]` @@ -160,15 +162,15 @@ Example: ```js server.ws((ws, request, chainCompletion) => { - chainCompletion.then(() => { - ws.on('error', console.error); + chainCompletion.then(() => { + ws.on('error', console.error); - ws.on('message', function message(data) { - console.log('received: %s', data); - }); + ws.on('message', function message(data) { + console.log('received: %s', data); + }); - ws.send('something'); - }); + ws.send('something'); + }); }); ``` @@ -178,8 +180,9 @@ Type: `(ws: WebSocket, request: Request, chainCompletion: ChainCompletion, next: The WebSocket connection listener. -* The `ws` argument is the [WebSocket](https:/github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. -* The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https:/github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. +- The `ws` argument is the [WebSocket](https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. +- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https://github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. + * The `chainCompletion` argument is a `Promise` of the associated HTTP server's request chain. Awaiting this promise enables the user to ensure the HTTP request has finished being processed before operating on the WebSocket. * The `next` argument is similar to that of other `next` arguments in Harper's server middlewares. To continue execution of the WebSocket connection listener middleware chain, pass all of the other arguments to this one such as: `next(ws, request, chainCompletion)` @@ -196,13 +199,13 @@ Properties: ### `server.upgrade(listener: UpgradeListener, options: UpgradeOptions): void` -Add a listener to the HTTP Server [upgrade](https:/nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](./globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. +Add a listener to the HTTP Server [upgrade](https://nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](./globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. This method should be used to delegate HTTP upgrade events to an external WebSocket server instance. Example: -> This example is from the Harper Next.js component. See the complete source code [here](https:/github.com/HarperDB/nextjs/blob/main/extension.js) +> This example is from the Harper Next.js component. See the complete source code [here](https://github.com/HarperDB/nextjs/blob/main/extension.js) ```js server.upgrade( @@ -225,7 +228,7 @@ server.upgrade( Type: `(request, socket, head, next) => void` -The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https:/nodejs.org/api/http.html#event-upgrade_1) event. +The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https://nodejs.org/api/http.html#event-upgrade_1) event. #### `UpgradeOptions` diff --git a/site/versioned_docs/version-4.4/technical-details/reference/graphql.md b/site/versioned_docs/version-4.4/technical-details/reference/graphql.md index 0ae8eda3..d56958a3 100644 --- a/site/versioned_docs/version-4.4/technical-details/reference/graphql.md +++ b/site/versioned_docs/version-4.4/technical-details/reference/graphql.md @@ -10,7 +10,7 @@ Get started by setting `graphql: true` in `config.yaml`. This automatically enables a `/graphql` endpoint that can be used for GraphQL queries. -> GraphQL querying provides functionality for mapping GraphQL querying functionality to exported resources, and is based on the [GraphQL Over HTTP / GraphQL specifications](https:/graphql.github.io/graphql-over-http/draft/#) (it is designed to intuitively map queries to Harper resources, but does not implement the full [specification](https:/spec.graphql.org/) of resolvers, subscribers, and mutations). +> GraphQL querying provides functionality for mapping GraphQL querying functionality to exported resources, and is based on the [GraphQL Over HTTP / GraphQL specifications](https://graphql.github.io/graphql-over-http/draft/#) (it is designed to intuitively map queries to Harper resources, but does not implement the full [specification](https://spec.graphql.org/) of resolvers, subscribers, and mutations). Queries can either be `GET` or `POST` requests, and both follow essentially the same request format. `GET` requests must use search parameters, and `POST` requests use the request body. @@ -45,7 +45,7 @@ Accept: application/graphql-response+json > Tip: For the best user experience, include the `Accept: application/graphql-response+json` header in your request. This provides better status codes for errors. -The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https:/graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resource#query) for more complex queries. +The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https://graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resource#query) for more complex queries. Unlike REST queries, GraphQL queries can specify multiple resources simultaneously: @@ -78,8 +78,8 @@ GET /Owner/?select(id,name,occupation) There are three request parameters for GraphQL queries: `query`, `operationName`, and `variables` 1. `query` - _Required_ - The string representation of the GraphQL document. - 1. Limited to [Executable Definitions](https:/spec.graphql.org/October2021/#executabledefinition) only. - 1. i.e. GraphQL [`query`](https:/graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https:/graphql.org/learn/queries/#fragments). + 1. Limited to [Executable Definitions](https://spec.graphql.org/October2021/#executabledefinition) only. + 1. i.e. GraphQL [`query`](https://graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https://graphql.org/learn/queries/#fragments). 1. If an shorthand, unnamed, or singular named query is provided, they will be executed by default. Otherwise, if there are multiple queries, the `operationName` parameter must be used. 1. `operationName` - _Optional_ - The name of the query operation to execute if multiple queries are provided in the `query` parameter 1. `variables` - _Optional_ - A map of variable values to be used for the specified query diff --git a/site/versioned_docs/version-4.4/technical-details/reference/resource.md b/site/versioned_docs/version-4.4/technical-details/reference/resource.md index 4dd67bcd..bc0e8345 100644 --- a/site/versioned_docs/version-4.4/technical-details/reference/resource.md +++ b/site/versioned_docs/version-4.4/technical-details/reference/resource.md @@ -79,7 +79,7 @@ export class MyTable extends tables.MyTable { Make sure that if are extending and `export`ing your table with this class, that you remove the `@export` directive in your schema, so that you aren't exporting the same table/class name twice. -All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. +All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. ## Global Variables @@ -152,7 +152,7 @@ It is important to note that `this` is the resource instance for a specific reco - Arguments - `query`: The [Query](#query) object to use for the search - Return value - - An [AsyncIterable](https:/developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator) of records that match the query + * An [AsyncIterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator) of records that match the query This performs a query on this resource, searching for records that are descendants. By default, this is called by `get(query)` from a collection resource. When this is called for the root resource (like `/Table/`) it searches through all records in the table. However, if you call search from an instance with a specific ID like `1` from a path like `Table/1`, it will only return records that are descendants of that record, like `[1, 1]` (path of Table/1/1) and `[1, 2]` (path of Table/1/2). If you want to do a standard search of the table, make you call the static method like `Table.search(...)`. You can define or override this method to define how records should be queried. The default `search` method on tables (`super.search(query)`) will perform a query and return an AsyncIterable of results. The query object can be used to specify the desired query. diff --git a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.0.0.md b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.0.0.md index 49770307..d2aa32b2 100644 --- a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.0.0.md +++ b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.0.0.md @@ -8,7 +8,7 @@ sidebar_position: 59999 **Networking & Data Replication (Clustering)** -The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https:/nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. +The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https://nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. * CORE-1464, CORE-1470, : Remove SocketCluster dependencies and all code related to them. * CORE-1465, CORE-1485, CORE-1537, CORE-1538, CORE-1558, CORE-1583, CORE_1665, CORE-1710, CORE-1801, CORE-1865 :Add nats-`server` code as dependency, on install of HarperDB download nats-`server` is possible else fallback to building from source code. * CORE-1593, CORE-1761: Add `nats.js` as project dependency. diff --git a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.1.0.md b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.1.0.md index eaa825a8..16b6aa3a 100644 --- a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.1.0.md +++ b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.1.0.md @@ -19,7 +19,7 @@ Logging has been revamped and condensed into one `hdb.log` file. See [logginglog A new operation called `cluster_network` was added, this operation will ping the cluster and return a list of enmeshed nodes. -Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https:/docs.harperdb.io/docs/v/4.1/custom-functions/host-static). +Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https://docs.harperdb.io/docs/v/4.1/custom-functions/host-static). Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](../../../developers/operations-api/bulk-operations#import-from-s3). diff --git a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.3.0.md b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.3.0.md index f6aa2046..13adfa8e 100644 --- a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.3.0.md +++ b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.3.0.md @@ -76,7 +76,7 @@ HarperDB now supports `BigInt` attributes/values with integers (with full precis #### Local Studio Upgrade -HarperDB has upgraded the local studio to match the same version that is offered on http:/studio.harperdb.io. The local studio now has the full robust feature set of the online version. +HarperDB has upgraded the local studio to match the same version that is offered on [https://studio.harperdb.io](https://studio.harperdb.io). The local studio now has the full robust feature set of the online version. ### MQTT @@ -122,4 +122,4 @@ In addition to storage improvements, HarperDB now includes functionality for [co Compression is now enabled by default for all records over 4KB. -To learn more on how to configure compression visit [configuration](https:/docs.harperdb.io/docs/v/4.3/deployments/configuration). +To learn more on how to configure compression visit [configuration](https://docs.harperdb.io/docs/v/4.3/deployments/configuration). diff --git a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.4.0.md b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.4.0.md index f4e0da94..7e06f7cf 100644 --- a/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.4.0.md +++ b/site/versioned_docs/version-4.4/technical-details/release-notes/v4-tucker/4.4.0.md @@ -25,7 +25,7 @@ Certain operations can now be replicated across the cluster, including the deplo ### Computed Properties -Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation ](../../../../developers/applications/defining-schemas), [Resource API](../../reference/resource), and our blog post on [computed properties](https:/www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. +Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation](../../../../developers/applications/defining-schemas), [Resource API](../../reference/resource), and our blog post on [computed properties](https://www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. ### Custom Indexing diff --git a/site/versioned_docs/version-4.5/administration/administration.md b/site/versioned_docs/version-4.5/administration/administration.md index 2952d8c1..67407d06 100644 --- a/site/versioned_docs/version-4.5/administration/administration.md +++ b/site/versioned_docs/version-4.5/administration/administration.md @@ -24,7 +24,7 @@ Harper provides robust capabilities for analytics and observability to facilitat * Analytics provides statistics on usage, request counts, load, memory usage with historical tracking. The analytics data can be [accessed through querying](../technical-details/reference/analytics). * A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](../developers/operations-api/utilities). * Information about the current cluster configuration and status can be found in the [cluster APIs](../developers/operations-api/clustering). -* Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https:/github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. +* Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https://github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. ### Replication Transaction Logging diff --git a/site/versioned_docs/version-4.5/administration/cloning.md b/site/versioned_docs/version-4.5/administration/cloning.md index 1550814f..3c599ff1 100644 --- a/site/versioned_docs/version-4.5/administration/cloning.md +++ b/site/versioned_docs/version-4.5/administration/cloning.md @@ -25,7 +25,7 @@ To start clone run `harperdb` in the CLI with either of the following variables For example: ``` -HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb +HDB_LEADER_URL=https://node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb ``` #### Command line variables @@ -37,7 +37,7 @@ HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-d For example: ``` -harperdb --HDB_LEADER_URL https:/node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... +harperdb --HDB_LEADER_URL https://node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... ``` Each time clone is run it will set a value `cloned: true` in `harperdb-config.yaml`. This value will prevent clone from @@ -140,7 +140,7 @@ docker run -d \ -v :/home/harperdb/hdb \ -e HDB_LEADER_PASSWORD=password \ -e HDB_LEADER_USERNAME=admin \ - -e HDB_LEADER_URL=https:/1.123.45.6:9925 \ + -e HDB_LEADER_URL=https://1.123.45.6:9925 \ -e REPLICATION_HOSTNAME=1.123.45.6 \ -p 9925:9925 \ -p 9926:9926 \ diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/create-account.md b/site/versioned_docs/version-4.5/administration/harper-studio/create-account.md index fdc23cfb..a826ed12 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/create-account.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/create-account.md @@ -3,7 +3,7 @@ title: Create a Studio Account --- # Create a Studio Account -Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). +Start at the [Harper Studio sign up page](https://studio.harperdb.io/sign-up). 1) Provide the following information: * First Name @@ -11,7 +11,7 @@ Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). * Email Address * Subdomain - *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* * Coupon Code (optional) 2) Review the Privacy Policy and Terms of Service. 3) Click the sign up for free button. diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/enable-mixed-content.md b/site/versioned_docs/version-4.5/administration/harper-studio/enable-mixed-content.md index 85b7f8a7..a1e5e4d8 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/enable-mixed-content.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/enable-mixed-content.md @@ -8,4 +8,4 @@ Enabling mixed content is required in cases where you would like to connect the -A comprehensive guide is provided by Adobe [here](https:/experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). \ No newline at end of file +A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/index.md b/site/versioned_docs/version-4.5/administration/harper-studio/index.md index 6db20847..bdb43da5 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/index.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/index.md @@ -5,9 +5,9 @@ title: Harper Studio # Harper Studio Harper Studio is the web-based GUI for Harper. Studio enables you to administer, navigate, and monitor all of your Harper instances in a simple, user-friendly interface without any knowledge of the underlying Harper API. It’s free to sign up, get started today! -[Sign up for free!](https:/studio.harperdb.io/sign-up) +[Sign up for free!](https://studio.harperdb.io/sign-up) -Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https:/studio.harperdb.io). +Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https://studio.harperdb.io). --- ## How does Studio Work? diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/instance-configuration.md b/site/versioned_docs/version-4.5/administration/harper-studio/instance-configuration.md index fe0d295f..cbf07b38 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/instance-configuration.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/instance-configuration.md @@ -10,7 +10,7 @@ Harper instance configuration can be viewed and managed directly through the Har All instance configuration is handled through the **config** page of the Harper Studio, accessed with the following instructions: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. @@ -70,7 +70,7 @@ Note: For Harper Cloud instances, upgrading RAM may add additional CPUs to your 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -*Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* +*Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Update Instance Storage @@ -81,18 +81,18 @@ Note: Instance storage can only be upgraded once every 6 hours. 1) In the **update storage** panel at the bottom left: * Select the new instance storage size. - + * If you do not have a credit card associated with your account, an **Add Credit Card To Account** button will appear. Click that to be taken to the billing screen where you can enter your credit card information before returning to the **config** tab to proceed with the upgrade. - + * If you do have a credit card associated, you will be presented with the updated billing information. - + * Click **Upgrade**. - + 2) The instance will shut down and begin reprovisioning itself. The instance will not be available during this time. You will be returned to the instance dashboard and the instance status will show UPDATING INSTANCE. - + 3) Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. - -*Note, if this process takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new.* + +*Note, if this process takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new).* ## Remove Instance diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/instance-metrics.md b/site/versioned_docs/version-4.5/administration/harper-studio/instance-metrics.md index eae954f1..e9b48939 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/instance-metrics.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/instance-metrics.md @@ -6,7 +6,7 @@ title: Instance Metrics The Harper Studio display instance status and metrics on the instance status page, which can be accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **status** in the instance control bar. diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/instances.md b/site/versioned_docs/version-4.5/administration/harper-studio/instances.md index f44fb609..bb54493d 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/instances.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/instances.md @@ -14,11 +14,11 @@ All interactions between the Studio and your instances take place directly from ## Organization Instance List -A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. +A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. ## Create a New Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select your desired Instance Type. @@ -26,7 +26,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Fill out Instance Info. 1. Enter Instance Name - _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com. The Instance URL will be previewed below._ + _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com). The Instance URL will be previewed below._ 1. Enter Instance Username _This is the username of the initial Harper instance super user._ @@ -46,13 +46,13 @@ A summary view of all instances within an organization can be viewed by clicking _The geographic area where your instance will be provisioned._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. Your Harper Cloud instance will be provisioned in the background. Provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. ## Register Enterprise Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select **Register Enterprise Instance**. @@ -82,7 +82,7 @@ A summary view of all instances within an organization can be viewed by clicking _Harper instances are billed based on Instance RAM. Selecting additional RAM will enable the ability for faster and more complex queries._ 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. The Harper Studio will register your instance and restart it for the registration to take effect. Your instance will be immediately available after this is complete. @@ -95,7 +95,7 @@ Instance deletion has two different behaviors depending on the instance type. An instance can be deleted as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the trash can icon. 1. Enter the instance name into the text box. @@ -111,14 +111,14 @@ Harper instances can be resized on the [Instance Configuration](./instance-confi The Studio enables users to log in and out of different database users from the instance control panel. To log out of an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the lock icon. 1. You will immediately be logged out of the instance. To log in to an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card, it will have an unlocked icon and a status reading PLEASE LOG IN, and click the center of the card. 1. Enter the database username. diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/login-password-reset.md b/site/versioned_docs/version-4.5/administration/harper-studio/login-password-reset.md index 2d1e7eac..2dd71fe3 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/login-password-reset.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/login-password-reset.md @@ -8,7 +8,7 @@ title: Login and Password Reset To log into your existing Harper Studio account: -1) Navigate to the [Harper Studio](https:/studio.harperdb.io/). +1) Navigate to the [Harper Studio](https://studio.harperdb.io/). 2) Enter your email address. 3) Enter your password. 4) Click **sign in**. diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/manage-applications.md b/site/versioned_docs/version-4.5/administration/harper-studio/manage-applications.md index 16974445..5c51915f 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/manage-applications.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/manage-applications.md @@ -35,14 +35,14 @@ The Applications editor stores unsaved changes in cache. This means that occasio Accessing your application endpoints varies with which type of endpoint you're creating. All endpoints, regardless of type, will be accessed via the [Harper HTTP port found in the Harper configuration file](../../deployments/configuration#http). The default port is `9926`, but you can verify what your instances is set to by navigating to the [instance config page](./instance-configuration) and examining the read only JSON version of your instance's config file looking specifically for either the `http: port: 9926` or `http: securePort: 9926` configs. If `port` is set, you will access your endpoints via `http` and if `securePort` is set, you will access your endpoints via `https`. -Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https:/localhost:9926`. +Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https://localhost:9926`. * **Standard REST Endpoints**\ - Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https:/localhost:9926/Dog/1`. + Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https://localhost:9926/Dog/1`. * **Augmented REST Endpoints**\ - Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https:/localhost:9926/DogWithHumanAge/1`. + Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https://localhost:9926/DogWithHumanAge/1`. * **Fastify Routes**\ - If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https:/github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https:/localhost/application-template/getAll`. + If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https://github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https://localhost/application-template/getAll`. ## Creating a New Application diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/manage-instance-users.md b/site/versioned_docs/version-4.5/administration/harper-studio/manage-instance-users.md index a99ae4c6..23bcaa49 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/manage-instance-users.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/manage-instance-users.md @@ -8,7 +8,7 @@ Harper users and roles can be managed directly through the Harper Studio. It is Instance user configuration is handled through the **users** page of the Harper Studio, accessed with the following instructions: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/manage-replication.md b/site/versioned_docs/version-4.5/administration/harper-studio/manage-replication.md index 78a457a9..02951470 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/manage-replication.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/manage-replication.md @@ -10,7 +10,7 @@ Harper instance clustering and replication can be configured directly through th All clustering configuration is handled through the **replication** page of the Harper Studio, accessed with the following instructions: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/organizations.md b/site/versioned_docs/version-4.5/administration/harper-studio/organizations.md index fede2cd8..d486abbc 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/organizations.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/organizations.md @@ -16,42 +16,43 @@ An organization is automatically created for you when you sign up for Harper Stu --- ## List Organizations -A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. +A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. ## Create a New Organization A new organization can be created as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the **Create a New Organization** card. -3) Fill out new organization details +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the **Create a New Organization** card. +3) Fill out new organization details * Enter Organization Name *This is used for descriptive purposes only.* * Enter Organization Subdomain - *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com.* + *Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com).* 4) Click Create Organization. ## Delete an Organization + An organization cannot be deleted until all instances have been removed. An organization can be deleted as follows: -1) Navigate to the Harper Studio Organizations page. -2) Identify the proper organization card and click the trash can icon. -3) Enter the organization name into the text box. +1) Navigate to the Harper Studio Organizations page. +2) Identify the proper organization card and click the trash can icon. +3) Enter the organization name into the text box. *This is done for confirmation purposes to ensure you do not accidentally delete an organization.* 4) Click the **Do It** button. ## Manage Users -Harper Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. - +Harper Studio organization owners can manage users including inviting new users, removing users, and toggling ownership. #### Inviting a User + A new user can be invited to an organization as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) In the **add user** box, enter the new user’s email address. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) In the **add user** box, enter the new user’s email address. 5) Click **Add User**. Users may or may not already be Harper Studio users when adding them to an organization. If the Harper Studio account already exists, the user will receive an email notification alerting them to the organization invitation. If the user does not have a Harper Studio account, they will receive an email welcoming them to Harper Studio. @@ -59,22 +60,25 @@ Users may or may not already be Harper Studio users when adding them to an organ --- #### Toggle a User’s Organization Owner Status + Organization owners have full access to the organization including the ability to manage organization users, create, modify, and delete instances, and delete the organization. Users must have accepted their invitation prior to being promoted to an owner. A user’s organization owner status can be toggled owner as follows: -1) Navigate to the Harper Studio Organizations page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the Harper Studio Organizations page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Toggle the **Is Owner** switch to the desired status. + --- #### Remove a User from an Organization + Users may be removed from an organization at any time. Removing a user from an organization will not delete their Harper Studio account, it will only remove their access to the specified organization. A user can be removed from an organization as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. -2) Click the appropriate organization card. -3) Click **users** at the top of the screen. -4) Click the appropriate user from the **existing users** section. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. +2) Click the appropriate organization card. +3) Click **users** at the top of the screen. +4) Click the appropriate user from the **existing users** section. 5) Type **DELETE** in the text box in the **Delete User** row. *This is done for confirmation purposes to ensure you do not accidentally delete a user.* @@ -84,7 +88,7 @@ Users may be removed from an organization at any time. Removing a user from an o Billing is configured per organization and will be billed to the stored credit card at appropriate intervals (monthly or annually depending on the registered instance). Billing settings can be configured as follows: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 2) Click the appropriate organization card. 3) Click **billing** at the top of the screen. diff --git a/site/versioned_docs/version-4.5/administration/harper-studio/query-instance-data.md b/site/versioned_docs/version-4.5/administration/harper-studio/query-instance-data.md index b0dc0261..9f3b9324 100644 --- a/site/versioned_docs/version-4.5/administration/harper-studio/query-instance-data.md +++ b/site/versioned_docs/version-4.5/administration/harper-studio/query-instance-data.md @@ -6,7 +6,7 @@ title: Query Instance Data SQL queries can be executed directly through the Harper Studio with the following instructions: -1) Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1) Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 2) Click the appropriate organization that the instance belongs to. 3) Select your desired instance. 4) Click **query** in the instance control bar. diff --git a/site/versioned_docs/version-4.5/administration/logging/standard-logging.md b/site/versioned_docs/version-4.5/administration/logging/standard-logging.md index 7194fff4..c7c2fe7a 100644 --- a/site/versioned_docs/version-4.5/administration/logging/standard-logging.md +++ b/site/versioned_docs/version-4.5/administration/logging/standard-logging.md @@ -38,7 +38,7 @@ The log level can be changed by modifying `logging.level` in the config file `ha ## Clustering Logging -Harper clustering utilizes two [NATS](https:/nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. +Harper clustering utilizes two [NATS](https://nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. ## Log File vs Standard Streams diff --git a/site/versioned_docs/version-4.5/deployments/configuration.md b/site/versioned_docs/version-4.5/deployments/configuration.md index fab9369b..f99c8228 100644 --- a/site/versioned_docs/version-4.5/deployments/configuration.md +++ b/site/versioned_docs/version-4.5/deployments/configuration.md @@ -4,7 +4,7 @@ title: Configuration File # Configuration File -Harper is configured through a [YAML](https:/yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). +Harper is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). Some configuration will be populated by default in the config file on install, regardless of whether it is used. @@ -87,7 +87,7 @@ An array of allowable domains with CORS `corsAccessControlAllowHeaders` - _Type_: string; _Default_: 'Accept, Content-Type, Authorization' -A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. +A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. `headersTimeout` - _Type_: integer; _Default_: 60,000 milliseconds (1 minute) @@ -204,10 +204,10 @@ The `replication` section configures [Harper replication](../developers/replicat ```yaml replication: hostname: server-one - url: wss:/server-one:9925 + url: wss://server-one:9925 databases: "*" routes: - - wss:/server-two:9925 + - wss://server-two:9925 port: null securePort: 9933, enableRootCAs: true @@ -249,7 +249,7 @@ replication: copyTablesToCatchUp: true hostname: server-one routes: - - wss:/server-two:9925 # URL based route + - wss://server-two:9925 # URL based route - hostname: server-three # define a hostname and port port: 9930 startTime: 2024-02-06T15:30:00Z @@ -284,7 +284,7 @@ This defines the shard id of this instance and is used in conjunction with the [ The `clustering` section configures the NATS clustering engine, this is used to replicate data between instances of Harper. -_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https:/nats.io/about/) _to facilitate the cluster._ +_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https://nats.io/about/) _to facilitate the cluster._ Clustering offers a lot of different configurations, however in a majority of cases the only options you will need to pay attention to are: @@ -522,7 +522,7 @@ clustering: ### `localStudio` -The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at https:/studio.harperdb.io. Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. +The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at [https://studio.harperdb.io](https://studio.harperdb.io). Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. `enabled` - _Type_: boolean; _Default_: false @@ -697,11 +697,11 @@ This will enable cookie-based sessions to maintain an authenticated session. Thi `operationTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time an operation token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time an operation token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `refreshTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time a refresh token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time a refresh token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). ### `operationsApi` @@ -1114,7 +1114,7 @@ The name of the component. This will be used to name the folder where the compon A reference to your [component](../developers/components/managing#adding-components-to-root) package. This could be a remote git repo, a local folder/file or an NPM package. Harper will add this package to a package.json file and call `npm install` on it, so any reference that works with that paradigm will work here. -Read more about npm install [here](https:/docs.npmjs.com/cli/v8/commands/npm-install) +Read more about npm install [here](https://docs.npmjs.com/cli/v8/commands/npm-install) `port` - _Type_: number _Default_: whatever is set in `http.port` diff --git a/site/versioned_docs/version-4.5/deployments/harper-cli.md b/site/versioned_docs/version-4.5/deployments/harper-cli.md index 91240516..90c8e61e 100644 --- a/site/versioned_docs/version-4.5/deployments/harper-cli.md +++ b/site/versioned_docs/version-4.5/deployments/harper-cli.md @@ -157,7 +157,7 @@ last_updated_record: 1724483231970.9949 `harperdb set_configuration logging_level=error` -`harperdb deploy_component project=my-cool-app package=https:/github.com/HarperDB/application-template` +`harperdb deploy_component project=my-cool-app package=https://github.com/HarperDB/application-template` `harperdb get_components` @@ -174,7 +174,7 @@ The CLI can also be used to run operations on remote Harper instances. To do thi ```bash export CLI_TARGET_USERNAME=HDB_ADMIN export CLI_TARGET_PASSWORD=password -harperdb describe_database database=dev target=https:/server.com:9925 +harperdb describe_database database=dev target=https://server.com:9925 ``` The same set of operations API are available for remote operations as well. @@ -184,11 +184,11 @@ The same set of operations API are available for remote operations as well. When using remote operations, you can deploy a local component to the remote instance. If you omit the `package` parameter, you can deploy the current directory. This will package the current directory and send it to the target server (also `deploy` is allowed as an alias to `deploy_component`): ```bash -harperdb deploy target=https:/server.com:9925 +harperdb deploy target=https://server.com:9925 ``` If you are interacting with a cluster, you may wish to include the `replicated=true` parameter to ensure that the deployment operation is replicated to all nodes in the cluster. You will also need to restart afterwards to apply the changes (here seen with the replicated parameter): ```bash -harperdb restart target=https:/server.com:9925 replicated=true +harperdb restart target=https://server.com:9925 replicated=true ``` diff --git a/site/versioned_docs/version-4.5/deployments/harper-cloud/index.md b/site/versioned_docs/version-4.5/deployments/harper-cloud/index.md index fbf2d81e..c0785d0d 100644 --- a/site/versioned_docs/version-4.5/deployments/harper-cloud/index.md +++ b/site/versioned_docs/version-4.5/deployments/harper-cloud/index.md @@ -4,6 +4,6 @@ title: Harper Cloud # Harper Cloud -[Harper Cloud](https:/studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. +[Harper Cloud](https://studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. You can create a new Harper Cloud instance in the Harper Studio. diff --git a/site/versioned_docs/version-4.5/deployments/harper-cloud/instance-size-hardware-specs.md b/site/versioned_docs/version-4.5/deployments/harper-cloud/instance-size-hardware-specs.md index 72979d8d..6ea4c7d2 100644 --- a/site/versioned_docs/version-4.5/deployments/harper-cloud/instance-size-hardware-specs.md +++ b/site/versioned_docs/version-4.5/deployments/harper-cloud/instance-size-hardware-specs.md @@ -20,4 +20,4 @@ While Harper Cloud bills by RAM, each instance has other specifications associat | m5.16xlarge | 256 | 64 | 20 | Up to 3.1 GHz Intel Xeon Platinum 8000 | | m5.24xlarge | 384 | 96 | 25 | Up to 3.1 GHz Intel Xeon Platinum 8000 | -\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https:/aws.amazon.com/ec2/instance-types/](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https://aws.amazon.com/ec2/instance-types/](https://aws.amazon.com/ec2/instance-types/). diff --git a/site/versioned_docs/version-4.5/deployments/harper-cloud/iops-impact.md b/site/versioned_docs/version-4.5/deployments/harper-cloud/iops-impact.md index f316fc30..9a8a0732 100644 --- a/site/versioned_docs/version-4.5/deployments/harper-cloud/iops-impact.md +++ b/site/versioned_docs/version-4.5/deployments/harper-cloud/iops-impact.md @@ -18,7 +18,7 @@ Harper Cloud utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp3) AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result, all Harper Cloud storage options will offer 3,000 IOPS. We plan to offer scalable IOPS as an option in the future. -You can read more about AWS EBS volume IOPS here: https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. +You can read more about AWS EBS volume IOPS here: [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html). ## Estimating IOPS for Harper Instance diff --git a/site/versioned_docs/version-4.5/deployments/harper-cloud/verizon-5g-wavelength-instances.md b/site/versioned_docs/version-4.5/deployments/harper-cloud/verizon-5g-wavelength-instances.md index 1589acc3..31796700 100644 --- a/site/versioned_docs/version-4.5/deployments/harper-cloud/verizon-5g-wavelength-instances.md +++ b/site/versioned_docs/version-4.5/deployments/harper-cloud/verizon-5g-wavelength-instances.md @@ -8,7 +8,7 @@ These instances are only accessible from the Verizon network. When accessing you Harper on Verizon 5G Wavelength brings Harper closer to the end user exclusively on the Verizon network resulting in as little as single-digit millisecond response time from Harper to the client. -Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https:/aws.amazon.com/wavelength/). +Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https://aws.amazon.com/wavelength/). Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail\*. @@ -18,7 +18,7 @@ Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, eac | t3.xlarge | 16 | 4 | Up to 5 | Up to 3.1 GHz Intel Xeon Platinum Processor | | r5.2xlarge | 64 | 8 | Up to 10 | Up to 3.1 GHz Intel Xeon Platinum Processor | -\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https://aws.amazon.com/ec2/instance-types/). ## Harper 5G Wavelength Storage @@ -28,4 +28,4 @@ AWS EBS gp2 volumes have a baseline performance level, which determines the numb Smaller gp2 volumes are perfect for trying out the functionality of Harper, and might also work well for applications that don’t perform many database transactions. For applications that perform a moderate or high number of transactions, we recommend that you use a larger Harper volume. Learn more about the [impact of IOPS on performance here](./iops-impact). -You can read more about [AWS EBS gp2 volume IOPS here](https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). +You can read more about [AWS EBS gp2 volume IOPS here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes\_gp2). diff --git a/site/versioned_docs/version-4.5/deployments/install-harper/index.md b/site/versioned_docs/version-4.5/deployments/install-harper/index.md index 99335044..ea2f1a45 100644 --- a/site/versioned_docs/version-4.5/deployments/install-harper/index.md +++ b/site/versioned_docs/version-4.5/deployments/install-harper/index.md @@ -6,12 +6,12 @@ title: Install Harper ## Install Harper -This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https:/studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. +This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https://studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. -Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https:/nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https:/github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: +Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https://nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https://github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash ``` And then logout and login, and then install Node.js using nvm. We recommend using LTS, but support all currently maintained Node versions (which is currently version 14 and newer, and make sure to always uses latest minor/patch for the major version): @@ -35,15 +35,15 @@ If you are setting up a production server on Linux, [we have much more extensive ## With Docker -If you would like to run Harper in Docker, install [Docker Desktop](https:/docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https:/docs.docker.com/engine/install/) on your Linux server. +If you would like to run Harper in Docker, install [Docker Desktop](https://docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https://docs.docker.com/engine/install/) on your Linux server. -Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https:/hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. +Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https://hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. ## Offline Install If you need to install Harper on a device that doesn't have an Internet connection, you can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM): -[Download Install Package](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) +[Download Install Package](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: @@ -55,7 +55,7 @@ npm install -g harperdb-X.X.X.tgz harperdb install Harper comes with binaries for standard AMD64/x64 or ARM64 CPU architectures on Linux, Windows (x64 only), and Mac (including Apple Silicon). However, if you are installing on a less common platform (Alpine, for example), you will need to ensure that you have build tools installed for the installation process to compile the binaries (this is handled automatically), including: -* [Go](https:/go.dev/dl/): version 1.19.1 +* [Go](https://go.dev/dl/): version 1.19.1 * GCC * Make * Python v3.7, v3.8, v3.9, or v3.10 diff --git a/site/versioned_docs/version-4.5/deployments/install-harper/linux.md b/site/versioned_docs/version-4.5/deployments/install-harper/linux.md index cece27b9..93c25ec9 100644 --- a/site/versioned_docs/version-4.5/deployments/install-harper/linux.md +++ b/site/versioned_docs/version-4.5/deployments/install-harper/linux.md @@ -128,7 +128,7 @@ echo "ubuntu hard nofile 1000000" | sudo tee -a /etc/security/limits.conf Install Node Version Manager (nvm) ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Load nvm (or logout and then login) @@ -137,7 +137,7 @@ Load nvm (or logout and then login) . ~/.nvm/nvm.sh ``` -Install Node.js using nvm ([read more about specific Node version requirements](https:/www.npmjs.com/package/harperdb#prerequisites)) +Install Node.js using nvm ([read more about specific Node version requirements](https://www.npmjs.com/package/harperdb#prerequisites)) ```bash nvm install diff --git a/site/versioned_docs/version-4.5/deployments/upgrade-hdb-instance.md b/site/versioned_docs/version-4.5/deployments/upgrade-hdb-instance.md index f5f403e7..7d5662cc 100644 --- a/site/versioned_docs/version-4.5/deployments/upgrade-hdb-instance.md +++ b/site/versioned_docs/version-4.5/deployments/upgrade-hdb-instance.md @@ -19,9 +19,9 @@ Upgrading Harper is a two-step process. First the latest version of Harper must ## Node Version Manager (nvm) -[Node Version Manager (nvm)](http:/nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https:/nvm.sh/. +[Node Version Manager (nvm)](https://nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: [https://nvm.sh/](https://nvm.sh/). -Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https:/www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: +Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https://www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: ```bash nvm install @@ -103,7 +103,7 @@ To enable Plexus on a node that is already running NATS, you will need to update ```yaml replication: - url: wss:/my-cluster-node-1:9925 + url: wss://my-cluster-node-1:9925 hostname: node-1 ``` @@ -129,7 +129,7 @@ replication: { "operation": "add_node", "hostname:": "node-1", - "url": "wss:/my-cluster-node-1:9925" + "url": "wss://my-cluster-node-1:9925" } ``` diff --git a/site/versioned_docs/version-4.5/developers/applications/caching.md b/site/versioned_docs/version-4.5/developers/applications/caching.md index e111ac5b..63188e85 100644 --- a/site/versioned_docs/version-4.5/developers/applications/caching.md +++ b/site/versioned_docs/version-4.5/developers/applications/caching.md @@ -32,8 +32,8 @@ Next, you need to define the source for your cache. External data sources could ```javascript class ThirdPartyAPI extends Resource { async get() { - return (await fetch(`http:/some-api.com/${this.getId()}`)).json(); - } + return (await fetch(`https://some-api.com/${this.getId()}`)).json(); + } } ``` @@ -48,13 +48,12 @@ Now we have a fully configured and connected caching table. If you access data f ```mermaid flowchart TD - Client1(Client 1)-->Cache(Caching Table) - Client2(Client 2)-->Cache - Cache-->Resource(Data Source Connector) - Resource-->API(Remote Data Source API) + Client1(Client 1)-->Cache(Caching Table) + Client2(Client 2)-->Cache + Cache-->Resource(Data Source Connector) + Resource-->API(Remote Data Source API) ``` - Harper handles waiting for an existing cache resolution to finish and uses its result. This prevents a "cache stampede" when entries expire, ensuring that multiple requests to a cache entry will all wait on a single request to the data source. Cache tables with an expiration are periodically pruned for expired entries. Because this is done periodically, there is usually some amount of time between when a record has expired and when the record is actually evicted (the cached data is removed). But when a record is checked for availability, the expiration time is used to determine if the record is fresh (and the cache entry can be used). @@ -69,11 +68,11 @@ In the example above, we simply retrieved data to fulfill a cache request. We ma ```javascript class ThirdPartyAPI extends Resource { - async get() { - let response = await fetch(`http:/some-api.com/${this.getId()}`); - this.getContext().lastModified = response.headers.get('Last-Modified'); - return response.json(); - } + async get() { + let response = await fetch(`https://some-api.com/${this.getId()}`); + this.getContext().lastModified = response.headers.get('Last-Modified'); + return response.json(); + } } ``` @@ -83,19 +82,19 @@ In addition, we can also specify when a cached record "expires". When a cached r ```javascript class ThirdPartyAPI extends Resource { - async get() { - const context = this.getContext(); - let headers = new Headers(); - if (context.replacingVersion) / this is the existing cached record - headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); - let response = await fetch(`http:/some-api.com/${this.getId()}`, { headers }); - let cacheInfo = response.headers.get('Cache-Control'); - let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; - if (maxAge) / we can set a specific expiration time by setting context.expiresAt - context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time - / we can just revalidate and return the record if the origin has confirmed that it has the same version: - if (response.status === 304) return context.replacingRecord; - ... + async get() { + const context = this.getContext(); + let headers = new Headers(); + if (context.replacingVersion) / this is the existing cached record + headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); + let response = await fetch(`https://some-api.com/${this.getId()}`, { headers }); + let cacheInfo = response.headers.get('Cache-Control'); + let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; + if (maxAge) / we can set a specific expiration time by setting context.expiresAt + context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time + / we can just revalidate and return the record if the origin has confirmed that it has the same version: + if (response.status === 304) return context.replacingRecord; + ... ``` ## Active Caching and Invalidation @@ -109,10 +108,10 @@ One way to provide more active caching is to specifically invalidate individual ```javascript const { MyTable } = tables; export class MyTableEndpoint extends MyTable { - async post(data) { - if (data.invalidate) / use this flag as a marker - this.invalidate(); - } + async post(data) { + if (data.invalidate) / use this flag as a marker + this.invalidate(); + } } ``` @@ -124,20 +123,20 @@ We can provide more control of an active cache with subscriptions. If there is a ```javascript class ThirdPartyAPI extends Resource { - async *subscribe() { + async *subscribe() { setInterval(() => { / every second retrieve more data - / get the next data change event from the source - let update = (await fetch(`http:/some-api.com/latest-update`)).json(); - const event = { / define the change event (which will update the cache) - type: 'put', / this would indicate that the event includes the new data value - id: / the primary key of the record that updated - value: / the new value of the record that updated - timestamp: / the timestamp of when the data change occurred - }; - yield event; / this returns this event, notifying the cache of the change + / get the next data change event from the source + let update = (await fetch(`https://some-api.com/latest-update`)).json(); + const event = { / define the change event (which will update the cache) + type: 'put', / this would indicate that the event includes the new data value + id: / the primary key of the record that updated + value: / the new value of the record that updated + timestamp: / the timestamp of when the data change occurred + }; + yield event; / this returns this event, notifying the cache of the change }, 1000); - } - async get() { + } + async get() { ... ``` @@ -164,24 +163,24 @@ By default, Harper will only run the subscribe method on one thread. Harper is m ```javascript class ThirdPartyAPI extends Resource { - static subscribeOnThisThread(threadIndex) { - return threadIndex < 2; / run on two threads (the first two threads) - } - async *subscribe() { - .... + static subscribeOnThisThread(threadIndex) { + return threadIndex < 2; / run on two threads (the first two threads) + } + async *subscribe() { + .... ``` An alternative to using asynchronous generators is to use a subscription stream and send events to it. A default subscription stream (that doesn't generate its own events) is available from the Resource's default subscribe method: ```javascript class ThirdPartyAPI extends Resource { - subscribe() { - const subscription = super.subscribe(); - setupListeningToRemoteService().on('update', (event) => { - subscription.send(event); - }); - return subscription; - } + subscribe() { + const subscription = super.subscribe(); + setupListeningToRemoteService().on('update', (event) => { + subscription.send(event); + }); + return subscription; + } } ``` @@ -195,18 +194,18 @@ The cache we have defined so far only has data flowing from the data source to t ```javascript class ThirdPartyAPI extends Resource { - async put(data) { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'PUT', - body: JSON.stringify(data) - }); - } - async delete() { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'DELETE', - }); - } - ... + async put(data) { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'PUT', + body: JSON.stringify(data) + }); + } + async delete() { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'DELETE', + }); + } + ... ``` When doing an insert or update to the MyCache table, the data will be sent to the underlying data source through the `put` method and the new record value will be stored in the cache as well. @@ -217,12 +216,12 @@ When you are using a caching table, it is important to remember that any resourc ```javascript class MyCache extends tables.MyCache { - async post(data) { + async post(data) { / if the data is not cached locally, retrieves from source: await this.ensuredLoaded(); / now we can be sure that the data is loaded, and can access properties this.quantity = this.quantity - data.purchases; - } + } } ``` @@ -237,8 +236,8 @@ With our passive update examples, we have provided a data source handler with a ```javascript const { Post, Comment } = tables; class BlogSource extends Resource { - get() { - const post = await (await fetch(`http:/my-blog-server/${this.getId()}`).json()); + get() { + const post = await (await fetch(`https://my-blog-server/${this.getId()}`).json()); for (let comment of post.comments) { await Comment.put(comment, this); / save this comment as part of our current context and transaction } diff --git a/site/versioned_docs/version-4.5/developers/applications/define-routes.md b/site/versioned_docs/version-4.5/developers/applications/define-routes.md index 9d3a1526..3dd91c18 100644 --- a/site/versioned_docs/version-4.5/developers/applications/define-routes.md +++ b/site/versioned_docs/version-4.5/developers/applications/define-routes.md @@ -4,14 +4,14 @@ title: Define Fastify Routes # Define Fastify Routes -Harper’s applications provide an extension for loading [Fastify](https:/www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. +Harper’s applications provide an extension for loading [Fastify](https://www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. -The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https:/github.com/HarperDB/application-template)): +The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https://github.com/HarperDB/application-template)): ```yaml fastifyRoutes: # This loads files that define fastify routes using fastify's auto-loader files: routes/*.js # specify the location of route definition modules - path: . # relative to the app-name, like http:/server/app-name/route-name + path: . # relative to the app-name, like https://server/app-name/route-name ``` By default, route URLs are configured to be: diff --git a/site/versioned_docs/version-4.5/developers/applications/defining-schemas.md b/site/versioned_docs/version-4.5/developers/applications/defining-schemas.md index d0aa42b8..f5fe86a0 100644 --- a/site/versioned_docs/version-4.5/developers/applications/defining-schemas.md +++ b/site/versioned_docs/version-4.5/developers/applications/defining-schemas.md @@ -6,7 +6,7 @@ title: Defining Schemas Schemas define tables and their attributes. Schemas can be declaratively defined in Harper's using GraphQL schema definitions. Schemas definitions can be used to ensure that tables exist (that are required for applications), and have the appropriate attributes. Schemas can define the primary key, data types for attributes, if they are required, and specify which attributes should be indexed. The [introduction to applications provides](./) a helpful introduction to how to use schemas as part of database application development. -Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https:/graphql.org/learn/schema/). +Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https://graphql.org/learn/schema/). An example schema that defines a couple tables might look like: @@ -163,7 +163,7 @@ type Product @table { } ``` -For more in-depth information on computed properties, visit our blog [here](https:/www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) +For more in-depth information on computed properties, visit our blog [here](https://www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) ### Field Directives @@ -200,7 +200,7 @@ Harper supports the following field types in addition to user defined (object) t * `String`: String/text * `Int`: A 32-bit signed integer (from -2147483648 to 2147483647) * `Long`: A 54-bit signed integer (from -9007199254740992 to 9007199254740992) -* `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision\_floating-point\_format). Note that all numbers are stored in the most compact representation available) +* `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision\_floating-point\_format). Note that all numbers are stored in the most compact representation available) * `BigInt`: Any integer (negative or positive) with less than 300 digits (Note that `BigInt` is a distinct and separate type from standard numbers in JavaScript, so custom code should handle this type appropriately) * `Boolean`: true or false * `ID`: A string (but indicates it is not intended to be human readable) @@ -215,7 +215,7 @@ It is important to note that Harper does not currently support renaming tables. ### OpenAPI Specification -_The_ [_OpenAPI Specification_](https:/spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ +_The_ [_OpenAPI Specification_](https://spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ If a set of endpoints are configured through a Harper GraphQL schema, those endpoints can be described by using a default REST endpoint called `GET /openapi`. diff --git a/site/versioned_docs/version-4.5/developers/applications/example-projects.md b/site/versioned_docs/version-4.5/developers/applications/example-projects.md index 466ce267..c3e23aae 100644 --- a/site/versioned_docs/version-4.5/developers/applications/example-projects.md +++ b/site/versioned_docs/version-4.5/developers/applications/example-projects.md @@ -6,32 +6,32 @@ title: Example Projects **Library of example Harper applications and components:** -* [Authorization in Harper using Okta Customer Identity Cloud](https:/www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang +* [Authorization in Harper using Okta Customer Identity Cloud](https://www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang -* [How to Speed Up your Applications by Caching at the Edge with Harper](https:/dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams +* [How to Speed Up your Applications by Caching at the Edge with Harper](https://dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams -* [OAuth Authentication in Harper using Auth0 & Node.js](https:/www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos +* [OAuth Authentication in Harper using Auth0 & Node.js](https://www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos -* [How To Create a CRUD API with Next.js & Harper Custom Functions](https:/www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock +* [How To Create a CRUD API with Next.js & Harper Custom Functions](https://www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock -* [Build a Dynamic REST API with Custom Functions](https:/harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush +* [Build a Dynamic REST API with Custom Functions](https://harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush -* [How to use Harper Custom Functions to Build your Entire Backend](https:/dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden +* [How to use Harper Custom Functions to Build your Entire Backend](https://dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden -* [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https:/harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft +* [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https://harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft -* [Build & Deploy a Fitness App with Python & Harper](https:/www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber +* [Build & Deploy a Fitness App with Python & Harper](https://www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber -* [Create a Discord Slash Bot using Harper Custom Functions](https:/geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty +* [Create a Discord Slash Bot using Harper Custom Functions](https://geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty -* [How I used Harper Custom Functions to Build a Web App for my Newsletter](https:/blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj +* [How I used Harper Custom Functions to Build a Web App for my Newsletter](https://blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj -* [How I used Harper Custom Functions and Recharts to create Dashboard](https:/blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary +* [How I used Harper Custom Functions and Recharts to create Dashboard](https://blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary -* [How To Use Harper Custom Functions With Your React App](https:/dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi +* [How To Use Harper Custom Functions With Your React App](https://dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi -* [Build a Web App Using Harper’s Custom Functions](https:/www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp +* [Build a Web App Using Harper’s Custom Functions](https://www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp -* [How to Web Scrape Using Python, Snscrape & Custom Functions](https:/hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David +* [How to Web Scrape Using Python, Snscrape & Custom Functions](https://hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David -* [What’s the Big Deal w/ Custom Functions](https:/rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast \ No newline at end of file +* [What’s the Big Deal w/ Custom Functions](https://rss.com/podcasts/harperdb-select-star/278933/), Select* Podcast diff --git a/site/versioned_docs/version-4.5/developers/applications/index.md b/site/versioned_docs/version-4.5/developers/applications/index.md index e6cb2a68..edf58ff4 100644 --- a/site/versioned_docs/version-4.5/developers/applications/index.md +++ b/site/versioned_docs/version-4.5/developers/applications/index.md @@ -10,7 +10,7 @@ Harper is more than a database, it's a distributed clustering platform allowing In this guide, we are going to explore the evermore extensible architecture that Harper provides by building a Harper component, a fundamental building-block of the Harper ecosystem. -When working through this guide, we recommend you use the [Harper Application Template](https:/github.com/HarperDB/application-template) repo as a reference. +When working through this guide, we recommend you use the [Harper Application Template](https://github.com/HarperDB/application-template) repo as a reference. ## Understanding the Component Application Architecture @@ -124,7 +124,7 @@ We can also directly implement the Resource class and use it to create new data const { Breed } = tables; / our Breed table class BreedSource extends Resource { / define a data source async get() { - return (await fetch(`http:/best-dog-site.com/${this.getId()}`)).json(); + return (await fetch(`https://best-dog-site.com/${this.getId()}`)).json(); } } / define that our breed table is a cache of data from the data source above, with a specified expiration @@ -137,7 +137,7 @@ Harper provides a powerful JavaScript API with significant capabilities that go ## Configuring Applications/Components -Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https:/github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. +Every application or component can define their own configuration in a `config.yaml`. If you are using the application template, you will have a [default configuration in this config file](https://github.com/HarperDB/application-template/blob/main/config.yaml) (which is default configuration if no config file is provided). Within the config file, you can configure how different files and resources are loaded and handled. The default configuration file itself is documented with directions. Each entry can specify any `files` that the loader will handle, and can also optionally specify what, if any, URL `path`s it will handle. A path of `/` means that the root URLs are handled by the loader, and a path of `.` indicates that the URLs that start with this application's name are handled. This config file allows you define a location for static files, as well (that are directly delivered as-is for incoming HTTP requests). diff --git a/site/versioned_docs/version-4.5/developers/applications/web-applications.md b/site/versioned_docs/version-4.5/developers/applications/web-applications.md index d9892b9a..02fd1893 100644 --- a/site/versioned_docs/version-4.5/developers/applications/web-applications.md +++ b/site/versioned_docs/version-4.5/developers/applications/web-applications.md @@ -22,11 +22,11 @@ using popular frameworks is a simple and straightforward process. Get started today with one of our examples: -- [Next.js](https:/github.com/HarperDB/nextjs-example) -- [React SSR](https:/github.com/HarperDB/react-ssr-example) -- [Vue SSR](https:/github.com/HarperDB/vue-ssr-example) -- [Svelte SSR](https:/github.com/HarperDB/svelte-ssr-example) -- [Solid SSR](https:/github.com/HarperDB/solid-ssr-example) +- [Next.js](https://github.com/HarperDB/nextjs-example) +- [React SSR](https://github.com/HarperDB/react-ssr-example) +- [Vue SSR](https://github.com/HarperDB/vue-ssr-example) +- [Svelte SSR](https://github.com/HarperDB/svelte-ssr-example) +- [Solid SSR](https://github.com/HarperDB/solid-ssr-example) ## Cookie Support @@ -59,5 +59,5 @@ Harper includes built-in support for Cross-Origin Resource Sharing (CORS), which Make sure to check out our developer videos too: -- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https:/youtu.be/GqLEwteFJYY) -- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https:/youtu.be/L-tnBNhO9Fc) \ No newline at end of file +- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https://youtu.be/GqLEwteFJYY) +- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https://youtu.be/L-tnBNhO9Fc) diff --git a/site/versioned_docs/version-4.5/developers/components/built-in.md b/site/versioned_docs/version-4.5/developers/components/built-in.md index 5e25a652..1e832085 100644 --- a/site/versioned_docs/version-4.5/developers/components/built-in.md +++ b/site/versioned_docs/version-4.5/developers/components/built-in.md @@ -22,7 +22,7 @@ Harper provides extended features using built-in components. They do **not** nee ## fastifyRoutes -Specify custom endpoints using [Fastify](https:/fastify.dev/). +Specify custom endpoints using [Fastify](https://fastify.dev/). This component is a [Resource Extension](./reference#resource-extension) and can be configured with the [`files`, `path`, and `root`](./reference#resource-extension-configuration) configuration options. @@ -143,7 +143,7 @@ roles: ## static -Specify which files to server statically from the Harper HTTP endpoint. Built using the [send](https:/www.npmjs.com/package/send) and [serve-static](https:/www.npmjs.com/package/serve-static) modules. +Specify which files to server statically from the Harper HTTP endpoint. Built using the [send](https://www.npmjs.com/package/send) and [serve-static](https://www.npmjs.com/package/serve-static) modules. This component is a [Resource Extension](./reference#resource-extension) and can be configured with the [`files`, `path`, and `root`](./reference#resource-extension-configuration) configuration options. diff --git a/site/versioned_docs/version-4.5/developers/components/index.md b/site/versioned_docs/version-4.5/developers/components/index.md index 6d479c95..a44f76c3 100644 --- a/site/versioned_docs/version-4.5/developers/components/index.md +++ b/site/versioned_docs/version-4.5/developers/components/index.md @@ -6,7 +6,7 @@ title: Components Harper components are a core Harper concept defined as flexible JavaScript based _extensions_ of the highly extensible core Harper platform. They are executed by Harper directly and have complete access to the Harper [Global APIs](../../technical-details/reference/globals) (such as `Resource`, `databases`, and `tables`). -A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../applications/) is a component that uses many other components. The [application template](https:/github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as `rest` (for automatic REST endpoint generation), `graphqlSchema` (for table schema definitions), and many more. +A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../applications/) is a component that uses many other components. The [application template](https://github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as `rest` (for automatic REST endpoint generation), `graphqlSchema` (for table schema definitions), and many more. From management to development, the following pages document everything a developer needs to know about Harper components. @@ -18,9 +18,9 @@ From management to development, the following pages document everything a develo The following list is all of Harper's officially maintained, custom components. They are all available on npm and GitHub. -- [`@harperdb/nextjs`](https:/github.com/HarperDB/nextjs) -- [`@harperdb/apollo`](https:/github.com/HarperDB/apollo) -- [`@harperdb/status-check`](https:/github.com/HarperDB/status-check) -- [`@harperdb/prometheus-exporter`](https:/github.com/HarperDB/prometheus-exporter) -- [`@harperdb/acl-connect`](https:/github.com/HarperDB/acl-connect) -- [`@harperdb/astro`](https:/github.com/HarperDB/astro) \ No newline at end of file +- [`@harperdb/nextjs`](https://github.com/HarperDB/nextjs) +- [`@harperdb/apollo`](https://github.com/HarperDB/apollo) +- [`@harperdb/status-check`](https://github.com/HarperDB/status-check) +- [`@harperdb/prometheus-exporter`](https://github.com/HarperDB/prometheus-exporter) +- [`@harperdb/acl-connect`](https://github.com/HarperDB/acl-connect) +- [`@harperdb/astro`](https://github.com/HarperDB/astro) diff --git a/site/versioned_docs/version-4.5/developers/components/managing.md b/site/versioned_docs/version-4.5/developers/components/managing.md index 31155ed3..5acf800c 100644 --- a/site/versioned_docs/version-4.5/developers/components/managing.md +++ b/site/versioned_docs/version-4.5/developers/components/managing.md @@ -101,13 +101,13 @@ Unlike local development where `package` should be set to a local file path for A local component can be deployed to a remote instance by **omitting** the `package` field. Harper will automatically package the local directory and include that along with the rest of the deployment operation. -Furthermore, the `package` field can be set to any valid [npm dependency value](https:/docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). +Furthermore, the `package` field can be set to any valid [npm dependency value](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). * For components deployed to npm, specify the package name: `package="@harperdb/status-check"` -* For components on GitHub, specify the URL: `package="https:/github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` +* For components on GitHub, specify the URL: `package="https://github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` * Private repositories also work if the correct SSH keys are on the server: `package="git+ssh:/git@github.com:HarperDB/secret-component.git"` * Reference the [SSH Key](../operations-api/components#add-ssh-key) operations for more information on managing SSH keys on a remote instance -* Even tarball URLs are supported: `package="https:/example.com/component.tar.gz"` +* Even tarball URLs are supported: `package="https://example.com/component.tar.gz"` > When using git tags, we highly recommend that you use the semver directive to ensure consistent and reliable installation by npm. In addition to tags, you can also reference branches or commit numbers. @@ -150,7 +150,7 @@ myTarBall: myLocal: package: /Users/harper/local # install from local path myWebsite: - package: https:/harperdb-component # install from URL + package: https://harperdb-component # install from URL ``` Harper will generate a `package.json` like: @@ -162,7 +162,7 @@ Harper will generate a `package.json` like: "myNPMComponent": "npm:harperdb", "myTarBall": "file:/Users/harper/cool-component.tar", "myLocal": "file:/Users/harper/local", - "myWebsite": "https:/harperdb-component" + "myWebsite": "https://harperdb-component" } } ``` diff --git a/site/versioned_docs/version-4.5/developers/components/reference.md b/site/versioned_docs/version-4.5/developers/components/reference.md index 22d55063..42fc5b0e 100644 --- a/site/versioned_docs/version-4.5/developers/components/reference.md +++ b/site/versioned_docs/version-4.5/developers/components/reference.md @@ -8,7 +8,7 @@ The technical definition of a Harper component is fairly loose. In the absolute, Harper provides many features as _built-in components_, these can be used directly without installing any other dependencies. -Other features are provided by _custom components_. These can be npm packages such as [@harperdb/nextjs](https:/github.com/HarperDB/nextjs) and [@harperdb/apollo](https:/github.com/HarperDB/apollo) (which are maintained by Harper), or something maintained by the community. Custom components follow the same configuration rules and use the same APIs that Harper's built-in components do. The only difference is that they must be apart of the component's dependencies. +Other features are provided by _custom components_. These can be npm packages such as [@harperdb/nextjs](https://github.com/HarperDB/nextjs) and [@harperdb/apollo](https://github.com/HarperDB/apollo) (which are maintained by Harper), or something maintained by the community. Custom components follow the same configuration rules and use the same APIs that Harper's built-in components do. The only difference is that they must be apart of the component's dependencies. > Documentation is available for all [built-in](./built-in) and [custom](./#custom-components) Harper components. @@ -54,7 +54,7 @@ Then, within `config.yaml` it can be enabled and configured using: # ... ``` -Since npm allows for a [variety of dependency configurations](https:/docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: +Since npm allows for a [variety of dependency configurations](https://docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: ```json { @@ -107,11 +107,11 @@ Functionally, what makes an extension a component is the contents of `config.yam - **extensionModule** - `string` - _required_ - A path to the extension module source code. The path must resolve from the root of the extension module directory. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. If the extension is being written in something other than JavaScript (such as TypeScript), ensure that the path resolves to the built version, (i.e. `extensionModule: ./dist/index.js`) -It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since extensions are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https:/docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! +It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since extensions are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https://docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! Furthermore, what defines an extension separately from a component is that it leverages any of the [Resource Extension](#resource-extension-api) or [Protocol Extension](#protocol-extension-api) APIs. The key is in the name, **extensions are extensible**. @@ -219,13 +219,13 @@ Returns: `boolean | void | Promise` ### Protocol Extension -A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../../technical-details/reference/globals#server) global API documentation for more information). +A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../../technical-details/reference/globals#server) global API documentation for more information). #### Protocol Extension Configuration In addition to the `files`, `path`, and `root` [Resource Extension configuration](#resource-extension-configuration) options, and the `package` [Custom Component configuration](#custom-component-configuration) option, Protocol Extensions can also specify additional configuration options. Any options added to the extension configuration (in `config.yaml`), will be passed through to the `options` object of the `start()` and `startOnMainThread()` methods. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: ```yaml '@harperdb/nextjs': diff --git a/site/versioned_docs/version-4.5/developers/miscellaneous/google-data-studio.md b/site/versioned_docs/version-4.5/developers/miscellaneous/google-data-studio.md index 47fd80bd..53236fea 100644 --- a/site/versioned_docs/version-4.5/developers/miscellaneous/google-data-studio.md +++ b/site/versioned_docs/version-4.5/developers/miscellaneous/google-data-studio.md @@ -4,9 +4,9 @@ title: Google Data Studio # Google Data Studio -[Google Data Studio](https:/datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. +[Google Data Studio](https://datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. -The Harper Google Data Studio Connector is subject to our [Terms of Use](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https:/harperdb.io/legal/privacy-policy/). +The Harper Google Data Studio Connector is subject to our [Terms of Use](https://harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https://harperdb.io/legal/privacy-policy/). ## Requirements @@ -14,13 +14,13 @@ The Harper database must be accessible through the Internet in order for Google ## Get Started -Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https:/datastudio.google.com/u/0/datasources/create). +Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https://datastudio.google.com/u/0/datasources/create). -1. Log in to https:/datastudio.google.com/. -1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https:/datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). +1. Log in to [https://datastudio.google.com/](https://datastudio.google.com/). +1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https://datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). 1. Authorize the connector to access other servers on your behalf (this allows the connector to contact your database). 1. Enter the Web URL to access your database (preferably with HTTPS), as well as the Basic Auth key you use to access the database. Just include the key, not the word “Basic” at the start of it. -1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:/ will do the same thing, if you prefer. +1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:// will do the same thing, if you prefer. 1. Check the box for “Allow Bad Certs” if your Harper instance does not have a valid SSL certificate. [Harper Cloud](../../deployments/harper-cloud/) always has valid certificates, and so will never require this to be checked. Instances you set up yourself may require this, if you are using self-signed certs. If you are using [Harper Cloud](../../deployments/harper-cloud/) or another instance you know should always have valid SSL certificates, do not check this box. 1. Choose your Query Type. This determines what information the configuration will ask for after pressing the Next button. * Table will ask you for a Schema and a Table to return all fields of using `SELECT *`. diff --git a/site/versioned_docs/version-4.5/developers/miscellaneous/sdks.md b/site/versioned_docs/version-4.5/developers/miscellaneous/sdks.md index 13998f80..33ec0bed 100644 --- a/site/versioned_docs/version-4.5/developers/miscellaneous/sdks.md +++ b/site/versioned_docs/version-4.5/developers/miscellaneous/sdks.md @@ -9,14 +9,14 @@ description: >- | SDK/Tool | Description | Installation | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- | -| [HarperDB.NET.Client](https:/www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | -| [Websocket Client](https:/www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | -| [Gatsby HarperDB Source](https:/www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | -| [HarperDB.EntityFrameworkCore](https:/www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | -| [Python SDK](https:/pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | -| [HarperDB Flutter SDK](https:/github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | -| [React Hook](https:/www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | -| [Node Red Node](https:/flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | -| [NodeJS SDK](https:/www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | -| [HarperDB Cargo Crate](https:/crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | -| [HarperDB Go SDK](https:/github.com/HarperDB-Add-Ons/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB-Add-Ons/sdk-go` | +| [HarperDB.NET.Client](https://www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | +| [Websocket Client](https://www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | +| [Gatsby HarperDB Source](https://www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | +| [HarperDB.EntityFrameworkCore](https://www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | +| [Python SDK](https://pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | +| [HarperDB Flutter SDK](https://github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | +| [React Hook](https://www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | +| [Node Red Node](https://flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | +| [NodeJS SDK](https://www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | +| [HarperDB Cargo Crate](https://crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | +| [HarperDB Go SDK](https://github.com/HarperDB-Add-Ons/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB-Add-Ons/sdk-go` | diff --git a/site/versioned_docs/version-4.5/developers/operations-api/advanced-json-sql-examples.md b/site/versioned_docs/version-4.5/developers/operations-api/advanced-json-sql-examples.md index 61c26f47..5b7a2c8e 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/advanced-json-sql-examples.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/advanced-json-sql-examples.md @@ -84,7 +84,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo "operation": "csv_url_load", "database": "movies", "table": "movie", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" } ``` @@ -108,7 +108,7 @@ Inserts data from a hosted CSV file into the "credits" table using the 'csv_url_ "operation": "csv_url_load", "database": "movies", "table": "credits", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" } ``` diff --git a/site/versioned_docs/version-4.5/developers/operations-api/bulk-operations.md b/site/versioned_docs/version-4.5/developers/operations-api/bulk-operations.md index 836087d3..133bf9e8 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/bulk-operations.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/bulk-operations.md @@ -20,7 +20,7 @@ Ingests CSV data, provided directly in the operation as an `insert`, `update` or "database": "dev", "action": "insert", "table": "breed", - "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" + "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" } ``` @@ -82,7 +82,7 @@ Ingests CSV data, provided via URL, as an `insert`, `update` or `upsert` into th "action": "insert", "database": "dev", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.5/developers/operations-api/clustering.md b/site/versioned_docs/version-4.5/developers/operations-api/clustering.md index 05963edc..b2e614d6 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/clustering.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/clustering.md @@ -152,7 +152,7 @@ _Operation is restricted to super\_user roles only_ { "replicateByDefault": true, "replicates": true, - "url": "wss:/server-2.domain.com:9933", + "url": "wss://server-2.domain.com:9933", "name": "server-2.domain.com", "subscriptions": null, "database_sockets": [ @@ -259,7 +259,7 @@ _Operation is restricted to super\_user roles only_ { "operation": "cluster_set_routes", "routes": [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 @@ -274,7 +274,7 @@ _Operation is restricted to super\_user roles only_ { "message": "cluster routes successfully set", "set": [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 @@ -306,7 +306,7 @@ _Operation is restricted to super\_user roles only_ ```json [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 diff --git a/site/versioned_docs/version-4.5/developers/operations-api/components.md b/site/versioned_docs/version-4.5/developers/operations-api/components.md index 8d3c79b4..73a61706 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/components.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/components.md @@ -39,10 +39,10 @@ Will deploy a component using either a base64-encoded string representation of a If deploying with the `payload` option, Harper will decrypt the base64-encoded string, reconstitute the .tar file of your project folder, and extract it to the component root project directory. -If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https:/docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: +If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: ``` -https:/github.com/HarperDB/application-template#semver:v1.0.0 +https://github.com/HarperDB/application-template#semver:v1.0.0 ``` or this can be shortened to: @@ -60,16 +60,16 @@ git+ssh:/git@github.com:my-org/my-app.git#semver:v1.0.0 Or you can use a Github token: ``` -https:/@github.com/my-org/my-app#semver:v1.0.0 +https://@github.com/my-org/my-app#semver:v1.0.0 ``` Or you can use a GitLab Project Access Token: ``` -https:/my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 +https://my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 ``` -Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https:/docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node\_modules in the hdb root directory (typically `~/hdb/node_modules`). +Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https://docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node\_modules in the hdb root directory (typically `~/hdb/node_modules`). _Note: After deploying a component a restart may be required_ diff --git a/site/versioned_docs/version-4.5/developers/operations-api/custom-functions.md b/site/versioned_docs/version-4.5/developers/operations-api/custom-functions.md index 2c8e906f..a1508219 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/custom-functions.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/custom-functions.md @@ -162,7 +162,7 @@ _Operation is restricted to super_user roles only_ ## Add Custom Function Project -Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. +Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.5/developers/operations-api/index.md b/site/versioned_docs/version-4.5/developers/operations-api/index.md index 6d4c2517..5d63fb68 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/index.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/index.md @@ -7,7 +7,7 @@ title: Operations API The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling Harper. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../../deployments/configuration#operationsapi), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](../security/basic-auth) or [JWT authentication](../security/jwt-auth). For example, a request to create a table would be performed as: ```http -POST http:/my-harperdb-server:9925/ +POST https://my-harperdb-server:9925/ Authorization: Basic YourBase64EncodedInstanceUser:Pass Content-Type: application/json @@ -35,14 +35,14 @@ The operations API reference is available below and categorized by topic: * [SQL Operations](./sql-operations) * [Advanced JSON SQL Examples](./advanced-json-sql-examples) -• [Past Release API Documentation](https:/olddocs.harperdb.io) +• [Past Release API Documentation](https://olddocs.harperdb.io) ## More Examples Here is an example of using `curl` to make an operations API request: ```bash -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ diff --git a/site/versioned_docs/version-4.5/developers/operations-api/quickstart-examples.md b/site/versioned_docs/version-4.5/developers/operations-api/quickstart-examples.md index 9159efca..109d9cc8 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/quickstart-examples.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/quickstart-examples.md @@ -248,7 +248,7 @@ Let's add some more Harper doggies! We can add as many dog objects as we want in We need to populate the 'breed' table with some data so we can reference it later. For larger data sets, we recommend using our CSV upload option. -Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: https:/s3.amazonaws.com/complimentarydata/breeds.csv +Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: [https://s3.amazonaws.com/complimentarydata/breeds.csv](https://s3.amazonaws.com/complimentarydata/breeds.csv) ### Body @@ -256,7 +256,7 @@ Each header in a column will be considered as an attribute, and each row in the { "operation": "csv_url_load", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.5/developers/operations-api/utilities.md b/site/versioned_docs/version-4.5/developers/operations-api/utilities.md index 4d09f5cd..6cfec533 100644 --- a/site/versioned_docs/version-4.5/developers/operations-api/utilities.md +++ b/site/versioned_docs/version-4.5/developers/operations-api/utilities.md @@ -175,7 +175,7 @@ _Operation is restricted to super_user roles only_ * operation _(required)_ - must always be `install_node_modules` * projects _(required)_ - must ba an array of custom functions projects. -* dry_run _(optional)_ - refers to the npm --dry-run flag: [https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. +* dry_run _(optional)_ - refers to the npm --dry-run flag: [https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. ### Body ```json @@ -261,7 +261,7 @@ _Operation is restricted to super_user roles only_ "hostname": "node1", "databases": "*", "routes": null, - "url": "wss:/127.0.0.1:9925" + "url": "wss://127.0.0.1:9925" }, "componentsRoot": "/Users/hdb/components", "localStudio": { diff --git a/site/versioned_docs/version-4.5/developers/real-time.md b/site/versioned_docs/version-4.5/developers/real-time.md index 5f90e075..0e73f64d 100644 --- a/site/versioned_docs/version-4.5/developers/real-time.md +++ b/site/versioned_docs/version-4.5/developers/real-time.md @@ -86,10 +86,10 @@ Non-retained messages are generally a good choice for applications like chat, wh ### WebSockets -WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss:/server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: +WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss://server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: ```javascript -let ws = new WebSocket('wss:/server/my-resource/341'); +let ws = new WebSocket('wss://server/my-resource/341'); ws.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); @@ -134,7 +134,7 @@ export class Example extends Resource { Server Sent Events (SSE) are also supported through the REST server interface, and provide a simple and efficient mechanism for web-based applications to receive real-time updates. For consistency of push delivery, SSE connections go through the `connect()` method on resources, much like WebSockets. The primary difference is that `connect` is called without any `incomingMessages` argument, since SSE is a one-directional transport mechanism. This can be used much like WebSockets, specifying a resource URL path will connect to that resource, and by default provides a stream of messages for changes and messages for that resource. For example, you can connect to receive notification in a browser for a resource like: ```javascript -let eventSource = new EventSource('https:/server/my-resource/341', { withCredentials: true }); +let eventSource = new EventSource('https://server/my-resource/341', { withCredentials: true }); eventSource.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); diff --git a/site/versioned_docs/version-4.5/developers/replication/index.md b/site/versioned_docs/version-4.5/developers/replication/index.md index 1d16ee62..37ec2b6c 100644 --- a/site/versioned_docs/version-4.5/developers/replication/index.md +++ b/site/versioned_docs/version-4.5/developers/replication/index.md @@ -28,7 +28,7 @@ In this example, the current node is `server-one`, and it will connect to `serve replication: hostname: server-one routes: - - wss:/server-two:9933 # URL based route + - wss://server-two:9933 # URL based route - hostname: server-three # define a hostname and port port: 9933 ``` @@ -45,7 +45,7 @@ You can also use the [operations API](../operations-api/clustering) to dynamical These operations will also dynamically generating certificates as needed, if there are no existing signed certificates, or if the existing certificates are not valid for the new node. -Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https:/highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). +Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https://highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). By default, Harper will replicate all the data in all the databases. You can configure which databases are replicated, and then override this behavior on a per-table basis. For example, you can indicate which databases should be replicated by default, here indicating you want to replicate the `data` and `system` databases: diff --git a/site/versioned_docs/version-4.5/developers/rest.md b/site/versioned_docs/version-4.5/developers/rest.md index 753d1fc4..200a90f8 100644 --- a/site/versioned_docs/version-4.5/developers/rest.md +++ b/site/versioned_docs/version-4.5/developers/rest.md @@ -107,7 +107,7 @@ GET /my-resource/?property=value&property2=another-value Note that only one of the attributes needs to be indexed for this query to execute. -We can also specify different comparators such as less than and greater than queries using [FIQL](https:/datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: +We can also specify different comparators such as less than and greater than queries using [FIQL](https://datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: ```http GET /my-resource/?age=gt=20 diff --git a/site/versioned_docs/version-4.5/developers/security/basic-auth.md b/site/versioned_docs/version-4.5/developers/security/basic-auth.md index 6736f2c8..0faa7d4c 100644 --- a/site/versioned_docs/version-4.5/developers/security/basic-auth.md +++ b/site/versioned_docs/version-4.5/developers/security/basic-auth.md @@ -14,7 +14,7 @@ A header is added to each HTTP request. The header key is **“Authorization”* In the below code sample, you can see where we add the authorization header to the request. This needs to be added for each and every HTTP request for Harper. -_Note: This function uses btoa. Learn about_ [_btoa here_](https:/developer.mozilla.org/en-US/docs/Web/API/btoa)_._ +_Note: This function uses btoa. Learn about_ [_btoa here_](https://developer.mozilla.org/en-US/docs/Web/API/btoa)_._ ```javascript function callHarperDB(call_object, operation, callback){ diff --git a/site/versioned_docs/version-4.5/developers/security/certificate-management.md b/site/versioned_docs/version-4.5/developers/security/certificate-management.md index fdc8cc22..bb27577b 100644 --- a/site/versioned_docs/version-4.5/developers/security/certificate-management.md +++ b/site/versioned_docs/version-4.5/developers/security/certificate-management.md @@ -61,7 +61,7 @@ Instead of enabling HTTPS for Harper, Nginx can be used as a reverse proxy for H Install Nginx, configure Nginx to use certificates issued from your own CA or a public CA, then configure Nginx to listen for HTTPS requests and forward to Harper as HTTP requests. -[Certbot](https:/certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. +[Certbot](https://certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. ### Option: External Reverse Proxy diff --git a/site/versioned_docs/version-4.5/developers/security/configuration.md b/site/versioned_docs/version-4.5/developers/security/configuration.md index f21eb9b2..7638ef86 100644 --- a/site/versioned_docs/version-4.5/developers/security/configuration.md +++ b/site/versioned_docs/version-4.5/developers/security/configuration.md @@ -8,7 +8,7 @@ Harper was set up to require very minimal configuration to work out of the box. ## CORS -Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: +Harper allows for managing [cross-origin HTTP requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access\_control\_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: 1. Open the harperdb-config.yaml file, which can be found in \, the location you specified during install. 1. In harperdb-config.yaml there should be 2 entries under `operationsApi.network`: cors and corsAccessList. @@ -19,7 +19,7 @@ Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla 1. The `corsAccessList` will only be recognized by the system when `cors` is `true` 1. To create an access list you set `corsAccessList` to a comma-separated list of domains. - i.e. `corsAccessList` is `http:/harpersystems.dev,http:/products.harpersystems.dev` + i.e. `corsAccessList` is `https://harpersystems.dev,https://products.harpersystems.dev` 1. To clear out the access list and allow all domains: `corsAccessList` is `[null]` ## SSL diff --git a/site/versioned_docs/version-4.5/developers/security/jwt-auth.md b/site/versioned_docs/version-4.5/developers/security/jwt-auth.md index a62d2841..5dda54ed 100644 --- a/site/versioned_docs/version-4.5/developers/security/jwt-auth.md +++ b/site/versioned_docs/version-4.5/developers/security/jwt-auth.md @@ -93,4 +93,4 @@ Token timeouts are configurable in [harperdb-config.yaml](../../deployments/conf * `operationsApi.authentication.operationTokenTimeout`: Defines the length of time until the operation\_token expires (default 1d). * `operationsApi.authentication.refreshTokenTimeout`: Defines the length of time until the refresh\_token expires (default 30d). -A full list of valid values for both parameters can be found [here](https:/github.com/vercel/ms). +A full list of valid values for both parameters can be found [here](https://github.com/vercel/ms). diff --git a/site/versioned_docs/version-4.5/developers/sql-guide/date-functions.md b/site/versioned_docs/version-4.5/developers/sql-guide/date-functions.md index 4ce2c203..8503ca91 100644 --- a/site/versioned_docs/version-4.5/developers/sql-guide/date-functions.md +++ b/site/versioned_docs/version-4.5/developers/sql-guide/date-functions.md @@ -8,9 +8,9 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Date Functions -Harper utilizes [Coordinated Universal Time (UTC)](https:/en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. +Harper utilizes [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. -When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https:/en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https:/tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. +When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https://tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. ### CURRENT_DATE() @@ -121,7 +121,7 @@ AS date_diff_result" returns ### DATE_FORMAT(date, format) -Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https:/momentjs.com/docs/#/displaying/format/). +Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https://momentjs.com/docs/#/displaying/format/). ``` "SELECT DATE_FORMAT(1524412627973, 'YYYY-MM-DD HH:mm:ss') diff --git a/site/versioned_docs/version-4.5/developers/sql-guide/functions.md b/site/versioned_docs/version-4.5/developers/sql-guide/functions.md index eeebd8b4..70b9cdfe 100644 --- a/site/versioned_docs/version-4.5/developers/sql-guide/functions.md +++ b/site/versioned_docs/version-4.5/developers/sql-guide/functions.md @@ -24,7 +24,7 @@ This SQL keywords reference contains the SQL functions available in Harper. | ARRAY* | ARRAY(_expression_) | Returns a list of data as a field. | | DISTINCT_ARRAY* | DISTINCT_ARRAY(_expression_) | When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set. | -*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https:/www.harperdb.io/post/sql-queries-to-complex-objects). +*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https://www.harperdb.io/post/sql-queries-to-complex-objects). ### Conversion diff --git a/site/versioned_docs/version-4.5/developers/sql-guide/json-search.md b/site/versioned_docs/version-4.5/developers/sql-guide/json-search.md index 0727b07f..a7dddd0a 100644 --- a/site/versioned_docs/version-4.5/developers/sql-guide/json-search.md +++ b/site/versioned_docs/version-4.5/developers/sql-guide/json-search.md @@ -8,7 +8,7 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL JSON Search -Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](http:/docs.jsonata.org/overview.html) into our SQL engine. +Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH\_JSON. The SEARCH\_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](https://docs.jsonata.org/overview.html) into our SQL engine. ## Syntax @@ -174,4 +174,4 @@ As seen above we execute the same name filter against the cast array, the primar To see further SEARCH\_JSON examples in action view our Postman Collection that provides a [sample database & data with query examples](../operations-api/advanced-json-sql-examples). -To learn more about how to build expressions check out the JSONata documentation: [http:/docs.jsonata.org/overview](http:/docs.jsonata.org/overview) +To learn more about how to build expressions check out the JSONata documentation: [https://docs.jsonata.org/overview](https://docs.jsonata.org/overview) diff --git a/site/versioned_docs/version-4.5/developers/sql-guide/sql-geospatial-functions.md b/site/versioned_docs/version-4.5/developers/sql-guide/sql-geospatial-functions.md index 17ea789a..59978c1d 100644 --- a/site/versioned_docs/version-4.5/developers/sql-guide/sql-geospatial-functions.md +++ b/site/versioned_docs/version-4.5/developers/sql-guide/sql-geospatial-functions.md @@ -8,19 +8,16 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Geospatial Functions -Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](http:/geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. +Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](https://geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. -If you are new to GeoJSON you should check out the full specification here: http:/geojson.org/. There are a few important things to point out before getting started. +If you are new to GeoJSON you should check out the full specification here: [https://geojson.org/](https://geojson.org/). There are a few important things to point out before getting started. - - -1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. -2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. +1) All GeoJSON coordinates are stored in `[longitude, latitude]` format. +2) Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. 3) Note if you are using Postman for you testing. Due to limitations in the Postman client, you will need to escape quotes in your strings and your SQL will need to be passed on a single line. - In the examples contained in the left-hand navigation, database and table names may change, but all GeoJSON data will be stored in a column named geo_data. # geoArea @@ -28,14 +25,17 @@ In the examples contained in the left-hand navigation, database and table names The geoArea() function returns the area of one or more features in square meters. ### Syntax + geoArea(_geoJSON_) ### Parameters + | Parameter | Description | |-----------|---------------------------------| | geoJSON | Required. One or more features. | #### Example 1 + Calculate the area, in square meters, of a manually passed GeoJSON polygon. ``` @@ -54,6 +54,7 @@ SELECT geoArea('{ ``` #### Example 2 + Find all records that have an area less than 1 square mile (or 2589988 square meters). ``` @@ -62,18 +63,22 @@ WHERE geoArea(geo_data) < 2589988 ``` # geoLength + Takes a GeoJSON and measures its length in the specified units (default is kilometers). ## Syntax + geoLength(_geoJSON_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| geoJSON | Required. GeoJSON to measure. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| geoJSON | Required. GeoJSON to measure. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the length, in kilometers, of a manually passed GeoJSON linestring. ``` @@ -91,6 +96,7 @@ SELECT geoLength('{ ``` ### Example 2 + Find all data plus the calculated length in miles of the GeoJSON, restrict the response to only lengths less than 5 miles, and return the data in order of lengths smallest to largest. ``` @@ -99,19 +105,24 @@ FROM dev.locations WHERE geoLength(geo_data, 'miles') < 5 ORDER BY length ASC ``` + # geoDifference + Returns a new polygon with the difference of the second polygon clipped from the first polygon. ## Syntax + geoDifference(_polygon1, polygon2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|----------------------------------------------------------------------------| -| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | +| polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. | ### Example + Return a GeoJSON Polygon that removes City Park (_polygon2_) from Colorado (_polygon1_). ``` @@ -153,19 +164,23 @@ SELECT geoDifference('{ ``` # geoDistance + Calculates the distance between two points in units (default is kilometers). ## Syntax + geoDistance(_point1, point2_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Calculate the distance, in miles, between Harper’s headquarters and the Washington Monument. ``` @@ -173,6 +188,7 @@ SELECT geoDistance('[-104.979127,39.761563]', '[-77.035248,38.889475]', 'miles') ``` ### Example 2 + Find all locations that are within 40 kilometers of a given point, return that distance in miles, and sort by distance in an ascending order. ``` @@ -183,20 +199,24 @@ ORDER BY distance ASC ``` # geoNear + Determines if point1 and point2 are within a specified distance from each other, default units are kilometers. Returns a Boolean. ## Syntax + geoNear(_point1, point2, distance_[_, units_]) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------------------------------------------| -| point1 | Required. GeoJSON Point specifying the origin. | -| point2 | Required. GeoJSON Point specifying the destination. | -| distance | Required. The maximum distance in units as an integer or decimal. | -| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | +| point1 | Required. GeoJSON Point specifying the origin. | +| point2 | Required. GeoJSON Point specifying the destination. | +| distance | Required. The maximum distance in units as an integer or decimal. | +| units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. | ### Example 1 + Return all locations within 50 miles of a given point. ``` @@ -206,6 +226,7 @@ WHERE geoNear('[-104.979127,39.761563]', geo_data, 50, 'miles') ``` ### Example 2 + Return all locations within 2 degrees of the earth of a given point. (Each degree lat/long is about 69 miles [111 kilometers]). Return all data and the distance in miles, sorted by ascending distance. ``` @@ -216,18 +237,22 @@ ORDER BY distance ASC ``` # geoContains + Determines if geo2 is completely contained by geo1. Returns a Boolean. ## Syntax + geoContains(_geo1, geo2_) ## Parameters -| Parameter | Description | + +| Parameter | Description | |------------|-----------------------------------------------------------------------------------| -| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | -| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | +| geo1 | Required. Polygon or MultiPolygon GeoJSON feature. | +| geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. | ### Example 1 + Return all locations within the state of Colorado (passed as a GeoJSON string). ``` @@ -252,6 +277,7 @@ WHERE geoContains('{ ``` ### Example 2 + Return all locations which contain Harper Headquarters. ``` @@ -278,7 +304,8 @@ WHERE geoContains(geo_data, '{ ``` # geoEqual -Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https:/developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. + +Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see [https://developers.arcgis.com/documentation/spatial-references/](https://developers.arcgis.com/documentation/spatial-references/). Returns a Boolean. ## Syntax geoEqual(_geo1_, _geo2_) diff --git a/site/versioned_docs/version-4.5/getting-started/first-harper-app.md b/site/versioned_docs/version-4.5/getting-started/first-harper-app.md index 1244113f..ec7fd290 100644 --- a/site/versioned_docs/version-4.5/getting-started/first-harper-app.md +++ b/site/versioned_docs/version-4.5/getting-started/first-harper-app.md @@ -9,14 +9,14 @@ Now that you've set up Harper, let's build a simple API. Harper lets you build p Start by cloning the Harper application template: ```bash -git clone https:/github.com/HarperDB/application-template my-app +git clone https://github.com/HarperDB/application-template my-app cd my-app ``` ## Creating our first Table The core of a Harper application is the database, so let's create a database table. -A quick and expressive way to define a table is through a [GraphQL Schema](https:/graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): +A quick and expressive way to define a table is through a [GraphQL Schema](https://graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): ```graphql type Dog @table { @@ -117,7 +117,7 @@ If-None-Match: "etag-id" # browsers can automatically provide this ## Querying -Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../developers/rest). Simple queries can be crafted through [URL query parameters](https:/en.wikipedia.org/wiki/Query_string). +Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../developers/rest). Simple queries can be crafted through [URL query parameters](https://en.wikipedia.org/wiki/Query_string). In order to maintain reasonable query speed on a database as it grows in size, it is critical to select and establish the proper indexes. So, before we add the `@export` declaration to our `Dog` table and begin querying it, let's take a moment to target some table properties for indexing. We'll use `name` and `breed` as indexed table properties on our `Dog` table. All we need to do to accomplish this is tag these properties with the `@indexed` directive: diff --git a/site/versioned_docs/version-4.5/getting-started/harper-concepts.md b/site/versioned_docs/version-4.5/getting-started/harper-concepts.md index 492a81ba..5810f52e 100644 --- a/site/versioned_docs/version-4.5/getting-started/harper-concepts.md +++ b/site/versioned_docs/version-4.5/getting-started/harper-concepts.md @@ -7,12 +7,12 @@ title: Harper Concepts As you begin your journey with Harper, there are a few concepts and definitions that you should understand. ## Components -Harper components are a core Harper concept defined as flexible JavaScript based extensions of the highly extensible core Harper platform. They are executed by Harper directly and have complete access to the Harper [Global APIs](https:/docs.harperdb.io/technical-details/reference/globals) (such as Resource, databases, and tables). +Harper components are a core Harper concept defined as flexible JavaScript based extensions of the highly extensible core Harper platform. They are executed by Harper directly and have complete access to the Harper [Global APIs](https://docs.harperdb.io/technical-details/reference/globals) (such as Resource, databases, and tables). -A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](https:/docs.harperdb.io/developers/applications) is a component that uses many other components. The [application template](https:/github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as [rest](https:/docs.harperdb.io/developers/components/built-in#rest) (for automatic REST endpoint generation), [graphqlSchema](https:/docs.harperdb.io/developers/components/built-in#graphqlschema) (for table schema definitions), and many more. +A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](https://docs.harperdb.io/developers/applications) is a component that uses many other components. The [application template](https://github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as [rest](https://docs.harperdb.io/developers/components/built-in#rest) (for automatic REST endpoint generation), [graphqlSchema](https://docs.harperdb.io/developers/components/built-in#graphqlschema) (for table schema definitions), and many more. ## Applications -Applications are a subset of components that cannot be used directly and must depend on other extensions. Examples include defining schemas (using [graphqlSchema](https:/docs.harperdb.io/developers/components/built-in#graphqlschema) built-in extension), defining custom resources (using [jsResource](https:/docs.harperdb.io/developers/components/built-in#jsresource) built-in extension), hosting static files (using [static](https:/docs.harperdb.io/developers/components/built-in#static) built-in extension), enabling REST querying of resources (using [rest](https:/docs.harperdb.io/developers/components/built-in#rest) built-in extension), and running [Next.js](https:/github.com/HarperDB/nextjs), [Astro](https:/github.com/HarperDB/astro), or [Apollo](https:/github.com/HarperDB/apollo) applications through their respective extensions. +Applications are a subset of components that cannot be used directly and must depend on other extensions. Examples include defining schemas (using [graphqlSchema](https://docs.harperdb.io/developers/components/built-in#graphqlschema) built-in extension), defining custom resources (using [jsResource](https://docs.harperdb.io/developers/components/built-in#jsresource) built-in extension), hosting static files (using [static](https://docs.harperdb.io/developers/components/built-in#static) built-in extension), enabling REST querying of resources (using [rest](https://docs.harperdb.io/developers/components/built-in#rest) built-in extension), and running [Next.js](https://github.com/HarperDB/nextjs), [Astro](https://github.com/HarperDB/astro), or [Apollo](https://github.com/HarperDB/apollo) applications through their respective extensions. ## Resources Resources in Harper encompass databases, tables, and schemas that store and structure data within the system. The concept is central to Harper's data management capabilities, with custom resources being enabled by the built-in jsResource extension. Resources represent the data layer of the Harper ecosystem and provide the foundation for data operations across applications built with the platform. diff --git a/site/versioned_docs/version-4.5/getting-started/index.md b/site/versioned_docs/version-4.5/getting-started/index.md index 041d3b21..b4e6fe3d 100644 --- a/site/versioned_docs/version-4.5/getting-started/index.md +++ b/site/versioned_docs/version-4.5/getting-started/index.md @@ -8,7 +8,7 @@ If you're new to Harper, this section will guide you through the essential resou Follow the steps in this documentation to discover how Harper can simplify your backend stack, eliminate many inter-process communication delays, and achieve a more predictable and performant application experience. -For more advanced concepts in Harper, see our [blog](https:/www.harpersystems.dev/blog). +For more advanced concepts in Harper, see our [blog](https://www.harpersystems.dev/blog). ## Harper Basics
diff --git a/site/versioned_docs/version-4.5/getting-started/install-harper.md b/site/versioned_docs/version-4.5/getting-started/install-harper.md index ca9caa75..053b7c9d 100644 --- a/site/versioned_docs/version-4.5/getting-started/install-harper.md +++ b/site/versioned_docs/version-4.5/getting-started/install-harper.md @@ -7,7 +7,7 @@ title: Install Harper There are three ways to install a Harper instance: using a package manager like npm, deploying it as a Docker container, and offline installation. Below is a step-by-step tutorial for each method. ## Installing via NPM -Before you begin, ensure you have [Node.js](https:/nodejs.org/) LTS version or newer. Node.js comes with npm, which will be used to install Harper. +Before you begin, ensure you have [Node.js](https://nodejs.org/) LTS version or newer. Node.js comes with npm, which will be used to install Harper. Open your terminal or command prompt and install Harper globally by executing the command below. Installing globally allows the `harperdb` command to be accessible from anywhere on your machine, making it easier to manage multiple projects. @@ -26,7 +26,7 @@ This launches Harper as a standalone, where you can define your schemas, endpoin At this point, your local Harper instance is up and running, giving you the ability to develop and test your database applications using your favorite local development tools, including debuggers and version control systems. ## Installing via Docker -Using Docker to run Harper is an efficient way to manage a containerized instance that encapsulates all of Harper’s functionality. First, ensure that Docker is installed and running on your system. If it isn’t, download it from the [official Docker website](https:/docs.docker.com/engine/install/) and complete the installation process. +Using Docker to run Harper is an efficient way to manage a containerized instance that encapsulates all of Harper’s functionality. First, ensure that Docker is installed and running on your system. If it isn’t, download it from the [official Docker website](https://docs.docker.com/engine/install/) and complete the installation process. Next, open your terminal and pull the latest Harper image by running the following command: @@ -43,7 +43,7 @@ docker run -d -p 9925:9925 harperdb/harperdb In this command, the `-d` flag runs the container in detached mode, allowing it to operate in the background, and the `-p 9925:9925` flag maps port 9925 on your local machine to port 9925 within the container, which is Harper’s default port. This port mapping lets you interact with the Harper instance directly from your local environment. ### How to Use this Image -[Harper configuration settings⁠](https:/harperdb.io/docs/reference/configuration-file/) can be passed as Docker run environment variables. If no environment variables are provided, Harper will operate with default configuration settings, such as: +[Harper configuration settings⁠](https://harperdb.io/docs/reference/configuration-file/) can be passed as Docker run environment variables. If no environment variables are provided, Harper will operate with default configuration settings, such as: - ROOTPATH=/home/harperdb/hdb - OPERATIONSAPI_NETWORK_PORT=9925 - HDB_ADMIN_USERNAME=HDB_ADMIN @@ -120,7 +120,7 @@ docker logs Once verified, you can access your Harper instance by opening your web browser and navigating to http:/localhost:9925 (or the appropriate port based on your configuration). ### Raw binary installation -There's a different way to install Harper. You can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM). Click [this link](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) to download and install the package. Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: +There's a different way to install Harper. You can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM). Click [this link](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) to download and install the package. Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: ```bash npm install -g harperdb-X.X.X.tgz harperdb install diff --git a/site/versioned_docs/version-4.5/getting-started/what-is-harper.md b/site/versioned_docs/version-4.5/getting-started/what-is-harper.md index 4b9113ad..23ac3fb4 100644 --- a/site/versioned_docs/version-4.5/getting-started/what-is-harper.md +++ b/site/versioned_docs/version-4.5/getting-started/what-is-harper.md @@ -5,7 +5,7 @@ title: What is Harper # What is Harper :::info -[Connect with our team!](https:/www.harpersystems.dev/contact) +[Connect with our team!](https://www.harpersystems.dev/contact) ::: ## What is Harper? Performance, Simplicity, and Scale. @@ -24,7 +24,7 @@ What we realized is that networking systems together in this way is inefficient ## Build With Harper -Start by running Harper locally with [npm](https:/www.npmjs.com/package/harperdb) or [Docker](https:/hub.docker.com/r/harperdb/harperdb). +Start by running Harper locally with [npm](https://www.npmjs.com/package/harperdb) or [Docker](https://hub.docker.com/r/harperdb/harperdb). Since technology tends to be built around the storage, processing, and transfer of data, start by [defining your schema](./first-harper-app#creating-our-first-table) with the `schema.graphql` file in the root of the application directory. @@ -38,7 +38,7 @@ If you would like to jump into the most advanced capabilities, learn about [comp :::warning -Need help? Please don’t hesitate to [reach out](https:/www.harpersystems.dev/contact). +Need help? Please don’t hesitate to [reach out](https://www.harpersystems.dev/contact). ::: ## Popular Use Cases @@ -47,7 +47,7 @@ With so much functionality built in, the use cases span nearly all application s ### Online Catalogs & Content Delivery -For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https:/github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https:/www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. +For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https://github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https://www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. ### Data Delivery Networks @@ -57,4 +57,4 @@ For use cases like real-time sports updates, flight tracking, and zero-day softw Capturing, storing, and processing real-time data streams from client and IoT systems typically requires a stack of technology. Harper’s selective data replication and self-healing connections make for an ideal multi-tier system where edge and cloud systems both run Harper, making everything more performant. -[We’re happy](https:/www.harpersystems.dev/contact) to walk you through how to do this. \ No newline at end of file +[We’re happy](https://www.harpersystems.dev/contact) to walk you through how to do this. diff --git a/site/versioned_docs/version-4.5/index.md b/site/versioned_docs/version-4.5/index.md index 98e5f5d0..fb357f64 100644 --- a/site/versioned_docs/version-4.5/index.md +++ b/site/versioned_docs/version-4.5/index.md @@ -5,7 +5,7 @@ title: Harper Docs # Harper Docs :::info -[Connect with our team!](https:/www.harpersystems.dev/contact) +[Connect with our team!](https://www.harpersystems.dev/contact) ::: Welcome to the Harper Documentation! Here, you'll find all things Harper, and everything you need to get started, troubleshoot issues, and make the most of our platform. diff --git a/site/versioned_docs/version-4.5/technical-details/reference/blob.md b/site/versioned_docs/version-4.5/technical-details/reference/blob.md index 12b8b28e..e3b55918 100644 --- a/site/versioned_docs/version-4.5/technical-details/reference/blob.md +++ b/site/versioned_docs/version-4.5/technical-details/reference/blob.md @@ -59,7 +59,7 @@ await blob.save(MyTable); await MyTable.put({ id: 'my-record', data: blob }); ``` -Note that this means that blobs are _not_ atomic or [ACID](https:/en.wikipedia.org/wiki/ACID) compliant; streaming functionality achieves the opposite behavior of ACID/atomic writes that would prevent access to data as it is being written. +Note that this means that blobs are _not_ atomic or [ACID](https://en.wikipedia.org/wiki/ACID) compliant; streaming functionality achieves the opposite behavior of ACID/atomic writes that would prevent access to data as it is being written. ### Error Handling Because blobs can be streamed and referenced prior to their completion, there is a chance that an error or interruption could occur while streaming data to the blob (after the record is committed). We can create an error handler for the blob to handle the case of an interrupted blob: diff --git a/site/versioned_docs/version-4.5/technical-details/reference/content-types.md b/site/versioned_docs/version-4.5/technical-details/reference/content-types.md index 735b268d..90ab593a 100644 --- a/site/versioned_docs/version-4.5/technical-details/reference/content-types.md +++ b/site/versioned_docs/version-4.5/technical-details/reference/content-types.md @@ -26,4 +26,4 @@ MessagePack is another efficient binary format like CBOR, with support for all H Comma-separated values is an easy to use and understand format that can be readily imported into spreadsheets or used for data processing. CSV lacks hierarchical structure for most data types, and shouldn't be used for frequent/production use, but when you need it, it is available. -In addition, with the REST interface, you can use file-style extensions to indicate an encoding like http:/host/path.csv to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. \ No newline at end of file +In addition, with the REST interface, you can use file-style extensions to indicate an encoding like [https://host/path.csv](https://host/path.csv) to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. diff --git a/site/versioned_docs/version-4.5/technical-details/reference/data-types.md b/site/versioned_docs/version-4.5/technical-details/reference/data-types.md index a066c856..73347b69 100644 --- a/site/versioned_docs/version-4.5/technical-details/reference/data-types.md +++ b/site/versioned_docs/version-4.5/technical-details/reference/data-types.md @@ -20,7 +20,7 @@ Strings, or text, are a sequence of any unicode characters and are internally en Numbers can be stored as signed integers up to a 1000 bits of precision (about 300 digits) or floating point with 64-bit floating point precision, and numbers are automatically stored using the most optimal type. With JSON, numbers are automatically parsed and stored in the most appropriate format. Custom components and applications may use BigInt numbers to store/access integers that are larger than 53-bit. The following GraphQL schema type name are supported: -* `Float` - Any number that can be represented with [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision\_floating-point\_format) ("double") +* `Float` - Any number that can be represented with [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision\_floating-point\_format) ("double") * `Int` - Any integer between from -2147483648 to 2147483647 * `Long` - Any integer between from -9007199254740992 to 9007199254740992 * `BigInt` - Any integer (negative or positive) with less than 300 digits diff --git a/site/versioned_docs/version-4.5/technical-details/reference/dynamic-schema.md b/site/versioned_docs/version-4.5/technical-details/reference/dynamic-schema.md index 233e1e73..1e8695be 100644 --- a/site/versioned_docs/version-4.5/technical-details/reference/dynamic-schema.md +++ b/site/versioned_docs/version-4.5/technical-details/reference/dynamic-schema.md @@ -31,8 +31,8 @@ With tables that are using dynamic schemas, additional attributes are reflexivel Harper automatically creates two audit attributes used on each record if the table is created without a schema. -* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. -* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. +* `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. +* `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. ### Dynamic Schema Example diff --git a/site/versioned_docs/version-4.5/technical-details/reference/globals.md b/site/versioned_docs/version-4.5/technical-details/reference/globals.md index 848e2289..ac618756 100644 --- a/site/versioned_docs/version-4.5/technical-details/reference/globals.md +++ b/site/versioned_docs/version-4.5/technical-details/reference/globals.md @@ -93,42 +93,46 @@ The HTTP request listener to be added to the middleware chain. To continue chain ### `Request` and `Response` -The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https:/developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resource) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: +The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resource) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https://developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: #### `Request` A `Request` object is passed to the direct static REST handlers, and preserved as the context for instance methods, and has the following properties: -- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `http:/example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. + +- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `https://example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. - `method` - This is the HTTP method of the request. This is a string like `GET`, `POST`, `PUT`, `DELETE`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. - `pathname` - This is the path portion of the URL, without the query string. For example, if the URL is `/path?query=string`, the `pathname` will be `/path`. - `protocol` - This is the protocol of the request, like `http` or `https`. - `data` - This is the deserialized body of the request (based on the type of data specified by `Content-Type` header). - `ip` - This is the remote IP address of the client that made the request (or the remote IP address of the last proxy to connect to Harper). - `host` - This is the host of the request, like `example.com`. - `sendEarlyHints(link: string, headers?: object): void` - This method sends an early hints response to the client, prior to actually returning a response. This is useful for sending a link header to the client to indicate that another resource should be preloaded. The `headers` argument can be used to send additional headers with the early hints response, in addition to the `link`. This is generally most helpful in a cache resolution function, where you can send hints _if_ the data is not in the cache and is resolving from an origin: + ```javascript class Origin { - async get(request) { - / if we are fetching data from origin, send early hints - this.getContext().requestContext.sendEarlyHints(''); - let response = await fetch(request); - ... - } + async get(request) { + / if we are fetching data from origin, send early hints + this.getContext().requestContext.sendEarlyHints(''); + let response = await fetch(request); + ... + } } Cache.sourcedFrom(Origin); ``` + - `login(username, password): Promise` - This method can be called to start an authenticated session. The login will authenticate the user by username and password. If the authentication was successful, a session will be created and a cookie will be set on the response header that references the session. All subsequent requests from the client that sends the cookie in requests will be authenticated as the user that logged in and the session record will be attached to the request. This method returns a promise that resolves when the login is successful, and rejects if the login is unsuccessful. - `session` - This is the session object that is associated with current cookie-maintained session. This object is used to store session data for the current session. This is `Table` record instance, and can be updated by calling `request.session.update({ key: value })` or session can be retrieved with `request.session.get()`. If the cookie has not been set yet, a cookie will be set the first time a session is updated or a login occurs. -- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https:/nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. -- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https:/nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. +- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. +- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https://nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. #### `Response` REST methods can directly return data that is serialized and returned to users, or it can return a `Response` object (or a promise to a `Response`), or it can return a `Response`-like object with the following properties (or again, a promise to it): + - `status` - This is the HTTP status code of the response. This is a number like `200`, `404`, `500`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. -- `data` - This is the data to be returned of the response. This will be serialized using Harper's content negotiation. -- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. +- `data` - This is the data to be returned of the response. This will be serialized using Harper's content negotiation. +- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). #### `HttpOptions` @@ -136,13 +140,13 @@ Type: `Object` Properties: -* `runFirst` - _optional_ - `boolean` - Add listener to the front of the middleware chain. Defaults to `false` -* `port` - _optional_ - `number` - Specify which HTTP server middleware chain to add the listener to. Defaults to the Harper system default HTTP port configured by `harperdb-config.yaml`, generally `9926` -* `securePort` - _optional_ - `number` - Specify which HTTPS server middleware chain to add the listener to. Defaults to the Harper system default HTTP secure port configured by `harperdb-config.yaml`, generally `9927` +- `runFirst` - _optional_ - `boolean` - Add listener to the front of the middleware chain. Defaults to `false` +- `port` - _optional_ - `number` - Specify which HTTP server middleware chain to add the listener to. Defaults to the Harper system default HTTP port configured by `harperdb-config.yaml`, generally `9926` +- `securePort` - _optional_ - `number` - Specify which HTTPS server middleware chain to add the listener to. Defaults to the Harper system default HTTP secure port configured by `harperdb-config.yaml`, generally `9927` #### `HttpServer` -Node.js [`http.Server`](https:/nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https:/nodejs.org/api/https.html#class-httpsserver) instance. +Node.js [`http.Server`](https://nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https://nodejs.org/api/https.html#class-httpsserver) instance. ### `server.socket(listener: ConnectionListener, options: SocketOptions): SocketServer` @@ -152,16 +156,16 @@ Only one socket server will be created. A `securePort` takes precedence. #### `ConnectionListener` -Node.js socket server connection listener as documented in [`net.createServer`](https:/nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https:/nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) +Node.js socket server connection listener as documented in [`net.createServer`](https://nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https://nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) #### `SocketOptions` -* `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) instance. -* `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https://nodejs.org/api/net.html#class-netserver) instance. +- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. #### `SocketServer` -Node.js [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +Node.js [`net.Server`](https://nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. ### `server.ws(listener: WsListener, options: WsOptions): HttpServer[]` @@ -171,15 +175,15 @@ Example: ```js server.ws((ws, request, chainCompletion) => { - chainCompletion.then(() => { - ws.on('error', console.error); + chainCompletion.then(() => { + ws.on('error', console.error); - ws.on('message', function message(data) { - console.log('received: %s', data); - }); + ws.on('message', function message(data) { + console.log('received: %s', data); + }); - ws.send('something'); - }); + ws.send('something'); + }); }); ``` @@ -189,8 +193,9 @@ Type: `(ws: WebSocket, request: Request, chainCompletion: ChainCompletion, next: The WebSocket connection listener. -* The `ws` argument is the [WebSocket](https:/github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. -* The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https:/github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. +- The `ws` argument is the [WebSocket](https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. +- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https://github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. + * The `chainCompletion` argument is a `Promise` of the associated HTTP server's request chain. Awaiting this promise enables the user to ensure the HTTP request has finished being processed before operating on the WebSocket. * The `next` argument is similar to that of other `next` arguments in Harper's server middlewares. To continue execution of the WebSocket connection listener middleware chain, pass all of the other arguments to this one such as: `next(ws, request, chainCompletion)` @@ -207,13 +212,13 @@ Properties: ### `server.upgrade(listener: UpgradeListener, options: UpgradeOptions): void` -Add a listener to the HTTP Server [upgrade](https:/nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](./globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. +Add a listener to the HTTP Server [upgrade](https://nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](./globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. This method should be used to delegate HTTP upgrade events to an external WebSocket server instance. Example: -> This example is from the Harper Next.js component. See the complete source code [here](https:/github.com/HarperDB/nextjs/blob/main/extension.js) +> This example is from the Harper Next.js component. See the complete source code [here](https://github.com/HarperDB/nextjs/blob/main/extension.js) ```js server.upgrade( @@ -236,7 +241,7 @@ server.upgrade( Type: `(request, socket, head, next) => void` -The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https:/nodejs.org/api/http.html#event-upgrade_1) event. +The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https://nodejs.org/api/http.html#event-upgrade_1) event. #### `UpgradeOptions` diff --git a/site/versioned_docs/version-4.5/technical-details/reference/graphql.md b/site/versioned_docs/version-4.5/technical-details/reference/graphql.md index e9753307..bcff1a96 100644 --- a/site/versioned_docs/version-4.5/technical-details/reference/graphql.md +++ b/site/versioned_docs/version-4.5/technical-details/reference/graphql.md @@ -10,7 +10,7 @@ Get started by setting `graphql: true` in `config.yaml`. This automatically enables a `/graphql` endpoint that can be used for GraphQL queries. -> Harper's GraphQL component is inspired by the [GraphQL Over HTTP](https:/graphql.github.io/graphql-over-http/draft/#) specification; however, it does not fully implement neither that specification nor the [GraphQL](https:/spec.graphql.org/) specification. +> Harper's GraphQL component is inspired by the [GraphQL Over HTTP](https://graphql.github.io/graphql-over-http/draft/#) specification; however, it does not fully implement neither that specification nor the [GraphQL](https://spec.graphql.org/) specification. Queries can either be `GET` or `POST` requests, and both follow essentially the same request format. `GET` requests must use search parameters, and `POST` requests use the request body. @@ -45,7 +45,7 @@ Accept: application/graphql-response+json > Tip: For the best user experience, include the `Accept: application/graphql-response+json` header in your request. This provides better status codes for errors. -The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https:/graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resource#query) for more complex queries. +The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https://graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resource#query) for more complex queries. Unlike REST queries, GraphQL queries can specify multiple resources simultaneously: @@ -78,8 +78,8 @@ GET /Owner/?select(id,name,occupation) There are three request parameters for GraphQL queries: `query`, `operationName`, and `variables` 1. `query` - _Required_ - The string representation of the GraphQL document. - 1. Limited to [Executable Definitions](https:/spec.graphql.org/October2021/#executabledefinition) only. - 1. i.e. GraphQL [`query`](https:/graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https:/graphql.org/learn/queries/#fragments). + 1. Limited to [Executable Definitions](https://spec.graphql.org/October2021/#executabledefinition) only. + 1. i.e. GraphQL [`query`](https://graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https://graphql.org/learn/queries/#fragments). 1. If an shorthand, unnamed, or singular named query is provided, they will be executed by default. Otherwise, if there are multiple queries, the `operationName` parameter must be used. 1. `operationName` - _Optional_ - The name of the query operation to execute if multiple queries are provided in the `query` parameter 1. `variables` - _Optional_ - A map of variable values to be used for the specified query diff --git a/site/versioned_docs/version-4.5/technical-details/reference/resource.md b/site/versioned_docs/version-4.5/technical-details/reference/resource.md index 2d3b781f..b69a2e49 100644 --- a/site/versioned_docs/version-4.5/technical-details/reference/resource.md +++ b/site/versioned_docs/version-4.5/technical-details/reference/resource.md @@ -79,7 +79,7 @@ export class MyTable extends tables.MyTable { Make sure that if are extending and `export`ing your table with this class, that you remove the `@export` directive in your schema, so that you aren't exporting the same table/class name twice. -All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. +All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. ## Global Variables diff --git a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.0.0.md b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.0.0.md index 49770307..d2aa32b2 100644 --- a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.0.0.md +++ b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.0.0.md @@ -8,7 +8,7 @@ sidebar_position: 59999 **Networking & Data Replication (Clustering)** -The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https:/nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. +The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https://nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. * CORE-1464, CORE-1470, : Remove SocketCluster dependencies and all code related to them. * CORE-1465, CORE-1485, CORE-1537, CORE-1538, CORE-1558, CORE-1583, CORE_1665, CORE-1710, CORE-1801, CORE-1865 :Add nats-`server` code as dependency, on install of HarperDB download nats-`server` is possible else fallback to building from source code. * CORE-1593, CORE-1761: Add `nats.js` as project dependency. diff --git a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.1.0.md b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.1.0.md index eaa825a8..16b6aa3a 100644 --- a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.1.0.md +++ b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.1.0.md @@ -19,7 +19,7 @@ Logging has been revamped and condensed into one `hdb.log` file. See [logginglog A new operation called `cluster_network` was added, this operation will ping the cluster and return a list of enmeshed nodes. -Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https:/docs.harperdb.io/docs/v/4.1/custom-functions/host-static). +Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https://docs.harperdb.io/docs/v/4.1/custom-functions/host-static). Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](../../../developers/operations-api/bulk-operations#import-from-s3). diff --git a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.3.0.md b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.3.0.md index f6aa2046..13adfa8e 100644 --- a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.3.0.md +++ b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.3.0.md @@ -76,7 +76,7 @@ HarperDB now supports `BigInt` attributes/values with integers (with full precis #### Local Studio Upgrade -HarperDB has upgraded the local studio to match the same version that is offered on http:/studio.harperdb.io. The local studio now has the full robust feature set of the online version. +HarperDB has upgraded the local studio to match the same version that is offered on [https://studio.harperdb.io](https://studio.harperdb.io). The local studio now has the full robust feature set of the online version. ### MQTT @@ -122,4 +122,4 @@ In addition to storage improvements, HarperDB now includes functionality for [co Compression is now enabled by default for all records over 4KB. -To learn more on how to configure compression visit [configuration](https:/docs.harperdb.io/docs/v/4.3/deployments/configuration). +To learn more on how to configure compression visit [configuration](https://docs.harperdb.io/docs/v/4.3/deployments/configuration). diff --git a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.4.0.md b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.4.0.md index f4e0da94..7e06f7cf 100644 --- a/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.4.0.md +++ b/site/versioned_docs/version-4.5/technical-details/release-notes/v4-tucker/4.4.0.md @@ -25,7 +25,7 @@ Certain operations can now be replicated across the cluster, including the deplo ### Computed Properties -Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation ](../../../../developers/applications/defining-schemas), [Resource API](../../reference/resource), and our blog post on [computed properties](https:/www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. +Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation](../../../../developers/applications/defining-schemas), [Resource API](../../reference/resource), and our blog post on [computed properties](https://www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. ### Custom Indexing diff --git a/site/versioned_docs/version-4.6/administration/administration.md b/site/versioned_docs/version-4.6/administration/administration.md index 0c2c9d99..121a956c 100644 --- a/site/versioned_docs/version-4.6/administration/administration.md +++ b/site/versioned_docs/version-4.6/administration/administration.md @@ -25,7 +25,7 @@ Harper provides robust capabilities for analytics and observability to facilitat - Analytics provides statistics on usage, request counts, load, memory usage with historical tracking. The analytics data can be [accessed through querying](../technical-details/reference/analytics). - A large variety of real-time statistics about load, system information, database metrics, thread usage can be retrieved through the [`system_information` API](../developers/operations-api/system-operations). - Information about the current cluster configuration and status can be found in the [cluster APIs](../developers/operations-api/clustering). -- Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https:/github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. +- Analytics and system information can easily be exported to Prometheus with our [Prometheus exporter component](https://github.com/HarperDB-Add-Ons/prometheus_exporter), making it easy visualize and monitor Harper with Graphana. ### Replication Transaction Logging diff --git a/site/versioned_docs/version-4.6/administration/cloning.md b/site/versioned_docs/version-4.6/administration/cloning.md index dcea866a..4669775b 100644 --- a/site/versioned_docs/version-4.6/administration/cloning.md +++ b/site/versioned_docs/version-4.6/administration/cloning.md @@ -26,7 +26,7 @@ To start clone run `harperdb` in the CLI with either of the following variables For example: ``` -HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb +HDB_LEADER_URL=https://node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-domain.com HDB_LEADER_USERNAME=... HDB_LEADER_PASSWORD=... harperdb ``` #### Command line variables @@ -39,7 +39,7 @@ HDB_LEADER_URL=https:/node-1.my-domain.com:9925 REPLICATION_HOSTNAME=node-1.my-d For example: ``` -harperdb --HDB_LEADER_URL https:/node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... +harperdb --HDB_LEADER_URL https://node-1.my-domain.com:9925 --REPLICATION_HOSTNAME node-1.my-domain.com --HDB_LEADER_USERNAME ... --HDB_LEADER_PASSWORD ... ``` Each time clone is run it will set a value `cloned: true` in `harperdb-config.yaml`. This value will prevent clone from @@ -143,7 +143,7 @@ docker run -d \ -v :/home/harperdb/hdb \ -e HDB_LEADER_PASSWORD=password \ -e HDB_LEADER_USERNAME=admin \ - -e HDB_LEADER_URL=https:/1.123.45.6:9925 \ + -e HDB_LEADER_URL=https://1.123.45.6:9925 \ -e REPLICATION_HOSTNAME=1.123.45.6 \ -p 9925:9925 \ -p 9926:9926 \ diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/create-account.md b/site/versioned_docs/version-4.6/administration/harper-studio/create-account.md index 73eb9d97..21752357 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/create-account.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/create-account.md @@ -4,7 +4,7 @@ title: Create a Studio Account # Create a Studio Account -Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). +Start at the [Harper Studio sign up page](https://studio.harperdb.io/sign-up). 1. Provide the following information: - First Name @@ -12,7 +12,7 @@ Start at the [Harper Studio sign up page](https:/studio.harperdb.io/sign-up). - Email Address - Subdomain - _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com._ + _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com)._ - Coupon Code (optional) diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/enable-mixed-content.md b/site/versioned_docs/version-4.6/administration/harper-studio/enable-mixed-content.md index 40d9877d..67747d71 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/enable-mixed-content.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/enable-mixed-content.md @@ -6,4 +6,4 @@ title: Enable Mixed Content Enabling mixed content is required in cases where you would like to connect the Harper Studio to Harper Instances via HTTP. This should not be used for production systems, but may be convenient for development and testing purposes. Doing so will allow your browser to reach HTTP traffic, which is considered insecure, through an HTTPS site like the Studio. -A comprehensive guide is provided by Adobe [here](https:/experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). +A comprehensive guide is provided by Adobe [here](https://experienceleague.adobe.com/docs/target/using/experiences/vec/troubleshoot-composer/mixed-content.html). diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/index.md b/site/versioned_docs/version-4.6/administration/harper-studio/index.md index 011c5923..75f4ccfb 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/index.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/index.md @@ -6,9 +6,9 @@ title: Harper Studio Harper Studio is the web-based GUI for Harper. Studio enables you to administer, navigate, and monitor all of your Harper instances in a simple, user-friendly interface without any knowledge of the underlying Harper API. It’s free to sign up, get started today! -[Sign up for free!](https:/studio.harperdb.io/sign-up) +[Sign up for free!](https://studio.harperdb.io/sign-up) -Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https:/studio.harperdb.io). +Harper now includes a simplified local Studio that is packaged with all Harper installations and served directly from the instance. It can be enabled in the [configuration file](../../deployments/configuration#localstudio). This section is dedicated to the hosted Studio accessed at [studio.harperdb.io](https://studio.harperdb.io). --- diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/instance-configuration.md b/site/versioned_docs/version-4.6/administration/harper-studio/instance-configuration.md index 1c3dd2d5..06a6eb89 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/instance-configuration.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/instance-configuration.md @@ -8,7 +8,7 @@ Harper instance configuration can be viewed and managed directly through the Har All instance configuration is handled through the **config** page of the Harper Studio, accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. @@ -62,7 +62,7 @@ Note: For Harper Cloud instances, upgrading RAM may add additional CPUs to your 1. Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -_Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new._ +_Note, if Harper Cloud instance reprovisioning takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new)._ ## Update Instance Storage @@ -79,7 +79,7 @@ Note: Instance storage can only be upgraded once every 6 hours. 1. The instance will shut down and begin reprovisioning itself. The instance will not be available during this time. You will be returned to the instance dashboard and the instance status will show UPDATING INSTANCE. 1. Once your instance upgrade is complete, it will appear on the instance dashboard as status OK with your newly selected instance size. -_Note, if this process takes longer than 20 minutes, please submit a support ticket here: https:/harperdbhelp.zendesk.com/hc/en-us/requests/new._ +_Note, if this process takes longer than 20 minutes, please submit a support ticket here: [https://harperdbhelp.zendesk.com/hc/en-us/requests/new](https://harperdbhelp.zendesk.com/hc/en-us/requests/new)._ ## Remove Instance diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/instance-metrics.md b/site/versioned_docs/version-4.6/administration/harper-studio/instance-metrics.md index eae954f1..e9b48939 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/instance-metrics.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/instance-metrics.md @@ -6,7 +6,7 @@ title: Instance Metrics The Harper Studio display instance status and metrics on the instance status page, which can be accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **status** in the instance control bar. diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/instances.md b/site/versioned_docs/version-4.6/administration/harper-studio/instances.md index f79f577f..06ee6c9d 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/instances.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/instances.md @@ -14,11 +14,11 @@ All interactions between the Studio and your instances take place directly from ## Organization Instance List -A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. +A summary view of all instances within an organization can be viewed by clicking on the appropriate organization from the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. Each instance gets their own card. Harper Cloud and Enterprise instances are listed together. ## Create a New Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select your desired Instance Type. @@ -26,7 +26,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Fill out Instance Info. 1. Enter Instance Name - _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com. The Instance URL will be previewed below._ + _This will be used to build your instance URL. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com). The Instance URL will be previewed below._ 1. Enter Instance Username @@ -52,13 +52,13 @@ A summary view of all instances within an organization can be viewed by clicking 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. Your Harper Cloud instance will be provisioned in the background. Provisioning typically takes 5-15 minutes. You will receive an email notification when your instance is ready. ## Register Enterprise Instance -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization for the instance to be created under. 1. Click the **Create New Harper Cloud Instance + Register Enterprise Instance** card. 1. Select **Register Enterprise Instance**. @@ -95,7 +95,7 @@ A summary view of all instances within an organization can be viewed by clicking 1. Click **Confirm Instance Details** to move to the next page. 1. Review your Instance Details, if there is an error, use the back button to correct it. - 1. Review the [Privacy Policy](https:/harperdb.io/legal/privacy-policy/) and [Terms of Service](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. + 1. Review the [Privacy Policy](https://harperdb.io/legal/privacy-policy/) and [Terms of Service](https://harperdb.io/legal/harperdb-cloud-terms-of-service/), if you agree, click the **I agree** radio button to confirm. 1. Click **Add Instance**. 1. The Harper Studio will register your instance and restart it for the registration to take effect. Your instance will be immediately available after this is complete. @@ -108,7 +108,7 @@ Instance deletion has two different behaviors depending on the instance type. An instance can be deleted as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the trash can icon. 1. Enter the instance name into the text box. @@ -125,14 +125,14 @@ Harper instances can be resized on the [Instance Configuration](./instance-confi The Studio enables users to log in and out of different database users from the instance control panel. To log out of an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card and click the lock icon. 1. You will immediately be logged out of the instance. To log in to an instance: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Identify the proper instance card, it will have an unlocked icon and a status reading PLEASE LOG IN, and click the center of the card. 1. Enter the database username. diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/login-password-reset.md b/site/versioned_docs/version-4.6/administration/harper-studio/login-password-reset.md index 96f40020..199d38ce 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/login-password-reset.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/login-password-reset.md @@ -8,7 +8,7 @@ title: Login and Password Reset To log into your existing Harper Studio account: -1. Navigate to the [Harper Studio](https:/studio.harperdb.io/). +1. Navigate to the [Harper Studio](https://studio.harperdb.io/). 1. Enter your email address. 1. Enter your password. 1. Click **sign in**. diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/manage-applications.md b/site/versioned_docs/version-4.6/administration/harper-studio/manage-applications.md index 370194ce..854b94b3 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/manage-applications.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/manage-applications.md @@ -35,14 +35,14 @@ The Applications editor stores unsaved changes in cache. This means that occasio Accessing your application endpoints varies with which type of endpoint you're creating. All endpoints, regardless of type, will be accessed via the [Harper HTTP port found in the Harper configuration file](../../deployments/configuration#http). The default port is `9926`, but you can verify what your instances is set to by navigating to the [instance config page](./instance-configuration) and examining the read only JSON version of your instance's config file looking specifically for either the `http: port: 9926` or `http: securePort: 9926` configs. If `port` is set, you will access your endpoints via `http` and if `securePort` is set, you will access your endpoints via `https`. -Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https:/localhost:9926`. +Below is a breakdown of how to access each type of endpoint. In these examples, we will use a locally hosted instance with `securePort` set to `9926`: `https://localhost:9926`. - **Standard REST Endpoints**\ - Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https:/localhost:9926/Dog/1`. + Standard REST endpoints are defined via the `@export` directive to tables in your schema definition. You can read more about these in the [Adding an Endpoint section of the Applications documentation](../../developers/applications/#adding-an-endpoint). Here, if we are looking to access a record with ID `1` from table `Dog` on our instance, [per the REST documentation](../../developers/rest), we could send a `GET` (or since this is a GET, we could post the URL in our browser) to `https://localhost:9926/Dog/1`. - **Augmented REST Endpoints**\ - Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https:/localhost:9926/DogWithHumanAge/1`. + Harper Applications enable you to write [Custom Functionality with JavaScript](../../developers/applications/#custom-functionality-with-javascript) for your resources. Accessing these endpoints is identical to accessing the standard REST endpoints above, though you may have defined custom behavior in each function. Taking the example from the [Applications documentation](../../developers/applications/#custom-functionality-with-javascript), if we are looking to access the `DogWithHumanAge` example, we could send the GET to `https://localhost:9926/DogWithHumanAge/1`. - **Fastify Routes**\ - If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https:/github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https:/localhost/application-template/getAll`. + If you need more functionality than the REST applications can provide, you can define your own custom endpoints using [Fastify Routes](../../developers/applications/#define-fastify-routes). The paths to these routes are defined via the application `config.yaml` file. You can read more about how you can customize the configuration options in the [Define Fastify Routes documentation](../../developers/applications/define-routes). By default, routes are accessed via the following pattern: `[Instance URL]:[HTTP Port]/[Project Name]/[Route URL]`. Using the example from the [Harper Application Template](https://github.com/HarperDB/application-template/), where we've named our project `application-template`, we would access the `getAll` route at `https://localhost/application-template/getAll`. ## Creating a New Application diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/manage-instance-users.md b/site/versioned_docs/version-4.6/administration/harper-studio/manage-instance-users.md index 82b06734..1ba13518 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/manage-instance-users.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/manage-instance-users.md @@ -8,7 +8,7 @@ Harper users and roles can be managed directly through the Harper Studio. It is Instance user configuration is handled through the **users** page of the Harper Studio, accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/manage-replication.md b/site/versioned_docs/version-4.6/administration/harper-studio/manage-replication.md index 8987d71c..619799a5 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/manage-replication.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/manage-replication.md @@ -8,7 +8,7 @@ Harper instance clustering and replication can be configured directly through th All clustering configuration is handled through the **replication** page of the Harper Studio, accessed with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/organizations.md b/site/versioned_docs/version-4.6/administration/harper-studio/organizations.md index e36b6fa6..c26b4481 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/organizations.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/organizations.md @@ -17,19 +17,19 @@ An organization is automatically created for you when you sign up for Harper Stu ## List Organizations -A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. +A summary view of all organizations your user belongs to can be viewed on the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. You can navigate to this page at any time by clicking the **all organizations** link at the top of the Harper Studio. ## Create a New Organization A new organization can be created as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the **Create a New Organization** card. 1. Fill out new organization details - Enter Organization Name _This is used for descriptive purposes only._ - Enter Organization Subdomain - _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: https:/c1-demo.harperdbcloud.com._ + _Part of the URL that will be used to identify your Harper Cloud Instances. For example, with subdomain “demo” and instance name “c1” the instance URL would be: [https://c1-demo.harperdbcloud.com](https://c1-demo.harperdbcloud.com)._ 1. Click Create Organization. ## Delete an Organization @@ -52,7 +52,7 @@ Harper Studio organization owners can manage users including inviting new users, A new user can be invited to an organization as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the appropriate organization card. 1. Click **users** at the top of the screen. 1. In the **add user** box, enter the new user’s email address. @@ -78,7 +78,7 @@ Organization owners have full access to the organization including the ability t Users may be removed from an organization at any time. Removing a user from an organization will not delete their Harper Studio account, it will only remove their access to the specified organization. A user can be removed from an organization as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the appropriate organization card. 1. Click **users** at the top of the screen. 1. Click the appropriate user from the **existing users** section. @@ -92,7 +92,7 @@ Users may be removed from an organization at any time. Removing a user from an o Billing is configured per organization and will be billed to the stored credit card at appropriate intervals (monthly or annually depending on the registered instance). Billing settings can be configured as follows: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/?redirect=/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/?redirect=/organizations) page. 1. Click the appropriate organization card. 1. Click **billing** at the top of the screen. diff --git a/site/versioned_docs/version-4.6/administration/harper-studio/query-instance-data.md b/site/versioned_docs/version-4.6/administration/harper-studio/query-instance-data.md index 3e36c7cf..29a385b9 100644 --- a/site/versioned_docs/version-4.6/administration/harper-studio/query-instance-data.md +++ b/site/versioned_docs/version-4.6/administration/harper-studio/query-instance-data.md @@ -6,7 +6,7 @@ title: Query Instance Data SQL queries can be executed directly through the Harper Studio with the following instructions: -1. Navigate to the [Harper Studio Organizations](https:/studio.harperdb.io/organizations) page. +1. Navigate to the [Harper Studio Organizations](https://studio.harperdb.io/organizations) page. 1. Click the appropriate organization that the instance belongs to. 1. Select your desired instance. 1. Click **query** in the instance control bar. diff --git a/site/versioned_docs/version-4.6/administration/logging/standard-logging.md b/site/versioned_docs/version-4.6/administration/logging/standard-logging.md index 56711178..a5116ed7 100644 --- a/site/versioned_docs/version-4.6/administration/logging/standard-logging.md +++ b/site/versioned_docs/version-4.6/administration/logging/standard-logging.md @@ -38,7 +38,7 @@ The log level can be changed by modifying `logging.level` in the config file `ha ## Clustering Logging -Harper clustering utilizes two [NATS](https:/nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. +Harper clustering utilizes two [NATS](https://nats.io/) servers, named Hub and Leaf. The Hub server is responsible for establishing the mesh network that connects instances of Harper and the Leaf server is responsible for managing the message stores (streams) that replicate and store messages between instances. Due to the verbosity of these servers there is a separate log level configuration for them. To adjust their log verbosity, set `clustering.logLevel` in the config file `harperdb-config.yaml`. Valid log levels from least verbose are `error`, `warn`, `info`, `debug` and `trace`. ## Log File vs Standard Streams diff --git a/site/versioned_docs/version-4.6/deployments/configuration.md b/site/versioned_docs/version-4.6/deployments/configuration.md index 32a3585f..d6b0dd86 100644 --- a/site/versioned_docs/version-4.6/deployments/configuration.md +++ b/site/versioned_docs/version-4.6/deployments/configuration.md @@ -4,7 +4,7 @@ title: Configuration File # Configuration File -Harper is configured through a [YAML](https:/yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). +Harper is configured through a [YAML](https://yaml.org/) file called `harperdb-config.yaml` located in the Harper root directory (by default this is a directory named `hdb` located in the home directory of the current user). Some configuration will be populated by default in the config file on install, regardless of whether it is used. @@ -90,7 +90,7 @@ An array of allowable domains with CORS `corsAccessControlAllowHeaders` - _Type_: string; _Default_: 'Accept, Content-Type, Authorization' -A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. +A string representation of a comma separated list of header keys for the [Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) header for OPTIONS requests. `headersTimeout` - _Type_: integer; _Default_: 60,000 milliseconds (1 minute) @@ -207,10 +207,10 @@ The `replication` section configures [Harper replication](../developers/replicat ```yaml replication: hostname: server-one - url: wss:/server-one:9925 + url: wss://server-one:9925 databases: '*' routes: - - wss:/server-two:9925 + - wss://server-two:9925 port: null securePort: 9933, enableRootCAs: true @@ -252,7 +252,7 @@ replication: copyTablesToCatchUp: true hostname: server-one routes: - - wss:/server-two:9925 # URL based route + - wss://server-two:9925 # URL based route - hostname: server-three # define a hostname and port port: 9930 startTime: 2024-02-06T15:30:00Z @@ -287,7 +287,7 @@ This defines the shard id of this instance and is used in conjunction with the [ The `clustering` section configures the NATS clustering engine, this is used to replicate data between instances of Harper. -_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https:/nats.io/about/) _to facilitate the cluster._ +_Note: There exist two ways to create clusters and replicate data in Harper. One option is to use native Harper replication over Websockets. The other option is to use_ [_NATS_](https://nats.io/about/) _to facilitate the cluster._ Clustering offers a lot of different configurations, however in a majority of cases the only options you will need to pay attention to are: @@ -525,7 +525,7 @@ clustering: ### `localStudio` -The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at https:/studio.harperdb.io. Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. +The `localStudio` section configures the local Harper Studio, a GUI for Harper hosted on the server. A hosted version of the Harper Studio with licensing and provisioning options is available at [https://studio.harperdb.io](https://studio.harperdb.io). Note, all database traffic from either `localStudio` or Harper Studio is made directly from your browser to the instance. `enabled` - _Type_: boolean; _Default_: false @@ -557,9 +557,9 @@ To access the audit logs, use the API operation `read_audit_log`. It will provid ```json { - "operation": "read_audit_log", - "schema": "dev", - "table": "dog" + "operation": "read_audit_log", + "schema": "dev", + "table": "dog" } ``` @@ -687,6 +687,7 @@ Harper's logger supports defining multiple logging configurations for different `logging.external` The `logging.external` section can be used to define logging for all external components that use the [`logger` API](../technical-details/reference/globals). For example: + ```yaml logging: external: @@ -697,15 +698,17 @@ logging: `http.logging` This section defines log configuration for HTTP logging. By default, HTTP requests are not logged, but defining this section will enable HTTP logging. Note that there can be substantive overhead to logging all HTTP requests. In addition to the standard logging configuration, the `http.logging` section also allows the following configuration properties to be set: -* `timing` - This will log timing information -* `headers` - This will log the headers in each request (which can be very verbose) -* `id` - This will assign a unique id to each request and log it in the entry for each request. This is assigned as the `request.requestId` property and can be used to by other logging to track a request. + +- `timing` - This will log timing information +- `headers` - This will log the headers in each request (which can be very verbose) +- `id` - This will assign a unique id to each request and log it in the entry for each request. This is assigned as the `request.requestId` property and can be used to by other logging to track a request. Note that the `level` will determine which HTTP requests are logged: -* `info` (or more verbose) - All HTTP requests -* `warn` - HTTP requests with a status code of 400 or above -* `error` - HTTP requests with a status code of 500 +- `info` (or more verbose) - All HTTP requests +- `warn` - HTTP requests with a status code of 400 or above +- `error` - HTTP requests with a status code of 500 For example: + ```yaml http: logging: @@ -772,11 +775,11 @@ This will enable cookie-based sessions to maintain an authenticated session. Thi `operationTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time an operation token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time an operation token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). `refreshTokenTimeout` - _Type_: string; _Default_: 1d -Defines the length of time a refresh token will be valid until it expires. Example values: https:/github.com/vercel/ms. +Defines the length of time a refresh token will be valid until it expires. Example values: [https://github.com/vercel/ms](https://github.com/vercel/ms). ### `operationsApi` @@ -1191,7 +1194,7 @@ The name of the component. This will be used to name the folder where the compon A reference to your [component](../technical-details/reference/components/applications#adding-components-to-root) package. This could be a remote git repo, a local folder/file or an NPM package. Harper will add this package to a package.json file and call `npm install` on it, so any reference that works with that paradigm will work here. -Read more about npm install [here](https:/docs.npmjs.com/cli/v8/commands/npm-install) +Read more about npm install [here](https://docs.npmjs.com/cli/v8/commands/npm-install) `port` - _Type_: number _Default_: whatever is set in `http.port` diff --git a/site/versioned_docs/version-4.6/deployments/harper-cli.md b/site/versioned_docs/version-4.6/deployments/harper-cli.md index 1a7d5503..e559df01 100644 --- a/site/versioned_docs/version-4.6/deployments/harper-cli.md +++ b/site/versioned_docs/version-4.6/deployments/harper-cli.md @@ -157,7 +157,7 @@ last_updated_record: 1724483231970.9949 `harperdb set_configuration logging_level=error` -`harperdb deploy_component project=my-cool-app package=https:/github.com/HarperDB/application-template` +`harperdb deploy_component project=my-cool-app package=https://github.com/HarperDB/application-template` `harperdb get_components` @@ -174,7 +174,7 @@ The CLI can also be used to run operations on remote Harper instances. To do thi ```bash export CLI_TARGET_USERNAME=HDB_ADMIN export CLI_TARGET_PASSWORD=password -harperdb describe_database database=dev target=https:/server.com:9925 +harperdb describe_database database=dev target=https://server.com:9925 ``` The same set of operations API are available for remote operations as well. @@ -184,11 +184,11 @@ The same set of operations API are available for remote operations as well. When using remote operations, you can deploy a local component to the remote instance. If you omit the `package` parameter, you can deploy the current directory. This will package the current directory and send it to the target server (also `deploy` is allowed as an alias to `deploy_component`): ```bash -harperdb deploy target=https:/server.com:9925 +harperdb deploy target=https://server.com:9925 ``` If you are interacting with a cluster, you may wish to include the `replicated=true` parameter to ensure that the deployment operation is replicated to all nodes in the cluster. You will also need to restart afterwards to apply the changes (here seen with the replicated parameter): ```bash -harperdb restart target=https:/server.com:9925 replicated=true +harperdb restart target=https://server.com:9925 replicated=true ``` diff --git a/site/versioned_docs/version-4.6/deployments/harper-cloud/index.md b/site/versioned_docs/version-4.6/deployments/harper-cloud/index.md index fbf2d81e..c0785d0d 100644 --- a/site/versioned_docs/version-4.6/deployments/harper-cloud/index.md +++ b/site/versioned_docs/version-4.6/deployments/harper-cloud/index.md @@ -4,6 +4,6 @@ title: Harper Cloud # Harper Cloud -[Harper Cloud](https:/studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. +[Harper Cloud](https://studio.harperdb.io/) is the easiest way to test drive Harper, it’s Harper-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. Harper Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future. You can create a new Harper Cloud instance in the Harper Studio. diff --git a/site/versioned_docs/version-4.6/deployments/harper-cloud/instance-size-hardware-specs.md b/site/versioned_docs/version-4.6/deployments/harper-cloud/instance-size-hardware-specs.md index 72979d8d..6ea4c7d2 100644 --- a/site/versioned_docs/version-4.6/deployments/harper-cloud/instance-size-hardware-specs.md +++ b/site/versioned_docs/version-4.6/deployments/harper-cloud/instance-size-hardware-specs.md @@ -20,4 +20,4 @@ While Harper Cloud bills by RAM, each instance has other specifications associat | m5.16xlarge | 256 | 64 | 20 | Up to 3.1 GHz Intel Xeon Platinum 8000 | | m5.24xlarge | 384 | 96 | 25 | Up to 3.1 GHz Intel Xeon Platinum 8000 | -\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https:/aws.amazon.com/ec2/instance-types/](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: [https://aws.amazon.com/ec2/instance-types/](https://aws.amazon.com/ec2/instance-types/). diff --git a/site/versioned_docs/version-4.6/deployments/harper-cloud/iops-impact.md b/site/versioned_docs/version-4.6/deployments/harper-cloud/iops-impact.md index 7c2390df..18e9f948 100644 --- a/site/versioned_docs/version-4.6/deployments/harper-cloud/iops-impact.md +++ b/site/versioned_docs/version-4.6/deployments/harper-cloud/iops-impact.md @@ -18,7 +18,7 @@ Harper Cloud utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp3) AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result, all Harper Cloud storage options will offer 3,000 IOPS. We plan to offer scalable IOPS as an option in the future. -You can read more about AWS EBS volume IOPS here: https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html. +You can read more about AWS EBS volume IOPS here: [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html). ## Estimating IOPS for Harper Instance diff --git a/site/versioned_docs/version-4.6/deployments/harper-cloud/verizon-5g-wavelength-instances.md b/site/versioned_docs/version-4.6/deployments/harper-cloud/verizon-5g-wavelength-instances.md index 9de7cfa9..b6104f7c 100644 --- a/site/versioned_docs/version-4.6/deployments/harper-cloud/verizon-5g-wavelength-instances.md +++ b/site/versioned_docs/version-4.6/deployments/harper-cloud/verizon-5g-wavelength-instances.md @@ -8,7 +8,7 @@ These instances are only accessible from the Verizon network. When accessing you Harper on Verizon 5G Wavelength brings Harper closer to the end user exclusively on the Verizon network resulting in as little as single-digit millisecond response time from Harper to the client. -Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https:/aws.amazon.com/wavelength/). +Instances are built via AWS Wavelength. You can read more about [AWS Wavelength here](https://aws.amazon.com/wavelength/). Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail\*. @@ -18,7 +18,7 @@ Harper 5G Wavelength Instance Specs While Harper 5G Wavelength bills by RAM, eac | t3.xlarge | 16 | 4 | Up to 5 | Up to 3.1 GHz Intel Xeon Platinum Processor | | r5.2xlarge | 64 | 8 | Up to 10 | Up to 3.1 GHz Intel Xeon Platinum Processor | -\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https:/aws.amazon.com/ec2/instance-types/). +\*Specifications are subject to change. For the most up to date information, please refer to [AWS documentation](https://aws.amazon.com/ec2/instance-types/). ## Harper 5G Wavelength Storage @@ -28,4 +28,4 @@ AWS EBS gp2 volumes have a baseline performance level, which determines the numb Smaller gp2 volumes are perfect for trying out the functionality of Harper, and might also work well for applications that don’t perform many database transactions. For applications that perform a moderate or high number of transactions, we recommend that you use a larger Harper volume. Learn more about the [impact of IOPS on performance here](./iops-impact). -You can read more about [AWS EBS gp2 volume IOPS here](https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes_gp2). +You can read more about [AWS EBS gp2 volume IOPS here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#ebsvolumetypes_gp2). diff --git a/site/versioned_docs/version-4.6/deployments/install-harper/index.md b/site/versioned_docs/version-4.6/deployments/install-harper/index.md index 360f6758..9c6a3bda 100644 --- a/site/versioned_docs/version-4.6/deployments/install-harper/index.md +++ b/site/versioned_docs/version-4.6/deployments/install-harper/index.md @@ -6,12 +6,12 @@ title: Install Harper ## Install Harper -This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https:/studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. +This documentation contains information for installing Harper locally. Note that if you’d like to get up and running quickly, you can try a [managed instance with Harper Cloud](https://studio.harperdb.io/sign-up). Harper is a cross-platform database; we recommend Linux for production use, but Harper can run on Windows and Mac as well, for development purposes. Installation is usually very simple and just takes a few steps, but there are a few different options documented here. -Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https:/nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https:/github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: +Harper runs on Node.js, so if you do not have it installed, you need to do that first (if you have installed, you can skip to installing Harper, itself). Node.js can be downloaded and installed from [their site](https://nodejs.org/). For Linux and Mac, we recommend installing and managing Node versions with [NVM, which has instructions for installation](https://github.com/nvm-sh/nvm). Generally NVM can be installed with the following command: ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash ``` And then logout and login, and then install Node.js using nvm. We recommend using LTS, but support all currently maintained Node versions (which is currently version 14 and newer, and make sure to always uses latest minor/patch for the major version): @@ -35,15 +35,15 @@ If you are setting up a production server on Linux, [we have much more extensive ## With Docker -If you would like to run Harper in Docker, install [Docker Desktop](https:/docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https:/docs.docker.com/engine/install/) on your Linux server. +If you would like to run Harper in Docker, install [Docker Desktop](https://docs.docker.com/desktop/) on your Mac or Windows computer. Otherwise, install the [Docker Engine](https://docs.docker.com/engine/install/) on your Linux server. -Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https:/hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. +Once Docker Desktop or Docker Engine is installed, visit our [Docker Hub page](https://hub.docker.com/r/harperdb/harperdb) for information and examples on how to run a Harper container. ## Offline Install If you need to install Harper on a device that doesn't have an Internet connection, you can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM): -[Download Install Package](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) +[Download Install Package](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: @@ -55,7 +55,7 @@ npm install -g harperdb-X.X.X.tgz harperdb install Harper comes with binaries for standard AMD64/x64 or ARM64 CPU architectures on Linux, Windows (x64 only), and Mac (including Apple Silicon). However, if you are installing on a less common platform (Alpine, for example), you will need to ensure that you have build tools installed for the installation process to compile the binaries (this is handled automatically), including: -- [Go](https:/go.dev/dl/): version 1.19.1 +- [Go](https://go.dev/dl/): version 1.19.1 - GCC - Make - Python v3.7, v3.8, v3.9, or v3.10 diff --git a/site/versioned_docs/version-4.6/deployments/install-harper/linux.md b/site/versioned_docs/version-4.6/deployments/install-harper/linux.md index 15da9a7b..27a9dc79 100644 --- a/site/versioned_docs/version-4.6/deployments/install-harper/linux.md +++ b/site/versioned_docs/version-4.6/deployments/install-harper/linux.md @@ -128,7 +128,7 @@ echo "ubuntu hard nofile 1000000" | sudo tee -a /etc/security/limits.conf Install Node Version Manager (nvm) ```bash -curl -o- https:/raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Load nvm (or logout and then login) @@ -137,7 +137,7 @@ Load nvm (or logout and then login) . ~/.nvm/nvm.sh ``` -Install Node.js using nvm ([read more about specific Node version requirements](https:/www.npmjs.com/package/harperdb#prerequisites)) +Install Node.js using nvm ([read more about specific Node version requirements](https://www.npmjs.com/package/harperdb#prerequisites)) ```bash nvm install diff --git a/site/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md b/site/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md index eda8cb37..15ebcf7a 100644 --- a/site/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md +++ b/site/versioned_docs/version-4.6/deployments/upgrade-hdb-instance.md @@ -20,9 +20,9 @@ Upgrading Harper is a two-step process. First the latest version of Harper must ## Node Version Manager (nvm) -[Node Version Manager (nvm)](http:/nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: https:/nvm.sh/. +[Node Version Manager (nvm)](https://nvm.sh/) is an easy way to install, remove, and switch between different versions of Node.js as required by various applications. More information, including directions on installing nvm can be found here: [https://nvm.sh/](https://nvm.sh/). -Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https:/www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: +Harper supports Node.js versions 14.0.0 and higher, however, **please check our** [**NPM page**](https://www.npmjs.com/package/harperdb) **for our recommended Node.js version.** To install a different version of Node.js with nvm, run the command: ```bash nvm install @@ -104,7 +104,7 @@ To enable Plexus on a node that is already running NATS, you will need to update ```yaml replication: - url: wss:/my-cluster-node-1:9925 + url: wss://my-cluster-node-1:9925 hostname: node-1 ``` @@ -130,7 +130,7 @@ replication: { "operation": "add_node", "hostname:": "node-1", - "url": "wss:/my-cluster-node-1:9925" + "url": "wss://my-cluster-node-1:9925" } ``` diff --git a/site/versioned_docs/version-4.6/developers/applications/caching.md b/site/versioned_docs/version-4.6/developers/applications/caching.md index 62fecce4..2d97ba25 100644 --- a/site/versioned_docs/version-4.6/developers/applications/caching.md +++ b/site/versioned_docs/version-4.6/developers/applications/caching.md @@ -33,8 +33,8 @@ Next, you need to define the source for your cache. External data sources could ```javascript class ThirdPartyAPI extends Resource { async get() { - return (await fetch(`http:/some-api.com/${this.getId()}`)).json(); - } + return (await fetch(`https://some-api.com/${this.getId()}`)).json(); + } } ``` @@ -49,10 +49,10 @@ Now we have a fully configured and connected caching table. If you access data f ```mermaid flowchart TD - Client1(Client 1)-->Cache(Caching Table) - Client2(Client 2)-->Cache - Cache-->Resource(Data Source Connector) - Resource-->API(Remote Data Source API) + Client1(Client 1)-->Cache(Caching Table) + Client2(Client 2)-->Cache + Cache-->Resource(Data Source Connector) + Resource-->API(Remote Data Source API) ``` Harper handles waiting for an existing cache resolution to finish and uses its result. This prevents a "cache stampede" when entries expire, ensuring that multiple requests to a cache entry will all wait on a single request to the data source. @@ -69,11 +69,11 @@ In the example above, we simply retrieved data to fulfill a cache request. We ma ```javascript class ThirdPartyAPI extends Resource { - async get() { - let response = await fetch(`http:/some-api.com/${this.getId()}`); - this.getContext().lastModified = response.headers.get('Last-Modified'); - return response.json(); - } + async get() { + let response = await fetch(`https://some-api.com/${this.getId()}`); + this.getContext().lastModified = response.headers.get('Last-Modified'); + return response.json(); + } } ``` @@ -83,19 +83,19 @@ In addition, we can also specify when a cached record "expires". When a cached r ```javascript class ThirdPartyAPI extends Resource { - async get() { - const context = this.getContext(); - let headers = new Headers(); - if (context.replacingVersion) / this is the existing cached record - headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); - let response = await fetch(`http:/some-api.com/${this.getId()}`, { headers }); - let cacheInfo = response.headers.get('Cache-Control'); - let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; - if (maxAge) / we can set a specific expiration time by setting context.expiresAt - context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time - / we can just revalidate and return the record if the origin has confirmed that it has the same version: - if (response.status === 304) return context.replacingRecord; - ... + async get() { + const context = this.getContext(); + let headers = new Headers(); + if (context.replacingVersion) / this is the existing cached record + headers.set('If-Modified-Since', new Date(context.replacingVersion).toUTCString()); + let response = await fetch(`https://some-api.com/${this.getId()}`, { headers }); + let cacheInfo = response.headers.get('Cache-Control'); + let maxAge = cacheInfo?.match(/max-age=(\d)/)?.[1]; + if (maxAge) / we can set a specific expiration time by setting context.expiresAt + context.expiresAt = Date.now() + maxAge * 1000; / convert from seconds to milliseconds and add to current time + / we can just revalidate and return the record if the origin has confirmed that it has the same version: + if (response.status === 304) return context.replacingRecord; + ... ``` ## Active Caching and Invalidation @@ -109,11 +109,11 @@ One way to provide more active caching is to specifically invalidate individual ```javascript const { MyTable } = tables; export class MyTableEndpoint extends MyTable { - async post(data) { - if (data.invalidate) - / use this flag as a marker - this.invalidate(); - } + async post(data) { + if (data.invalidate) + / use this flag as a marker + this.invalidate(); + } } ``` @@ -125,20 +125,20 @@ We can provide more control of an active cache with subscriptions. If there is a ```javascript class ThirdPartyAPI extends Resource { - async *subscribe() { + async *subscribe() { setInterval(() => { / every second retrieve more data - / get the next data change event from the source - let update = (await fetch(`http:/some-api.com/latest-update`)).json(); - const event = { / define the change event (which will update the cache) - type: 'put', / this would indicate that the event includes the new data value - id: / the primary key of the record that updated - value: / the new value of the record that updated - timestamp: / the timestamp of when the data change occurred - }; - yield event; / this returns this event, notifying the cache of the change + / get the next data change event from the source + let update = (await fetch(`https://some-api.com/latest-update`)).json(); + const event = { / define the change event (which will update the cache) + type: 'put', / this would indicate that the event includes the new data value + id: / the primary key of the record that updated + value: / the new value of the record that updated + timestamp: / the timestamp of when the data change occurred + }; + yield event; / this returns this event, notifying the cache of the change }, 1000); - } - async get() { + } + async get() { ... ``` @@ -165,24 +165,24 @@ By default, Harper will only run the subscribe method on one thread. Harper is m ```javascript class ThirdPartyAPI extends Resource { - static subscribeOnThisThread(threadIndex) { - return threadIndex < 2; / run on two threads (the first two threads) - } - async *subscribe() { - .... + static subscribeOnThisThread(threadIndex) { + return threadIndex < 2; / run on two threads (the first two threads) + } + async *subscribe() { + .... ``` An alternative to using asynchronous generators is to use a subscription stream and send events to it. A default subscription stream (that doesn't generate its own events) is available from the Resource's default subscribe method: ```javascript class ThirdPartyAPI extends Resource { - subscribe() { - const subscription = super.subscribe(); - setupListeningToRemoteService().on('update', (event) => { - subscription.send(event); - }); - return subscription; - } + subscribe() { + const subscription = super.subscribe(); + setupListeningToRemoteService().on('update', (event) => { + subscription.send(event); + }); + return subscription; + } } ``` @@ -196,18 +196,18 @@ The cache we have defined so far only has data flowing from the data source to t ```javascript class ThirdPartyAPI extends Resource { - async put(data) { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'PUT', - body: JSON.stringify(data) - }); - } - async delete() { - await fetch(`http:/some-api.com/${this.getId()}`, { - method: 'DELETE', - }); - } - ... + async put(data) { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'PUT', + body: JSON.stringify(data) + }); + } + async delete() { + await fetch(`https://some-api.com/${this.getId()}`, { + method: 'DELETE', + }); + } + ... ``` When doing an insert or update to the MyCache table, the data will be sent to the underlying data source through the `put` method and the new record value will be stored in the cache as well. @@ -218,12 +218,12 @@ When you are using a caching table, it is important to remember that any resourc ```javascript class MyCache extends tables.MyCache { - async post(data) { - / if the data is not cached locally, retrieves from source: - await this.ensuredLoaded(); - / now we can be sure that the data is loaded, and can access properties - this.quantity = this.quantity - data.purchases; - } + async post(data) { + / if the data is not cached locally, retrieves from source: + await this.ensuredLoaded(); + / now we can be sure that the data is loaded, and can access properties + this.quantity = this.quantity - data.purchases; + } } ``` @@ -238,8 +238,8 @@ With our passive update examples, we have provided a data source handler with a ```javascript const { Post, Comment } = tables; class BlogSource extends Resource { - get() { - const post = await (await fetch(`http:/my-blog-server/${this.getId()}`).json()); + get() { + const post = await (await fetch(`https://my-blog-server/${this.getId()}`).json()); for (let comment of post.comments) { await Comment.put(comment, this); / save this comment as part of our current context and transaction } diff --git a/site/versioned_docs/version-4.6/developers/applications/define-routes.md b/site/versioned_docs/version-4.6/developers/applications/define-routes.md index 4351992d..720f4f06 100644 --- a/site/versioned_docs/version-4.6/developers/applications/define-routes.md +++ b/site/versioned_docs/version-4.6/developers/applications/define-routes.md @@ -4,14 +4,14 @@ title: Define Fastify Routes # Define Fastify Routes -Harper’s applications provide an extension for loading [Fastify](https:/www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. +Harper’s applications provide an extension for loading [Fastify](https://www.fastify.io/) routes as a way to handle endpoints. While we generally recommend building your endpoints/APIs with Harper's [REST interface](../rest) for better performance and standards compliance, Fastify's route can provide an extensive API for highly customized path handling. Below is a very simple example of a route declaration. -The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https:/github.com/HarperDB/application-template)): +The fastify route handler can be configured in your application's config.yaml (this is the default config if you used the [application template](https://github.com/HarperDB/application-template)): ```yaml fastifyRoutes: # This loads files that define fastify routes using fastify's auto-loader files: routes/*.js # specify the location of route definition modules - path: . # relative to the app-name, like http:/server/app-name/route-name + path: . # relative to the app-name, like https://server/app-name/route-name ``` By default, route URLs are configured to be: diff --git a/site/versioned_docs/version-4.6/developers/applications/defining-schemas.md b/site/versioned_docs/version-4.6/developers/applications/defining-schemas.md index 5337603b..85d3b612 100644 --- a/site/versioned_docs/version-4.6/developers/applications/defining-schemas.md +++ b/site/versioned_docs/version-4.6/developers/applications/defining-schemas.md @@ -6,7 +6,7 @@ title: Defining Schemas Schemas define tables and their attributes. Schemas can be declaratively defined in Harper's using GraphQL schema definitions. Schemas definitions can be used to ensure that tables exist (that are required for applications), and have the appropriate attributes. Schemas can define the primary key, data types for attributes, if they are required, and specify which attributes should be indexed. The [introduction to applications provides](./) a helpful introduction to how to use schemas as part of database application development. -Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https:/graphql.org/learn/schema/). +Schemas can be used to define the expected structure of data, but are also highly flexible and support heterogeneous data structures and by default allows data to include additional properties. The standard types for GraphQL schemas are specified in the [GraphQL schema documentation](https://graphql.org/learn/schema/). An example schema that defines a couple tables might look like: @@ -163,7 +163,7 @@ type Product @table { } ``` -For more in-depth information on computed properties, visit our blog [here](https:/www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) +For more in-depth information on computed properties, visit our blog [here](https://www.harpersystems.dev/development/tutorials/how-to-create-custom-indexes-with-computed-properties) ### Field Directives @@ -250,7 +250,7 @@ Harper supports the following field types in addition to user defined (object) t - `String`: String/text - `Int`: A 32-bit signed integer (from -2147483648 to 2147483647) - `Long`: A 54-bit signed integer (from -9007199254740992 to 9007199254740992) -- `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision_floating-point_format). Note that all numbers are stored in the most compact representation available) +- `Float`: Any number (any number that can be represented as a [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision_floating-point_format). Note that all numbers are stored in the most compact representation available) - `BigInt`: Any integer (negative or positive) with less than 300 digits (Note that `BigInt` is a distinct and separate type from standard numbers in JavaScript, so custom code should handle this type appropriately) - `Boolean`: true or false - `ID`: A string (but indicates it is not intended to be human readable) @@ -265,7 +265,7 @@ It is important to note that Harper does not currently support renaming tables. ### OpenAPI Specification -_The_ [_OpenAPI Specification_](https:/spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ +_The_ [_OpenAPI Specification_](https://spec.openapis.org/oas/v3.1.0) _defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic._ If a set of endpoints are configured through a Harper GraphQL schema, those endpoints can be described by using a default REST endpoint called `GET /openapi`. diff --git a/site/versioned_docs/version-4.6/developers/applications/example-projects.md b/site/versioned_docs/version-4.6/developers/applications/example-projects.md index 51231c31..3c2342a3 100644 --- a/site/versioned_docs/version-4.6/developers/applications/example-projects.md +++ b/site/versioned_docs/version-4.6/developers/applications/example-projects.md @@ -6,32 +6,32 @@ title: Example Projects **Library of example Harper applications and components:** -- [Authorization in Harper using Okta Customer Identity Cloud](https:/www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang +- [Authorization in Harper using Okta Customer Identity Cloud](https://www.harperdb.io/post/authorization-in-harperdb-using-okta-customer-identity-cloud), by Yitaek Hwang -- [How to Speed Up your Applications by Caching at the Edge with Harper](https:/dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams +- [How to Speed Up your Applications by Caching at the Edge with Harper](https://dev.to/doabledanny/how-to-speed-up-your-applications-by-caching-at-the-edge-with-harperdb-3o2l), by Danny Adams -- [OAuth Authentication in Harper using Auth0 & Node.js](https:/www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos +- [OAuth Authentication in Harper using Auth0 & Node.js](https://www.harperdb.io/post/oauth-authentication-in-harperdb-using-auth0-and-node-js), by Lucas Santos -- [How To Create a CRUD API with Next.js & Harper Custom Functions](https:/www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock +- [How To Create a CRUD API with Next.js & Harper Custom Functions](https://www.harperdb.io/post/create-a-crud-api-w-next-js-harperdb), by Colby Fayock -- [Build a Dynamic REST API with Custom Functions](https:/harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush +- [Build a Dynamic REST API with Custom Functions](https://harperdb.io/blog/build-a-dynamic-rest-api-with-custom-functions/), by Terra Roush -- [How to use Harper Custom Functions to Build your Entire Backend](https:/dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden +- [How to use Harper Custom Functions to Build your Entire Backend](https://dev.to/andrewbaisden/how-to-use-harperdb-custom-functions-to-build-your-entire-backend-a2m), by Andrew Baisden -- [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https:/harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft +- [Using TensorFlowJS & Harper Custom Functions for Machine Learning](https://harperdb.io/blog/using-tensorflowjs-harperdb-for-machine-learning/), by Kevin Ashcraft -- [Build & Deploy a Fitness App with Python & Harper](https:/www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber +- [Build & Deploy a Fitness App with Python & Harper](https://www.youtube.com/watch?v=KMkmA4i2FQc), by Patrick Löber -- [Create a Discord Slash Bot using Harper Custom Functions](https:/geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty +- [Create a Discord Slash Bot using Harper Custom Functions](https://geekysrm.hashnode.dev/discord-slash-bot-with-harperdb-custom-functions), by Soumya Ranjan Mohanty -- [How I used Harper Custom Functions to Build a Web App for my Newsletter](https:/blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj +- [How I used Harper Custom Functions to Build a Web App for my Newsletter](https://blog.hrithwik.me/how-i-used-harperdb-custom-functions-to-build-a-web-app-for-my-newsletter), by Hrithwik Bharadwaj -- [How I used Harper Custom Functions and Recharts to create Dashboard](https:/blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary +- [How I used Harper Custom Functions and Recharts to create Dashboard](https://blog.greenroots.info/how-to-create-dashboard-with-harperdb-custom-functions-and-recharts), by Tapas Adhikary -- [How To Use Harper Custom Functions With Your React App](https:/dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi +- [How To Use Harper Custom Functions With Your React App](https://dev.to/tyaga001/how-to-use-harperdb-custom-functions-with-your-react-app-2c43), by Ankur Tyagi -- [Build a Web App Using Harper’s Custom Functions](https:/www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp +- [Build a Web App Using Harper’s Custom Functions](https://www.youtube.com/watch?v=rz6prItVJZU), livestream by Jaxon Repp -- [How to Web Scrape Using Python, Snscrape & Custom Functions](https:/hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David +- [How to Web Scrape Using Python, Snscrape & Custom Functions](https://hackernoon.com/how-to-web-scrape-using-python-snscrape-and-harperdb), by Davis David -- [What’s the Big Deal w/ Custom Functions](https:/rss.com/podcasts/harperdb-select-star/278933/), Select\* Podcast +- [What’s the Big Deal w/ Custom Functions](https://rss.com/podcasts/harperdb-select-star/278933/), Select\* Podcast diff --git a/site/versioned_docs/version-4.6/developers/applications/index.md b/site/versioned_docs/version-4.6/developers/applications/index.md index 388baf08..94a86e92 100644 --- a/site/versioned_docs/version-4.6/developers/applications/index.md +++ b/site/versioned_docs/version-4.6/developers/applications/index.md @@ -8,7 +8,7 @@ Harper is more than a database, it's a distributed clustering platform allowing In this guide, we are going to explore the evermore extensible architecture that Harper provides by building a Harper application, a fundamental building-block of the Harper ecosystem. -When working through this guide, we recommend you use the [Harper Application Template](https:/github.com/HarperDB/application-template) repo as a reference. +When working through this guide, we recommend you use the [Harper Application Template](https://github.com/HarperDB/application-template) repo as a reference. Before we get started, let's clarify some terminology that is used throughout the documentation. @@ -22,7 +22,7 @@ Before we get started, let's clarify some terminology that is used throughout th All together, the support for implementing a feature is the extension, and the actual implementation of the feature is the application. -Extensions can also depend on other extensions. For example, the [`@harperdb/apollo`](https:/github.com/HarperDB/apollo) extension depends on the built-in `graphqlSchema` extension to create a cache table for Apollo queries. Applications can then use the `@harperdb/apollo` extension to implement an Apollo GraphQL backend server. +Extensions can also depend on other extensions. For example, the [`@harperdb/apollo`](https://github.com/HarperDB/apollo) extension depends on the built-in `graphqlSchema` extension to create a cache table for Apollo queries. Applications can then use the `@harperdb/apollo` extension to implement an Apollo GraphQL backend server. ```mermaid flowchart TD @@ -71,7 +71,7 @@ flowchart TD Beyond applications and extensions, components are further classified as built-in or custom. **Built-in** components are included with Harper by default and can be directly referenced by their name. The `graphqlSchema`, `rest`, and `jsResource` extensions used in the previous application example are all examples of built-in extensions. **Custom** components must use external references, generally npm or GitHub packages, and are often included as dependencies within the `package.json` of the component. -> Harper maintains a number of custom components that are available on `npm` and `GitHub`, such as the [`@harperdb/nextjs`](https:/github.com/HarperDB/nextjs) extension or the [`@harperdb/status-check`](https:/github.com/HarperDB/status-check) application. +> Harper maintains a number of custom components that are available on `npm` and `GitHub`, such as the [`@harperdb/nextjs`](https://github.com/HarperDB/nextjs) extension or the [`@harperdb/status-check`](https://github.com/HarperDB/status-check) application. Harper does not currently include any built-in applications, making "custom applications" a bit redundant. Generally, we just say "application". However, there is a multitude of both built-in and custom extensions, and so the documentation refers to them as such. A complete list of built-in extensions is available in the [Built-In Extensions](../../technical-details/reference/components/built-in-extensions) documentation page, and the list of custom extensions and applications is available below. @@ -202,7 +202,7 @@ const { Breed } = tables; / our Breed table class BreedSource extends Resource { / define a data source async get(target) { - return (await fetch(`http:/best-dog-site.com/${target}`)).json(); + return (await fetch(`https://best-dog-site.com/${target}`)).json(); } } / define that our breed table is a cache of data from the data source above, with a specified expiration diff --git a/site/versioned_docs/version-4.6/developers/applications/web-applications.md b/site/versioned_docs/version-4.6/developers/applications/web-applications.md index c49596b3..02fd1893 100644 --- a/site/versioned_docs/version-4.6/developers/applications/web-applications.md +++ b/site/versioned_docs/version-4.6/developers/applications/web-applications.md @@ -22,11 +22,11 @@ using popular frameworks is a simple and straightforward process. Get started today with one of our examples: -- [Next.js](https:/github.com/HarperDB/nextjs-example) -- [React SSR](https:/github.com/HarperDB/react-ssr-example) -- [Vue SSR](https:/github.com/HarperDB/vue-ssr-example) -- [Svelte SSR](https:/github.com/HarperDB/svelte-ssr-example) -- [Solid SSR](https:/github.com/HarperDB/solid-ssr-example) +- [Next.js](https://github.com/HarperDB/nextjs-example) +- [React SSR](https://github.com/HarperDB/react-ssr-example) +- [Vue SSR](https://github.com/HarperDB/vue-ssr-example) +- [Svelte SSR](https://github.com/HarperDB/svelte-ssr-example) +- [Solid SSR](https://github.com/HarperDB/solid-ssr-example) ## Cookie Support @@ -59,5 +59,5 @@ Harper includes built-in support for Cross-Origin Resource Sharing (CORS), which Make sure to check out our developer videos too: -- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https:/youtu.be/GqLEwteFJYY) -- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https:/youtu.be/L-tnBNhO9Fc) +- [Next.js on Harper | Step-by-Step Guide for Next Level Next.js Performance](https://youtu.be/GqLEwteFJYY) +- [Server-side Rendering (SSR) with Multi-Tier Cache Demo](https://youtu.be/L-tnBNhO9Fc) diff --git a/site/versioned_docs/version-4.6/developers/miscellaneous/google-data-studio.md b/site/versioned_docs/version-4.6/developers/miscellaneous/google-data-studio.md index b29af70e..d8d5fd9d 100644 --- a/site/versioned_docs/version-4.6/developers/miscellaneous/google-data-studio.md +++ b/site/versioned_docs/version-4.6/developers/miscellaneous/google-data-studio.md @@ -4,9 +4,9 @@ title: Google Data Studio # Google Data Studio -[Google Data Studio](https:/datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. +[Google Data Studio](https://datastudio.google.com/) is a free collaborative visualization tool which enables users to build configurable charts and tables quickly. The Harper Google Data Studio connector seamlessly integrates your Harper data with Google Data Studio so you can build custom, real-time data visualizations. -The Harper Google Data Studio Connector is subject to our [Terms of Use](https:/harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https:/harperdb.io/legal/privacy-policy/). +The Harper Google Data Studio Connector is subject to our [Terms of Use](https://harperdb.io/legal/harperdb-cloud-terms-of-service/) and [Privacy Policy](https://harperdb.io/legal/privacy-policy/). ## Requirements @@ -14,13 +14,13 @@ The Harper database must be accessible through the Internet in order for Google ## Get Started -Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https:/datastudio.google.com/u/0/datasources/create). +Get started by selecting the Harper connector from the [Google Data Studio Partner Connector Gallery](https://datastudio.google.com/u/0/datasources/create). -1. Log in to https:/datastudio.google.com/. -1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https:/datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). +1. Log in to [https://datastudio.google.com/](https://datastudio.google.com/). +1. Add a new Data Source using the Harper connector. The current release version can be added as a data source by following this link: [Harper Google Data Studio Connector](https://datastudio.google.com/datasources/create?connectorId=AKfycbxBKgF8FI5R42WVxO-QCOq7dmUys0HJrUJMkBQRoGnCasY60_VJeO3BhHJPvdd20-S76g). 1. Authorize the connector to access other servers on your behalf (this allows the connector to contact your database). 1. Enter the Web URL to access your database (preferably with HTTPS), as well as the Basic Auth key you use to access the database. Just include the key, not the word “Basic” at the start of it. -1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:/ will do the same thing, if you prefer. +1. Check the box for “Secure Connections Only” if you want to always use HTTPS connections for this data source; entering a Web URL that starts with https:// will do the same thing, if you prefer. 1. Check the box for “Allow Bad Certs” if your Harper instance does not have a valid SSL certificate. [Harper Cloud](../../deployments/harper-cloud/) always has valid certificates, and so will never require this to be checked. Instances you set up yourself may require this, if you are using self-signed certs. If you are using [Harper Cloud](../../deployments/harper-cloud/) or another instance you know should always have valid SSL certificates, do not check this box. 1. Choose your Query Type. This determines what information the configuration will ask for after pressing the Next button. - Table will ask you for a Schema and a Table to return all fields of using `SELECT *`. diff --git a/site/versioned_docs/version-4.6/developers/miscellaneous/sdks.md b/site/versioned_docs/version-4.6/developers/miscellaneous/sdks.md index d64e19ce..20c066ce 100644 --- a/site/versioned_docs/version-4.6/developers/miscellaneous/sdks.md +++ b/site/versioned_docs/version-4.6/developers/miscellaneous/sdks.md @@ -9,14 +9,14 @@ description: >- | SDK/Tool | Description | Installation | | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | -| [HarperDB.NET.Client](https:/www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | -| [Websocket Client](https:/www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | -| [Gatsby HarperDB Source](https:/www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | -| [HarperDB.EntityFrameworkCore](https:/www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | -| [Python SDK](https:/pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | -| [HarperDB Flutter SDK](https:/github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | -| [React Hook](https:/www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | -| [Node Red Node](https:/flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | -| [NodeJS SDK](https:/www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | -| [HarperDB Cargo Crate](https:/crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | -| [HarperDB Go SDK](https:/github.com/HarperDB/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB/sdk-go` | +| [HarperDB.NET.Client](https://www.nuget.org/packages/HarperDB.NET.Client) | A Dot Net Core client to execute operations against HarperDB | `dotnet add package HarperDB.NET.Client --version 1.1.0` | +| [Websocket Client](https://www.npmjs.com/package/harperdb-websocket-client) | A Javascript client for real-time access to HarperDB transactions | `npm i -s harperdb-websocket-client` | +| [Gatsby HarperDB Source](https://www.npmjs.com/package/gatsby-source-harperdb) | Use Harper as the data source for a Gatsby project at the build time | `npm i -s gatsby-source-harperdb` | +| [HarperDB.EntityFrameworkCore](https://www.nuget.org/packages/HarperDB.EntityFrameworkCore) | The Harper EntityFrameworkCore Provider Package for .NET 6.0 | `dotnet add package HarperDB.EntityFrameworkCore --version 1.0.0` | +| [Python SDK](https://pypi.org/project/harperdb/) | Python3 implementations of Harper API functions with wrappers for an object-oriented interface | `pip3 install harperdb` | +| [HarperDB Flutter SDK](https://github.com/HarperDB/harperdb-sdk-flutter) | A Harper SDK for Flutter | `flutter pub add harperdb` | +| [React Hook](https://www.npmjs.com/package/use-harperdb) | A ReactJS Hook for HarperDB | `npm i -s use-harperdb` | +| [Node Red Node](https://flows.nodered.org/node/node-red-contrib-harperdb) | Easy drag and drop connections to Harper using the Node-Red platform | `npm i -s node-red-contrib-harperdb` | +| [NodeJS SDK](https://www.npmjs.com/package/harperive) | A Harper SDK for NodeJS | `npm i -s harperive` | +| [HarperDB Cargo Crate](https://crates.io/crates/harperdb) | A Harper SDK for Rust | `Cargo.toml > harperdb = '1.0.0'` | +| [HarperDB Go SDK](https://github.com/HarperDB/sdk-go) | A Harper SDK for Go | `go get github.com/HarperDB/sdk-go` | diff --git a/site/versioned_docs/version-4.6/developers/operations-api/advanced-json-sql-examples.md b/site/versioned_docs/version-4.6/developers/operations-api/advanced-json-sql-examples.md index 58116884..9613d0fb 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/advanced-json-sql-examples.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/advanced-json-sql-examples.md @@ -90,7 +90,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo "operation": "csv_url_load", "database": "movies", "table": "movie", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/movie.csv" } ``` @@ -98,7 +98,7 @@ Inserts data from a hosted CSV file into the "movie" table using the 'csv_url_lo ```json { - "message": "Starting job with id 1889eee4-23c1-4945-9bb7-c805fc20726c" + "message": "Starting job with id 1889eee4-23c1-4945-9bb7-c805fc20726c" } ``` @@ -112,10 +112,10 @@ Inserts data from a hosted CSV file into the "credits" table using the 'csv_url_ ```json { - "operation": "csv_url_load", - "database": "movies", - "table": "credits", - "csv_url": "https:/search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" + "operation": "csv_url_load", + "database": "movies", + "table": "credits", + "csv_url": "https://search-json-sample-data.s3.us-east-2.amazonaws.com/credits.csv" } ``` diff --git a/site/versioned_docs/version-4.6/developers/operations-api/bulk-operations.md b/site/versioned_docs/version-4.6/developers/operations-api/bulk-operations.md index 51801438..95a962f6 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/bulk-operations.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/bulk-operations.md @@ -56,7 +56,7 @@ Ingests CSV data, provided directly in the operation as an `insert`, `update` or "database": "dev", "action": "insert", "table": "breed", - "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,http:/www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" + "data": "id,name,section,country,image\n1,ENGLISH POINTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/001g07.jpg\n2,ENGLISH SETTER,British and Irish Pointers and Setters,GREAT BRITAIN,https://www.fci.be/Nomenclature/Illustrations/002g07.jpg\n3,KERRY BLUE TERRIER,Large and medium sized Terriers,IRELAND,\n" } ``` @@ -124,7 +124,7 @@ Ingests CSV data, provided via URL, as an `insert`, `update` or `upsert` into th "action": "insert", "database": "dev", "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.6/developers/operations-api/clustering.md b/site/versioned_docs/version-4.6/developers/operations-api/clustering.md index d6f1f06f..42160862 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/clustering.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/clustering.md @@ -151,7 +151,7 @@ _Operation is restricted to super_user roles only_ { "replicateByDefault": true, "replicates": true, - "url": "wss:/server-2.domain.com:9933", + "url": "wss://server-2.domain.com:9933", "name": "server-2.domain.com", "subscriptions": null, "database_sockets": [ @@ -260,12 +260,12 @@ _Operation is restricted to super_user roles only_ { "operation": "cluster_set_routes", "routes": [ - "wss:/server-two:9925", - { - "hostname": "server-three", - "port": 9930 - } - ] + "wss://server-two:9925", + { + "hostname": "server-three", + "port": 9930 + } + ] } ``` @@ -273,15 +273,15 @@ _Operation is restricted to super_user roles only_ ```json { - "message": "cluster routes successfully set", - "set": [ - "wss:/server-two:9925", - { - "hostname": "server-three", - "port": 9930 - } - ], - "skipped": [] + "message": "cluster routes successfully set", + "set": [ + "wss://server-two:9925", + { + "hostname": "server-three", + "port": 9930 + } + ], + "skipped": [] } ``` @@ -299,7 +299,7 @@ _Operation is restricted to super_user roles only_ ```json { - "operation": "cluster_get_routes" + "operation": "cluster_get_routes" } ``` @@ -307,7 +307,7 @@ _Operation is restricted to super_user roles only_ ```json [ - "wss:/server-two:9925", + "wss://server-two:9925", { "hostname": "server-three", "port": 9930 diff --git a/site/versioned_docs/version-4.6/developers/operations-api/components.md b/site/versioned_docs/version-4.6/developers/operations-api/components.md index d02b0fff..276c9fb9 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/components.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/components.md @@ -39,10 +39,10 @@ Will deploy a component using either a base64-encoded string representation of a If deploying with the `payload` option, Harper will decrypt the base64-encoded string, reconstitute the .tar file of your project folder, and extract it to the component root project directory. -If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https:/docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: +If deploying with the `package` option, the package value will be written to `harperdb-config.yaml`. Then npm install will be utilized to install the component in the `node_modules` directory located in the hdb root. The value is a package reference, which should generally be a [URL reference, as described here](https://docs.npmjs.com/cli/v10/configuring-npm/package-json#urls-as-dependencies) (it is also possible to include NPM registerd packages and file paths). URL package references can directly reference tarballs that can be installed as a package. However, the most common and recommended usage is to install from a Git repository, which can be combined with a tag to deploy a specific version directly from versioned source control. When using tags, we highly recommend that you use the `semver` directive to ensure consistent and reliable installation by NPM. In addition to tags, you can also reference branches or commit numbers. Here is an example URL package reference to a (public) Git repository that doesn't require authentication: ``` -https:/github.com/HarperDB/application-template#semver:v1.0.0 +https://github.com/HarperDB/application-template#semver:v1.0.0 ``` or this can be shortened to: @@ -60,16 +60,16 @@ git+ssh:/git@github.com:my-org/my-app.git#semver:v1.0.0 Or you can use a Github token: ``` -https:/@github.com/my-org/my-app#semver:v1.0.0 +https://@github.com/my-org/my-app#semver:v1.0.0 ``` Or you can use a GitLab Project Access Token: ``` -https:/my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 +https://my-project:@gitlab.com/my-group/my-project#semver:v1.0.0 ``` -Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https:/docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). +Note that your component will be installed by NPM. If your component has dependencies, NPM will attempt to download and install these as well. NPM normally uses the public registry.npmjs.org registry. If you are installing without network access to this, you may wish to define [custom registry locations](https://docs.npmjs.com/cli/v8/configuring-npm/npmrc) if you have any dependencies that need to be installed. NPM will install the deployed component and any dependencies in node_modules in the hdb root directory (typically `~/hdb/node_modules`). _Note: After deploying a component a restart may be required_ @@ -537,7 +537,7 @@ _Operation is restricted to super_user roles only_ - operation _(required)_ - must always be `install_node_modules` - projects _(required)_ - must ba an array of custom functions projects. -- dry*run *(optional)\_ - refers to the npm --dry-run flag: [https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https:/docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. +- dry*run*(optional)\_ - refers to the npm --dry-run flag: [https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run](https://docs.npmjs.com/cli/v8/commands/npm-install#dry-run). Defaults to false. ### Body diff --git a/site/versioned_docs/version-4.6/developers/operations-api/configuration.md b/site/versioned_docs/version-4.6/developers/operations-api/configuration.md index c48381ab..98686029 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/configuration.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/configuration.md @@ -77,7 +77,7 @@ _Operation is restricted to super_user roles only_ "hostname": "node1", "databases": "*", "routes": null, - "url": "wss:/127.0.0.1:9925" + "url": "wss://127.0.0.1:9925" }, "componentsRoot": "/Users/hdb/components", "localStudio": { diff --git a/site/versioned_docs/version-4.6/developers/operations-api/custom-functions.md b/site/versioned_docs/version-4.6/developers/operations-api/custom-functions.md index ed31785a..0b2261e0 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/custom-functions.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/custom-functions.md @@ -164,7 +164,7 @@ _Operation is restricted to super_user roles only_ ## Add Custom Function Project -Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: https:/github.com/HarperDB/harperdb-custom-functions-template. +Creates a new project folder in the Custom Functions root project directory. It also inserts into the new directory the contents of our Custom Functions Project template, which is available publicly, here: [https://github.com/HarperDB/harperdb-custom-functions-template](https://github.com/HarperDB/harperdb-custom-functions-template). _Operation is restricted to super_user roles only_ diff --git a/site/versioned_docs/version-4.6/developers/operations-api/index.md b/site/versioned_docs/version-4.6/developers/operations-api/index.md index c1661ebe..3dd43c80 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/index.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/index.md @@ -7,7 +7,7 @@ title: Operations API The operations API provides a full set of capabilities for configuring, deploying, administering, and controlling Harper. To send operations to the operations API, you send a POST request to the operations API endpoint, which [defaults to port 9925](../../deployments/configuration#operationsapi), on the root path, where the body is the operations object. These requests need to authenticated, which can be done with [basic auth](../security/basic-auth) or [JWT authentication](../security/jwt-auth). For example, a request to create a table would be performed as: ```http -POST http:/my-harperdb-server:9925/ +POST https://my-harperdb-server:9925/ Authorization: Basic YourBase64EncodedInstanceUser:Pass Content-Type: application/json @@ -38,14 +38,14 @@ The operations API reference is available below and categorized by topic: * [Advanced JSON SQL Examples](./advanced-json-sql-examples) * [Analytics](./analytics) -• [Past Release API Documentation](https:/olddocs.harperdb.io) +• [Past Release API Documentation](https://olddocs.harperdb.io) ## More Examples Here is an example of using `curl` to make an operations API request: ```bash -curl --location --request POST 'https:/instance-subdomain.harperdbcloud.com' \ +curl --location --request POST 'https://instance-subdomain.harperdbcloud.com' \ --header 'Authorization: Basic YourBase64EncodedInstanceUser:Pass' \ --header 'Content-Type: application/json' \ --data-raw '{ diff --git a/site/versioned_docs/version-4.6/developers/operations-api/quickstart-examples.md b/site/versioned_docs/version-4.6/developers/operations-api/quickstart-examples.md index 9d60c002..93660289 100644 --- a/site/versioned_docs/version-4.6/developers/operations-api/quickstart-examples.md +++ b/site/versioned_docs/version-4.6/developers/operations-api/quickstart-examples.md @@ -234,15 +234,15 @@ Let's add some more Harper doggies! We can add as many dog objects as we want in We need to populate the 'breed' table with some data so we can reference it later. For larger data sets, we recommend using our CSV upload option. -Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: https:/s3.amazonaws.com/complimentarydata/breeds.csv +Each header in a column will be considered as an attribute, and each row in the file will be a row in the table. Simply specify the file path and the table to upload to, and Harper will take care of the rest. You can pull the breeds.csv file from here: [https://s3.amazonaws.com/complimentarydata/breeds.csv](https://s3.amazonaws.com/complimentarydata/breeds.csv) ### Body ```json { - "operation": "csv_url_load", - "table": "breed", - "csv_url": "https:/s3.amazonaws.com/complimentarydata/breeds.csv" + "operation": "csv_url_load", + "table": "breed", + "csv_url": "https://s3.amazonaws.com/complimentarydata/breeds.csv" } ``` diff --git a/site/versioned_docs/version-4.6/developers/real-time.md b/site/versioned_docs/version-4.6/developers/real-time.md index 03853ae6..1c1ed269 100644 --- a/site/versioned_docs/version-4.6/developers/real-time.md +++ b/site/versioned_docs/version-4.6/developers/real-time.md @@ -91,10 +91,10 @@ Non-retained messages are generally a good choice for applications like chat, wh ### WebSockets -WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss:/server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: +WebSockets are supported through the REST interface and go through the `connect(incomingMessages)` method on resources. By default, making a WebSockets connection to a URL will subscribe to the referenced resource. For example, making a WebSocket connection to `new WebSocket('wss://server/my-resource/341')` will access the resource defined for 'my-resource' and the resource id of 341 and connect to it. On the web platform this could be: ```javascript -let ws = new WebSocket('wss:/server/my-resource/341'); +let ws = new WebSocket('wss://server/my-resource/341'); ws.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); @@ -139,7 +139,7 @@ export class Example extends Resource { Server Sent Events (SSE) are also supported through the REST server interface, and provide a simple and efficient mechanism for web-based applications to receive real-time updates. For consistency of push delivery, SSE connections go through the `connect()` method on resources, much like WebSockets. The primary difference is that `connect` is called without any `incomingMessages` argument, since SSE is a one-directional transport mechanism. This can be used much like WebSockets, specifying a resource URL path will connect to that resource, and by default provides a stream of messages for changes and messages for that resource. For example, you can connect to receive notification in a browser for a resource like: ```javascript -let eventSource = new EventSource('https:/server/my-resource/341', { withCredentials: true }); +let eventSource = new EventSource('https://server/my-resource/341', { withCredentials: true }); eventSource.onmessage = (event) => { / received a notification from the server let data = JSON.parse(event.data); diff --git a/site/versioned_docs/version-4.6/developers/replication/index.md b/site/versioned_docs/version-4.6/developers/replication/index.md index 3b6164fd..7e38a02a 100644 --- a/site/versioned_docs/version-4.6/developers/replication/index.md +++ b/site/versioned_docs/version-4.6/developers/replication/index.md @@ -28,7 +28,7 @@ In this example, the current node is `server-one`, and it will connect to `serve replication: hostname: server-one routes: - - wss:/server-two:9933 # URL based route + - wss://server-two:9933 # URL based route - hostname: server-three # define a hostname and port port: 9933 ``` @@ -44,7 +44,7 @@ You can also use the [operations API](../operations-api/clustering) to dynamical These operations will also dynamically generating certificates as needed, if there are no existing signed certificates, or if the existing certificates are not valid for the new node. -Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https:/highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). +Harper will also automatically replicate node information to other nodes in a cluster ([gossip-style discovery](https://highscalability.com/gossip-protocol-explained/)). This means that you only need to connect to one node in an existing cluster, and Harper will automatically detect and connect to other nodes in the cluster (bidirectionally). By default, Harper will replicate all the data in all the databases. You can configure which databases are replicated, and then override this behavior on a per-table basis. For example, you can indicate which databases should be replicated by default, here indicating you want to replicate the `data` and `system` databases: diff --git a/site/versioned_docs/version-4.6/developers/rest.md b/site/versioned_docs/version-4.6/developers/rest.md index 2ebed3f4..21f976e6 100644 --- a/site/versioned_docs/version-4.6/developers/rest.md +++ b/site/versioned_docs/version-4.6/developers/rest.md @@ -107,7 +107,7 @@ GET /my-resource/?property=value&property2=another-value Note that only one of the attributes needs to be indexed for this query to execute. -We can also specify different comparators such as less than and greater than queries using [FIQL](https:/datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: +We can also specify different comparators such as less than and greater than queries using [FIQL](https://datatracker.ietf.org/doc/html/draft-nottingham-atompub-fiql-00) syntax. If we want to specify records with an `age` value greater than 20: ```http GET /my-resource/?age=gt=20 diff --git a/site/versioned_docs/version-4.6/developers/security/basic-auth.md b/site/versioned_docs/version-4.6/developers/security/basic-auth.md index 6e3dac3a..5a04f8ef 100644 --- a/site/versioned_docs/version-4.6/developers/security/basic-auth.md +++ b/site/versioned_docs/version-4.6/developers/security/basic-auth.md @@ -14,7 +14,7 @@ A header is added to each HTTP request. The header key is **“Authorization”* In the below code sample, you can see where we add the authorization header to the request. This needs to be added for each and every HTTP request for Harper. -_Note: This function uses btoa. Learn about_ [_btoa here_](https:/developer.mozilla.org/en-US/docs/Web/API/btoa)_._ +_Note: This function uses btoa. Learn about_ [_btoa here_](https://developer.mozilla.org/en-US/docs/Web/API/btoa)_._ ```javascript function callHarperDB(call_object, operation, callback) { diff --git a/site/versioned_docs/version-4.6/developers/security/certificate-management.md b/site/versioned_docs/version-4.6/developers/security/certificate-management.md index fdc8cc22..bb27577b 100644 --- a/site/versioned_docs/version-4.6/developers/security/certificate-management.md +++ b/site/versioned_docs/version-4.6/developers/security/certificate-management.md @@ -61,7 +61,7 @@ Instead of enabling HTTPS for Harper, Nginx can be used as a reverse proxy for H Install Nginx, configure Nginx to use certificates issued from your own CA or a public CA, then configure Nginx to listen for HTTPS requests and forward to Harper as HTTP requests. -[Certbot](https:/certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. +[Certbot](https://certbot.eff.org/) is a great tool for automatically requesting and renewing Let’s Encrypt certificates used by Nginx. ### Option: External Reverse Proxy diff --git a/site/versioned_docs/version-4.6/developers/security/configuration.md b/site/versioned_docs/version-4.6/developers/security/configuration.md index de30868c..2dee9d86 100644 --- a/site/versioned_docs/version-4.6/developers/security/configuration.md +++ b/site/versioned_docs/version-4.6/developers/security/configuration.md @@ -8,7 +8,7 @@ Harper was set up to require very minimal configuration to work out of the box. ## CORS -Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: +Harper allows for managing [cross-origin HTTP requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). By default, Harper enables CORS for all domains if you need to disable CORS completely or set up an access list of domains you can do the following: 1. Open the harperdb-config.yaml file, which can be found in \, the location you specified during install. 1. In harperdb-config.yaml there should be 2 entries under `operationsApi.network`: cors and corsAccessList. @@ -19,7 +19,7 @@ Harper allows for managing [cross-origin HTTP requests](https:/developer.mozilla 1. The `corsAccessList` will only be recognized by the system when `cors` is `true` 1. To create an access list you set `corsAccessList` to a comma-separated list of domains. - i.e. `corsAccessList` is `http:/harpersystems.dev,http:/products.harpersystems.dev` + i.e. `corsAccessList` is `https://harpersystems.dev,https://products.harpersystems.dev` 1. To clear out the access list and allow all domains: `corsAccessList` is `[null]` diff --git a/site/versioned_docs/version-4.6/developers/security/jwt-auth.md b/site/versioned_docs/version-4.6/developers/security/jwt-auth.md index 570de46d..0ea7290f 100644 --- a/site/versioned_docs/version-4.6/developers/security/jwt-auth.md +++ b/site/versioned_docs/version-4.6/developers/security/jwt-auth.md @@ -93,4 +93,4 @@ Token timeouts are configurable in [harperdb-config.yaml](../../deployments/conf - `operationsApi.authentication.operationTokenTimeout`: Defines the length of time until the operation_token expires (default 1d). - `operationsApi.authentication.refreshTokenTimeout`: Defines the length of time until the refresh_token expires (default 30d). -A full list of valid values for both parameters can be found [here](https:/github.com/vercel/ms). +A full list of valid values for both parameters can be found [here](https://github.com/vercel/ms). diff --git a/site/versioned_docs/version-4.6/developers/sql-guide/date-functions.md b/site/versioned_docs/version-4.6/developers/sql-guide/date-functions.md index 0133e089..d44917c3 100644 --- a/site/versioned_docs/version-4.6/developers/sql-guide/date-functions.md +++ b/site/versioned_docs/version-4.6/developers/sql-guide/date-functions.md @@ -8,9 +8,9 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Date Functions -Harper utilizes [Coordinated Universal Time (UTC)](https:/en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. +Harper utilizes [Coordinated Universal Time (UTC)](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC. -When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https:/en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https:/tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. +When parsing date values passed to SQL date functions in HDB, we first check for [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formats, then for [RFC 2822](https://tools.ietf.org/html/rfc2822#section-3.3) date-time format and then fall back to new Date(date_string)if a known format is not found. ### CURRENT_DATE() @@ -121,7 +121,7 @@ AS date_diff_result" returns ### DATE_FORMAT(date, format) -Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https:/momentjs.com/docs/#/displaying/format/). +Formats and returns a date value in the String format provided. Find more details on accepted format values in the [moment.js docs](https://momentjs.com/docs/#/displaying/format/). ``` "SELECT DATE_FORMAT(1524412627973, 'YYYY-MM-DD HH:mm:ss') diff --git a/site/versioned_docs/version-4.6/developers/sql-guide/functions.md b/site/versioned_docs/version-4.6/developers/sql-guide/functions.md index bf5fd219..0847a657 100644 --- a/site/versioned_docs/version-4.6/developers/sql-guide/functions.md +++ b/site/versioned_docs/version-4.6/developers/sql-guide/functions.md @@ -25,7 +25,7 @@ This SQL keywords reference contains the SQL functions available in Harper. | ARRAY\* | ARRAY(_expression_) | Returns a list of data as a field. | | DISTINCT_ARRAY\* | DISTINCT*ARRAY(\_expression*) | When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set. | -\*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https:/www.harperdb.io/post/sql-queries-to-complex-objects). +\*For more information on ARRAY() and DISTINCT_ARRAY() see [this blog](https://www.harperdb.io/post/sql-queries-to-complex-objects). ### Conversion diff --git a/site/versioned_docs/version-4.6/developers/sql-guide/json-search.md b/site/versioned_docs/version-4.6/developers/sql-guide/json-search.md index b078baa7..13bd3b90 100644 --- a/site/versioned_docs/version-4.6/developers/sql-guide/json-search.md +++ b/site/versioned_docs/version-4.6/developers/sql-guide/json-search.md @@ -8,7 +8,7 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL JSON Search -Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH_JSON. The SEARCH_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](http:/docs.jsonata.org/overview.html) into our SQL engine. +Harper automatically indexes all top level attributes in a row / object written to a table. However, any attributes which hold JSON data do not have their nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, Harper offers a special SQL function called SEARCH_JSON. The SEARCH_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the [JSONata library](https://docs.jsonata.org/overview.html) into our SQL engine. ## Syntax @@ -174,4 +174,4 @@ As seen above we execute the same name filter against the cast array, the primar To see further SEARCH_JSON examples in action view our Postman Collection that provides a [sample database & data with query examples](../operations-api/advanced-json-sql-examples). -To learn more about how to build expressions check out the JSONata documentation: [http:/docs.jsonata.org/overview](http:/docs.jsonata.org/overview) +To learn more about how to build expressions check out the JSONata documentation: [https://docs.jsonata.org/overview](https://docs.jsonata.org/overview) diff --git a/site/versioned_docs/version-4.6/developers/sql-guide/sql-geospatial-functions.md b/site/versioned_docs/version-4.6/developers/sql-guide/sql-geospatial-functions.md index e00986f3..bf7f542f 100644 --- a/site/versioned_docs/version-4.6/developers/sql-guide/sql-geospatial-functions.md +++ b/site/versioned_docs/version-4.6/developers/sql-guide/sql-geospatial-functions.md @@ -8,9 +8,9 @@ Harper encourages developers to utilize other querying tools over SQL for perfor # SQL Geospatial Functions -Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](http:/geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. +Harper geospatial features require data to be stored in a single column using the [GeoJSON standard](https://geojson.org/), a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements. -If you are new to GeoJSON you should check out the full specification here: http:/geojson.org/. There are a few important things to point out before getting started. +If you are new to GeoJSON you should check out the full specification here: [https://geojson.org/](https://geojson.org/). There are a few important things to point out before getting started. 1. All GeoJSON coordinates are stored in `[longitude, latitude]` format. 1. Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement. @@ -303,7 +303,7 @@ WHERE geoContains(geo_data, '{ # geoEqual -Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https:/developers.arcgis.com/documentation/spatial-references/. Returns a Boolean. +Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see [https://developers.arcgis.com/documentation/spatial-references/](https://developers.arcgis.com/documentation/spatial-references/). Returns a Boolean. ## Syntax diff --git a/site/versioned_docs/version-4.6/getting-started/first-harper-app.md b/site/versioned_docs/version-4.6/getting-started/first-harper-app.md index d1f52b47..6acc7b93 100644 --- a/site/versioned_docs/version-4.6/getting-started/first-harper-app.md +++ b/site/versioned_docs/version-4.6/getting-started/first-harper-app.md @@ -11,7 +11,7 @@ Now that you've set up Harper, let's build a simple API. Harper lets you build p Start by cloning the Harper application template: ```bash -git clone https:/github.com/HarperDB/application-template my-app +git clone https://github.com/HarperDB/application-template my-app cd my-app ``` @@ -19,7 +19,7 @@ cd my-app The core of a Harper application is the database, so let's create a database table. -A quick and expressive way to define a table is through a [GraphQL Schema](https:/graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): +A quick and expressive way to define a table is through a [GraphQL Schema](https://graphql.org/learn/schema). Using your editor of choice, edit the file named `schema.graphql` in the root of the application directory, `my-app`, that we created above. To create a table, we will need to add a `type` of `@table` named `Dog` (and you can remove the example table in the template): ```graphql type Dog @table { @@ -126,7 +126,7 @@ If-None-Match: "etag-id" # browsers can automatically provide this ## Querying -Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../developers/rest). Simple queries can be crafted through [URL query parameters](https:/en.wikipedia.org/wiki/Query_string). +Querying your application database is straightforward and easy, as tables exported with the `@export` directive are automatically exposed via [REST endpoints](../developers/rest). Simple queries can be crafted through [URL query parameters](https://en.wikipedia.org/wiki/Query_string). In order to maintain reasonable query speed on a database as it grows in size, it is critical to select and establish the proper indexes. So, before we add the `@export` declaration to our `Dog` table and begin querying it, let's take a moment to target some table properties for indexing. We'll use `name` and `breed` as indexed table properties on our `Dog` table. All we need to do to accomplish this is tag these properties with the `@indexed` directive: diff --git a/site/versioned_docs/version-4.6/getting-started/harper-concepts.md b/site/versioned_docs/version-4.6/getting-started/harper-concepts.md index 87734062..c42f2fe9 100644 --- a/site/versioned_docs/version-4.6/getting-started/harper-concepts.md +++ b/site/versioned_docs/version-4.6/getting-started/harper-concepts.md @@ -10,11 +10,11 @@ As you begin your journey with Harper, there are a few concepts and definitions Harper components are a core Harper concept defined as flexible JavaScript based extensions of the highly extensible core Harper platform. They are executed by Harper directly and have complete access to the Harper [Global APIs](../technical-details/reference/globals) (such as Resource, databases, and tables). -A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../developers/applications/) is a component that uses many other components. The [application template](https:/github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as [rest](../technical-details/reference/components/built-in-extensions#rest) (for automatic REST endpoint generation), [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) (for table schema definitions), and many more. +A key aspect to components are their extensibility; components can be built on other components. For example, a [Harper Application](../developers/applications/) is a component that uses many other components. The [application template](https://github.com/HarperDB/application-template) demonstrates many of Harper's built-in components such as [rest](../technical-details/reference/components/built-in-extensions#rest) (for automatic REST endpoint generation), [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) (for table schema definitions), and many more. ## Applications -Applications are a subset of components that cannot be used directly and must depend on other extensions. Examples include defining schemas (using [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) built-in extension), defining custom resources (using [jsResource](../technical-details/reference/components/built-in-extensions#jsresource) built-in extension), hosting static files (using [static](../technical-details/reference/components/built-in-extensions#static) built-in extension), enabling REST querying of resources (using [rest](../technical-details/reference/components/built-in-extensions#rest) built-in extension), and running [Next.js](https:/github.com/HarperDB/nextjs), [Astro](https:/github.com/HarperDB/astro), or [Apollo](https:/github.com/HarperDB/apollo) applications through their respective extensions. +Applications are a subset of components that cannot be used directly and must depend on other extensions. Examples include defining schemas (using [graphqlSchema](../technical-details/reference/components/built-in-extensions#graphqlschema) built-in extension), defining custom resources (using [jsResource](../technical-details/reference/components/built-in-extensions#jsresource) built-in extension), hosting static files (using [static](../technical-details/reference/components/built-in-extensions#static) built-in extension), enabling REST querying of resources (using [rest](../technical-details/reference/components/built-in-extensions#rest) built-in extension), and running [Next.js](https://github.com/HarperDB/nextjs), [Astro](https://github.com/HarperDB/astro), or [Apollo](https://github.com/HarperDB/apollo) applications through their respective extensions. ## Resources diff --git a/site/versioned_docs/version-4.6/getting-started/index.md b/site/versioned_docs/version-4.6/getting-started/index.md index 841ff062..8767f331 100644 --- a/site/versioned_docs/version-4.6/getting-started/index.md +++ b/site/versioned_docs/version-4.6/getting-started/index.md @@ -8,7 +8,7 @@ If you're new to Harper, this section will guide you through the essential resou Follow the steps in this documentation to discover how Harper can simplify your backend stack, eliminate many inter-process communication delays, and achieve a more predictable and performant application experience. -For more advanced concepts in Harper, see our [blog](https:/www.harpersystems.dev/blog). +For more advanced concepts in Harper, see our [blog](https://www.harpersystems.dev/blog). ## Harper Basics diff --git a/site/versioned_docs/version-4.6/getting-started/install-harper.md b/site/versioned_docs/version-4.6/getting-started/install-harper.md index be315672..8786d674 100644 --- a/site/versioned_docs/version-4.6/getting-started/install-harper.md +++ b/site/versioned_docs/version-4.6/getting-started/install-harper.md @@ -8,7 +8,7 @@ There are three ways to install a Harper instance: using a package manager like ## Installing via NPM -Before you begin, ensure you have [Node.js](https:/nodejs.org/) LTS version or newer. Node.js comes with npm, which will be used to install Harper. +Before you begin, ensure you have [Node.js](https://nodejs.org/) LTS version or newer. Node.js comes with npm, which will be used to install Harper. Open your terminal or command prompt and install Harper globally by executing the command below. Installing globally allows the `harperdb` command to be accessible from anywhere on your machine, making it easier to manage multiple projects. @@ -28,7 +28,7 @@ At this point, your local Harper instance is up and running, giving you the abil ## Installing via Docker -Using Docker to run Harper is an efficient way to manage a containerized instance that encapsulates all of Harper’s functionality. First, ensure that Docker is installed and running on your system. If it isn’t, download it from the [official Docker website](https:/docs.docker.com/engine/install/) and complete the installation process. +Using Docker to run Harper is an efficient way to manage a containerized instance that encapsulates all of Harper’s functionality. First, ensure that Docker is installed and running on your system. If it isn’t, download it from the [official Docker website](https://docs.docker.com/engine/install/) and complete the installation process. Next, open your terminal and pull the latest Harper image by running the following command: @@ -46,7 +46,7 @@ In this command, the `-d` flag runs the container in detached mode, allowing it ### How to Use this Image -[Harper configuration settings⁠](https:/harperdb.io/docs/reference/configuration-file/) can be passed as Docker run environment variables. If no environment variables are provided, Harper will operate with default configuration settings, such as: +[Harper configuration settings⁠](https://harperdb.io/docs/reference/configuration-file/) can be passed as Docker run environment variables. If no environment variables are provided, Harper will operate with default configuration settings, such as: - ROOTPATH=/home/harperdb/hdb - OPERATIONSAPI_NETWORK_PORT=9925 @@ -127,7 +127,7 @@ Once verified, you can access your Harper instance by opening your web browser a ### Raw binary installation -There's a different way to install Harper. You can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM). Click [this link](https:/products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) to download and install the package. Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: +There's a different way to install Harper. You can choose your version and download the npm package and install it directly (you’ll still need Node.js and NPM). Click [this link](https://products-harperdb-io.s3.us-east-2.amazonaws.com/index.html) to download and install the package. Once you’ve downloaded the .tgz file, run the following command from the directory where you’ve placed it: ```bash npm install -g harperdb-X.X.X.tgz harperdb install diff --git a/site/versioned_docs/version-4.6/getting-started/what-is-harper.md b/site/versioned_docs/version-4.6/getting-started/what-is-harper.md index 84071733..ec7e31d3 100644 --- a/site/versioned_docs/version-4.6/getting-started/what-is-harper.md +++ b/site/versioned_docs/version-4.6/getting-started/what-is-harper.md @@ -5,7 +5,7 @@ title: What is Harper # What is Harper :::info -[Connect with our team!](https:/www.harpersystems.dev/contact) +[Connect with our team!](https://www.harpersystems.dev/contact) ::: ## What is Harper? Performance, Simplicity, and Scale. @@ -24,7 +24,7 @@ What we realized is that networking systems together in this way is inefficient ## Build With Harper -Start by running Harper locally with [npm](https:/www.npmjs.com/package/harperdb) or [Docker](https:/hub.docker.com/r/harperdb/harperdb). +Start by running Harper locally with [npm](https://www.npmjs.com/package/harperdb) or [Docker](https://hub.docker.com/r/harperdb/harperdb). Since technology tends to be built around the storage, processing, and transfer of data, start by [defining your schema](../developers/applications/#creating-our-first-table) with the `schema.graphql` file in the root of the application directory. @@ -37,7 +37,7 @@ Finally, when it’s time to deploy, explore [replication](../developers/replica If you would like to jump into the most advanced capabilities, learn about [components](../technical-details/reference/components/). :::warning -Need help? Please don’t hesitate to [reach out](https:/www.harpersystems.dev/contact). +Need help? Please don’t hesitate to [reach out](https://www.harpersystems.dev/contact). ::: ## Popular Use Cases @@ -46,7 +46,7 @@ With so much functionality built in, the use cases span nearly all application s ### Online Catalogs & Content Delivery -For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https:/github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https:/www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. +For use cases like e-commerce, real estate listing, and content-oriented sites, Harper’s breakthroughs in performance and distribution pay dividends in the form of better SEO and higher conversion rates. One common implementation leverages Harper’s [Next.js Component](https://github.com/HarperDB/nextjs) to host modern, performant frontend applications. Other implementations leverage the built-in caching layer and JavaScript application system to [server-side render pages](https://www.harpersystems.dev/development/tutorials/server-side-rendering-with-multi-tier-cache) that remain fully responsive because of built-in WebSocket connections. ### Data Delivery Networks @@ -56,4 +56,4 @@ For use cases like real-time sports updates, flight tracking, and zero-day softw Capturing, storing, and processing real-time data streams from client and IoT systems typically requires a stack of technology. Harper’s selective data replication and self-healing connections make for an ideal multi-tier system where edge and cloud systems both run Harper, making everything more performant. -[We’re happy](https:/www.harpersystems.dev/contact) to walk you through how to do this. +[We’re happy](https://www.harpersystems.dev/contact) to walk you through how to do this. diff --git a/site/versioned_docs/version-4.6/index.md b/site/versioned_docs/version-4.6/index.md index 98e5f5d0..fb357f64 100644 --- a/site/versioned_docs/version-4.6/index.md +++ b/site/versioned_docs/version-4.6/index.md @@ -5,7 +5,7 @@ title: Harper Docs # Harper Docs :::info -[Connect with our team!](https:/www.harpersystems.dev/contact) +[Connect with our team!](https://www.harpersystems.dev/contact) ::: Welcome to the Harper Documentation! Here, you'll find all things Harper, and everything you need to get started, troubleshoot issues, and make the most of our platform. diff --git a/site/versioned_docs/version-4.6/technical-details/reference/blob.md b/site/versioned_docs/version-4.6/technical-details/reference/blob.md index c747fd28..9b8871bd 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/blob.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/blob.md @@ -63,7 +63,7 @@ await blob.save(MyTable); await MyTable.put({ id: 'my-record', data: blob }); ``` -Note that this means that blobs are _not_ atomic or [ACID](https:/en.wikipedia.org/wiki/ACID) compliant; streaming functionality achieves the opposite behavior of ACID/atomic writes that would prevent access to data as it is being written. +Note that this means that blobs are _not_ atomic or [ACID](https://en.wikipedia.org/wiki/ACID) compliant; streaming functionality achieves the opposite behavior of ACID/atomic writes that would prevent access to data as it is being written. ### Error Handling diff --git a/site/versioned_docs/version-4.6/technical-details/reference/components/applications.md b/site/versioned_docs/version-4.6/technical-details/reference/components/applications.md index 524a7e08..31daf0e1 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/components/applications.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/components/applications.md @@ -105,13 +105,13 @@ Unlike local development where `package` should be set to a local file path for A local application can be deployed to a remote instance by **omitting** the `package` field. Harper will automatically package the local directory and include that along with the rest of the deployment operation. -Furthermore, the `package` field can be set to any valid [npm dependency value](https:/docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). +Furthermore, the `package` field can be set to any valid [npm dependency value](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies). - For applications deployed to npm, specify the package name: `package="@harperdb/status-check"` -- For applications on GitHub, specify the URL: `package="https:/github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` +- For applications on GitHub, specify the URL: `package="https://github.com/HarperDB/status-check"`, or the shorthand `package=HarperDB/status-check` - Private repositories also work if the correct SSH keys are on the server: `package="git+ssh:/git@github.com:HarperDB/secret-applications.git"` - Reference the [SSH Key](../../../developers/operations-api/components#add-ssh-key) operations for more information on managing SSH keys on a remote instance -- Even tarball URLs are supported: `package="https:/example.com/application.tar.gz"` +- Even tarball URLs are supported: `package="https://example.com/application.tar.gz"` > When using git tags, we highly recommend that you use the semver directive to ensure consistent and reliable installation by npm. In addition to tags, you can also reference branches or commit numbers. @@ -154,7 +154,7 @@ myTarBall: myLocal: package: /Users/harper/local # install from local path myWebsite: - package: https:/harperdb-component # install from URL + package: https://harperdb-component # install from URL ``` Harper will generate a `package.json` like: @@ -166,7 +166,7 @@ Harper will generate a `package.json` like: "myNPMComponent": "npm:harperdb", "myTarBall": "file:/Users/harper/cool-component.tar", "myLocal": "file:/Users/harper/local", - "myWebsite": "https:/harperdb-component" + "myWebsite": "https://harperdb-component" } } ``` diff --git a/site/versioned_docs/version-4.6/technical-details/reference/components/built-in-extensions.md b/site/versioned_docs/version-4.6/technical-details/reference/components/built-in-extensions.md index ad2b8ff2..319183a5 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/components/built-in-extensions.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/components/built-in-extensions.md @@ -33,7 +33,7 @@ dataLoader: ## fastifyRoutes -Specify custom endpoints using [Fastify](https:/fastify.dev/). +Specify custom endpoints using [Fastify](https://fastify.dev/). This component is a [Resource Extension](./extensions#resource-extension) and can be configured with the [`files` and `urlPath`](./extensions#resource-extension-configuration) configuration options. diff --git a/site/versioned_docs/version-4.6/technical-details/reference/components/configuration.md b/site/versioned_docs/version-4.6/technical-details/reference/components/configuration.md index 08fa4cc2..3e6108a0 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/components/configuration.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/components/configuration.md @@ -46,7 +46,7 @@ Then, within `config.yaml` it can be enabled and configured using: # ... ``` -Since npm allows for a [variety of dependency configurations](https:/docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: +Since npm allows for a [variety of dependency configurations](https://docs.npmjs.com/cli/configuring-npm/package-json#dependencies), this can be used to create custom references. For example, to depend on a specific GitHub branch, first update the `package.json`: ```json { diff --git a/site/versioned_docs/version-4.6/technical-details/reference/components/extensions.md b/site/versioned_docs/version-4.6/technical-details/reference/components/extensions.md index b2a613b1..f72dfdf7 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/components/extensions.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/components/extensions.md @@ -12,7 +12,7 @@ Furthermore, what defines an extension separately from a component is that it le All extensions must define a `config.yaml` file and declare an `extensionModule` option. This must be a path to the extension module source code. The path must resolve from the root of the module directory. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) `config.yaml` specifies `extensionModule: ./extension.js`. If the plugin is being written in something other than JavaScript (such as TypeScript), ensure that the path resolves to the built version, (i.e. `extensionModule: ./dist/index.js`) @@ -30,9 +30,9 @@ Other than their execution behavior, the `handleFile()` and `setupFile()` method Any [Resource Extension](#resource-extension) can be configured with the `files` and `urlPath` options. These options control how _files_ and _directories_ are resolved in order to be passed to the extension's `handleFile()`, `setupFile()`, `handleDirectory()`, and `setupDirectory()` methods. -> Harper relies on the [fast-glob](https:/github.com/mrmlnc/fast-glob) library for glob pattern matching. +> Harper relies on the [fast-glob](https://github.com/mrmlnc/fast-glob) library for glob pattern matching. -- **files** - `string | string[] | Object` - _required_ - A [glob pattern](https:/github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax) string, array of glob pattern strings, or a more expressive glob options object determining the set of files and directories to be resolved for the extension. If specified as an object, the `source` property is required. By default, Harper **matches files and directories**; this is configurable using the `only` option. +- **files** - `string | string[] | Object` - _required_ - A [glob pattern](https://github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax) string, array of glob pattern strings, or a more expressive glob options object determining the set of files and directories to be resolved for the extension. If specified as an object, the `source` property is required. By default, Harper **matches files and directories**; this is configurable using the `only` option. - **source** - `string | string[]` - _required_ - The glob pattern string or array of strings. - **only** - `'all' | 'files' | 'directories'` - _optional_ - The glob pattern will match only the specified entry type. Defaults to `'all'`. - **ignore** - `string[]` - _optional_ - An array of glob patterns to exclude from matches. This is an alternative way to use negative patterns. Defaults to `[]`. @@ -154,13 +154,13 @@ Returns: `boolean | void | Promise` ## Protocol Extension -A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../globals#server) global API documentation for more information). +A Protocol Extension is a more advanced form of a Resource Extension and is mainly used for implementing higher level protocols. For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs) handles building and running a Next.js project. A Protocol Extension is particularly useful for adding custom networking handlers (see the [`server`](../globals#server) global API documentation for more information). ### Protocol Extension Configuration In addition to the `files` and `urlPath` [Resource Extension configuration](#resource-extension-configuration) options, and the `package` [Custom Component configuration](#custom-component-configuration) option, Protocol Extensions can also specify additional configuration options. Any options added to the extension configuration (in `config.yaml`), will be passed through to the `options` object of the `start()` and `startOnMainThread()` methods. -For example, the [Harper Next.js Extension](https:/github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: +For example, the [Harper Next.js Extension](https://github.com/HarperDB/nextjs#options) specifies multiple option that can be included in its configuration. For example, a Next.js app using `@harperdb/nextjs` may specify the following `config.yaml`: ```yaml '@harperdb/nextjs': diff --git a/site/versioned_docs/version-4.6/technical-details/reference/components/index.md b/site/versioned_docs/version-4.6/technical-details/reference/components/index.md index d3cd7214..9f2ec2c4 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/components/index.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/components/index.md @@ -28,12 +28,12 @@ This technical reference section has detailed information on various component s ## Custom Applications -- [`@harperdb/status-check`](https:/github.com/HarperDB/status-check) -- [`@harperdb/prometheus-exporter`](https:/github.com/HarperDB/prometheus-exporter) -- [`@harperdb/acl-connect`](https:/github.com/HarperDB/acl-connect) +- [`@harperdb/status-check`](https://github.com/HarperDB/status-check) +- [`@harperdb/prometheus-exporter`](https://github.com/HarperDB/prometheus-exporter) +- [`@harperdb/acl-connect`](https://github.com/HarperDB/acl-connect) ## Custom Extensions -- [`@harperdb/nextjs`](https:/github.com/HarperDB/nextjs) -- [`@harperdb/apollo`](https:/github.com/HarperDB/apollo) -- [`@harperdb/astro`](https:/github.com/HarperDB/astro) +- [`@harperdb/nextjs`](https://github.com/HarperDB/nextjs) +- [`@harperdb/apollo`](https://github.com/HarperDB/apollo) +- [`@harperdb/astro`](https://github.com/HarperDB/astro) diff --git a/site/versioned_docs/version-4.6/technical-details/reference/components/plugins.md b/site/versioned_docs/version-4.6/technical-details/reference/components/plugins.md index 8bfbdd25..bdc2010a 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/components/plugins.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/components/plugins.md @@ -10,7 +10,7 @@ Similar to the existing extension API, a plugin must specify an `pluginModule` o If the plugin is being written in something other than JavaScript (such as TypeScript), ensure that the path resolves to the built version, (i.e. `pluginModule: ./dist/index.js`) -It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since plugins are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https:/docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! +It is also recommended that all extensions have a `package.json` that specifies JavaScript package metadata such as name, version, type, etc. Since plugins are just JavaScript packages, they can do anything a JavaScript package can normally do. It can be written in TypeScript, and compiled to JavaScript. It can export an executable (using the [bin](https://docs.npmjs.com/cli/configuring-npm/package-json#bin) property). It can be published to npm. The possibilities are endless! The key to a plugin is the [`handleApplication()`](#function-handleapplicationscope-scope-void--promisevoid) method. It must be exported by the `pluginModule`, and cannot coexist with any of the other extension methods such as `start`, `handleFile`, etc. The component loader will throw an error if both are defined. @@ -173,7 +173,7 @@ This is the only method a plugin module must export. It can be async and is awai ## Class: `Scope` -- Extends [`EventEmitter`](https:/nodejs.org/docs/latest/api/events.html#class-eventemitter) +- Extends [`EventEmitter`](https://nodejs.org/docs/latest/api/events.html#class-eventemitter) ### Event: `'close'` @@ -323,7 +323,7 @@ Returns: `string` - The directory of the application. This is the root directory ## Class: `OptionsWatcher` -- Extends [`EventEmitter`](https:/nodejs.org/docs/latest/api/events.html#class-eventemitter) +- Extends [`EventEmitter`](https://nodejs.org/docs/latest/api/events.html#class-eventemitter) ### Event: `'change'` @@ -414,7 +414,7 @@ Any valid configuration value type. Essentially, the primitive types, an array o ## Class: `EntryHandler` -Extends: [`EventEmitter`](https:/nodejs.org/docs/latest/api/events.html#class-eventemitter) +Extends: [`EventEmitter`](https://nodejs.org/docs/latest/api/events.html#class-eventemitter) Created by calling [`scope.handleEntry()`](#scopehandleentry) method. @@ -522,7 +522,7 @@ This method returns a promise associated with the ready event of the updated han ### Interface: `BaseEntry` -- **stats** - [`fs.Stats`](https:/nodejs.org/docs/latest/api/fs.html#class-fsstats) | `undefined` - The file system stats for the entry. +- **stats** - [`fs.Stats`](https://nodejs.org/docs/latest/api/fs.html#class-fsstats) | `undefined` - The file system stats for the entry. - **urlPath** - `string` - The recommended URL path of the entry. - **absolutePath** - `string` - The absolute path of the entry. diff --git a/site/versioned_docs/version-4.6/technical-details/reference/content-types.md b/site/versioned_docs/version-4.6/technical-details/reference/content-types.md index d7567f7f..90ab593a 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/content-types.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/content-types.md @@ -26,4 +26,4 @@ MessagePack is another efficient binary format like CBOR, with support for all H Comma-separated values is an easy to use and understand format that can be readily imported into spreadsheets or used for data processing. CSV lacks hierarchical structure for most data types, and shouldn't be used for frequent/production use, but when you need it, it is available. -In addition, with the REST interface, you can use file-style extensions to indicate an encoding like http:/host/path.csv to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. +In addition, with the REST interface, you can use file-style extensions to indicate an encoding like [https://host/path.csv](https://host/path.csv) to indicate CSV encoding. See the [REST documentation](../../developers/rest) for more information on how to do this. diff --git a/site/versioned_docs/version-4.6/technical-details/reference/data-types.md b/site/versioned_docs/version-4.6/technical-details/reference/data-types.md index 0262d25f..1591a6a5 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/data-types.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/data-types.md @@ -20,7 +20,7 @@ Strings, or text, are a sequence of any unicode characters and are internally en Numbers can be stored as signed integers up to a 1000 bits of precision (about 300 digits) or floating point with 64-bit floating point precision, and numbers are automatically stored using the most optimal type. With JSON, numbers are automatically parsed and stored in the most appropriate format. Custom components and applications may use BigInt numbers to store/access integers that are larger than 53-bit. The following GraphQL schema type name are supported: -- `Float` - Any number that can be represented with [64-bit double precision floating point number](https:/en.wikipedia.org/wiki/Double-precision_floating-point_format) ("double") +- `Float` - Any number that can be represented with [64-bit double precision floating point number](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) ("double") - `Int` - Any integer between from -2147483648 to 2147483647 - `Long` - Any integer between from -9007199254740992 to 9007199254740992 - `BigInt` - Any integer (negative or positive) with less than 300 digits diff --git a/site/versioned_docs/version-4.6/technical-details/reference/dynamic-schema.md b/site/versioned_docs/version-4.6/technical-details/reference/dynamic-schema.md index 2ea72c1e..2ca76839 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/dynamic-schema.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/dynamic-schema.md @@ -31,8 +31,8 @@ With tables that are using dynamic schemas, additional attributes are reflexivel Harper automatically creates two audit attributes used on each record if the table is created without a schema. -- `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. -- `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https:/www.epochconverter.com/) format. +- `__createdtime__`: The time the record was created in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. +- `__updatedtime__`: The time the record was updated in [Unix Epoch with milliseconds](https://www.epochconverter.com/) format. ### Dynamic Schema Example diff --git a/site/versioned_docs/version-4.6/technical-details/reference/globals.md b/site/versioned_docs/version-4.6/technical-details/reference/globals.md index 70763cde..8a24c335 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/globals.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/globals.md @@ -94,15 +94,15 @@ The HTTP request listener to be added to the middleware chain. To continue chain ### `Request` and `Response` -The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https:/developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resources/) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: +The `Request` and `Response` classes are based on the WHATWG APIs for the [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) and [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) classes. Requests and responses are based on these standard-based APIs to facilitate reuse with modern web code. While Node.js' HTTP APIs are powerful low-level APIs, the `Request`/`Response` APIs provide excellent composability characteristics, well suited for layered middleware and for clean mapping to [RESTful method handlers](./resources/) with promise-based responses, as well as interoperability with other standards-based APIs like [streams](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) used with [`Blob`s](https://developer.mozilla.org/en-US/docs/Web/API/Blob). However, the Harper implementation of these classes is not a direct implementation of the WHATWG APIs, but implements additional/distinct properties for the the Harper server environment: #### `Request` A `Request` object is passed to the direct static REST handlers, and preserved as the context for instance methods, and has the following properties: -- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `http:/example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. +- `url` - This is the request target, which is the portion of the URL that was received by the server. If a client sends a request to `https://example.com:8080/path?query=string`, the actual received request is `GET /path?query=string` and the `url` property will be `/path?query=string`. - `method` - This is the HTTP method of the request. This is a string like `GET`, `POST`, `PUT`, `DELETE`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the request. - `pathname` - This is the path portion of the URL, without the query string. For example, if the URL is `/path?query=string`, the `pathname` will be `/path`. - `protocol` - This is the protocol of the request, like `http` or `https`. - `data` - This is the deserialized body of the request (based on the type of data specified by `Content-Type` header). @@ -124,17 +124,17 @@ Cache.sourcedFrom(Origin); - `login(username, password): Promise` - This method can be called to start an authenticated session. The login will authenticate the user by username and password. If the authentication was successful, a session will be created and a cookie will be set on the response header that references the session. All subsequent requests from the client that sends the cookie in requests will be authenticated as the user that logged in and the session record will be attached to the request. This method returns a promise that resolves when the login is successful, and rejects if the login is unsuccessful. - `session` - This is the session object that is associated with current cookie-maintained session. This object is used to store session data for the current session. This is `Table` record instance, and can be updated by calling `request.session.update({ key: value })` or session can be retrieved with `request.session.get()`. If the cookie has not been set yet, a cookie will be set the first time a session is updated or a login occurs. -- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https:/nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. -- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https:/nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. +- `_nodeRequest` - This is the underlying Node.js [`http.IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) object. This can be used to access the raw request data, such as the raw headers, raw body, etc. However, this is discouraged and should be used with caution since it will likely break any other server handlers that depends on the layered `Request` call with `Response` return pattern. +- `_nodeResponse` - This is the underlying Node.js [`http.ServerResponse`](https://nodejs.org/api/http.html#http_class_http_serverresponse) object. This can be used to access the raw response data, such as the raw headers. Again, this is discouraged and can cause problems for middleware, should only be used if you are certain that other server handlers will not attempt to return a different `Response` object. #### `Response` REST methods can directly return data that is serialized and returned to users, or it can return a `Response` object (or a promise to a `Response`), or it can return a `Response`-like object with the following properties (or again, a promise to it): - `status` - This is the HTTP status code of the response. This is a number like `200`, `404`, `500`, etc. -- `headers` - This is a [`Headers`](https:/developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. +- `headers` - This is a [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object that contains the headers of the response. - `data` - This is the data to be returned of the response. This will be serialized using Harper's content negotiation. -- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https:/developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https:/developer.mozilla.org/en-US/docs/Web/API/Blob). +- `body` - Alternately (to `data`), the raw body can be returned as a `Buffer`, string, stream (Node.js or [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)), or a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). #### `HttpOptions` @@ -148,7 +148,7 @@ Properties: #### `HttpServer` -Node.js [`http.Server`](https:/nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https:/nodejs.org/api/https.html#class-httpsserver) instance. +Node.js [`http.Server`](https://nodejs.org/api/http.html#class-httpserver) or [`https.SecureServer`](https://nodejs.org/api/https.html#class-httpsserver) instance. ### `server.socket(listener: ConnectionListener, options: SocketOptions): SocketServer` @@ -158,16 +158,16 @@ Only one socket server will be created. A `securePort` takes precedence. #### `ConnectionListener` -Node.js socket server connection listener as documented in [`net.createServer`](https:/nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https:/nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) +Node.js socket server connection listener as documented in [`net.createServer`](https://nodejs.org/api/net.html#netcreateserveroptions-connectionlistener) or [`tls.createServer`](https://nodejs.org/api/tls.html#tlscreateserveroptions-secureconnectionlistener) #### `SocketOptions` -- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) instance. -- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +- `port` - _optional_ - `number` - Specify the port for the [`net.Server`](https://nodejs.org/api/net.html#class-netserver) instance. +- `securePort` - _optional_ - `number` - Specify the port for the [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. #### `SocketServer` -Node.js [`net.Server`](https:/nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https:/nodejs.org/api/tls.html#class-tlsserver) instance. +Node.js [`net.Server`](https://nodejs.org/api/net.html#class-netserver) or [`tls.Server`](https://nodejs.org/api/tls.html#class-tlsserver) instance. ### `server.ws(listener: WsListener, options: WsOptions): HttpServer[]` @@ -195,8 +195,8 @@ Type: `(ws: WebSocket, request: Request, chainCompletion: ChainCompletion, next: The WebSocket connection listener. -- The `ws` argument is the [WebSocket](https:/github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. -- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https:/github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. +- The `ws` argument is the [WebSocket](https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) instance as defined by the `ws` module. +- The `request` argument is Harper's transformation of the `IncomingMessage` argument of the standard ['connection'](https://github.com/websockets/ws/blob/master/doc/ws.md#event-connection) listener event for a WebSocket server. - The `chainCompletion` argument is a `Promise` of the associated HTTP server's request chain. Awaiting this promise enables the user to ensure the HTTP request has finished being processed before operating on the WebSocket. - The `next` argument is similar to that of other `next` arguments in Harper's server middlewares. To continue execution of the WebSocket connection listener middleware chain, pass all of the other arguments to this one such as: `next(ws, request, chainCompletion)` @@ -213,13 +213,13 @@ Properties: ### `server.upgrade(listener: UpgradeListener, options: UpgradeOptions): void` -Add a listener to the HTTP Server [upgrade](https:/nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](./globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. +Add a listener to the HTTP Server [upgrade](https://nodejs.org/api/http.html#event-upgrade_1) event. If a WebSocket connection listener is added using [`server.ws()`](./globals#serverwslistener-wslistener-options-wsoptions-httpserver), a default upgrade handler will be added as well. The default upgrade handler will add a `__harperdb_request_upgraded` boolean to the `request` argument to signal the connection has already been upgraded. It will also check for this boolean _before_ upgrading and if it is `true`, it will pass the arguments along to the `next` listener. This method should be used to delegate HTTP upgrade events to an external WebSocket server instance. Example: -> This example is from the Harper Next.js component. See the complete source code [here](https:/github.com/HarperDB/nextjs/blob/main/extension.js) +> This example is from the Harper Next.js component. See the complete source code [here](https://github.com/HarperDB/nextjs/blob/main/extension.js) ```js server.upgrade( @@ -242,7 +242,7 @@ server.upgrade( Type: `(request, socket, head, next) => void` -The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https:/nodejs.org/api/http.html#event-upgrade_1) event. +The arguments are passed to the middleware chain from the HTTP server [`'upgrade'`](https://nodejs.org/api/http.html#event-upgrade_1) event. #### `UpgradeOptions` @@ -304,7 +304,7 @@ server.resources.getMatch('/NewResource/some-id', 'my-protocol'); ### `server.operation(operation: Object, context?: Object, authorize?: boolean)` -Execute an operation from the [Operations API](https:/docs.harperdb.io/developers/operations-api) +Execute an operation from the [Operations API](https://docs.harperdb.io/developers/operations-api) Parameters: @@ -312,7 +312,7 @@ Parameters: - **context** - `Object` - `{ username: string}` - _optional_ - The specified user - **authorize** - `boolean` - _optional_ - Indicate the operation should authorize the user or not. Defaults to `false` -Returns a `Promise` with the operation's response as per the [Operations API documentation](https:/docs.harperdb.io/developers/operations-api). +Returns a `Promise` with the operation's response as per the [Operations API documentation](https://docs.harperdb.io/developers/operations-api). ### `server.nodes` diff --git a/site/versioned_docs/version-4.6/technical-details/reference/graphql.md b/site/versioned_docs/version-4.6/technical-details/reference/graphql.md index edcc723b..1626e97c 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/graphql.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/graphql.md @@ -10,7 +10,7 @@ Get started by setting `graphql: true` in `config.yaml`. This automatically enables a `/graphql` endpoint that can be used for GraphQL queries. -> Harper's GraphQL component is inspired by the [GraphQL Over HTTP](https:/graphql.github.io/graphql-over-http/draft/#) specification; however, it does not fully implement neither that specification nor the [GraphQL](https:/spec.graphql.org/) specification. +> Harper's GraphQL component is inspired by the [GraphQL Over HTTP](https://graphql.github.io/graphql-over-http/draft/#) specification; however, it does not fully implement neither that specification nor the [GraphQL](https://spec.graphql.org/) specification. Queries can either be `GET` or `POST` requests, and both follow essentially the same request format. `GET` requests must use search parameters, and `POST` requests use the request body. @@ -46,7 +46,7 @@ Accept: application/graphql-response+json > Tip: For the best user experience, include the `Accept: application/graphql-response+json` header in your request. This provides better status codes for errors. -The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https:/graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resources/#query) for more complex queries. +The Harper GraphQL querying system is strictly limited to exported Harper Resources. For many users, this will typically be a table that uses the `@exported` directive in its schema. Queries can only specify Harper Resources and their attributes in the selection set. Queries can filter using [arguments](https://graphql.org/learn/queries/#arguments) on the top-level Resource field. Harper provides a short form pattern for simple queries, and a long form pattern based off of the [Resource Query API](./resources/#query) for more complex queries. Unlike REST queries, GraphQL queries can specify multiple resources simultaneously: @@ -79,8 +79,8 @@ GET /Owner/?select(id,name,occupation) There are three request parameters for GraphQL queries: `query`, `operationName`, and `variables` 1. `query` - _Required_ - The string representation of the GraphQL document. - 1. Limited to [Executable Definitions](https:/spec.graphql.org/October2021/#executabledefinition) only. - 1. i.e. GraphQL [`query`](https:/graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https:/graphql.org/learn/queries/#fragments). + 1. Limited to [Executable Definitions](https://spec.graphql.org/October2021/#executabledefinition) only. + 1. i.e. GraphQL [`query`](https://graphql.org/learn/queries/#fields) or `mutation` (coming soon) operations, and [fragments](https://graphql.org/learn/queries/#fragments). 1. If an shorthand, unnamed, or singular named query is provided, they will be executed by default. Otherwise, if there are multiple queries, the `operationName` parameter must be used. 1. `operationName` - _Optional_ - The name of the query operation to execute if multiple queries are provided in the `query` parameter 1. `variables` - _Optional_ - A map of variable values to be used for the specified query diff --git a/site/versioned_docs/version-4.6/technical-details/reference/resources/index.md b/site/versioned_docs/version-4.6/technical-details/reference/resources/index.md index 8c42cd54..f1862103 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/resources/index.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/resources/index.md @@ -80,7 +80,7 @@ export class MyTable extends tables.MyTable { Make sure that if are extending and `export`ing your table with this class, that you remove the `@export` directive in your schema, so that you aren't exporting the same table/class name twice. -All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. +All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. ## Global Variables diff --git a/site/versioned_docs/version-4.6/technical-details/reference/resources/instance-binding.md b/site/versioned_docs/version-4.6/technical-details/reference/resources/instance-binding.md index 8c2629d1..ca4b7671 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/resources/instance-binding.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/resources/instance-binding.md @@ -57,7 +57,7 @@ export class MyTable extends tables.MyTable { Make sure that if are extending and `export`ing your table with this class, that you remove the `@export` directive in your schema, so that you aren't exporting the same table/class name twice. -All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https:/developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. +All Resource methods that are called from HTTP methods may directly return data or may return a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object or an object with `headers` and a `status` (HTTP status code), to explicitly return specific headers and status code. ## Global Variables diff --git a/site/versioned_docs/version-4.6/technical-details/reference/resources/migration.md b/site/versioned_docs/version-4.6/technical-details/reference/resources/migration.md index 6a6899f0..1d3f091e 100644 --- a/site/versioned_docs/version-4.6/technical-details/reference/resources/migration.md +++ b/site/versioned_docs/version-4.6/technical-details/reference/resources/migration.md @@ -4,7 +4,7 @@ title: Migration to Resource API version 2 (non-instance binding) # Migration to Resource API version 2 (non-instance binding) -The Resource API was inspired by two major design ideas: the REST architectural design and the [Active Record pattern](https:/en.wikipedia.org/wiki/Active_record_pattern) (made popular by Ruby on Rails and heavily used as a pattern in many ORMs). The basic design goal of the Resource API is to integrate these concepts into a single construct that can directly map RESTful methods (specifically the "uniform interface" of HTTP) to an active record data model. However, while the active record pattern has been for _consumption_ of data, implementing methods for endpoint definitions and caching sources as a data _provider_ can be confusing and cumbersome to implement. The updated non-instance binding Resource API is designed to make it easier and more consistent to implement a data provider and interact with records across a table, while maintaining more explicit control over what data is loaded and when. +The Resource API was inspired by two major design ideas: the REST architectural design and the [Active Record pattern](https://en.wikipedia.org/wiki/Active_record_pattern) (made popular by Ruby on Rails and heavily used as a pattern in many ORMs). The basic design goal of the Resource API is to integrate these concepts into a single construct that can directly map RESTful methods (specifically the "uniform interface" of HTTP) to an active record data model. However, while the active record pattern has been for _consumption_ of data, implementing methods for endpoint definitions and caching sources as a data _provider_ can be confusing and cumbersome to implement. The updated non-instance binding Resource API is designed to make it easier and more consistent to implement a data provider and interact with records across a table, while maintaining more explicit control over what data is loaded and when. The updated Resource API is enabled on a per-class basis by setting static `loadAsInstance` property to `false`. When this property is set to `false`, this means that the Resource instances will not be bound to a specific record. Instead instances represent the whole table, capturing the context and current transactional state. Any records in the table can be loaded or modified from `this` instance. There are a number of implications and different behaviors from a Resource class with `static loadAsInstance = false`: diff --git a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.0.0.md b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.0.0.md index 7a3b86bb..b94ea2f8 100644 --- a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.0.0.md +++ b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.0.0.md @@ -9,7 +9,7 @@ sidebar_position: 59999 **Networking & Data Replication (Clustering)** -The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https:/nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. +The HarperDB clustering internals have been rewritten and the underlying technology for Clustering has been completely replaced with [NATS](https://nats.io/), an enterprise grade connective technology responsible for addressing, discovery and exchanging of messages that drive the common patterns in distributed systems. - CORE-1464, CORE-1470, : Remove SocketCluster dependencies and all code related to them. - CORE-1465, CORE-1485, CORE-1537, CORE-1538, CORE-1558, CORE-1583, CORE_1665, CORE-1710, CORE-1801, CORE-1865 :Add nats-`server` code as dependency, on install of HarperDB download nats-`server` is possible else fallback to building from source code. diff --git a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.1.0.md b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.1.0.md index 17e3fd08..2e9e5480 100644 --- a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.1.0.md +++ b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.1.0.md @@ -19,7 +19,7 @@ Logging has been revamped and condensed into one `hdb.log` file. See [logginglog A new operation called `cluster_network` was added, this operation will ping the cluster and return a list of enmeshed nodes. -Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https:/docs.harperdb.io/docs/v/4.1/custom-functions/host-static). +Custom Functions will no longer automatically load static file routes, instead the `@fastify/static` plugin will need to be registered with the Custom Function server. See [Host A Static Web UI-static](https://docs.harperdb.io/docs/v/4.1/custom-functions/host-static). Updates to S3 import and export mean that these operations now require the bucket `region` in the request. Also, if referencing a nested object it should be done in the `key` parameter. See examples [here](../../../developers/operations-api/bulk-operations#import-from-s3). diff --git a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.3.0.md b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.3.0.md index dc76f9ce..9eed751b 100644 --- a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.3.0.md +++ b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.3.0.md @@ -76,7 +76,7 @@ HarperDB now supports `BigInt` attributes/values with integers (with full precis #### Local Studio Upgrade -HarperDB has upgraded the local studio to match the same version that is offered on http:/studio.harperdb.io. The local studio now has the full robust feature set of the online version. +HarperDB has upgraded the local studio to match the same version that is offered on [https://studio.harperdb.io](https://studio.harperdb.io). The local studio now has the full robust feature set of the online version. ### MQTT @@ -122,4 +122,4 @@ In addition to storage improvements, HarperDB now includes functionality for [co Compression is now enabled by default for all records over 4KB. -To learn more on how to configure compression visit [configuration](https:/docs.harperdb.io/docs/v/4.3/deployments/configuration). +To learn more on how to configure compression visit [configuration](https://docs.harperdb.io/docs/v/4.3/deployments/configuration). diff --git a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.4.0.md b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.4.0.md index f193b95a..4ac68140 100644 --- a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.4.0.md +++ b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.4.0.md @@ -25,7 +25,7 @@ Certain operations can now be replicated across the cluster, including the deplo ### Computed Properties -Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation ](../../../../developers/applications/defining-schemas), [Resource API](../../reference/resources), and our blog post on [computed properties](https:/www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. +Computed properties allow applications to define properties that are computed from other properties, allowing for composite properties that are calculated from other data stored in records without requiring actual storage of the computed value. For example, you could have a computed property for a full name based on first and last, or age/duration based on a date. Computed properties are also foundational for custom indexes. See the [schema documentation](../../../../developers/applications/defining-schemas), [Resource API](../../reference/resources), and our blog post on [computed properties](https://www.harperdb.io/development/tutorials/how-to-create-custom-indexes-with-computed-properties) for more information. ### Custom Indexing diff --git a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.6.0.md b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.6.0.md index bdd07ea9..7614ef03 100644 --- a/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.6.0.md +++ b/site/versioned_docs/version-4.6/technical-details/release-notes/v4-tucker/4.6.0.md @@ -11,7 +11,7 @@ sidebar_position: 59399 ### Vector Indexing: Hierarchical Navigable Small World -Harper 4.6 now includes support for vector indexing, which allows for efficient and fast queries on large semantic data sets. Vector indexing is powered by the [Hierarchical Navigable Small World (HNSW) algorithm](https:/arxiv.org/abs/1603.09320) and can be used to index any vector-valued property, and is particularly useful for vector text-embedding data. This provides powerful efficient vector-based searching for semantic and AI-based querying functionality. HNSW is a preferred algorithm for vector indexing and searching because it provides an excellent balance of recall and performance. +Harper 4.6 now includes support for vector indexing, which allows for efficient and fast queries on large semantic data sets. Vector indexing is powered by the [Hierarchical Navigable Small World (HNSW) algorithm](https://arxiv.org/abs/1603.09320) and can be used to index any vector-valued property, and is particularly useful for vector text-embedding data. This provides powerful efficient vector-based searching for semantic and AI-based querying functionality. HNSW is a preferred algorithm for vector indexing and searching because it provides an excellent balance of recall and performance. ### New Extension API with support for dynamic reloading