@owlmeans/payment 0.1.18-rc.2 → 0.1.18-rc.21

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.
Files changed (72) hide show
  1. package/README.md +18 -26
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/payment/SKILL.md +137 -26
  4. package/build/advertise.d.ts +2 -0
  5. package/build/advertise.d.ts.map +1 -0
  6. package/build/advertise.js +11 -0
  7. package/build/advertise.js.map +1 -0
  8. package/build/consts.d.ts +5 -23
  9. package/build/consts.d.ts.map +1 -1
  10. package/build/consts.js +9 -23
  11. package/build/consts.js.map +1 -1
  12. package/build/entitlement.d.ts +61 -0
  13. package/build/entitlement.d.ts.map +1 -0
  14. package/build/entitlement.js +98 -0
  15. package/build/entitlement.js.map +1 -0
  16. package/build/entrypoints.d.ts +25 -0
  17. package/build/entrypoints.d.ts.map +1 -0
  18. package/build/entrypoints.js +43 -0
  19. package/build/entrypoints.js.map +1 -0
  20. package/build/index.d.ts +4 -1
  21. package/build/index.d.ts.map +1 -1
  22. package/build/index.js +4 -1
  23. package/build/index.js.map +1 -1
  24. package/build/model/checkout.d.ts +2 -3
  25. package/build/model/checkout.d.ts.map +1 -1
  26. package/build/model/checkout.js +8 -6
  27. package/build/model/checkout.js.map +1 -1
  28. package/build/model/index.d.ts +1 -0
  29. package/build/model/index.d.ts.map +1 -1
  30. package/build/model/index.js +1 -0
  31. package/build/model/index.js.map +1 -1
  32. package/build/model/plan.d.ts.map +1 -1
  33. package/build/model/plan.js +5 -1
  34. package/build/model/plan.js.map +1 -1
  35. package/build/model/pricing.d.ts +4 -0
  36. package/build/model/pricing.d.ts.map +1 -0
  37. package/build/model/pricing.js +31 -0
  38. package/build/model/pricing.js.map +1 -0
  39. package/build/model/subscription.d.ts +2 -2
  40. package/build/model/subscription.d.ts.map +1 -1
  41. package/build/model/subscription.js +9 -14
  42. package/build/model/subscription.js.map +1 -1
  43. package/build/pricing.d.ts +7 -0
  44. package/build/pricing.d.ts.map +1 -0
  45. package/build/pricing.js +63 -0
  46. package/build/pricing.js.map +1 -0
  47. package/build/types.d.ts +25 -3
  48. package/build/types.d.ts.map +1 -1
  49. package/package.json +13 -11
  50. package/src/advertise.ts +15 -0
  51. package/src/consts.ts +10 -24
  52. package/src/entitlement.ts +125 -0
  53. package/src/entrypoints.ts +57 -0
  54. package/src/index.ts +4 -1
  55. package/src/model/checkout.ts +8 -6
  56. package/src/model/index.ts +1 -0
  57. package/src/model/plan.ts +5 -1
  58. package/src/model/pricing.ts +34 -0
  59. package/src/model/subscription.ts +11 -14
  60. package/src/pricing.ts +87 -0
  61. package/src/types.ts +29 -3
  62. package/tests/entitlement.spec.ts +90 -0
  63. package/tests/pricing.spec.ts +33 -0
  64. package/tests/protocol.spec.ts +51 -0
  65. package/tests/tsconfig.json +11 -0
  66. package/tsconfig.json +6 -1
  67. package/build/.gitkeep +0 -0
  68. package/build/modules.d.ts +0 -3
  69. package/build/modules.d.ts.map +0 -1
  70. package/build/modules.js +0 -18
  71. package/build/modules.js.map +0 -1
  72. package/src/modules.ts +0 -43
