Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: provision provider type is now the DID of the w3s service #528

Merged
merged 1 commit into from
Mar 13, 2023

Conversation

gobengo
Copy link
Contributor

@gobengo gobengo commented Mar 10, 2023

  • previously the only allowed storage provider on provider/add was a w3up-alpha one. I never planned on it being a ucan issuer
  • this changes the storage provider id to be the same as the running service, e.g. did:web:web3.storage in prod.
    • This makes the Provision type generic on ServiceId

@gobengo gobengo changed the title Provision provider type is now the DID of the w3s service feat: provision provider type is now the DID of the w3s service Mar 10, 2023
@gobengo gobengo marked this pull request as ready for review March 10, 2023 23:51
@gobengo gobengo requested review from travis and Gozala March 10, 2023 23:52
Copy link
Contributor

@Gozala Gozala left a comment

Choose a reason for hiding this comment

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

Looks good to me. That said I think maybe all the new generics here is bit overkill (yes I do see the irony in the fact that it comes from someone who does overuse them).

I don't mind it landing it as is, I'm just bit concerned that it might introduce more hassle than help catch us issues, specifically I think on local test runs my DID is different (remember it had .local somewhere)

'did:web:web3.storage:providers:w3up-alpha'
export const Web3StorageId = literal('did:web:web3.storage').or(
literal('did:web:staging.web3.storage')
)
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: Can we keep it simpler by saying it's did:web ? I'm not convinced locking down possible options at the type level is going to be of advantage.

@gobengo
Copy link
Contributor Author

gobengo commented Mar 13, 2023

I don't mind it landing it as is, I'm just bit concerned that it might introduce more hassle than help catch us issues, specifically I think on local test runs my DID is different (remember it had .local somewhere)

let's wait on it then. We may not need it, and can always reopen and use this if/when we do change the provider id

@gobengo gobengo closed this Mar 13, 2023
@Gozala
Copy link
Contributor

Gozala commented Mar 13, 2023

let's wait on it then. We may not need it, and can always reopen and use this if/when we do change the provider id

