@voyant-travel/plugin-netopia 0.104.19

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 (42) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +80 -0
  3. package/dist/checkout.d.ts +4 -0
  4. package/dist/checkout.d.ts.map +1 -0
  5. package/dist/checkout.js +20 -0
  6. package/dist/client.d.ts +29 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +221 -0
  9. package/dist/index.d.ts +9 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +6 -0
  12. package/dist/ipn.d.ts +42 -0
  13. package/dist/ipn.d.ts.map +1 -0
  14. package/dist/ipn.js +188 -0
  15. package/dist/notification-runtime.d.ts +13 -0
  16. package/dist/notification-runtime.d.ts.map +1 -0
  17. package/dist/notification-runtime.js +22 -0
  18. package/dist/plugin.d.ts +736 -0
  19. package/dist/plugin.d.ts.map +1 -0
  20. package/dist/plugin.js +231 -0
  21. package/dist/service-callback.d.ts +8 -0
  22. package/dist/service-callback.d.ts.map +1 -0
  23. package/dist/service-callback.js +200 -0
  24. package/dist/service-collect.d.ts +9 -0
  25. package/dist/service-collect.d.ts.map +1 -0
  26. package/dist/service-collect.js +70 -0
  27. package/dist/service-shared.d.ts +63 -0
  28. package/dist/service-shared.d.ts.map +1 -0
  29. package/dist/service-shared.js +40 -0
  30. package/dist/service-start.d.ts +6 -0
  31. package/dist/service-start.d.ts.map +1 -0
  32. package/dist/service-start.js +82 -0
  33. package/dist/service.d.ts +13 -0
  34. package/dist/service.d.ts.map +1 -0
  35. package/dist/service.js +12 -0
  36. package/dist/types.d.ts +259 -0
  37. package/dist/types.d.ts.map +1 -0
  38. package/dist/types.js +1 -0
  39. package/dist/validation.d.ts +666 -0
  40. package/dist/validation.d.ts.map +1 -0
  41. package/dist/validation.js +139 -0
  42. package/package.json +73 -0