@@ -0,0 +1,43 @@
1
+ import { contract, protocol, typed } from '@owlmeans/entrypoint';
2
+ import { route, backend, RouteMethod } from '@owlmeans/route';
3
+ import { SubscriptionPropagateBodySchema } from './model/subscription.js';
4
+ import { CreateCheckoutBodySchema, CreateCheckoutResponseSchema } from './model/checkout.js';
5
+ const aliases = {
6
+ subscription: {
7
+ base: 'payment-api:subscription',
8
+ propagate: 'payment-api:subscription:propagate',
9
+ },
10
+ service: {
11
+ base: 'payment-service:base',
12
+ checkout: 'payment-service:checkout',
13
+ session: 'payment-service:checkout:session',
14
+ external: 'payment-service:checkout:session:external',
15
+ create: 'payment-service:checkout:session:external:create',
16
+ },
17
+ };
18
+ const subscriptionBase = protocol(route(aliases.subscription.base, '/subscription', backend()), contract());
19
+ const serviceBase = protocol(route(aliases.service.base, '/payment-service', backend()), contract());
20
+ const checkoutBase = protocol(route(aliases.service.checkout, '/checkout', backend({ parent: serviceBase })), contract());
21
+ const sessionBase = protocol(route(aliases.service.session, '/session', backend({ parent: checkoutBase })), contract());
22
+ const externalBase = protocol(route(aliases.service.external, '/external', backend({ parent: sessionBase })), contract());
23
+ /** Public payment protocols. Alias strings stay private to this declaration module. */
24
+ export const paymentApi = {
25
+ subscription: {
26
+ base: subscriptionBase,
27
+ propagate: protocol(route(aliases.subscription.propagate, '/propagate', backend({ parent: subscriptionBase, method: RouteMethod.POST })), contract.request({ body: SubscriptionPropagateBodySchema }, typed())),
28
+ },
29
+ service: {
30
+ base: serviceBase,
31
+ checkout: {
32
+ base: checkoutBase,
33
+ session: {
34
+ base: sessionBase,
35
+ external: {
36
+ base: externalBase,
37
+ create: protocol(route(aliases.service.create, '/create', backend({ parent: externalBase, method: RouteMethod.POST })), contract.request({ body: CreateCheckoutBodySchema }, CreateCheckoutResponseSchema)),
38
+ },
39
+ },
40
+ },
41
+ },
42
+ };
43
+ //# sourceMappingURL=entrypoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAE5F,MAAM,OAAO,GAAG;IACd,YAAY,EAAE;QACZ,IAAI,EAAE,0BAA0B;QAChC,SAAS,EAAE,oCAAoC;KAChD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,0BAA0B;QACpC,OAAO,EAAE,kCAAkC;QAC3C,QAAQ,EAAE,2CAA2C;QACrD,MAAM,EAAE,kDAAkD;KAC3D;CACO,CAAA;AAEV,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC3G,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AACpG,MAAM,YAAY,GAAG,QAAQ,CAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAC3F,CAAA;AACD,MAAM,WAAW,GAAG,QAAQ,CAC1B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAC1F,CAAA;AACD,MAAM,YAAY,GAAG,QAAQ,CAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAC3F,CAAA;AAED,uFAAuF;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,YAAY,EAAE;QACZ,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,QAAQ,CACjB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EACpH,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,EAAE,KAAK,EAAa,CAAC,CAChF;KACF;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE;oBACR,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,QAAQ,CACd,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EACrG,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,EAAE,4BAA4B,CAAC,CACnF;iBACF;aACF;SACF;KACF;CACO,CAAA"}
package/build/index.d.ts CHANGED
@@ -2,8 +2,11 @@ export type * from './types.js';
2
2
  export * from './model/index.js';
3
3
  export * from './errors.js';
4
4
  export * from './consts.js';
5
+ export * from './entitlement.js';
5
6
  export * from './service.js';
6
7
  export * from './i18n.js';
7
8
  export * from './helper.js';
8
- export * from './modules.js';
9
+ export * from './entrypoints.js';
10
+ export * from './advertise.js';
11
+ export * from './pricing.js';
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA"}
package/build/index.js CHANGED
@@ -1,8 +1,11 @@
1
1
  export * from './model/index.js';
2
2
  export * from './errors.js';
3
3
  export * from './consts.js';
4
+ export * from './entitlement.js';
4
5
  export * from './service.js';
5
6
  export * from './i18n.js';
6
7
  export * from './helper.js';
7
- export * from './modules.js';
8
+ export * from './entrypoints.js';
9
+ export * from './advertise.js';
10
+ export * from './pricing.js';
8
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA"}
@@ -1,5 +1,4 @@
1
- import type { JSONSchemaType } from 'ajv';
2
1
  import type { CreateCheckoutBody, CreateCheckoutResponse } from '../types.js';