I think I was not very clear with my comment, sorry for that. My concern was regarding:

  1. Use of generics as opposed to just less concrete type like DID<"web"> (I don't mind it however, we could always loosen it up).
  2. Similar sentiment about the Web3StorageId type which limits it to two specific DIDs which I don't think even accounts to the one used in testing. I think it would be better here to also just use DID({ method: 'web' }) and just throw if cap.with !== server.id.did().

In other words I think you can either land it as is, or loosen it up a bit and land after.

@gobengo gobengo reopened this Mar 13, 2023
@gobengo
Copy link
Contributor Author

gobengo commented Mar 13, 2023

I'm supportive of getting rid of the literals in provider add capability parser and just using did:web:*. let's iterate toward that in main branch

@gobengo gobengo merged commit 6a72855 into main Mar 13, 2023
@gobengo gobengo deleted the provider-as-service-did branch March 13, 2023 17:58
travis pushed a commit that referenced this pull request Mar 20, 2023
🤖 I have created a release *beep* *boop*
---


##
[4.0.0](capabilities-v3.2.0...capabilities-v4.0.0)
(2023-03-17)


### ⚠ BREAKING CHANGES

* implement new account-based multi-device flow
([#433](#433))

### Features

* define `access/confirm` handler and use it in ucanto-test-utils
registerSpaces + validate-email handler
([#530](#530))
([b1bbc90](b1bbc90))
* implement new account-based multi-device flow
([#433](#433))
([1ddc6a0](1ddc6a0))
* provision provider type is now the DID of the w3s service
([#528](#528))
([6a72855](6a72855))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
alanshaw pushed a commit that referenced this pull request Mar 23, 2023
🤖 I have created a release *beep* *boop*
---


##
[5.0.0](access-api-v4.11.0...access-api-v5.0.0)
(2023-03-23)


### ⚠ BREAKING CHANGES

* implement new account-based multi-device flow
([#433](#433))
* upgrade capabilities to latest ucanto
([#463](#463))

### Features

* access-api handles provider/add invocations
([#462](#462))
([5fb56f7](5fb56f7))
* access-api serves access/claim invocations
([#456](#456))
([baacf35](baacf35))
* access/authorize confirmation email click results in a delegation back
to the issuer did:key so that access/claim works
([#460](#460))
([a466a7d](a466a7d))
* allow multiple providers
([#595](#595))
([96c5a2e](96c5a2e))
* define `access/confirm` handler and use it in ucanto-test-utils
registerSpaces + validate-email handler
([#530](#530))
([b1bbc90](b1bbc90))
* handle access/delegate invocations without error
([#427](#427))
([4f0bd1c](4f0bd1c))
* if POST /validate-email?mode=authorize catches error w/ too big qr
code ([#516](#516))
([d0df525](d0df525))
* implement new account-based multi-device flow
([#433](#433))
([1ddc6a0](1ddc6a0))
* includes proofs chains in the delegated authorization chain
([#467](#467))
([5144293](5144293))
* move access-api delegation bytes out of d1 and into r2
([#578](#578))
([4510c9a](4510c9a))
* move validation flow to a Durable Object to make it ⏩ fast ⏩ fast ⏩
fast ⏩ ([#449](#449))
([02d7552](02d7552))
* provision provider type is now the DID of the w3s service
([#528](#528))
([6a72855](6a72855))
* space/info will not error for spaces that have had storage provider
added via provider/add
([#510](#510))
([ea4e872](ea4e872))
* upgrade capabilities to latest ucanto
([#463](#463))
([2d786ee](2d786ee))
* upgrade to new ucanto
([#498](#498))
([dcb41a9](dcb41a9))
* write invocations and receipts into ucan log
([#592](#592))
([754bf52](754bf52))


### Bug Fixes

* access/delegate checks hasStorageProvider(space) in a way that
provider/add allows access/delegate
([#483](#483))
([f4c640d](f4c640d))
* adjust migration 0005 to keep delegations table but create new used
delegations_v2
([#469](#469))
([a205ad1](a205ad1))
* adjust migration 0005 to not do a drop table and instead rename
delegations -&gt; delegations_old and create a new delegations
([#468](#468))
([6c8242d](6c8242d))
* allow injecting email
([#466](#466))
([e19847f](e19847f))
* DbDelegationsStorage#find throws UnexpectedDelegation w/ { row } if
failed bytesToDelegations
([#476](#476))
([a6dafcb](a6dafcb))
* DbProvisionsStorage putMany doesnt error on cid col conflict
([#517](#517))
([c1fea63](c1fea63))
* delegations model tries to handle if row.bytes is Array not Buffer
(e.g. cloudflare)
([#478](#478))
([030e7b7](030e7b7))


### Miscellaneous Chores

* **access-client:** release 11.0.0-rc.0
([#573](#573))
([be4386d](be4386d))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
gobengo added a commit that referenced this pull request Apr 11, 2023
* previously the only allowed storage provider on `provider/add` was a
`w3up-alpha` one. I never planned on it being a ucan issuer
* this changes the storage provider id to be the same as the running
service, e.g. `did:web:web3.storage` in prod.
  * This makes the `Provision` type generic on `ServiceId`
gobengo pushed a commit that referenced this pull request Apr 11, 2023
🤖 I have created a release *beep* *boop*
---


##
[4.0.0](capabilities-v3.2.0...capabilities-v4.0.0)
(2023-03-17)


### ⚠ BREAKING CHANGES

* implement new account-based multi-device flow
([#433](#433))

### Features

* define `access/confirm` handler and use it in ucanto-test-utils
registerSpaces + validate-email handler
([#530](#530))
([a08b513](a08b513))
* implement new account-based multi-device flow
([#433](#433))
([6152e55](6152e55))
* provision provider type is now the DID of the w3s service
([#528](#528))
([4cd6cd9](4cd6cd9))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
gobengo pushed a commit that referenced this pull request Apr 11, 2023
🤖 I have created a release *beep* *boop*
---


##
[5.0.0](access-api-v4.11.0...access-api-v5.0.0)
(2023-03-23)


### ⚠ BREAKING CHANGES

* implement new account-based multi-device flow
([#433](#433))
* upgrade capabilities to latest ucanto
([#463](#463))

### Features

* access-api handles provider/add invocations
([#462](#462))
([46da0df](46da0df))
* access-api serves access/claim invocations
([#456](#456))
([2ec16e9](2ec16e9))
* access/authorize confirmation email click results in a delegation back
to the issuer did:key so that access/claim works
([#460](#460))
([fc62691](fc62691))
* allow multiple providers
([#595](#595))
([aba57b3](aba57b3))
* define `access/confirm` handler and use it in ucanto-test-utils
registerSpaces + validate-email handler
([#530](#530))
([a08b513](a08b513))
* handle access/delegate invocations without error
([#427](#427))
([db01d07](db01d07))
* if POST /validate-email?mode=authorize catches error w/ too big qr
code ([#516](#516))
([ab83b19](ab83b19))
* implement new account-based multi-device flow
([#433](#433))
([6152e55](6152e55))
* includes proofs chains in the delegated authorization chain
([#467](#467))
([743a72f](743a72f))
* move access-api delegation bytes out of d1 and into r2
([#578](#578))
([3029e4a](3029e4a))
* move validation flow to a Durable Object to make it ⏩ fast ⏩ fast ⏩
fast ⏩ ([#449](#449))
([3868d97](3868d97))
* provision provider type is now the DID of the w3s service
([#528](#528))
([4cd6cd9](4cd6cd9))
* space/info will not error for spaces that have had storage provider
added via provider/add
([#510](#510))
([362024f](362024f))
* upgrade capabilities to latest ucanto
([#463](#463))
([e375ae4](e375ae4))
* upgrade to new ucanto
([#498](#498))
([790750d](790750d))
* write invocations and receipts into ucan log
([#592](#592))
([d52a281](d52a281))


### Bug Fixes

* access/delegate checks hasStorageProvider(space) in a way that
provider/add allows access/delegate
([#483](#483))
([1d3d562](1d3d562))
* adjust migration 0005 to keep delegations table but create new used
delegations_v2
([#469](#469))
([d90825a](d90825a))
* adjust migration 0005 to not do a drop table and instead rename
delegations -&gt; delegations_old and create a new delegations
([#468](#468))
([89f2acd](89f2acd))
* allow injecting email
([#466](#466))
([b4b0173](b4b0173))
* DbDelegationsStorage#find throws UnexpectedDelegation w/ { row } if
failed bytesToDelegations
([#476](#476))
([660f773](660f773))
* DbProvisionsStorage putMany doesnt error on cid col conflict
([#517](#517))
([8c6dea8](8c6dea8))
* delegations model tries to handle if row.bytes is Array not Buffer
(e.g. cloudflare)
([#478](#478))
([02c0c28](02c0c28))


### Miscellaneous Chores

* **access-client:** release 11.0.0-rc.0
([#573](#573))
([29daa02](29daa02))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants