firestore-meilisearch 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +20 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +26 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +18 -0
- package/.github/ISSUE_TEMPLATE/other.md +7 -0
- package/.github/dependatbot.yml +23 -0
- package/.github/release-draft-template.yml +33 -0
- package/.github/scripts/check-release.sh +42 -0
- package/.github/workflows/publish.yml +30 -0
- package/.github/workflows/release-drafter.yml +16 -0
- package/.github/workflows/test.yml +42 -0
- package/CHANGELOG.md +3 -0
- package/CONTRIBUTING.md +236 -0
- package/LICENSE +201 -0
- package/POSTINSTALL.md +40 -0
- package/PREINSTALL.md +42 -0
- package/README.md +128 -0
- package/bors.toml +8 -0
- package/dataset/firebase-export-metadata.json +8 -0
- package/dataset/firestore_export/all_namespaces/all_kinds/all_namespaces_all_kinds.export_metadata +0 -0
- package/dataset/firestore_export/all_namespaces/all_kinds/output-0 +0 -0
- package/dataset/firestore_export/firestore_export.overall_export_metadata +0 -0
- package/extension.yaml +176 -0
- package/firebase.json +20 -0
- package/functions/.eslintignore +2 -0
- package/functions/.eslintrc.js +54 -0
- package/functions/__tests__/__mocks__/console.ts +7 -0
- package/functions/__tests__/adapter.test.ts +98 -0
- package/functions/__tests__/config.test.ts +130 -0
- package/functions/__tests__/data/document.ts +11 -0
- package/functions/__tests__/data/environment.ts +9 -0
- package/functions/__tests__/functions.test.ts +280 -0
- package/functions/__tests__/jest.setup.ts +1 -0
- package/functions/__tests__/test.types.d.ts +5 -0
- package/functions/__tests__/tsconfig.json +5 -0
- package/functions/__tests__/util.test.ts +200 -0
- package/functions/jest.config.js +12 -0
- package/functions/lib/adapter.js +61 -0
- package/functions/lib/config.js +13 -0
- package/functions/lib/import/config.js +127 -0
- package/functions/lib/import/index.js +93 -0
- package/functions/lib/index.js +90 -0
- package/functions/lib/logs.js +97 -0
- package/functions/lib/meilisearch/create-index.js +17 -0
- package/functions/lib/meilisearch-index.js +17 -0
- package/functions/lib/types.js +2 -0
- package/functions/lib/util.js +47 -0
- package/functions/lib/version.js +4 -0
- package/functions/package.json +53 -0
- package/functions/src/adapter.ts +106 -0
- package/functions/src/config.ts +34 -0
- package/functions/src/import/config.ts +207 -0
- package/functions/src/import/index.ts +115 -0
- package/functions/src/index.ts +103 -0
- package/functions/src/logs.ts +107 -0
- package/functions/src/meilisearch/create-index.ts +20 -0
- package/functions/src/types.ts +8 -0
- package/functions/src/util.ts +63 -0
- package/functions/src/version.ts +1 -0
- package/functions/tsconfig.eslint.json +13 -0
- package/functions/tsconfig.json +23 -0
- package/functions/yarn.lock +5306 -0
- package/guides/IMPORT_EXISTING_DOCUMENTS.md +74 -0
- package/package.json +21 -0
- package/script/version.sh +51 -0
- package/test-params-example.env +9 -0
package/.editorconfig
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# EditorConfig is awesome: https://EditorConfig.org
|
|
2
|
+
|
|
3
|
+
# top-most EditorConfig file
|
|
4
|
+
root = true
|
|
5
|
+
|
|
6
|
+
[*]
|
|
7
|
+
indent_style = space
|
|
8
|
+
indent_size = 2
|
|
9
|
+
end_of_line = lf
|
|
10
|
+
charset = utf-8
|
|
11
|
+
trim_trailing_whitespace = true
|
|
12
|
+
insert_final_newline = true
|
|
13
|
+
max_line_length = 80
|
|
14
|
+
quote_type = single
|
|
15
|
+
|
|
16
|
+
[*.{js,ts}]
|
|
17
|
+
quote_type = single
|
|
18
|
+
curly_bracket_next_line = false
|
|
19
|
+
spaces_around_brackets = inside
|
|
20
|
+
indent_brace_style = BSD KNF
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report 🐞
|
|
3
|
+
about: Create a report to help us improve.
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- This is not an exhaustive model but a help. No step is mandatory. -->
|
|
10
|
+
|
|
11
|
+
**Description**
|
|
12
|
+
Description of what the bug is about.
|
|
13
|
+
|
|
14
|
+
**Expected behavior**
|
|
15
|
+
What you expected to happen.
|
|
16
|
+
|
|
17
|
+
**Current behavior**
|
|
18
|
+
What happened.
|
|
19
|
+
|
|
20
|
+
**Screenshots or Logs**
|
|
21
|
+
If applicable, add screenshots or logs to help explain your problem.
|
|
22
|
+
|
|
23
|
+
**Environment (please complete the following information):**
|
|
24
|
+
- OS: [e.g. Debian GNU/Linux]
|
|
25
|
+
- Meilisearch version: [e.g. v.0.20.0]
|
|
26
|
+
- firestore-meilisearch version: [e.g v0.1.0]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature Request 💡
|
|
3
|
+
about: Suggest a new idea for the project.
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- This is not an exhaustive model but a help. No step is mandatory. -->
|
|
10
|
+
|
|
11
|
+
**Description**
|
|
12
|
+
Brief explanation of the feature.
|
|
13
|
+
|
|
14
|
+
**Basic example**
|
|
15
|
+
If the proposal involves something new or a change, include a basic example. How would you use the feature? In which context?
|
|
16
|
+
|
|
17
|
+
**Other**
|
|
18
|
+
Any other things you want to add.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: 'npm'
|
|
4
|
+
directory: '/'
|
|
5
|
+
schedule:
|
|
6
|
+
interval: weekly
|
|
7
|
+
time: "04:00"
|
|
8
|
+
open-pull-requests-limit: 10
|
|
9
|
+
labels:
|
|
10
|
+
- skip-changelog
|
|
11
|
+
- dependencies
|
|
12
|
+
ignore:
|
|
13
|
+
- dependency-name: 'eslint*'
|
|
14
|
+
- dependency-name: 'prettier*'
|
|
15
|
+
rebase-strategy: disabled
|
|
16
|
+
- package-ecosystem: github-actions
|
|
17
|
+
directory: '/functions'
|
|
18
|
+
schedule:
|
|
19
|
+
interval: weekly
|
|
20
|
+
time: "04:00"
|
|
21
|
+
labels:
|
|
22
|
+
- skip-changelog
|
|
23
|
+
- dependencies
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name-template: 'v$RESOLVED_VERSION 🔥'
|
|
2
|
+
tag-template: 'v$RESOLVED_VERSION'
|
|
3
|
+
exclude-labels:
|
|
4
|
+
- 'skip-changelog'
|
|
5
|
+
version-resolver:
|
|
6
|
+
minor:
|
|
7
|
+
labels:
|
|
8
|
+
- 'breaking-change'
|
|
9
|
+
default: patch
|
|
10
|
+
categories:
|
|
11
|
+
- title: '⚠️ Breaking changes'
|
|
12
|
+
label: 'breaking-change'
|
|
13
|
+
- title: '🚀 Enhancements'
|
|
14
|
+
label: 'enhancement'
|
|
15
|
+
- title: '🐛 Bug Fixes'
|
|
16
|
+
label: 'bug'
|
|
17
|
+
- title: '🔒 Security'
|
|
18
|
+
label: 'security'
|
|
19
|
+
template: |
|
|
20
|
+
$CHANGES
|
|
21
|
+
|
|
22
|
+
Thanks again to $CONTRIBUTORS! 🎉
|
|
23
|
+
no-changes-template: 'Changes are coming soon 😎'
|
|
24
|
+
sort-direction: 'ascending'
|
|
25
|
+
replacers:
|
|
26
|
+
- search: '/(?:and )?@dependabot-preview(?:\[bot\])?,?/g'
|
|
27
|
+
replace: ''
|
|
28
|
+
- search: '/(?:and )?@dependabot(?:\[bot\])?,?/g'
|
|
29
|
+
replace: ''
|
|
30
|
+
- search: '/(?:and )?@bors(?:\[bot\])?,?/g'
|
|
31
|
+
replace: ''
|
|
32
|
+
- search: '/(?:and )?@meili-bot,?/g'
|
|
33
|
+
replace: ''
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
# Checking if current tag matches the package version
|
|
4
|
+
current_tag=$(echo $GITHUB_REF | cut -d '/' -f 3 | tr -d ' ',v)
|
|
5
|
+
package_file_tag=$(grep '"version":' package.json | cut -d ':' -f 2- | tr -d ' ' | tr -d '"' | tr -d ',')
|
|
6
|
+
package_function_tag=$(grep '"version":' functions/package.json | cut -d ':' -f 2- | tr -d ' ' | tr -d '"' | tr -d ',')
|
|
7
|
+
extension_tag=$(grep "version:" extension.yaml | cut -d ":" -f 2- | tr -d " " )
|
|
8
|
+
version_js_tag=$(grep "version =" functions/src/version.ts | cut -d "=" -f 2- | tr -d " " | tr -d "'" )
|
|
9
|
+
version_ts_tag=$(grep "version =" functions/lib/version.js | cut -d "=" -f 2- | tr -d " "| tr -d "'" | tr -d ";" | tail -n1 )
|
|
10
|
+
|
|
11
|
+
if [ "$current_tag" != "$package_file_tag" ]; then
|
|
12
|
+
echo "Error: the current tag does not match the version in package file."
|
|
13
|
+
echo "$current_tag vs $package_file_tag"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if [ "$current_tag" != "$package_function_tag" ]; then
|
|
18
|
+
echo "Error: the current tag does not match the version in package file inside the function directory."
|
|
19
|
+
echo "$current_tag vs $package_function_tag"
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
if [ "$current_tag" != "$extension_tag" ]; then
|
|
24
|
+
echo "Error: the current tag does not match the version in the extension file."
|
|
25
|
+
echo "$current_tag vs $extension_tag"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
if [ "$current_tag" != "$version_ts_tag" ]; then
|
|
30
|
+
echo "Error: the current tag does not match the version in the version.ts file."
|
|
31
|
+
echo "$current_tag vs $version_ts_tag"
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
if [ "$current_tag" != "$version_js_tag" ]; then
|
|
36
|
+
echo "Error: the current tag does not match the version in the version.js file, you need to build the package."
|
|
37
|
+
echo "$current_tag vs $version_js_tag"
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
echo 'OK'
|
|
42
|
+
exit 0
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: publish to npm
|
|
2
|
+
on:
|
|
3
|
+
release:
|
|
4
|
+
types: [published]
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
publish-npm:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/checkout@v2
|
|
11
|
+
- uses: actions/setup-node@v2
|
|
12
|
+
with:
|
|
13
|
+
node-version: 14
|
|
14
|
+
registry-url: https://registry.npmjs.org/
|
|
15
|
+
- name: Check release validity
|
|
16
|
+
run: sh .github/scripts/check-release.sh
|
|
17
|
+
- name: Install dependencies
|
|
18
|
+
run: yarn && yarn install:functions
|
|
19
|
+
- name: Enter functions directory
|
|
20
|
+
run: cd functions
|
|
21
|
+
- name: Publish with latest tag
|
|
22
|
+
if: "!github.event.release.prerelease"
|
|
23
|
+
run: npm publish .
|
|
24
|
+
env:
|
|
25
|
+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
|
26
|
+
- name: Publish with beta tag
|
|
27
|
+
if: "github.event.release.prerelease"
|
|
28
|
+
run: npm publish . --tag beta
|
|
29
|
+
env:
|
|
30
|
+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: Release Drafter
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
update_release_draft:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: release-drafter/release-drafter@v5
|
|
13
|
+
with:
|
|
14
|
+
config-name: release-draft-template.yml
|
|
15
|
+
env:
|
|
16
|
+
GITHUB_TOKEN: ${{ secrets.RELEASE_DRAFTER_TOKEN }}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
# trying and staging branches are for BORS config
|
|
7
|
+
branches:
|
|
8
|
+
- trying
|
|
9
|
+
- staging
|
|
10
|
+
- main
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
linter:
|
|
14
|
+
name: linter
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v2
|
|
18
|
+
- name: Setup node
|
|
19
|
+
uses: actions/setup-node@v2
|
|
20
|
+
with:
|
|
21
|
+
node-version: 14
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: yarn install:functions
|
|
24
|
+
- name: Run style check
|
|
25
|
+
run: yarn lint
|
|
26
|
+
|
|
27
|
+
integration-tests:
|
|
28
|
+
name: integration-tests
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
strategy:
|
|
31
|
+
matrix:
|
|
32
|
+
node: ["14", "16", "17"]
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v2
|
|
35
|
+
- name: Setup node
|
|
36
|
+
uses: actions/setup-node@v1
|
|
37
|
+
with:
|
|
38
|
+
node-version: ${{ matrix.node }}
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: yarn install:functions
|
|
41
|
+
- name: Run tests with coverage
|
|
42
|
+
run: yarn test:coverage
|
package/CHANGELOG.md
ADDED
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
First of all, thank you for contributing to Meilisearch! The goal of this document is to provide everything you need to know in order to contribute to Meilisearch and its different integrations.
|
|
4
|
+
|
|
5
|
+
<!-- MarkdownTOC autolink="true" style="ordered" indent=" " -->
|
|
6
|
+
|
|
7
|
+
- [Assumptions](#assumptions)
|
|
8
|
+
- [How to Contribute](#how-to-contribute)
|
|
9
|
+
- [Development Workflow](#development-workflow)
|
|
10
|
+
- [Git Guidelines](#git-guidelines)
|
|
11
|
+
- [Release Process (for internal team only)](#release-process-for-internal-team-only)
|
|
12
|
+
|
|
13
|
+
<!-- /MarkdownTOC -->
|
|
14
|
+
|
|
15
|
+
## Assumptions
|
|
16
|
+
|
|
17
|
+
1. **You're familiar with [GitHub](https://github.com) and the [Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests) (PR) workflow.**
|
|
18
|
+
2. **You've read the Meilisearch [documentation](https://docs.meilisearch.com) and the [README](/README.md).**
|
|
19
|
+
3. **You know about the [Meilisearch community](https://docs.meilisearch.com/learn/what_is_meilisearch/contact.html). Please use this for help.**
|
|
20
|
+
|
|
21
|
+
## How to Contribute
|
|
22
|
+
|
|
23
|
+
1. Make sure that the contribution you want to make is explained or detailed in a GitHub issue! Find an [existing issue](https://github.com/meilisearch/meilisearch-js/issues/) or [open a new one](https://github.com/meilisearch/meilisearch-js/issues/new).
|
|
24
|
+
2. Once done, [fork the firestore-meilisearch repository](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) in your own GitHub account. Ask a maintainer if you want your issue to be checked before making a PR.
|
|
25
|
+
3. [Create a new Git branch](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository).
|
|
26
|
+
4. Review the [Development Workflow](#development-workflow) section that describes the steps to maintain the repository.
|
|
27
|
+
5. Make the changes on your branch.
|
|
28
|
+
6. [Submit the branch as a PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork) pointing to the `main` branch of the main meilisearch-js repository. A maintainer should comment and/or review your Pull Request within a few days. Although depending on the circumstances, it may take longer.<br>
|
|
29
|
+
We do not enforce a naming convention for the PRs, but **please use something descriptive of your changes**, having in mind that the title of your PR will be automatically added to the next [release changelog](https://github.com/meilisearch/meilisearch-js/releases/).
|
|
30
|
+
7. You will need to build the project with `yarn build` before pushing files.
|
|
31
|
+
8. Don't forget to add `js` files from the `./lib/` directory to your PR.
|
|
32
|
+
|
|
33
|
+
## Development Workflow
|
|
34
|
+
|
|
35
|
+
### Requirements <!-- omit in toc -->
|
|
36
|
+
|
|
37
|
+
To run this project, you will need:
|
|
38
|
+
|
|
39
|
+
- Node >= 14 && node <= 17
|
|
40
|
+
- Npm >= v7
|
|
41
|
+
- A google account
|
|
42
|
+
- Latest version of `firebase-tools` the Firebase CLI:
|
|
43
|
+
``` bash
|
|
44
|
+
yarn global add firebase-tools
|
|
45
|
+
```
|
|
46
|
+
Add the directory for the commands of the packages installed globally in yarn, to access of firebase binary:
|
|
47
|
+
``` bash
|
|
48
|
+
export PATH="$(yarn global bin):$PATH"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Setup <!-- omit in toc -->
|
|
52
|
+
|
|
53
|
+
Sign in with your Google Account:
|
|
54
|
+
``` bash
|
|
55
|
+
firebase login
|
|
56
|
+
```
|
|
57
|
+
Enable the extension developer commands:
|
|
58
|
+
``` bash
|
|
59
|
+
firebase --open-sesame extdev
|
|
60
|
+
```
|
|
61
|
+
Install dependencies:
|
|
62
|
+
``` bash
|
|
63
|
+
yarn install:functions
|
|
64
|
+
```
|
|
65
|
+
Build the project:
|
|
66
|
+
``` bash
|
|
67
|
+
yarn build
|
|
68
|
+
```
|
|
69
|
+
Launch Meilisearch instance:
|
|
70
|
+
``` bash
|
|
71
|
+
curl -L https://install.meilisearch.com | sh # download Meilisearch
|
|
72
|
+
./meilisearch --master-key=masterKey --no-analytics # run Meilisearch
|
|
73
|
+
```
|
|
74
|
+
You may need to [install Java](https://www.java.com/en/download/help/download_options.html) to run the emulator.</br>
|
|
75
|
+
Set emulator:
|
|
76
|
+
```bash
|
|
77
|
+
firebase init emulators
|
|
78
|
+
```
|
|
79
|
+
Launch emulator:
|
|
80
|
+
``` bash
|
|
81
|
+
firebase ext:dev:emulators:start --test-params=test-params-example.env --import=dataset --project=name-of-the-project
|
|
82
|
+
```
|
|
83
|
+
or just
|
|
84
|
+
``` bash
|
|
85
|
+
yarn emulator
|
|
86
|
+
```
|
|
87
|
+
The emulator runs with environment parameters found in `test-params-example.env` and with a provided dataset found in `/dataset`.
|
|
88
|
+
|
|
89
|
+
Once it is running, open the emulator in a browser at the following address: http://localhost:4000
|
|
90
|
+
|
|
91
|
+
NB: If you want to change your Meilisearch credentials or the plugins options you need to edit the `test-params-example.env` file.
|
|
92
|
+
|
|
93
|
+
### Tests and Linter <!-- omit in toc -->
|
|
94
|
+
|
|
95
|
+
Each PR should pass the tests and the linter to be accepted.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
curl -L https://install.meilisearch.com | sh # download Meilisearch
|
|
99
|
+
./meilisearch --master-key=masterKey --no-analytics # run Meilisearch
|
|
100
|
+
|
|
101
|
+
# Tests
|
|
102
|
+
yarn test
|
|
103
|
+
|
|
104
|
+
# Tests in watch mode
|
|
105
|
+
yarn test:watch
|
|
106
|
+
|
|
107
|
+
# Linter
|
|
108
|
+
yarn lint
|
|
109
|
+
|
|
110
|
+
# Linter with fixing
|
|
111
|
+
yarn lint:fix
|
|
112
|
+
|
|
113
|
+
# Build the project
|
|
114
|
+
yarn build
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Run the backfilled-data script
|
|
118
|
+
|
|
119
|
+
- Set up credentials. The import script uses the application's default credentials to communicate with Firebase. Please follow the instructions [generate a private key file for your service account](https://firebase.google.com/docs/admin/setup#initialize-sdk).
|
|
120
|
+
|
|
121
|
+
- Run the import script interactively and run ONE of the following commands:
|
|
122
|
+
- Run interactively:
|
|
123
|
+
```bash
|
|
124
|
+
yarn run-cli
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- Or run non-interactively with paramaters:
|
|
128
|
+
```bash
|
|
129
|
+
yarn run-cli \
|
|
130
|
+
--project <project_id> \
|
|
131
|
+
--source-collection-path <collection_name> \
|
|
132
|
+
--index <index_uid> \
|
|
133
|
+
--batch-size <100/default=300> \
|
|
134
|
+
--host <host_address> \
|
|
135
|
+
--api-key <api_key> \
|
|
136
|
+
--non-interactive
|
|
137
|
+
```
|
|
138
|
+
**Note**: The `--batch-size` and `--query-collection-group` arguments are optional. To see its usage, run the above command with `--help`.
|
|
139
|
+
|
|
140
|
+
- Run the project for development:
|
|
141
|
+
Launch Meilisearch instance:
|
|
142
|
+
``` bash
|
|
143
|
+
curl -L https://install.meilisearch.com | sh # download Meilisearch
|
|
144
|
+
./meilisearch --master-key=masterKey --no-analytics # run Meilisearch
|
|
145
|
+
```
|
|
146
|
+
Launch the watcher on the project:
|
|
147
|
+
``` bash
|
|
148
|
+
yarn watch
|
|
149
|
+
```
|
|
150
|
+
Launch the watcher on the script. You have to modify the informations of the playground script by your own parameters inside the `package.json` file:
|
|
151
|
+
``` bash
|
|
152
|
+
yarn playground
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Generate the README
|
|
156
|
+
|
|
157
|
+
The Firebase CLI offers the possibility of automatically generating the `README.md` file with the following command:
|
|
158
|
+
```bash
|
|
159
|
+
firebase ext:info ./path/to/extension --markdown > README.md
|
|
160
|
+
```
|
|
161
|
+
**Note:** Be careful this will only regenerate the text of the central part of the `README.md` from the Title: `Search in your Firestore content with Meilisearch` to the `**Cloud Functions:**` section.
|
|
162
|
+
|
|
163
|
+
## Git Guidelines
|
|
164
|
+
|
|
165
|
+
### Git Branches <!-- omit in toc -->
|
|
166
|
+
|
|
167
|
+
All changes must be made in a branch and submitted as PR.
|
|
168
|
+
We do not enforce any branch naming style, but please use something descriptive of your changes.
|
|
169
|
+
|
|
170
|
+
### Git Commits <!-- omit in toc -->
|
|
171
|
+
|
|
172
|
+
As minimal requirements, your commit message should:
|
|
173
|
+
- be capitalized
|
|
174
|
+
- not finish by a dot or any other punctuation character (!,?)
|
|
175
|
+
- start with a verb so that we can read your commit message this way: "This commit will ...", where "..." is the commit message.
|
|
176
|
+
e.g.: "Fix the home page button" or "Add more tests for create_index method"
|
|
177
|
+
|
|
178
|
+
We don't follow any other convention, but if you want to use one, we recommend [this one](https://chris.beams.io/posts/git-commit/).
|
|
179
|
+
|
|
180
|
+
### GitHub Pull Requests <!-- omit in toc -->
|
|
181
|
+
|
|
182
|
+
Some notes on GitHub PRs:
|
|
183
|
+
|
|
184
|
+
- [Convert your PR as a draft](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request) if your changes are a work in progress: no one will review it until you pass your PR as ready for review.<br>
|
|
185
|
+
The draft PR can be very useful if you want to show that you are working on something and make your work visible.
|
|
186
|
+
- The branch related to the PR must be **up-to-date with `main`** before merging. Fortunately, this project [integrates a bot](https://github.com/meilisearch/integration-guides/blob/main/resources/bors.md) to automatically enforce this requirement without the PR author having to do it manually.
|
|
187
|
+
- All PRs must be reviewed and approved by at least one maintainer.
|
|
188
|
+
- The PR title should be accurate and descriptive of the changes. The title of the PR will be indeed automatically added to the next [release changelogs](https://github.com/meilisearch/meilisearch-js/releases/).
|
|
189
|
+
|
|
190
|
+
## Release Process (for internal team only)
|
|
191
|
+
|
|
192
|
+
Meilisearch tools follow the [Semantic Versioning Convention](https://semver.org/).
|
|
193
|
+
|
|
194
|
+
### Automation to Rebase and Merge the PRs <!-- omit in toc -->
|
|
195
|
+
|
|
196
|
+
This project integrates a bot that helps us manage pull requests merging.<br>
|
|
197
|
+
_[Read more about this](https://github.com/meilisearch/integration-guides/blob/main/resources/bors.md)._
|
|
198
|
+
|
|
199
|
+
### Automated Changelogs <!-- omit in toc -->
|
|
200
|
+
|
|
201
|
+
This project integrates a tool to create automated changelogs.<br>
|
|
202
|
+
_[Read more about this](https://github.com/meilisearch/integration-guides/blob/main/resources/release-drafter.md)._
|
|
203
|
+
|
|
204
|
+
### How to Publish the Release <!-- omit in toc -->
|
|
205
|
+
|
|
206
|
+
⚠️ Before doing anything, make sure you got through the guide about [Releasing an Integration](https://github.com/meilisearch/integration-guides/blob/main/resources/integration-release.md).
|
|
207
|
+
|
|
208
|
+
1. To update the version package in all needed files you can run the `version.sh` script with the version number in argument: `"X.X.X"`. If you want to modify it by hand you have to update the version in the following files:
|
|
209
|
+
- [`package.json`](/package.json).
|
|
210
|
+
- [`package.json`](/functions/packag e.json) in the functions directory.
|
|
211
|
+
- [`extension.yaml`](/extension.yaml).
|
|
212
|
+
- [`version.ts`](/functions/src/version.ts).
|
|
213
|
+
|
|
214
|
+
After which don't forget to rebuild the project.
|
|
215
|
+
</br>
|
|
216
|
+
The `version.sh` script will `add` and `commit` the modification but you till need to verify it and push it.
|
|
217
|
+
```bash
|
|
218
|
+
sh script/version.sh X.X.X
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
2. Test the extension by installing it in Firestore:
|
|
222
|
+
```bash
|
|
223
|
+
firebase ext:install . --project=[your_project_id]
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
3. Publish the extension by running the following command in the root of the extension directory:
|
|
227
|
+
```bash
|
|
228
|
+
firebase ext:dev:publish meilisearch/firestore-meilisearch
|
|
229
|
+
```
|
|
230
|
+
**Note**: `meilisearch` is the `publisher id` for this extension.
|
|
231
|
+
|
|
232
|
+
Once the changes are merged on `main`, you can publish the current draft release via the [GitHub interface](https://github.com/meilisearch/meilisearch-go/releases): on this page, click on `Edit` (related to the draft release) > update the description (be sure you apply [these recommandations](https://github.com/meilisearch/integration-guides/blob/main/resources/integration-release.md#writting-the-release-description)) > when you are ready, click on `Publish release`.
|
|
233
|
+
|
|
234
|
+
<hr>
|
|
235
|
+
|
|
236
|
+
Thank you again for reading this through, we can not wait to begin to work with you if you made your way through this contributing guide ❤️
|