3
- export declare const CreateCheckoutBodySchema: JSONSchemaType<CreateCheckoutBody>;
4
- export declare const CreateCheckoutResponseSchema: JSONSchemaType<CreateCheckoutResponse>;
2
+ export declare const CreateCheckoutBodySchema: import("@owlmeans/entrypoint").EntrypointSchema<CreateCheckoutBody>;
3
+ export declare const CreateCheckoutResponseSchema: import("@owlmeans/entrypoint").EntrypointSchema<CreateCheckoutResponse>;
5
4
  //# sourceMappingURL=checkout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/model/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAG7E,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,kBAAkB,CAavE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,cAAc,CAAC,sBAAsB,CAO/E,CAAA"}
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/model/checkout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAI7E,eAAO,MAAM,wBAAwB,qEAcG,CAAA;AAExC,eAAO,MAAM,4BAA4B,yEAOG,CAAA"}
@@ -1,24 +1,26 @@
1
1
  import { ResourceValueSchema, EntityValueSchema, IdValueSchema } from '@owlmeans/auth';
2
- export const CreateCheckoutBodySchema = {
2
+ import { schema } from '@owlmeans/entrypoint';
3
+ export const CreateCheckoutBodySchema = schema({
3
4
  type: 'object',
4
5
  properties: {
5
6
  productSku: ResourceValueSchema,
6
7
  sku: { ...ResourceValueSchema, nullable: true },
7
- entityId: EntityValueSchema,
8
+ entitySlug: EntityValueSchema,
8
9
  service: { ...ResourceValueSchema, minLength: 2 },
10
+ amountMinor: { type: 'number', minimum: 0, multipleOf: 1, nullable: true },
9
11
  subscriptionId: { ...IdValueSchema, nullable: true },
10
12
  successUrl: { ...ResourceValueSchema, minLength: 1, nullable: true },
11
13
  cancelUrl: { ...ResourceValueSchema, minLength: 1, nullable: true },
12
14
  },
13
- required: ['productSku', 'entityId', 'service'],
15
+ required: ['productSku', 'entitySlug', 'service'],
14
16
  additionalProperties: false,
15
- };
16
- export const CreateCheckoutResponseSchema = {
17
+ });
18
+ export const CreateCheckoutResponseSchema = schema({
17
19
  type: 'object',
18
20
  properties: {
19
21
  url: { type: 'string', minLength: 1 },
20
22
  },
21
23
  required: ['url'],
22
24
  additionalProperties: false,
23
- };
25
+ });
24
26
  //# sourceMappingURL=checkout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/model/checkout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEtF,MAAM,CAAC,MAAM,wBAAwB,GAAuC;IAC1E,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,UAAU,EAAE,mBAAmB;QAC/B,GAAG,EAAE,EAAE,GAAG,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/C,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,cAAc,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpD,UAAU,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpE,SAAS,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;KACpE;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC;IAC/C,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAA2C;IAClF,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;KACtC;IACD,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,oBAAoB,EAAE,KAAK;CAC5B,CAAA"}
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/model/checkout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAqB;IACjE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,UAAU,EAAE,mBAAmB;QAC/B,GAAG,EAAE,EAAE,GAAG,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/C,UAAU,EAAE,iBAAiB;QAC7B,OAAO,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1E,cAAc,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpD,UAAU,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpE,SAAS,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;KACpE;IACD,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC;IACjD,oBAAoB,EAAE,KAAK;CACU,CAAC,CAAA;AAExC,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAyB;IACzE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;KACtC;IACD,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,oBAAoB,EAAE,KAAK;CACc,CAAC,CAAA"}
@@ -4,4 +4,5 @@ export * from './subscription.js';
4
4
  export * from './plan.js';
5
5
  export * from './utils.js';
6
6
  export * from './checkout.js';
7
+ export * from './pricing.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
@@ -4,4 +4,5 @@ export * from './subscription.js';
4
4
  export * from './plan.js';
5
5
  export * from './utils.js';
6
6
  export * from './checkout.js';
7
+ export * from './pricing.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/model/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAQ9C,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,WAAW,CAyCzD,CAAA"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/model/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAS9C,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,WAAW,CA4CzD,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { ResourceValueSchema, PermissionSetSchema, DateSchema } from '@owlmeans/auth';
2
- import { PlanDurationSchema, ProductDescriptionSchema, ProductTitleSchema, SubscriptionStatusSchema } from '../consts.js';
2
+ import { CheckoutPricingModeSchema, PlanDurationSchema, ProductDescriptionSchema, ProductTitleSchema, SubscriptionStatusSchema } from '../consts.js';
3
3
  import { LimitConfigSchema } from './utils.js';