@@ -0,0 +1,139 @@
1
+ import { createPaymentSessionFromGuaranteeSchema, createPaymentSessionFromInvoiceSchema, createPaymentSessionFromScheduleSchema, } from "@voyant-travel/finance";
2
+ import { sendInvoiceNotificationSchema, sendPaymentSessionNotificationSchema, } from "@voyant-travel/notifications";
3
+ import { z } from "zod";
4
+ export const netopiaBillingAddressSchema = z.object({
5
+ email: z.string().email(),
6
+ phone: z.string().min(1),
7
+ firstName: z.string().min(1),
8
+ lastName: z.string().min(1),
9
+ city: z.string().min(1),
10
+ country: z.number().int().positive(),
11
+ state: z.string().min(1),
12
+ postalCode: z.string().min(1),
13
+ details: z.string().min(1),
14
+ });
15
+ export const netopiaProductLineSchema = z.object({
16
+ name: z.string().optional(),
17
+ code: z.string().optional(),
18
+ category: z.string().optional(),
19
+ price: z.number().positive().optional(),
20
+ vat: z.number().min(0).optional(),
21
+ });
22
+ export const netopiaInstallmentsSchema = z.object({
23
+ selected: z.number().int().positive(),
24
+ available: z.array(z.number().int().nonnegative()).min(1),
25
+ });
26
+ export const netopiaPaymentOptionsSchema = z.object({
27
+ installments: z.number().int().positive(),
28
+ bonus: z.number().int().nonnegative().optional(),
29
+ });
30
+ export const netopiaPaymentInstrumentSchema = z.object({
31
+ type: z.string().min(1),
32
+ account: z.string().min(1),
33
+ expMonth: z.number().int().min(1).max(12),
34
+ expYear: z.number().int().min(2000),
35
+ secretCode: z.string().min(1),
36
+ token: z.string().optional(),
37
+ });
38
+ export const netopiaBrowserDataSchema = z.record(z.string(), z.string().optional());
39
+ const optionalRuntimeUrl = z.string().trim().url().optional();
40
+ const optionalRuntimeString = z.string().trim().min(1).optional();
41
+ const optionalIntegerArray = z.array(z.number().int()).min(1).optional();
42
+ const optionalFetch = z.custom((value) => value === undefined || typeof value === "function", "Expected a fetch implementation function");
43
+ const optionalProviderResolver = z.custom((value) => value === undefined || typeof value === "function", "Expected a notification provider resolver function");
44
+ const optionalResilience = z.custom((value) => value === undefined || (typeof value === "object" && value !== null), "Expected valid resilience options");
45
+ export const netopiaRuntimeOptionsSchema = z.object({
46
+ apiUrl: optionalRuntimeUrl,
47
+ apiKey: optionalRuntimeString,
48
+ posSignature: optionalRuntimeString,
49
+ notifyUrl: optionalRuntimeUrl,
50
+ redirectUrl: optionalRuntimeUrl,
51
+ emailTemplate: optionalRuntimeString,
52
+ language: optionalRuntimeString,
53
+ successStatuses: optionalIntegerArray,
54
+ processingStatuses: optionalIntegerArray,
55
+ ipnPublicKey: optionalRuntimeString,
56
+ trustUnverifiedCallbacks: z.boolean().optional(),
57
+ fetch: optionalFetch.optional(),
58
+ resilience: optionalResilience.optional(),
59
+ resolveNotificationProviders: optionalProviderResolver.optional(),
60
+ });
61
+ export const resolvedNetopiaRuntimeOptionsSchema = z.object({
62
+ apiUrl: z.string().trim().url(),
63
+ apiKey: z.string().trim().min(1),
64
+ posSignature: z.string().trim().min(1),
65
+ notifyUrl: z.string().trim().url(),
66
+ redirectUrl: z.string().trim().url(),
67
+ emailTemplate: z.string().trim().min(1).default("confirm"),
68
+ language: z.string().trim().min(1).default("ro"),
69
+ successStatuses: z.array(z.number().int()).min(1).default([3, 5]),
70
+ processingStatuses: z.array(z.number().int()).min(1).default([1, 15]),
71
+ ipnPublicKey: z.string().trim().min(1).optional(),
72
+ trustUnverifiedCallbacks: z.boolean().default(false),
73
+ fetch: optionalFetch.optional(),
74
+ resilience: optionalResilience.optional(),
75
+ });
76
+ export const netopiaStartPaymentSessionSchema = z.object({
77
+ description: z.string().optional(),
78
+ notifyUrl: z.string().url().optional(),
79
+ returnUrl: z.string().url().optional(),
80
+ cancelUrl: z.string().url().optional(),
81
+ callbackUrl: z.string().url().optional(),
82
+ emailTemplate: z.string().optional(),
83
+ language: z.string().optional(),
84
+ options: netopiaPaymentOptionsSchema.optional(),
85
+ instrument: netopiaPaymentInstrumentSchema.optional(),
86
+ browserData: netopiaBrowserDataSchema.optional(),
87
+ billing: netopiaBillingAddressSchema,
88
+ shipping: netopiaBillingAddressSchema.optional(),
89
+ products: z.array(netopiaProductLineSchema).optional(),
90
+ installments: netopiaInstallmentsSchema.optional(),
91
+ orderData: z.record(z.string(), z.string()).optional(),
92
+ metadata: z.record(z.string(), z.unknown()).optional(),
93
+ notes: z.string().nullable().optional(),
94
+ });
95
+ export const netopiaWebhookPayloadSchema = z.object({
96
+ order: z.object({
97
+ orderID: z.string().min(1),
98
+ }),
99
+ payment: z
100
+ .object({
101
+ amount: z.number(),
102
+ currency: z.string().min(3),
103
+ ntpID: z.string().min(1),
104
+ status: z.number().int(),
105
+ code: z.string().optional(),
106
+ message: z.string().optional(),
107
+ data: z
108
+ .object({
109
+ AuthCode: z.string().optional(),
110
+ RRN: z.string().optional(),
111
+ })
112
+ .catchall(z.unknown())
113
+ .optional(),
114
+ instrument: z
115
+ .object({
116
+ country: z.number().int().optional(),
117
+ panMasked: z.string().optional(),
118
+ })
119
+ .catchall(z.unknown())
120
+ .optional(),
121
+ })
122
+ .catchall(z.unknown()),
123
+ });
124
+ export const netopiaCollectBookingScheduleSchema = z.object({
125
+ paymentSession: createPaymentSessionFromScheduleSchema.optional(),
126
+ netopia: netopiaStartPaymentSessionSchema,
127
+ notification: sendPaymentSessionNotificationSchema.optional(),
128
+ });
129
+ export const netopiaCollectBookingGuaranteeSchema = z.object({
130
+ paymentSession: createPaymentSessionFromGuaranteeSchema.optional(),
131
+ netopia: netopiaStartPaymentSessionSchema,
132
+ notification: sendPaymentSessionNotificationSchema.optional(),
133
+ });
134
+ export const netopiaCollectInvoiceSchema = z.object({
135
+ paymentSession: createPaymentSessionFromInvoiceSchema.optional(),
136
+ netopia: netopiaStartPaymentSessionSchema,
137
+ paymentSessionNotification: sendPaymentSessionNotificationSchema.optional(),
138
+ invoiceNotification: sendInvoiceNotificationSchema.optional(),
139
+ });
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@voyant-travel/plugin-netopia",
3
+ "version": "0.104.19",
4
+ "license": "Apache-2.0",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./client": {
13
+ "types": "./dist/client.d.ts",
14
+ "import": "./dist/client.js",
15
+ "default": "./dist/client.js"
16
+ },
17
+ "./plugin": {
18
+ "types": "./dist/plugin.d.ts",
19
+ "import": "./dist/plugin.js",
20
+ "default": "./dist/plugin.js"
21
+ },
22
+ "./service": {
23
+ "types": "./dist/service.d.ts",
24
+ "import": "./dist/service.js",
25
+ "default": "./dist/service.js"
26
+ },
27
+ "./types": {
28
+ "types": "./dist/types.d.ts",
29
+ "import": "./dist/types.js",
30
+ "default": "./dist/types.js"
31
+ },
32
+ "./validation": {
33
+ "types": "./dist/validation.d.ts",
34
+ "import": "./dist/validation.js",
35
+ "default": "./dist/validation.js"
36
+ }
37
+ },
38
+ "dependencies": {
39
+ "drizzle-orm": "^0.45.2",
40
+ "hono": "^4.12.10",
41
+ "zod": "^4.3.6",
42
+ "@voyant-travel/core": "^0.109.0",
43
+ "@voyant-travel/hono": "^0.109.1",
44
+ "@voyant-travel/utils": "^0.105.1",
45
+ "@voyant-travel/finance": "^0.119.5",
46
+ "@voyant-travel/notifications": "^0.111.7"
47
+ },
48
+ "devDependencies": {
49
+ "typescript": "^6.0.2",
50
+ "vitest": "^4.1.2",
51
+ "@voyant-travel/voyant-typescript-config": "^0.1.0"
52
+ },
53
+ "files": [
54
+ "dist"
55
+ ],
56
+ "publishConfig": {
57
+ "access": "public"
58
+ },
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/voyant-travel/voyant.git",
62
+ "directory": "packages/plugins/netopia"
63
+ },
64
+ "scripts": {
65
+ "typecheck": "tsc --noEmit",
66
+ "lint": "biome check src/",
67
+ "test": "vitest run",
68
+ "build": "pnpm run clean && tsc -p tsconfig.json",
69
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
70
+ },
71
+ "main": "./dist/index.js",
72
+ "types": "./dist/index.d.ts"
73
+ }