diff --git a/.github/.keepalive b/.github/.keepalive
new file mode 100644
index 00000000..af63becd
--- /dev/null
+++ b/.github/.keepalive
@@ -0,0 +1 @@
+2023-10-01T05:30:18.136Z
diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
index 06a9a75f..ab56cca8 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmark.yml
@@ -41,11 +41,13 @@ jobs:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml
index a00dbe5d..3acd3a94 100644
--- a/.github/workflows/cancel.yml
+++ b/.github/workflows/cancel.yml
@@ -44,7 +44,8 @@ jobs:
# Cancel existing workflow runs:
- name: 'Cancel existing workflow runs'
- uses: styfle/cancel-workflow-action@0.11.0
+ # Pin action to full length commit SHA corresponding to v0.11.0
+ uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5
with:
workflow_id: >-
benchmark.yml,
diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml
index 442ab590..e642b5a8 100644
--- a/.github/workflows/close_pull_requests.yml
+++ b/.github/workflows/close_pull_requests.yml
@@ -26,19 +26,29 @@ on:
# Workflow jobs:
jobs:
+
+ # Define job to close all pull requests:
run:
+
+ # Define the type of virtual host machine on which to run the job:
runs-on: ubuntu-latest
+
+ # Define the sequence of job steps...
steps:
- - uses: superbrothers/close-pull-request@v3
- with:
- comment: |
- Thank you for submitting a pull request. :raised_hands:
-
- We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib).
-
- We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/string) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions.
-
- Thank you again, and we look forward to receiving your contribution! :smiley:
-
- Best,
- The stdlib team
\ No newline at end of file
+
+ # Close pull request
+ - name: 'Close pull request'
+ # Pin action to full length commit SHA corresponding to v3.1.2
+ uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448
+ with:
+ comment: |
+ Thank you for submitting a pull request. :raised_hands:
+
+ We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib).
+
+ We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/string) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions.
+
+ Thank you again, and we look forward to receiving your contribution! :smiley:
+
+ Best,
+ The stdlib team
\ No newline at end of file
diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml
index 7902a7de..c1c45e74 100644
--- a/.github/workflows/examples.yml
+++ b/.github/workflows/examples.yml
@@ -39,13 +39,15 @@ jobs:
# Define the sequence of job steps...
steps:
- # Checkout the repository:
- - name: 'Checkout the repository'
- uses: actions/checkout@v3
+ # Checkout repository:
+ - name: 'Checkout repository'
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml
index e05c8eb1..70a93bca 100644
--- a/.github/workflows/npm_downloads.yml
+++ b/.github/workflows/npm_downloads.yml
@@ -45,12 +45,14 @@ jobs:
steps:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
timeout-minutes: 10
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -84,7 +86,8 @@ jobs:
# Upload the download data:
- name: 'Upload data'
- uses: actions/upload-artifact@v3
+ # Pin action to full length commit SHA corresponding to v3.1.3
+ uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
with:
# Define a name for the uploaded artifact (ensuring a unique name for each job):
name: npm_downloads
@@ -99,7 +102,8 @@ jobs:
# Send data to events server:
- name: 'Post data'
- uses: distributhor/workflow-webhook@v3
+ # Pin action to full length commit SHA corresponding to v3.0.3:
+ uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629
env:
webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }}
webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }}
diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml
index 91f2b939..265afda4 100644
--- a/.github/workflows/productionize.yml
+++ b/.github/workflows/productionize.yml
@@ -61,13 +61,15 @@ jobs:
steps:
# Checkout main branch of repository:
- name: 'Checkout main branch'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
with:
ref: main
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -132,7 +134,8 @@ jobs:
# Checkout the repository:
- name: 'Checkout repository'
if: ${{ github.event.inputs.require-passing-tests == 'true' }}
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
with:
# Use the `production` branch:
ref: production
@@ -140,7 +143,8 @@ jobs:
# Install Node.js:
- name: 'Install Node.js'
if: ${{ github.event.inputs.require-passing-tests == 'true' }}
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -184,7 +188,8 @@ jobs:
steps:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Configure git:
- name: 'Configure git'
@@ -251,7 +256,8 @@ jobs:
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -334,7 +340,8 @@ jobs:
# Send status to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
@@ -357,7 +364,8 @@ jobs:
steps:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Configure git:
- name: 'Configure git'
@@ -416,7 +424,8 @@ jobs:
# Install Node.js
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -505,7 +514,8 @@ jobs:
# Send status to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
@@ -528,7 +538,8 @@ jobs:
steps:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Configure git:
- name: 'Configure git'
@@ -595,7 +606,8 @@ jobs:
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -682,7 +694,8 @@ jobs:
# Send status to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
@@ -706,7 +719,8 @@ jobs:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
with:
fetch-depth: 2
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 474004be..b17435bf 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -61,11 +61,13 @@ jobs:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -197,7 +199,8 @@ jobs:
# Publish package to npm:
- name: 'Publish package to npm'
- uses: JS-DevTools/npm-publish@v2
+ # Pin action to full length commit SHA corresponding to v2.2.2
+ uses: JS-DevTools/npm-publish@fe72237be0920f7a0cafd6a966c9b929c9466e9b
with:
token: ${{ secrets.NPM_TOKEN }}
access: public
@@ -209,7 +212,8 @@ jobs:
# Send status to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
@@ -230,7 +234,8 @@ jobs:
# Cancel any running or queued workflow runs:
- name: 'Cancel running or queued workflow runs'
- uses: styfle/cancel-workflow-action@0.11.0
+ # Pin action to full length commit SHA corresponding to v0.11.0
+ uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5
with:
workflow_id: >-
benchmark.yml,
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 2c086dc7..9132faaf 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -58,11 +58,13 @@ jobs:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -89,7 +91,8 @@ jobs:
# Send status to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
diff --git a/.github/workflows/test_bundles.yml b/.github/workflows/test_bundles.yml
index 172cb2d7..0d261430 100644
--- a/.github/workflows/test_bundles.yml
+++ b/.github/workflows/test_bundles.yml
@@ -49,13 +49,15 @@ jobs:
steps:
# Checkout UMD branch of the repository:
- name: 'Checkout branch with UMD build'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
with:
ref: umd
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 17
@@ -88,7 +90,8 @@ jobs:
# Send notification to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
@@ -113,13 +116,15 @@ jobs:
# Checkout ES modules branch of the repository:
- name: 'Checkout branch with ESM build'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
with:
ref: esm
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 17
@@ -130,7 +135,8 @@ jobs:
# Send notification to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
@@ -155,13 +161,15 @@ jobs:
# Checkout Deno branch of the repository:
- name: 'Checkout branch with Deno build'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
with:
ref: deno
# Install Deno:
- name: 'Install Deno'
- uses: denoland/setup-deno@v1
+ # Pin action to full length commit SHA corresponding to v1.1.2
+ uses: denoland/setup-deno@61fe2df320078202e33d7d5ad347e7dcfa0e8f31
with:
deno-version: vx.x.x
@@ -172,7 +180,8 @@ jobs:
# Send notification to Slack channel if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
diff --git a/.github/workflows/test_coverage.yml b/.github/workflows/test_coverage.yml
index a73c5152..5b2b1ead 100644
--- a/.github/workflows/test_coverage.yml
+++ b/.github/workflows/test_coverage.yml
@@ -46,11 +46,13 @@ jobs:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -77,7 +79,8 @@ jobs:
# Upload coverage report to Codecov:
- name: 'Upload coverage to Codecov'
id: upload
- uses: codecov/codecov-action@v3
+ # Pin action to full length commit SHA corresponding to v3.1.4
+ uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d
with:
directory: reports/coverage
flags: unittests
@@ -106,7 +109,8 @@ jobs:
# Send Slack notification if job fails:
- name: 'Send status to Slack channel in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
@@ -115,7 +119,8 @@ jobs:
# Send data to events server:
- name: 'Post data'
- uses: distributhor/workflow-webhook@v3
+ # Pin action to full length commit SHA corresponding to v3.0.3:
+ uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629
env:
webhook_url: ${{ secrets.STDLIB_COVERAGE_URL }}
webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }}
diff --git a/.github/workflows/test_install.yml b/.github/workflows/test_install.yml
index 7a34a9c7..216e33d5 100644
--- a/.github/workflows/test_install.yml
+++ b/.github/workflows/test_install.yml
@@ -58,11 +58,13 @@ jobs:
# Checkout the repository:
- name: 'Checkout repository'
- uses: actions/checkout@v3
+ # Pin action to full length commit SHA corresponding to v4.1.0
+ uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
# Install Node.js:
- name: 'Install Node.js'
- uses: actions/setup-node@v3
+ # Pin action to full length commit SHA corresponding to v3.8.1
+ uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
with:
node-version: 16
timeout-minutes: 5
@@ -75,7 +77,8 @@ jobs:
# Send Slack notification if job fails:
- name: 'Send notification to Slack in case of failure'
- uses: act10ns/slack@v2
+ # Pin action to full length commit SHA corresponding to v2.0.0
+ uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
with:
status: ${{ job.status }}
steps: ${{ toJson(steps) }}
diff --git a/README.md b/README.md
index 8704614c..b7047980 100644
--- a/README.md
+++ b/README.md
@@ -102,7 +102,7 @@ The namespace exposes the following string manipulation functions:
- [`percentEncode( str )`][@stdlib/string/percent-encode]: percent-encode a UTF-16 encoded string according to RFC 3986.
- [`prevGraphemeClusterBreak( string[, fromIndex] )`][@stdlib/string/prev-grapheme-cluster-break]: return the previous extended grapheme cluster break in a string before a specified position.
- [`removeFirst( str[, n][, options] )`][@stdlib/string/remove-first]: remove the first character(s) of a string.
-- [`removeLast( str[, n] )`][@stdlib/string/remove-last]: remove the last character(s) of a string.
+- [`removeLast( str[, n][, options] )`][@stdlib/string/remove-last]: remove the last character(s) of a string.
- [`removePunctuation( str )`][@stdlib/string/remove-punctuation]: remove punctuation characters from a string.
- [`removeUTF8BOM( str )`][@stdlib/string/remove-utf8-bom]: remove a UTF-8 byte order mark (BOM) from the beginning of a string.
- [`removeWords( str, words[, ignoreCase] )`][@stdlib/string/remove-words]: remove a list of words from a string.
diff --git a/test/dist/test.js b/test/dist/test.js
new file mode 100644
index 00000000..f8b11d51
--- /dev/null
+++ b/test/dist/test.js
@@ -0,0 +1,40 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2018 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var objectKeys = require( '@stdlib/utils/keys' );
+var string = require( './../../dist' );
+
+
+// TESTS //
+
+tape( 'main export is an object', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof string, 'object', 'main export is an object' );
+ t.end();
+});
+
+tape( 'the exported object contains string manipulation functionality', function test( t ) {
+ var keys = objectKeys( string );
+ t.equal( keys.length > 0, true, 'has keys' );
+ t.end();
+});