4
+ import { AmountCheckoutPolicySchema, QuantityCheckoutPolicySchema } from './pricing.js';
4
5
  export const ProductPlanSchema = {
5
6
  type: 'object',
6
7
  properties: {
@@ -33,6 +34,9 @@ export const ProductPlanSchema = {
33
34
  type: 'object', required: [], nullable: true,
34
35
  additionalProperties: LimitConfigSchema
35
36
  },
37
+ pricingMode: { ...CheckoutPricingModeSchema, nullable: true },
38
+ amountPolicy: { ...AmountCheckoutPolicySchema, nullable: true },
39
+ quantityPolicy: { ...QuantityCheckoutPolicySchema, nullable: true },
36
40
  },
37
41
  required: [
38
42
  'productSku', 'sku', 'status', 'duration',
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/model/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACrF,OAAO,EACL,kBAAkB,EAAE,wBAAwB,EAAE,kBAAkB,EAChE,wBAAwB,EACzB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAgC;IAC5D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,UAAU,EAAE,mBAAmB;QAC/B,GAAG,EAAE,mBAAmB;QACxB,MAAM,EAAE,wBAAwB;QAChC,eAAe,EAAE;YACf,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;YAC5C,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzC;QACD,QAAQ,EAAE,kBAAkB;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QACrC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7D,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxD,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QAEhE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,EAAE,GAAG,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;QAE7D,SAAS,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,YAAY,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/C,WAAW,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAE9C,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3E,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;YAC5C,oBAAoB,EAAE,iBAAiB;SACxC;KACF;IACD,QAAQ,EAAE;QACR,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU;QACzC,OAAO,EAAE,OAAO;KACjB;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAA"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/model/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AmountCheckoutPolicy, QuantityCheckoutPolicy } from '../types.js';
2
+ export declare const AmountCheckoutPolicySchema: import("@owlmeans/entrypoint").EntrypointSchema<AmountCheckoutPolicy>;
3
+ export declare const QuantityCheckoutPolicySchema: import("@owlmeans/entrypoint").EntrypointSchema<QuantityCheckoutPolicy>;
4
+ //# sourceMappingURL=pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/model/pricing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAE/E,eAAO,MAAM,0BAA0B,uEAkBG,CAAA;AAE1C,eAAO,MAAM,4BAA4B,yEASG,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { schema } from '@owlmeans/entrypoint';
2
+ export const AmountCheckoutPolicySchema = schema({
3
+ type: 'object',
4
+ properties: {
5
+ currency: { type: 'string', minLength: 3, maxLength: 3 },
6
+ minimumMinor: { type: 'number', minimum: 0, multipleOf: 1 },
7
+ maximumMinor: { type: 'number', minimum: 0, multipleOf: 1 },
8
+ defaultMinor: { type: 'number', minimum: 0, multipleOf: 1 },
9
+ presetsMinor: {
10
+ type: 'array', items: { type: 'number', minimum: 0, multipleOf: 1 }, uniqueItems: true,
11
+ },
12
+ fixedMinor: { type: 'number', minimum: 0, multipleOf: 1 },
13
+ rateBps: { type: 'number', minimum: 0, maximum: 9999, multipleOf: 1 },
14
+ },
15
+ required: [
16
+ 'currency', 'minimumMinor', 'maximumMinor', 'defaultMinor', 'presetsMinor',
17
+ 'fixedMinor', 'rateBps',
18
+ ],
19
+ additionalProperties: false,
20
+ });
21
+ export const QuantityCheckoutPolicySchema = schema({
22
+ type: 'object',
23
+ properties: {
24
+ minimum: { type: 'number', minimum: 1, multipleOf: 1 },
25
+ maximum: { type: 'number', minimum: 1, multipleOf: 1 },
26
+ default: { type: 'number', minimum: 1, multipleOf: 1 },
27
+ },
28
+ required: ['minimum', 'maximum', 'default'],
29
+ additionalProperties: false,
30
+ });
31
+ //# sourceMappingURL=pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/model/pricing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAG7C,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAuB;IACrE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QACxD,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC3D,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC3D,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC3D,YAAY,EAAE;YACZ,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI;SACvF;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QACzD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;KACtE;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;QAC1E,YAAY,EAAE,SAAS;KACxB;IACD,oBAAoB,EAAE,KAAK;CACY,CAAC,CAAA;AAE1C,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAyB;IACzE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QACtD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QACtD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;KACvD;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IAC3C,oBAAoB,EAAE,KAAK;CACc,CAAC,CAAA"}
@@ -1,9 +1,9 @@
1
1
  import type { JSONSchemaType } from 'ajv';
2
2
  import type { PlanSubscription, SubscriptionPropagateBody } from '../types.js';
3
3
  export declare const PlanSubscriptionSchema: JSONSchemaType<PlanSubscription>;
4
- export declare const SubscriptionPropagateBodySchema: JSONSchemaType<SubscriptionPropagateBody>;
4
+ export declare const SubscriptionPropagateBodySchema: import("@owlmeans/entrypoint").EntrypointSchema<SubscriptionPropagateBody>;
5
5
  /**
6
6
  * @deprecated Use SubscriptionPropogateBodySchema instead
7
7
  */
8
- export declare const SubscriptionPropogateBodySchema: JSONSchemaType<SubscriptionPropagateBody>;
8
+ export declare const SubscriptionPropogateBodySchema: import("@owlmeans/entrypoint").EntrypointSchema<SubscriptionPropagateBody>;
9
9
  //# sourceMappingURL=subscription.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/model/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAK9E,eAAO,MAAM,sBAAsB,EAAE,cAAc,CAAC,gBAAgB,CA+BnE,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,cAAc,CAAC,yBAAyB,CASrF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,cAAc,CAAC,yBAAyB,CASrF,CAAA"}
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/model/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAM9E,eAAO,MAAM,sBAAsB,EAAE,cAAc,CAAC,gBAAgB,CA+BnE,CAAA;AAMD,eAAO,MAAM,+BAA+B,4EAUG,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,+BAA+B,4EAAkC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { ResourceValueSchema, PermissionSetSchema, DateSchema, EntityValueSchema, IdValueSchema } from '@owlmeans/auth';
2
+ import { schema } from '@owlmeans/entrypoint';
2
3
  import { SubscriptionStatusSchema } from '../consts.js';
3
4
  import { CapabilityUsageSchema, LimitConfigSchema } from './utils.js';
4
5
  export const PlanSubscriptionSchema = {
@@ -33,27 +34,21 @@ export const PlanSubscriptionSchema = {
33
34
  required: ['sku', 'entityId', 'createdAt', 'startsdAt', 'status'],
34
35
  additionalProperties: false,
35
36
  };
36
- export const SubscriptionPropagateBodySchema = {
37
+ const { entityId: _entityId, ...SubscriptionWireProperties } = PlanSubscriptionSchema.properties;
38
+ const SubscriptionWireRequired = PlanSubscriptionSchema.required.filter(field => field !== 'entityId');
39
+ export const SubscriptionPropagateBodySchema = schema({
37
40
  type: 'object',
38
41
  properties: {
39
- ...PlanSubscriptionSchema.properties,
42
+ ...SubscriptionWireProperties,
43
+ entitySlug: EntityValueSchema,
40
44
  service: { ...ResourceValueSchema, minLength: 2 },
41
45
  externalId: IdValueSchema,
42
46
  }, // @TODO Figure out why it doesn't work (probably different version of ajv)
43
- required: ['externalId', 'service', ...PlanSubscriptionSchema.required],
47
+ required: ['externalId', 'entitySlug', 'service', ...SubscriptionWireRequired],
44
48
  additionalProperties: false,
45
- };
49
+ });
46
50
  /**
47
51
  * @deprecated Use SubscriptionPropogateBodySchema instead
48
52
  */
49
- export const SubscriptionPropogateBodySchema = {
50
- type: 'object',
51
- properties: {
52
- ...PlanSubscriptionSchema.properties,
53
- service: { ...ResourceValueSchema, minLength: 2 },
54
- externalId: IdValueSchema,
55
- }, // @TODO Figure out why it doesn't work (probably different version of ajv)
56
- required: ['externalId', 'service', ...PlanSubscriptionSchema.required],
57
- additionalProperties: false,
58
- };
53
+ export const SubscriptionPropogateBodySchema = SubscriptionPropagateBodySchema;
59
54
  //# sourceMappingURL=subscription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/model/subscription.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACvH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,CAAC,MAAM,sBAAsB,GAAqC;IACtE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,iBAAiB;QAC3B,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QACnD,UAAU,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,SAAS,EAAE,UAAU;QACrB,aAAa,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,SAAS,EAAE,UAAU;QACrB,YAAY,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/C,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,SAAS,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,WAAW,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9C,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,SAAS,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,cAAc,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjD,MAAM,EAAE,wBAAwB;QAChC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3E,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;YAC5C,oBAAoB,EAAE,iBAAiB;SACxC;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;YAC5C,oBAAoB,EAAE,qBAAqB;SAC5C;KACF;IACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IACjE,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,+BAA+B,GAA8C;IACxF,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,sBAAsB,CAAC,UAAU;QACpC,OAAO,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,UAAU,EAAE,aAAa;KACnB,EAAE,2EAA2E;IACrF,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IACvE,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAA8C;IACxF,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,sBAAsB,CAAC,UAAU;QACpC,OAAO,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,UAAU,EAAE,aAAa;KACnB,EAAE,2EAA2E;IACrF,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IACvE,oBAAoB,EAAE,KAAK;CAC5B,CAAA"}
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/model/subscription.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACvH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,CAAC,MAAM,sBAAsB,GAAqC;IACtE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,iBAAiB;QAC3B,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QACnD,UAAU,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,SAAS,EAAE,UAAU;QACrB,aAAa,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,SAAS,EAAE,UAAU;QACrB,YAAY,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/C,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,SAAS,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,WAAW,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9C,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,SAAS,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,cAAc,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjD,MAAM,EAAE,wBAAwB;QAChC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3E,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;YAC5C,oBAAoB,EAAE,iBAAiB;SACxC;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;YAC5C,oBAAoB,EAAE,qBAAqB;SAC5C;KACF;IACD,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;IACjE,oBAAoB,EAAE,KAAK;CAC5B,CAAA;AAED,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,0BAA0B,EAAE,GAC1D,sBAAsB,CAAC,UAAqC,CAAA;AAC9D,MAAM,wBAAwB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,CAAA;AAEtG,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAA4B;IAC/E,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,GAAG,0BAA0B;QAC7B,UAAU,EAAE,iBAAiB;QAC7B,OAAO,EAAE,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE;QACjD,UAAU,EAAE,aAAa;KACnB,EAAE,2EAA2E;IACrF,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,wBAAwB,CAAC;IAC9E,oBAAoB,EAAE,KAAK;CACiB,CAAC,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,+BAA+B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { AmountCheckoutPolicy, QuantityCheckoutPolicy } from './types.js';
2
+ export declare const assertAmountCheckoutPolicy: (policy: AmountCheckoutPolicy) => AmountCheckoutPolicy;
3
+ export declare const assertQuantityCheckoutPolicy: (policy: QuantityCheckoutPolicy) => QuantityCheckoutPolicy;
4
+ export declare const assertCheckoutAmount: (policy: AmountCheckoutPolicy, amountMinor: number) => number;
5
+ /** Gross up a net credit value so the configured adjustment remains outside the credit grant. */
6
+ export declare const chargeAmountMinor: (amountMinor: number, policy: Pick<AmountCheckoutPolicy, 'fixedMinor' | 'rateBps'>) => number;
7
+ //# sourceMappingURL=pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAI9E,eAAO,MAAM,0BAA0B,WAC7B,oBAAoB,KAC3B,oBA6BF,CAAA;AAED,eAAO,MAAM,4BAA4B,WAC/B,sBAAsB,KAC7B,sBAYF,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,oBAAoB,eAAe,MAAM,KAChD,MAYF,CAAA;AAED,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,gBACf,MAAM,UAAU,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,SAAS,CAAC,KAChF,MAaF,CAAA"}
@@ -0,0 +1,63 @@
1
+ import { PaymentError } from './errors.js';
2
+ const integer = (value) => Number.isSafeInteger(value);
3
+ export const assertAmountCheckoutPolicy = (policy) => {
4
+ if (!integer(policy.minimumMinor)
5
+ || !integer(policy.maximumMinor)
6
+ || !integer(policy.defaultMinor)
7
+ || !integer(policy.fixedMinor)
8
+ || !integer(policy.rateBps)
9
+ || policy.minimumMinor < 0
10
+ || policy.minimumMinor > policy.defaultMinor
11
+ || policy.defaultMinor > policy.maximumMinor
12
+ || policy.fixedMinor < 0
13
+ || policy.rateBps < 0
14
+ || policy.rateBps >= 10_000
15
+ || policy.currency.trim().length !== 3) {
16
+ throw new PaymentError('checkout-policy:amount');
17
+ }
18
+ const presets = new Set(policy.presetsMinor);
19
+ if (presets.size !== policy.presetsMinor.length
20
+ || policy.presetsMinor.some(value => !integer(value) || value < policy.minimumMinor || value > policy.maximumMinor)) {
21
+ throw new PaymentError('checkout-policy:presets');
22
+ }
23
+ return policy;
24
+ };
25
+ export const assertQuantityCheckoutPolicy = (policy) => {
26
+ if (!integer(policy.minimum)
27
+ || !integer(policy.maximum)
28
+ || !integer(policy.default)
29
+ || policy.minimum < 1
30
+ || policy.minimum > policy.default
31
+ || policy.default > policy.maximum) {
32
+ throw new PaymentError('checkout-policy:quantity');
33
+ }
34
+ return policy;
35
+ };
36
+ export const assertCheckoutAmount = (policy, amountMinor) => {
37
+ assertAmountCheckoutPolicy(policy);
38
+ if (!integer(amountMinor)) {
39
+ throw new PaymentError('checkout-amount:integer');
40
+ }
41
+ if (amountMinor < policy.minimumMinor) {
42
+ throw new PaymentError('checkout-amount:minimum');
43
+ }
44
+ if (amountMinor > policy.maximumMinor) {
45
+ throw new PaymentError('checkout-amount:maximum');
46
+ }
47
+ return amountMinor;
48
+ };
49
+ /** Gross up a net credit value so the configured adjustment remains outside the credit grant. */
50
+ export const chargeAmountMinor = (amountMinor, policy) => {
51
+ const adjusted = amountMinor + policy.fixedMinor;
52
+ const numerator = adjusted * 10_000;
53
+ if (!integer(amountMinor) || !integer(policy.fixedMinor) || !integer(policy.rateBps)
54
+ || amountMinor < 0 || policy.fixedMinor < 0 || policy.rateBps < 0 || policy.rateBps >= 10_000
55
+ || !integer(adjusted) || !integer(numerator)) {
56
+ throw new PaymentError('checkout-charge');
57
+ }
58
+ const charge = Math.ceil(numerator / (10_000 - policy.rateBps));
59
+ if (!integer(charge))
60
+ throw new PaymentError('checkout-charge');
61
+ return charge;
62
+ };
63
+ //# sourceMappingURL=pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
package/build/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { InitializedService } from '@owlmeans/context';
2
- import type { PaymentEntityType, PlanDuration, PlanStatus, ProductType, SubscriptionStatus } from './consts.js';
2
+ import type { CheckoutPricingMode, PaymentEntityType, PlanDuration, PlanStatus, ProductType, SubscriptionStatus } from './consts.js';
3
3
  import type { PermissionSet } from '@owlmeans/auth';
4
4
  export interface Product {
5
5
  type: ProductType;
@@ -58,6 +58,23 @@ export interface ProductPlan {
58
58
  limits?: {
59
59
  [key: string]: LimitConfig;
60
60
  };
61
+ pricingMode?: CheckoutPricingMode;
62
+ amountPolicy?: AmountCheckoutPolicy;
63
+ quantityPolicy?: QuantityCheckoutPolicy;
64
+ }
65
+ export interface AmountCheckoutPolicy {
66
+ currency: string;
67
+ minimumMinor: number;
68
+ maximumMinor: number;
69
+ defaultMinor: number;
70
+ presetsMinor: number[];
71
+ fixedMinor: number;
72
+ rateBps: number;
73
+ }
74
+ export interface QuantityCheckoutPolicy {
75
+ minimum: number;
76
+ maximum: number;
77
+ default: number;
61
78
  }
62
79
  export interface PlanSubscription {
63
80
  sku: string;
@@ -93,8 +110,11 @@ export interface PlanSubscription {
93
110
  export interface CreateCheckoutBody {
94
111
  productSku: string;
95
112
  sku?: string;
96
- entityId: string;
113
+ /** Renameable organization value carried across a protocol boundary. */
114
+ entitySlug: string;
97
115
  service: string;
116
+ /** Net credit value for amount-priced checkouts, in integer currency minor units. */
117
+ amountMinor?: number;
98
118
  subscriptionId?: string;
99
119
  successUrl?: string;
100
120
  cancelUrl?: string;
@@ -102,7 +122,9 @@ export interface CreateCheckoutBody {
102
122
  export interface CreateCheckoutResponse {
103
123
  url: string;
104
124
  }
105
- export interface SubscriptionPropagateBody extends PlanSubscription {
125
+ export interface SubscriptionPropagateBody extends Omit<PlanSubscription, 'entityId' | 'externalId'> {
126
+ /** Renameable organization value carried across the propagation protocol. */
127
+ entitySlug: string;
106
128
  service: string;
107
129
  externalId: string;
108
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@owlmeans/payment",
3
- "version": "0.1.18-rc.2",
3
+ "version": "0.1.18-rc.21",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "tsc -b",
8
8
  "dev": "sleep 228 && nodemon -e ts,tsx,json --watch src --exec \"tsc -p ./tsconfig.json\"",
9
- "watch": "tsc -b -w --preserveWatchOutput --pretty"
9
+ "watch": "tsc -b -w --preserveWatchOutput --pretty",
10
+ "test": "bun test ./tests"
10
11
  },
11
12
  "main": "build/index.js",
12
13
  "module": "build/index.js",
@@ -31,15 +32,16 @@
31
32
  "ajv": "*"
32
33
  },
33
34
  "dependencies": {
34
- "@owlmeans/auth": "^0.1.18-rc.2",
35
- "@owlmeans/basic-envelope": "^0.1.18-rc.2",
36
- "@owlmeans/config": "^0.1.18-rc.2",
37
- "@owlmeans/context": "^0.1.18-rc.2",
38
- "@owlmeans/error": "^0.1.18-rc.2",
39
- "@owlmeans/i18n": "^0.1.18-rc.2",
40
- "@owlmeans/entrypoint": "^0.1.18-rc.2",
41
- "@owlmeans/resource": "^0.1.18-rc.2",
42
- "@owlmeans/route": "^0.1.18-rc.2"
35
+ "@owlmeans/api-config": "^0.1.18-rc.20",
36
+ "@owlmeans/auth": "^0.1.18-rc.17",
37
+ "@owlmeans/basic-envelope": "^0.1.18-rc.20",
38
+ "@owlmeans/config": "^0.1.18-rc.20",
39
+ "@owlmeans/context": "^0.1.18-rc.16",
40
+ "@owlmeans/error": "^0.1.18-rc.16",
41
+ "@owlmeans/i18n": "^0.1.18-rc.16",
42
+ "@owlmeans/entrypoint": "^0.1.18-rc.19",
43
+ "@owlmeans/resource": "^0.1.18-rc.17",
44
+ "@owlmeans/route": "^0.1.18-rc.17"
43
45
  },
44
46
  "devDependencies": {
45
47
  "@owlmeans/dep-config": "workspace:*",
@@ -0,0 +1,15 @@
1
+ import { CONFIG_RECORD } from '@owlmeans/context'
2
+ import { apiConfigPlugin, every } from '@owlmeans/api-config'
3
+ import { L10N_RECORD_TYPE, PLAN_RECORD_TYPE, PRODUCT_RECORD_TYPE } from './consts.js'
4
+
5
+ const advertisedRecordTypes = new Set([L10N_RECORD_TYPE, PLAN_RECORD_TYPE, PRODUCT_RECORD_TYPE])
6
+
7
+ apiConfigPlugin({
8
+ allow: {
9
+ [CONFIG_RECORD]: every(
10
+ true,
11
+ value => value != null && typeof value === 'object'
12
+ && advertisedRecordTypes.has((value as { recordType?: string }).recordType ?? '')
13
+ ),
14
+ },
15
+ })
package/src/consts.ts CHANGED
@@ -6,6 +6,11 @@ export enum ProductType {
6
6
  Consumable = 'consumable'
7
7
  }
8
8
 
9
+ export enum CheckoutPricingMode {
10
+ Quantity = 'quantity',
11
+ Amount = 'amount',
12
+ }
13
+
9
14
  export enum PaymentEntityType {
10
15
  Product = 'product',
11
16
  Plan = 'plan',
@@ -51,6 +56,11 @@ export const ProductTypeSchema: JSONSchemaType<ProductType> = {
51
56
  enum: Object.values(ProductType)
52
57
  }
53
58
 
59
+ export const CheckoutPricingModeSchema: JSONSchemaType<CheckoutPricingMode> = {
60
+ type: 'string',
61
+ enum: Object.values(CheckoutPricingMode),
62
+ }
63
+
54
64
  export const PaymentEntityTypeSchema: JSONSchemaType<PaymentEntityType> = {
55
65
  type: 'string',
56
66
  enum: Object.values(PaymentEntityType)
@@ -95,27 +105,3 @@ export const L10N_RECORD_PREFIX = L10N_RECORD_TYPE
95
105
  export const DEFAULT_ALIAS = 'payment'
96
106
 
97
107
  export const PAYMENT_SERVICE = DEFAULT_ALIAS
98
-
99
- export const paymentApi = {
100
- subscription: {
101
- base: 'payment-api:subscription',
102
- /**
103
- * @deprecated Use propagate instead
104
- */
105
- propogate: 'payment-api:subscription:propogate',
106
- propagate: 'payment-api:subscription:propagate',
107
- },
108
- service: {
109
- base: 'payment-service:base',
110
- checkout: {
111
- base: 'payment-service:checkout',
112
- session: {
113
- base: 'payment-service:checkout:session',
114
- external: {
115
- base: 'payment-service:checkout:session:external',
116
- create: 'payment-service:checkout:session:external:create',
117
- }
118
- }
119
- }
120
- }
121
- }