@unchainedshop/ticketing 3.0.0-rc8 → 3.0.0
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/lib/express.d.ts +4 -0
- package/lib/express.d.ts.map +1 -0
- package/lib/express.js +17 -0
- package/lib/express.js.map +1 -0
- package/lib/fastify.d.ts +4 -0
- package/lib/fastify.d.ts.map +1 -0
- package/lib/fastify.js +22 -0
- package/lib/fastify.js.map +1 -0
- package/lib/index.d.ts +6 -35
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -19
- package/lib/index.js.map +1 -1
- package/lib/mobile-tickets/apple-handler-express.d.ts +7 -0
- package/lib/mobile-tickets/apple-handler-express.d.ts.map +1 -0
- package/lib/mobile-tickets/{apple-webservice.js → apple-handler-express.js} +3 -9
- package/lib/mobile-tickets/apple-handler-express.js.map +1 -0
- package/lib/mobile-tickets/apple-handler-fastify.d.ts +4 -0
- package/lib/mobile-tickets/apple-handler-fastify.d.ts.map +1 -0
- package/lib/mobile-tickets/apple-handler-fastify.js +158 -0
- package/lib/mobile-tickets/apple-handler-fastify.js.map +1 -0
- package/lib/mobile-tickets/{google-webservice.d.ts → google-handler-express.d.ts} +3 -3
- package/lib/mobile-tickets/google-handler-express.d.ts.map +1 -0
- package/lib/mobile-tickets/{google-webservice.js → google-handler-express.js} +2 -8
- package/lib/mobile-tickets/google-handler-express.js.map +1 -0
- package/lib/mobile-tickets/google-handler-fastify.d.ts +4 -0
- package/lib/mobile-tickets/google-handler-fastify.d.ts.map +1 -0
- package/lib/mobile-tickets/google-handler-fastify.js +41 -0
- package/lib/mobile-tickets/google-handler-fastify.js.map +1 -0
- package/lib/module.d.ts +56 -27
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +166 -164
- package/lib/module.js.map +1 -1
- package/lib/pdf-tickets/{print-webservice.d.ts → print-handler-express.d.ts} +3 -3
- package/lib/pdf-tickets/print-handler-express.d.ts.map +1 -0
- package/lib/pdf-tickets/{print-webservice.js → print-handler-express.js} +2 -8
- package/lib/pdf-tickets/print-handler-express.js.map +1 -0
- package/lib/pdf-tickets/print-handler-fastify.d.ts +4 -0
- package/lib/pdf-tickets/print-handler-fastify.d.ts.map +1 -0
- package/lib/pdf-tickets/print-handler-fastify.js +24 -0
- package/lib/pdf-tickets/print-handler-fastify.js.map +1 -0
- package/lib/services.d.ts +11 -5
- package/lib/services.d.ts.map +1 -1
- package/lib/services.js +17 -15
- package/lib/services.js.map +1 -1
- package/lib/types.d.ts +1 -3
- package/lib/types.d.ts.map +1 -1
- package/package.json +27 -11
- package/src/express.ts +35 -0
- package/src/fastify.ts +30 -0
- package/src/index.ts +13 -39
- package/src/mobile-tickets/{apple-webservice.ts → apple-handler-express.ts} +3 -16
- package/src/mobile-tickets/apple-handler-fastify.ts +227 -0
- package/src/mobile-tickets/{google-webservice.ts → google-handler-express.ts} +2 -12
- package/src/mobile-tickets/google-handler-fastify.ts +57 -0
- package/src/module.ts +211 -207
- package/src/pdf-tickets/{print-webservice.ts → print-handler-express.ts} +2 -12
- package/src/pdf-tickets/print-handler-fastify.ts +36 -0
- package/src/services.ts +28 -18
- package/src/types.ts +1 -1
- package/lib/mobile-tickets/apple-webservice.d.ts +0 -7
- package/lib/mobile-tickets/apple-webservice.d.ts.map +0 -1
- package/lib/mobile-tickets/apple-webservice.js.map +0 -1
- package/lib/mobile-tickets/google-webservice.d.ts.map +0 -1
- package/lib/mobile-tickets/google-webservice.js.map +0 -1
- package/lib/pdf-tickets/print-webservice.d.ts.map +0 -1
- package/lib/pdf-tickets/print-webservice.js.map +0 -1
package/lib/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAKjD,eAAO,MAAM,kCAAkC,wBAAwB,CAAC;AAIxE,QAAA,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAKjD,eAAO,MAAM,kCAAkC,wBAAwB,CAAC;AAIxE,QAAA,MAAM,eAAe,WAAkB,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;mCAmB3B,cAAc,gBAAgB,aAAa;yEAoDjB,OAAO,CAAC,IAAI,CAAC;;;;;;sHA8DhF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gDAkBkC,aAAa;oCAtFzB,cAAc,gBAAgB,aAAa;;;;;;6BA2GlD,MAAM;4BAMP,MAAM;+BAUT,cAAc;wCAO3C;QACD,SAAS,EAAE,MAAM,CAAC;KACnB,sBACkB;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KAC7C,OAAO,CAAC,MAAM,CAAC;EAuBnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC;CACrD,CAAC;;;4BAlOqC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;2CAmB3B,cAAc,gBAAgB,aAAa;iFAoDjB,OAAO,CAAC,IAAI,CAAC;;;;;;8HA8DhF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wDAkBkC,aAAa;4CAtFzB,cAAc,gBAAgB,aAAa;;;;;;qCA2GlD,MAAM;oCAMP,MAAM;uCAUT,cAAc;gDAO3C;gBACD,SAAS,EAAE,MAAM,CAAC;aACnB,sBACkB;gBAAE,aAAa,CAAC,EAAE,OAAO,CAAA;aAAE,KAC7C,OAAO,CAAC,MAAM,CAAC;;;;AA6BpB,wBAIE"}
|
package/lib/module.js
CHANGED
|
@@ -6,180 +6,182 @@ import { RendererTypes, getRenderer } from './template-registry.js';
|
|
|
6
6
|
import { buildPassBinary, pushToApplePushNotificationService } from './mobile-tickets/apple-wallet.js';
|
|
7
7
|
export const APPLE_WALLET_PASSES_FILE_DIRECTORY = 'apple-wallet-passes';
|
|
8
8
|
const logger = createLogger('unchained:apple-wallet-webservice');
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'meta.registrations.deviceLibraryIdentifier': 1,
|
|
23
|
-
},
|
|
9
|
+
const configurePasses = async ({ db }) => {
|
|
10
|
+
const MediaObjects = await MediaObjectsCollection(db);
|
|
11
|
+
const TokenSurrogates = await TokenSurrogateCollection(db);
|
|
12
|
+
await buildDbIndexes(TokenSurrogates, [
|
|
13
|
+
{ index: { 'meta.cancelled': 1 }, options: { sparse: true } },
|
|
14
|
+
]);
|
|
15
|
+
await buildDbIndexes(MediaObjects, [
|
|
16
|
+
{ index: { path: 1, 'meta.passTypeIdentifier': 1, 'meta.serialNumber': 1 } },
|
|
17
|
+
{
|
|
18
|
+
index: {
|
|
19
|
+
path: 1,
|
|
20
|
+
'meta.passTypeIdentifier': 1,
|
|
21
|
+
'meta.registrations.deviceLibraryIdentifier': 1,
|
|
24
22
|
},
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
23
|
+
},
|
|
24
|
+
]);
|
|
25
|
+
const upsertAppleWalletPass = async (token, unchainedAPI) => {
|
|
26
|
+
const createAppleWalletPass = getRenderer(RendererTypes.APPLE_WALLET);
|
|
27
|
+
const pass = await createAppleWalletPass(token, unchainedAPI);
|
|
28
|
+
const rawFile = Promise.resolve(
|
|
29
|
+
// wrap in promise to make stream upload work
|
|
30
|
+
await buildPassBinary(token.chainTokenId, pass));
|
|
31
|
+
const previousFile = await MediaObjects.findOne({
|
|
32
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
33
|
+
'meta.passTypeIdentifier': pass.passTypeIdentifier,
|
|
34
|
+
'meta.serialNumber': pass.serialNumber,
|
|
35
|
+
});
|
|
36
|
+
const registrations = previousFile?.meta?.registrations || [];
|
|
37
|
+
const pkpassFile = await unchainedAPI.services.files.uploadFileFromStream({
|
|
38
|
+
directoryName: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
39
|
+
rawFile,
|
|
40
|
+
meta: {
|
|
41
|
+
rawData: token,
|
|
42
|
+
passTypeIdentifier: pass.passTypeIdentifier,
|
|
43
|
+
serialNumber: pass.serialNumber,
|
|
44
|
+
registrations,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
if (previousFile) {
|
|
48
|
+
await unchainedAPI.services.files.removeFiles({
|
|
49
|
+
fileIds: [previousFile._id],
|
|
47
50
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
}
|
|
52
|
+
// Push updates!
|
|
53
|
+
if (registrations?.length) {
|
|
54
|
+
try {
|
|
55
|
+
const pushTokens = registrations.map(({ pushToken }) => pushToken);
|
|
56
|
+
logger.info(`Send update pass notification to ${pushTokens.join(',')}`);
|
|
57
|
+
await pushToApplePushNotificationService(pushTokens);
|
|
52
58
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
const pushTokens = registrations.map(({ pushToken }) => pushToken);
|
|
57
|
-
logger.info(`Send update pass notification to ${pushTokens.join(',')}`);
|
|
58
|
-
await pushToApplePushNotificationService(pushTokens);
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
logger.error(e);
|
|
62
|
-
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
logger.error(e);
|
|
63
61
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
62
|
+
}
|
|
63
|
+
return pkpassFile;
|
|
64
|
+
};
|
|
65
|
+
const upsertGoogleWalletPass = async (token, unchainedAPI) => {
|
|
66
|
+
const createGoogleWalletPass = getRenderer(RendererTypes.GOOGLE_WALLET);
|
|
67
|
+
const pass = await createGoogleWalletPass(token, unchainedAPI);
|
|
68
|
+
return pass;
|
|
69
|
+
};
|
|
70
|
+
const findAppleWalletPass = async (passTypeIdentifier, serialNumber) => {
|
|
71
|
+
const mediaObject = await MediaObjects.findOne({
|
|
72
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
73
|
+
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
74
|
+
'meta.serialNumber': serialNumber,
|
|
75
|
+
});
|
|
76
|
+
return mediaObject;
|
|
77
|
+
};
|
|
78
|
+
const registerDeviceForAppleWalletPass = async (passTypeIdentifier, serialNumber, { deviceLibraryIdentifier, pushToken }) => {
|
|
79
|
+
const result = await MediaObjects.updateOne({
|
|
80
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
81
|
+
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
82
|
+
'meta.serialNumber': serialNumber,
|
|
83
|
+
'meta.registrations.deviceLibraryIdentifier': {
|
|
84
|
+
$ne: deviceLibraryIdentifier,
|
|
85
|
+
},
|
|
86
|
+
}, {
|
|
87
|
+
$push: {
|
|
88
|
+
'meta.registrations': {
|
|
89
|
+
deviceLibraryIdentifier,
|
|
90
|
+
pushToken,
|
|
86
91
|
},
|
|
87
|
-
},
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
return Boolean(result.modifiedCount);
|
|
95
|
+
};
|
|
96
|
+
const unregisterDeviceForAppleWalletPass = async (passTypeIdentifier, serialNumber, deviceLibraryIdentifier) => {
|
|
97
|
+
const result = await MediaObjects.updateOne({
|
|
98
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
99
|
+
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
100
|
+
'meta.serialNumber': serialNumber,
|
|
101
|
+
'meta.registrations.deviceLibraryIdentifier': deviceLibraryIdentifier,
|
|
102
|
+
}, {
|
|
103
|
+
$pull: {
|
|
104
|
+
'meta.registrations': {
|
|
105
|
+
deviceLibraryIdentifier,
|
|
93
106
|
},
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}, {
|
|
104
|
-
$pull: {
|
|
105
|
-
'meta.registrations': {
|
|
106
|
-
deviceLibraryIdentifier,
|
|
107
|
-
},
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
return Boolean(result.modifiedCount);
|
|
110
|
+
};
|
|
111
|
+
const findUpdatedAppleWalletPasses = async (passTypeIdentifier, deviceLibraryIdentifier, passesUpdatedSince) => {
|
|
112
|
+
const selector = {
|
|
113
|
+
$or: [
|
|
114
|
+
{
|
|
115
|
+
updated: passesUpdatedSince ? { $gt: passesUpdatedSince } : { $exists: true },
|
|
108
116
|
},
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
updated: passesUpdatedSince ? { $gt: passesUpdatedSince } : { $exists: true },
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
created: passesUpdatedSince ? { $gt: passesUpdatedSince } : { $exists: true },
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
'meta.registrations.deviceLibraryIdentifier': deviceLibraryIdentifier,
|
|
123
|
-
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
124
|
-
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
125
|
-
};
|
|
126
|
-
const updatedPasses = await MediaObjects.find(selector).toArray();
|
|
127
|
-
return updatedPasses;
|
|
128
|
-
};
|
|
129
|
-
const invalidateAppleWalletPasses = async (unchainedAPI) => {
|
|
130
|
-
const allPasses = await MediaObjects.find({
|
|
131
|
-
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
132
|
-
}).toArray();
|
|
133
|
-
const allTokens = await TokenSurrogates.find({}).toArray();
|
|
134
|
-
for (const pass of allPasses) {
|
|
135
|
-
// Check if binary is already invalidated, if so, skip
|
|
136
|
-
const rawData = pass.meta.rawData;
|
|
137
|
-
if (rawData.invalidatedDate)
|
|
138
|
-
continue;
|
|
139
|
-
const redeemedToken = allTokens.find((t) => t._id === rawData._id && t.invalidatedDate);
|
|
140
|
-
// Find invalidated token for the binary, if found, invalidate binary
|
|
141
|
-
if (redeemedToken) {
|
|
142
|
-
logger.info('Ticket redeemed, void pass', rawData);
|
|
143
|
-
await upsertAppleWalletPass(redeemedToken, unchainedAPI);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
const buildMagicKey = async (orderId) => {
|
|
148
|
-
const msgUint8 = new TextEncoder().encode([orderId, process.env.UNCHAINED_SECRET].join(''));
|
|
149
|
-
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);
|
|
150
|
-
return Buffer.from(hashBuffer).toString('hex');
|
|
151
|
-
};
|
|
152
|
-
const cancelTicket = async (tokenId) => {
|
|
153
|
-
return TokenSurrogates.findOneAndUpdate({ _id: tokenId }, { $set: { 'meta.cancelled': true } }, {
|
|
154
|
-
returnDocument: 'after',
|
|
155
|
-
});
|
|
156
|
-
};
|
|
157
|
-
const isTicketCancelled = (token) => {
|
|
158
|
-
return Boolean(token.meta?.cancelled);
|
|
117
|
+
{
|
|
118
|
+
created: passesUpdatedSince ? { $gt: passesUpdatedSince } : { $exists: true },
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
'meta.registrations.deviceLibraryIdentifier': deviceLibraryIdentifier,
|
|
122
|
+
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
123
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
159
124
|
};
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
125
|
+
const updatedPasses = await MediaObjects.find(selector).toArray();
|
|
126
|
+
return updatedPasses;
|
|
127
|
+
};
|
|
128
|
+
const invalidateAppleWalletPasses = async (unchainedAPI) => {
|
|
129
|
+
const allPasses = await MediaObjects.find({
|
|
130
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
131
|
+
}).toArray();
|
|
132
|
+
const allTokens = await TokenSurrogates.find({}).toArray();
|
|
133
|
+
for (const pass of allPasses) {
|
|
134
|
+
// Check if binary is already invalidated, if so, skip
|
|
135
|
+
const rawData = pass.meta.rawData;
|
|
136
|
+
if (rawData.invalidatedDate)
|
|
137
|
+
continue;
|
|
138
|
+
const redeemedToken = allTokens.find((t) => t._id === rawData._id && t.invalidatedDate);
|
|
139
|
+
// Find invalidated token for the binary, if found, invalidate binary
|
|
140
|
+
if (redeemedToken) {
|
|
141
|
+
logger.info('Ticket redeemed, void pass', rawData);
|
|
142
|
+
await upsertAppleWalletPass(redeemedToken, unchainedAPI);
|
|
166
143
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const buildMagicKey = async (orderId) => {
|
|
147
|
+
const msgUint8 = new TextEncoder().encode([orderId, process.env.UNCHAINED_SECRET].join(''));
|
|
148
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);
|
|
149
|
+
return Buffer.from(hashBuffer).toString('hex');
|
|
150
|
+
};
|
|
151
|
+
const cancelTicket = async (tokenId) => {
|
|
152
|
+
return TokenSurrogates.findOneAndUpdate({ _id: tokenId }, { $set: { 'meta.cancelled': true } }, {
|
|
153
|
+
returnDocument: 'after',
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
const isTicketCancelled = (token) => {
|
|
157
|
+
return Boolean(token.meta?.cancelled);
|
|
158
|
+
};
|
|
159
|
+
const getTicketsCreated = async ({ productId, }, { skipCancelled } = {}) => {
|
|
160
|
+
const selector = {
|
|
161
|
+
productId,
|
|
181
162
|
};
|
|
163
|
+
if (skipCancelled) {
|
|
164
|
+
selector['meta.cancelled'] = null;
|
|
165
|
+
}
|
|
166
|
+
return TokenSurrogates.countDocuments(selector);
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
upsertAppleWalletPass,
|
|
170
|
+
findAppleWalletPass,
|
|
171
|
+
registerDeviceForAppleWalletPass,
|
|
172
|
+
unregisterDeviceForAppleWalletPass,
|
|
173
|
+
findUpdatedAppleWalletPasses,
|
|
174
|
+
invalidateAppleWalletPasses,
|
|
175
|
+
upsertGoogleWalletPass,
|
|
176
|
+
buildMagicKey,
|
|
177
|
+
cancelTicket,
|
|
178
|
+
isTicketCancelled,
|
|
179
|
+
getTicketsCreated,
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
export default {
|
|
183
|
+
passes: {
|
|
184
|
+
configure: configurePasses,
|
|
182
185
|
},
|
|
183
186
|
};
|
|
184
|
-
export default ticketingModule;
|
|
185
187
|
//# sourceMappingURL=module.js.map
|
package/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAe,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK3E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAEvG,MAAM,CAAC,MAAM,kCAAkC,GAAG,qBAAqB,CAAC;AAExE,MAAM,MAAM,GAAG,YAAY,CAAC,mCAAmC,CAAC,CAAC;AAEjE,MAAM,eAAe,GAAG
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Request, Response } from 'express';
|
|
2
1
|
import { Context } from '@unchainedshop/api';
|
|
2
|
+
import type { Request, Response } from 'express';
|
|
3
3
|
export declare function printTicketsHandler(req: Request & {
|
|
4
4
|
unchainedContext: Context;
|
|
5
5
|
}, res: Response): Promise<void>;
|
|
6
|
-
export default
|
|
7
|
-
//# sourceMappingURL=print-
|
|
6
|
+
export default printTicketsHandler;
|
|
7
|
+
//# sourceMappingURL=print-handler-express.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-handler-express.d.ts","sourceRoot":"","sources":["../../src/pdf-tickets/print-handler-express.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,QAAQ,iBAsBpG;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { checkAction } from '@unchainedshop/api/lib/acl.js';
|
|
2
2
|
import { actions } from '@unchainedshop/api/lib/roles/index.js';
|
|
3
|
-
import express from 'express';
|
|
4
3
|
import { RendererTypes, getRenderer } from '../template-registry.js';
|
|
5
|
-
const { UNCHAINED_PDF_PRINT_HANDLER_PATH = '/rest/print_tickets' } = process.env;
|
|
6
4
|
export async function printTicketsHandler(req, res) {
|
|
7
5
|
const { variant, orderId, otp } = req.query || {};
|
|
8
6
|
try {
|
|
@@ -22,9 +20,5 @@ export async function printTicketsHandler(req, res) {
|
|
|
22
20
|
res.end();
|
|
23
21
|
}
|
|
24
22
|
}
|
|
25
|
-
export default
|
|
26
|
-
|
|
27
|
-
type: 'application/json',
|
|
28
|
-
}), printTicketsHandler);
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=print-webservice.js.map
|
|
23
|
+
export default printTicketsHandler;
|
|
24
|
+
//# sourceMappingURL=print-handler-express.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-handler-express.js","sourceRoot":"","sources":["../../src/pdf-tickets/print-handler-express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGrE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAA4C,EAAE,GAAa;IACnG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC;QACH,IACE,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,GAAG,KAAK,QAAQ;YACvB,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC;YAExC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE7C,MAAM,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAiB,EAAE,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9F,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-handler-fastify.d.ts","sourceRoot":"","sources":["../../src/pdf-tickets/print-handler-fastify.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElE,QAAA,MAAM,mBAAmB,EAAE,kBA2B1B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { checkAction } from '@unchainedshop/api/lib/acl.js';
|
|
2
|
+
import { actions } from '@unchainedshop/api/lib/roles/index.js';
|
|
3
|
+
import { RendererTypes, getRenderer } from '../template-registry.js';
|
|
4
|
+
const printTicketsHandler = async (req, reply) => {
|
|
5
|
+
const { variant, orderId, otp } = req.query || {};
|
|
6
|
+
try {
|
|
7
|
+
if (typeof orderId !== 'string' ||
|
|
8
|
+
typeof otp !== 'string' ||
|
|
9
|
+
(variant && typeof variant !== 'string'))
|
|
10
|
+
throw new Error('Invalid query parameter');
|
|
11
|
+
await checkAction(req.unchainedContext, actions.viewOrder, [undefined, { orderId, otp }]);
|
|
12
|
+
const render = getRenderer(RendererTypes.ORDER_PDF);
|
|
13
|
+
const pdfStream = await render({ orderId, variant: variant }, req.unchainedContext);
|
|
14
|
+
reply.header('content-type', 'application/pdf');
|
|
15
|
+
return reply.send(pdfStream);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error(error);
|
|
19
|
+
reply.status(403);
|
|
20
|
+
return reply.send();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export default printTicketsHandler;
|
|
24
|
+
//# sourceMappingURL=print-handler-fastify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-handler-fastify.js","sourceRoot":"","sources":["../../src/pdf-tickets/print-handler-fastify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAIrE,MAAM,mBAAmB,GAAuB,KAAK,EACnD,GAEC,EACD,KAAK,EACL,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAI,GAAG,CAAC,KAA6B,IAAI,EAAE,CAAC;IAE3E,IAAI,CAAC;QACH,IACE,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,GAAG,KAAK,QAAQ;YACvB,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC;YAExC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE7C,MAAM,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAiB,EAAE,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9F,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
package/lib/services.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { TicketingModule } from './module.js';
|
|
2
|
+
import { Bound, UnchainedCore } from '@unchainedshop/core';
|
|
3
|
+
declare function cancelTicketsForProduct(this: TicketingModule & UnchainedCore['modules'], productId: string): Promise<number>;
|
|
4
|
+
declare const _default: {
|
|
5
|
+
ticketing: {
|
|
6
|
+
cancelTicketsForProduct: typeof cancelTicketsForProduct;
|
|
7
|
+
};
|
|
4
8
|
};
|
|
9
|
+
export default _default;
|
|
5
10
|
export type TicketingServices = {
|
|
6
|
-
ticketing:
|
|
11
|
+
ticketing: {
|
|
12
|
+
cancelTicketsForProduct: Bound<typeof cancelTicketsForProduct>;
|
|
13
|
+
};
|
|
7
14
|
};
|
|
8
|
-
export default ticketingServices;
|
|
9
15
|
//# sourceMappingURL=services.d.ts.map
|
package/lib/services.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3D,iBAAe,uBAAuB,CACpC,IAAI,EAAE,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,EAChD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAgBjB;;;;;;AAED,wBAIE;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE;QACT,uBAAuB,EAAE,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;KAChE,CAAC;CACH,CAAC"}
|
package/lib/services.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
async function cancelTicketsForProduct(productId) {
|
|
2
|
+
const tokensToCancel = await this.warehousing.findTokens({
|
|
3
|
+
productId,
|
|
4
|
+
'meta.cancelled': null,
|
|
5
|
+
});
|
|
6
|
+
for (const token of tokensToCancel) {
|
|
7
|
+
await this.warehousing.invalidateToken(token._id);
|
|
8
|
+
await this.passes.cancelTicket(token._id);
|
|
9
|
+
}
|
|
10
|
+
await this.products.update(productId, {
|
|
11
|
+
$set: { 'meta.cancelled': true },
|
|
12
|
+
});
|
|
13
|
+
return tokensToCancel.length;
|
|
14
|
+
}
|
|
15
|
+
export default {
|
|
16
|
+
ticketing: {
|
|
17
|
+
cancelTicketsForProduct,
|
|
15
18
|
},
|
|
16
19
|
};
|
|
17
|
-
export default ticketingServices;
|
|
18
20
|
//# sourceMappingURL=services.js.map
|
package/lib/services.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,uBAAuB,CAEpC,SAAiB;IAEjB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;QACvD,SAAS;QACT,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE;QACpC,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;KACjC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED,eAAe;IACb,SAAS,EAAE;QACT,uBAAuB;KACxB;CACF,CAAC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -2,9 +2,7 @@ import { UnchainedCore } from '@unchainedshop/core';
|
|
|
2
2
|
import { TicketingModule } from './module.js';
|
|
3
3
|
import { TicketingServices } from './services.js';
|
|
4
4
|
export type TicketingAPI = UnchainedCore & {
|
|
5
|
-
modules:
|
|
6
|
-
passes: TicketingModule;
|
|
7
|
-
};
|
|
5
|
+
modules: TicketingModule;
|
|
8
6
|
services: TicketingServices;
|
|
9
7
|
};
|
|
10
8
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG;IACzC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/ticketing",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -31,21 +31,37 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/api": "^3.0.0
|
|
35
|
-
"@unchainedshop/core
|
|
36
|
-
"@unchainedshop/core-
|
|
37
|
-
"@unchainedshop/
|
|
38
|
-
"@unchainedshop/
|
|
39
|
-
"@unchainedshop/
|
|
34
|
+
"@unchainedshop/api": "^3.0.0",
|
|
35
|
+
"@unchainedshop/core": "^3.0.0",
|
|
36
|
+
"@unchainedshop/core-files": "^3.0.0",
|
|
37
|
+
"@unchainedshop/core-warehousing": "^3.0.0",
|
|
38
|
+
"@unchainedshop/core-worker": "^3.0.0",
|
|
39
|
+
"@unchainedshop/events": "^3.0.0",
|
|
40
|
+
"@unchainedshop/logger": "^3.0.0",
|
|
41
|
+
"@unchainedshop/mongodb": "^3.0.0"
|
|
40
42
|
},
|
|
41
43
|
"peerDependencies": {
|
|
42
|
-
"@hyperlink/node-apn": "
|
|
43
|
-
"express": "
|
|
44
|
+
"@hyperlink/node-apn": ">= 5.1",
|
|
45
|
+
"express": "5.x",
|
|
46
|
+
"fastify": ">= 5.2 < 6"
|
|
47
|
+
},
|
|
48
|
+
"peerDependenciesMeta": {
|
|
49
|
+
"@hyperlink/node-apn": {
|
|
50
|
+
"optional": false
|
|
51
|
+
},
|
|
52
|
+
"express": {
|
|
53
|
+
"optional": true
|
|
54
|
+
},
|
|
55
|
+
"fastify": {
|
|
56
|
+
"optional": true
|
|
57
|
+
}
|
|
44
58
|
},
|
|
45
59
|
"devDependencies": {
|
|
46
60
|
"@types/express": "^5.0.0",
|
|
47
|
-
"@types/node": "^22.10.
|
|
61
|
+
"@types/node": "^22.10.5",
|
|
62
|
+
"express": "^5.0.1",
|
|
63
|
+
"fastify": "^5.2.1",
|
|
48
64
|
"jest": "^29.7.0",
|
|
49
|
-
"typescript": "^5.7.
|
|
65
|
+
"typescript": "^5.7.3"
|
|
50
66
|
}
|
|
51
67
|
}
|