@functional-systems/lambdadb-cli 0.1.0-dev.1
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/CHANGELOG.md +45 -0
- package/CONTRIBUTING.md +105 -0
- package/DESIGN.md +112 -0
- package/LICENSE +202 -0
- package/README.md +309 -0
- package/RELEASING.md +239 -0
- package/VALIDATION.md +222 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +208 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +24 -0
- package/dist/config.js +105 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +11 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/import-workflow.d.ts +27 -0
- package/dist/import-workflow.js +60 -0
- package/dist/import-workflow.js.map +1 -0
- package/dist/input.d.ts +15 -0
- package/dist/input.js +127 -0
- package/dist/input.js.map +1 -0
- package/dist/output.d.ts +17 -0
- package/dist/output.js +68 -0
- package/dist/output.js.map +1 -0
- package/dist/runtime.d.ts +7 -0
- package/dist/runtime.js +39 -0
- package/dist/runtime.js.map +1 -0
- package/examples/documents.jsonl +3 -0
- package/examples/index-config.json +4 -0
- package/examples/query.json +5 -0
- package/package.json +56 -0
- package/src/cli.ts +209 -0
- package/src/config.ts +96 -0
- package/src/errors.ts +45 -0
- package/src/import-workflow.ts +73 -0
- package/src/input.ts +105 -0
- package/src/output.ts +69 -0
- package/src/runtime.ts +40 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
## [0.1.0-dev.1] - 2026-09-18
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Project-scoped configure, doctor, collection list/describe/create, JSONL import,
|
|
10
|
+
ID fetch and query commands using LambdaDB TypeScript SDK 0.5.1.
|
|
11
|
+
- Explicit targets, branch/tag/alias read refs, bounded requests, noninteractive
|
|
12
|
+
operation and versioned JSON output with documented exit codes.
|
|
13
|
+
- Sequential ordinary/bulk imports that distinguish acceptance, rejection,
|
|
14
|
+
partial completion and unknown outcomes without promising search readiness.
|
|
15
|
+
- Local transport contracts, installed-package contracts, release metadata checks
|
|
16
|
+
and an opt-in development-project live smoke with temporary collection cleanup.
|
|
17
|
+
- Development/release procedures and a prepared npm OIDC publishing workflow.
|
|
18
|
+
- Opt-in automatic develop publication after Node 22/24 CI, deterministic dev
|
|
19
|
+
build versions, exact-artifact rerun verification and stale-build guards.
|
|
20
|
+
Explicit rc/stable releases continue to require reviewed main history.
|
|
21
|
+
- Apache-2.0 license text and package license metadata.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Live smoke observes committed documents for up to 300 seconds per read stage
|
|
26
|
+
and reports safe progress diagnostics after a 75-second observation failure.
|
|
27
|
+
Requests and polling sleeps respect the remaining budget; late results cannot
|
|
28
|
+
pass. The validation record identifies the designated development target.
|
|
29
|
+
- Colliding redacted document/metadata keys receive unique suffixes instead of
|
|
30
|
+
silently overwriting values; unchanged field names remain intact.
|
|
31
|
+
- Credential redaction preserves fixed JSON fields, command/status tokens and
|
|
32
|
+
error categories when a credential is short or matches a protocol token.
|
|
33
|
+
- JSONL preflight caps imports at 100,000 documents and scans physical lines
|
|
34
|
+
without a split array, rejecting excess small documents before any API call.
|
|
35
|
+
- Command deadlines are bound at SDK fetch dispatch to avoid a reproduced stalled
|
|
36
|
+
second write; signal cancellation preserves acknowledged and unknown outcomes.
|
|
37
|
+
|
|
38
|
+
### Release status
|
|
39
|
+
|
|
40
|
+
Prepared for the first public development release on npm's `dev` channel. This
|
|
41
|
+
entry records the candidate contents and preparation date, not a publication.
|
|
42
|
+
The development-project smoke is recorded in VALIDATION.md. npm organization
|
|
43
|
+
permission verification, authorized bootstrap publication and Trusted Publishing
|
|
44
|
+
setup remain pending. Automatic dev publication is disabled until maintainers
|
|
45
|
+
enable `NPM_DEV_PUBLISH_ENABLED`; main promotion is required only for rc/stable.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Branches and pull requests
|
|
4
|
+
|
|
5
|
+
`main` is the default branch and the reviewed rc/stable release baseline.
|
|
6
|
+
`develop` integrates changes and supplies automatic npm development builds.
|
|
7
|
+
Branch names here refer to Git branches,
|
|
8
|
+
not LambdaDB collection branches or refs.
|
|
9
|
+
|
|
10
|
+
1. Create a short-lived `feat/*` or `fix/*` branch from current `develop`.
|
|
11
|
+
2. Implement and validate one coherent change.
|
|
12
|
+
3. Open a pull request targeting `develop`. GitHub defaults new pull requests to
|
|
13
|
+
`main`, so select the base explicitly.
|
|
14
|
+
4. Address review feedback and pass both required CI checks before merging.
|
|
15
|
+
5. Delete the short-lived branch after verifying the merge.
|
|
16
|
+
|
|
17
|
+
For the initial MVP, `feat/cli-mvp` targets the initial `develop` commit. The
|
|
18
|
+
review includes the CLI implementation, tests, documentation and CI setup.
|
|
19
|
+
|
|
20
|
+
## Local and CI validation
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
npm ci
|
|
24
|
+
npm run lint
|
|
25
|
+
npm run check:version
|
|
26
|
+
npm run typecheck
|
|
27
|
+
npm test
|
|
28
|
+
npm run test:package
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The `CI` workflow in `.github/workflows/publish.yaml` runs on pull requests
|
|
32
|
+
targeting `develop` or `main` and on
|
|
33
|
+
pushes to those branches. Its required check names are `Node.js 22` and
|
|
34
|
+
`Node.js 24`. Both install the lockfile, lint, validate version metadata, check
|
|
35
|
+
types, build, run the mock/local contract suite, and repeat the CLI contract
|
|
36
|
+
tests against a separately installed tarball. Use Node.js 22.14 or newer locally.
|
|
37
|
+
Validation jobs use a read-only GitHub token and no LambdaDB credentials. They
|
|
38
|
+
do not publish packages or contact a LambdaDB service. After both jobs succeed,
|
|
39
|
+
an eligible develop push can publish a dev package using a separate OIDC-enabled
|
|
40
|
+
job. PRs, main pushes and manual CI runs cannot publish development packages.
|
|
41
|
+
Automatic publication requires `NPM_DEV_PUBLISH_ENABLED=true`; enabling it after
|
|
42
|
+
npm bootstrap and trust setup authorizes this ongoing behavior.
|
|
43
|
+
|
|
44
|
+
Both long-lived branches require pull requests, one approving review, resolved
|
|
45
|
+
review conversations, and both CI checks against an up-to-date base. New commits
|
|
46
|
+
dismiss prior approvals. Force pushes and branch deletion are disabled. Repository
|
|
47
|
+
administrators are also subject to the repository's branch protection.
|
|
48
|
+
|
|
49
|
+
The organization additionally applies its `protect-main` ruleset to the default
|
|
50
|
+
branch. Its update restriction allows designated team members to merge through
|
|
51
|
+
the organization's PR-only bypass; passing repository CI alone does not grant
|
|
52
|
+
permission to update `main`. Repository rules do not weaken organization rules.
|
|
53
|
+
|
|
54
|
+
## Promoting a release
|
|
55
|
+
|
|
56
|
+
Development builds do not require main promotion or manual version increments.
|
|
57
|
+
CI derives a unique version from the reviewed development base and first-parent
|
|
58
|
+
commit count. Keep the base in `X.Y.Z-dev.N` form; when moving to the next release
|
|
59
|
+
line, update it and the lockfile through a PR. Generated build versions are not
|
|
60
|
+
committed back. Stale queued builds can be skipped as newer work arrives.
|
|
61
|
+
|
|
62
|
+
For an rc/stable release, once changes and validation are complete on `develop`, open a
|
|
63
|
+
`develop` → `main` pull request. Record the version, changes, local/CI evidence,
|
|
64
|
+
and whether live verification was performed. Merge this promotion using a merge
|
|
65
|
+
commit so the shared branch ancestry is preserved. After promotion, synchronize
|
|
66
|
+
`main` back into `develop` through a PR when it contains commits absent from
|
|
67
|
+
`develop`, especially release-only changes or hotfixes. Include the next intended
|
|
68
|
+
development base in that synchronization PR so develop retains a dev version.
|
|
69
|
+
|
|
70
|
+
A separate `release/*` branch is optional when stabilization must proceed while
|
|
71
|
+
new work continues on `develop`. It is not required for the initial release.
|
|
72
|
+
|
|
73
|
+
The first npm bootstrap, rc/stable tags and GitHub Releases remain explicit
|
|
74
|
+
release actions. Subsequent dev publication is automatic once enabled.
|
|
75
|
+
The `0.1.0-dev.1` candidate sets `private: false` and prepares metadata
|
|
76
|
+
for the `dev` channel; the development-project smoke is recorded in
|
|
77
|
+
[VALIDATION.md](VALIDATION.md), and publication remains pending. Follow
|
|
78
|
+
[RELEASING.md](RELEASING.md) for package preparation, version/channel rules,
|
|
79
|
+
credentialed live evidence, initial npm bootstrap and Trusted Publishing.
|
|
80
|
+
Local tests and PR validation alone never trigger publication.
|
|
81
|
+
|
|
82
|
+
For an urgent released-version fix, branch from `main`, review a PR back to
|
|
83
|
+
`main`, then synchronize the fix into `develop`. Preserve the same checks and
|
|
84
|
+
review requirements.
|
|
85
|
+
|
|
86
|
+
## Credentials and scope
|
|
87
|
+
|
|
88
|
+
Never commit project keys, `.env` files or signed URLs. Runtime tests use loopback
|
|
89
|
+
servers with synthetic credentials. Live tests require an explicitly designated
|
|
90
|
+
development project and credential set; local or CI success is not proof of
|
|
91
|
+
live-service readiness. See [README.md](README.md) and
|
|
92
|
+
[VALIDATION.md](VALIDATION.md) for the current contract and evidence boundaries.
|
|
93
|
+
|
|
94
|
+
## Compatibility and maintenance
|
|
95
|
+
|
|
96
|
+
Treat documented flags, JSON schema, exit codes, explicit target selection and
|
|
97
|
+
failure semantics as public contracts. Add regression coverage for changes to
|
|
98
|
+
these behaviors; do not script against human summaries. Update the changelog
|
|
99
|
+
and document a migration when changing a contract. Preserve `--help` and
|
|
100
|
+
noninteractive operation in the installed artifact, not only the source tree.
|
|
101
|
+
|
|
102
|
+
Review dependency updates through the same PR checks, including the actual SDK
|
|
103
|
+
contract and installed-package tests. Keep workflow actions pinned to commit
|
|
104
|
+
SHAs and document version updates in their comments. Do not copy another
|
|
105
|
+
repository's runtime matrix or release tooling without checking this CLI's needs.
|
package/DESIGN.md
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# LambdaDB CLI MVP design
|
|
2
|
+
|
|
3
|
+
## Evidence baseline
|
|
4
|
+
|
|
5
|
+
Inspected on 2026-09-18. Source/API verification is not live-service validation.
|
|
6
|
+
|
|
7
|
+
| Evidence | Observed contract |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| [TypeScript SDK source](https://github.com/lambdadb/lambdadb-typescript-client/tree/856abf48a014185de54ccc541c2f6ee3871133ee) | Local reference checkout was clean at this commit, version 0.5.1. |
|
|
10
|
+
| npm `@functional-systems/lambdadb` registry | `latest=0.5.1`; installed published package exactly at 0.5.1, not a local file dependency. |
|
|
11
|
+
| [Public OpenAPI](https://github.com/lambdadb/docs/blob/9a4eaf1e71b7809708a77101751ce2a5c4815fcb/reference/api/openapi.json) | API version 1.1.1; collection create 201, ordinary/bulk write acceptance 202, ref-aware query/fetch, no generic mutation-readiness receipt. |
|
|
12
|
+
| [Public quickstart](https://docs.lambdadb.ai/guides/get-started/quickstart) | Existing Console project/key setup, collection creation, writes, reads and eventual visibility. |
|
|
13
|
+
|
|
14
|
+
Fetched OpenAPI SHA-256:
|
|
15
|
+
`ad930a79ab27115a326bde6dff69c472670f8ba0eda65dde1c5f01ff76678563`.
|
|
16
|
+
Published SDK integrity:
|
|
17
|
+
`sha512-AvchiWlbV9r7ihizmBG+oacwzXAvq9WKHoEmXYCkkHbWVBBvunwlxyzKQBd+0V2q2XjIkNKhHBZ3ytAhj1pArg==`.
|
|
18
|
+
Installed `client.ts` and query request schema matched the inspected local source.
|
|
19
|
+
The lockfile pins the dependency graph.
|
|
20
|
+
|
|
21
|
+
Read-only design inputs:
|
|
22
|
+
|
|
23
|
+
- `/Users/steven/orca/projects/sbrain/AGENTS.md`
|
|
24
|
+
- `/Users/steven/orca/projects/sbrain/projects/lambdadb-code-search-demo.md`
|
|
25
|
+
- `/Users/steven/orca/projects/sbrain/knowledge/product/lambdadb-mcp-server-design.md`
|
|
26
|
+
- `/Users/steven/orca/projects/sbrain/knowledge/product/lambdadb-mcp-implementation-plan.md`
|
|
27
|
+
- `/Users/steven/Dev/lambdadb-typescript-client`
|
|
28
|
+
|
|
29
|
+
The code-search document describes an application proposal, not delivered generic
|
|
30
|
+
CLI behavior. The MCP design's hosted authentication, readiness workflows and
|
|
31
|
+
workflow SDK additions are proposals. Its September 14 registry baseline
|
|
32
|
+
(`latest=0.4.3`, versioning RC) is superseded by the verified 0.5.1 publication.
|
|
33
|
+
This CLI reuses currently available SDK capabilities; it does not assume proposed
|
|
34
|
+
`ingestDocuments`, `waitForDocuments` or mutation receipts exist.
|
|
35
|
+
|
|
36
|
+
## Architecture
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
CLI arguments/configuration → input validation → SDK facade → LambdaDB APIs
|
|
40
|
+
↓ ↓
|
|
41
|
+
import workflow signed transfers
|
|
42
|
+
↓
|
|
43
|
+
structured result / terminal output
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- `cli.ts`: command tree, target selection, SDK calls and process exit codes.
|
|
47
|
+
- `config.ts`: deterministic user-local configuration, environment auth and
|
|
48
|
+
atomic non-secret settings writes.
|
|
49
|
+
- `input.ts`: bounded file snapshots, strict request preflight, SDK serializer
|
|
50
|
+
reuse and the small null-size compatibility adjustment.
|
|
51
|
+
- `import-workflow.ts`: byte/count batching, sequential submission, honest
|
|
52
|
+
outcome accounting and progress callbacks, independent of terminal I/O.
|
|
53
|
+
- `runtime.ts`: SDK construction, shared abort deadline and bounded read retries.
|
|
54
|
+
- `errors.ts` and `output.ts`: safe error classification, versioned output and
|
|
55
|
+
credential redaction.
|
|
56
|
+
|
|
57
|
+
There is no second HTTP implementation, separate workflow package, plugin system
|
|
58
|
+
or SDK fork. `listCollectionsPages` owns pagination. `bulkUpsertDocs` owns upload
|
|
59
|
+
metadata, signed PUT, server-provided byte limit and finalization. Query/fetch
|
|
60
|
+
helpers own presigned response downloads and authentication isolation.
|
|
61
|
+
|
|
62
|
+
## Contract decisions
|
|
63
|
+
|
|
64
|
+
| Decision | Reason |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| Mandatory endpoint/project resolution, explicit collection, read ref and write branch | Avoid SDK playground/main fallbacks silently choosing a target. |
|
|
67
|
+
| Environment-held keys only | Keeps secrets out of argv and repository/user configuration files. |
|
|
68
|
+
| Read retry policy bounded through SDK, no mutation retries | No public exactly-once or mutation receipt contract; a missing reply cannot prove rejection. |
|
|
69
|
+
| Entire JSONL preflight before writes | A malformed later line must not unexpectedly leave accepted earlier batches. |
|
|
70
|
+
| 64 MiB / 100,000-document input caps, 4 MB ordinary batches, configurable bulk batches | Bound file size and retained row overhead without building streaming/checkpoint infrastructure; scan lines without a full split array. |
|
|
71
|
+
| SDK request serializers for validation | Keep create/query shapes aligned; query DSL semantics remain server-owned. |
|
|
72
|
+
| Versioned JSON envelope and documented exits | Stable automation contract with explicit target and partial progress. |
|
|
73
|
+
| Preserve fixed output keys/tokens during redaction | Short credentials must not corrupt the CLI protocol; redact variable values and arbitrary document/index/tag map keys. |
|
|
74
|
+
| Conservative unknown state for untyped bulk helper failures | Error strings are not a reliable upload/finalization stage contract. |
|
|
75
|
+
| No readiness wait or version-management commands | First use works through main; reads can target existing refs, without assuming lifecycle or indexing guarantees. |
|
|
76
|
+
|
|
77
|
+
The public API documents ordinary upsert at 6 MB and bulk at 200 MB; CLI limits
|
|
78
|
+
are deliberately smaller. Bulk is unsupported for managed embedding vector
|
|
79
|
+
fields. `consistentRead` only supports direct branches and excludes pending bulk
|
|
80
|
+
imports. Collection statistics describe committed main, not selected ref readiness.
|
|
81
|
+
|
|
82
|
+
## SDK compatibility findings
|
|
83
|
+
|
|
84
|
+
No upstream edit was required. Local regressions cover these adaptation points:
|
|
85
|
+
|
|
86
|
+
1. Public query `size: null` means default size, but SDK 0.5.1's serializer accepts
|
|
87
|
+
only number/undefined. Normalize null to omission and enforce public 1–100 bounds.
|
|
88
|
+
An upstream schema-alignment change would remove this adapter.
|
|
89
|
+
2. `SDKValidationError[Symbol.hasInstance]` intentionally also matches
|
|
90
|
+
`ResponseValidationError`. Check response validation first and exclude it from
|
|
91
|
+
local input errors; otherwise a malformed 202 response is misclassified as a
|
|
92
|
+
definite local failure rather than an unknown write outcome.
|
|
93
|
+
3. SDK debug logging is environment-controlled. Supplying a no-op logger still
|
|
94
|
+
clones/drains HTTP bodies. An initial loopback timeout regression left the
|
|
95
|
+
process alive with that logger. The CLI instead removes `LAMBDADB_DEBUG` from
|
|
96
|
+
its own process before SDK construction and supplies no logger. The same
|
|
97
|
+
timeout case now completes and preserves the unknown outcome.
|
|
98
|
+
4. The bulk helper throws ordinary unstructured errors for upload and size
|
|
99
|
+
failures. A future typed stage/error contract would enable more precise
|
|
100
|
+
failed-versus-unknown reporting. The current CLI never parses error messages
|
|
101
|
+
or claims a finalize receipt.
|
|
102
|
+
5. Expanded installed-package tests reproduced a stalled second upsert despite a
|
|
103
|
+
600 ms command timeout on Node 24.15.0. Retaining an explicit timer alone did
|
|
104
|
+
not eliminate it. The CLI now binds its command signal directly at fetch
|
|
105
|
+
dispatch through the SDK's supported HTTPClient hook, for separate API and
|
|
106
|
+
transfer clients. SDK authentication, request construction, retry and transfer
|
|
107
|
+
logic remain in use. Local source and installed-package regressions verify
|
|
108
|
+
timeout and SIGINT/SIGTERM accounting. The precise upstream/runtime root cause
|
|
109
|
+
has not been established; no reference SDK source was changed.
|
|
110
|
+
|
|
111
|
+
These findings do not require a new SDK release to use the CLI. SDK updates should
|
|
112
|
+
retain contract tests before changing the pinned version.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|