- From: Marcos Cáceres <notifications@github.com>
- Date: Sun, 28 May 2017 18:56:41 -0700
- To: w3c/browser-payment-api <browser-payment-api@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/browser-payment-api/pull/536/c304556749@github.com>
Simplified the example above.
Note that one then has the flexibility to mix-in and compose PMI versions or treat them independently.
```JS
// Mixin by bitcoin by version
const v1 = {
supportedMethods: ["bitcoin-v1"],
data: {
/*v1 member*/
},
};
const v2 = {
supportedMethods: ["bitcoin-v2"],
data: Object.assing(
{},
v1.data,
{
/*v2 stuff, trashes v1 stuff where it needs to - because mistakes were made*/
}
),
};
const v3 = {
supportedMethods: ["bitcoin-v3"].concat(v1.methods),
data: Object.assing(
{},
v1.data,
{
/*v3 stuff, which is backward compatible with v1*/
}
),
};
// Because v3 and v1 are compatible, we only list it once.
// For legacy systems/reasons, we include v2, but we can
// always fall back to v1.
const paymentRequest = new PaymentRequest([v3, v2], details, options);
// Or, we can support stricter fallback (although order doesn't matter!):
v3.methods.pop(); // Remove v1.
const paymentRequest = new PaymentRequest([v3, v2, v1], details, options);
```
Anyway, unless I'm missing something, the using the version in the PMI seems optimal to me:
* it gives complete data-type assurances with graceful degradation,
* provides extensibility at every level (even in versions, with the addition of optional types) by allowing reuse of IDL dictionaries. You can import v1 things into v2 and vN.
* and reduces overall redundancy.
Enough said...

--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/browser-payment-api/pull/536#issuecomment-304556749
Received on Monday, 29 May 2017 01:57:14 UTC