@nlabs/reaktor 1.17.0 → 1.19.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/README.md +182 -0
- package/docs/ASSISTANT.md +138 -0
- package/docs/GENERATION.md +42 -5
- package/docs/NATIVE_PUSH.md +56 -0
- package/lib/actions/alfredFaq.d.ts +80 -0
- package/lib/actions/alfredFaq.js +206 -0
- package/lib/actions/analytics.js +1 -1
- package/lib/actions/apps.js +1 -1
- package/lib/actions/connections.js +1 -1
- package/lib/actions/content.js +1 -1
- package/lib/actions/contentGeneration.d.ts +4 -0
- package/lib/actions/contentGeneration.js +82 -10
- package/lib/actions/contentGenerationErrors.js +1 -1
- package/lib/actions/conversations.d.ts +1 -1
- package/lib/actions/conversations.js +19 -9
- package/lib/actions/crm.js +1 -1
- package/lib/actions/crud.js +26 -1
- package/lib/actions/databaseAccounts.js +1 -1
- package/lib/actions/databaseProvisioningLease.js +1 -1
- package/lib/actions/dynamodb.js +1 -1
- package/lib/actions/email.js +1 -1
- package/lib/actions/files.js +1 -1
- package/lib/actions/flags.js +1 -1
- package/lib/actions/geminiVideo.js +1 -1
- package/lib/actions/groups.js +1 -1
- package/lib/actions/higgsfield.js +1 -1
- package/lib/actions/imageGeneration.js +1 -1
- package/lib/actions/images.js +1 -1
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +2 -1
- package/lib/actions/ios.js +1 -1
- package/lib/actions/locations.js +1 -1
- package/lib/actions/messages.js +23 -7
- package/lib/actions/notifications.js +1 -1
- package/lib/actions/ollamaGeneration.js +1 -1
- package/lib/actions/openaiResponseSession.js +1 -1
- package/lib/actions/payments.js +1 -1
- package/lib/actions/personas.js +1 -1
- package/lib/actions/phoneSupport.js +1 -1
- package/lib/actions/posts.js +1 -1
- package/lib/actions/query.js +1 -1
- package/lib/actions/reactions.js +1 -1
- package/lib/actions/rum.js +1 -1
- package/lib/actions/s3.js +1 -1
- package/lib/actions/search.js +1 -1
- package/lib/actions/sms.js +1 -1
- package/lib/actions/statistics.js +1 -1
- package/lib/actions/subscriptions.js +1 -1
- package/lib/actions/tags.js +1 -1
- package/lib/actions/users.js +57 -4
- package/lib/actions/videoGeneration.js +1 -1
- package/lib/actions/videos.js +1 -1
- package/lib/adapters/arangoAdapter.js +1 -1
- package/lib/adapters/contentAdapter.js +1 -1
- package/lib/adapters/fileAdapter.js +1 -1
- package/lib/adapters/geminiGenerationAdapter.js +1 -1
- package/lib/adapters/higgsfieldAdapter.js +1 -1
- package/lib/adapters/higgsfieldModelCatalog.js +1 -1
- package/lib/adapters/higgsfieldModels.js +1 -1
- package/lib/adapters/imageAdapter.js +1 -1
- package/lib/adapters/imageGenerationAdapter.js +1 -1
- package/lib/adapters/index.js +1 -1
- package/lib/adapters/messageAdapter.js +1 -1
- package/lib/adapters/postAdapter.js +1 -1
- package/lib/adapters/reaktorAdapter.js +1 -1
- package/lib/adapters/tagAdapter.js +1 -1
- package/lib/adapters/userAdapter.js +1 -1
- package/lib/assistant/core.d.ts +53 -0
- package/lib/assistant/core.js +123 -0
- package/lib/assistant/faq.d.ts +26 -0
- package/lib/assistant/faq.js +238 -0
- package/lib/assistant/faqCore.d.ts +23 -0
- package/lib/assistant/faqCore.js +20 -0
- package/lib/assistant/index.d.ts +7 -0
- package/lib/assistant/index.js +5 -0
- package/lib/assistant/service.d.ts +35 -0
- package/lib/assistant/service.js +201 -0
- package/lib/config.js +1 -1
- package/lib/constants/collections.js +1 -1
- package/lib/durableChat/conversations.d.ts +62 -0
- package/lib/durableChat/conversations.js +729 -0
- package/lib/durableChat/errors.d.ts +6 -0
- package/lib/durableChat/errors.js +11 -0
- package/lib/durableChat/events.d.ts +22 -0
- package/lib/durableChat/events.js +50 -0
- package/lib/durableChat/index.d.ts +8 -0
- package/lib/durableChat/index.js +10 -0
- package/lib/durableChat/membership.d.ts +24 -0
- package/lib/durableChat/membership.js +85 -0
- package/lib/durableChat/messageTypes.d.ts +76 -0
- package/lib/durableChat/messageTypes.js +3 -0
- package/lib/durableChat/messages.d.ts +16 -0
- package/lib/durableChat/messages.js +257 -0
- package/lib/durableChat/transaction.d.ts +10 -0
- package/lib/durableChat/transaction.js +53 -0
- package/lib/durableChat/types.d.ts +81 -0
- package/lib/durableChat/types.js +3 -0
- package/lib/handlers/graphqlHandler.js +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.js +5 -3
- package/lib/lambdas/actions/websockets.js +4 -4
- package/lib/lambdas/authorizer.js +1 -1
- package/lib/lambdas/connection.js +1 -1
- package/lib/lambdas/utils/message.js +1 -1
- package/lib/lambdas/utils/websocket.js +1 -1
- package/lib/mocks/conversation.js +1 -1
- package/lib/mocks/file.js +1 -1
- package/lib/mocks/group.js +1 -1
- package/lib/mocks/image.js +1 -1
- package/lib/mocks/post.js +1 -1
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.js +1 -1
- package/lib/mocks/video.js +1 -1
- package/lib/mutations/analytics/analytics.js +1 -1
- package/lib/mutations/content/content.js +1 -1
- package/lib/mutations/crm/crm.js +1 -1
- package/lib/mutations/events/events.js +1 -1
- package/lib/mutations/flags/flags.js +1 -1
- package/lib/mutations/groups/groups.js +1 -1
- package/lib/mutations/higgsfield/higgsfield.js +1 -1
- package/lib/mutations/images/images.js +1 -1
- package/lib/mutations/index.js +1 -1
- package/lib/mutations/locations/locations.js +1 -1
- package/lib/mutations/messages/messages.js +1 -1
- package/lib/mutations/personas/personas.js +1 -1
- package/lib/mutations/posts/posts.js +1 -1
- package/lib/mutations/reactions/reactions.js +1 -1
- package/lib/mutations/rum/rum.js +1 -1
- package/lib/mutations/statistics/statistics.js +1 -1
- package/lib/mutations/subscriptions/subscriptions.js +1 -1
- package/lib/mutations/tags/tags.js +1 -1
- package/lib/mutations/users/users.js +1 -1
- package/lib/mutations/videos/videos.js +1 -1
- package/lib/nativePush/graphql.d.ts +14 -0
- package/lib/nativePush/graphql.js +105 -0
- package/lib/nativePush/index.d.ts +7 -0
- package/lib/nativePush/index.js +9 -0
- package/lib/nativePush/migrations.d.ts +2 -0
- package/lib/nativePush/migrations.js +36 -0
- package/lib/nativePush/nativePushContract.fixture.d.ts +22 -0
- package/lib/nativePush/nativePushContract.fixture.js +27 -0
- package/lib/nativePush/payload.d.ts +2 -0
- package/lib/nativePush/payload.js +106 -0
- package/lib/nativePush/repository.d.ts +9 -0
- package/lib/nativePush/repository.js +120 -0
- package/lib/nativePush/service.d.ts +2 -0
- package/lib/nativePush/service.js +110 -0
- package/lib/nativePush/snsProvider.d.ts +17 -0
- package/lib/nativePush/snsProvider.js +165 -0
- package/lib/nativePush/types.d.ts +89 -0
- package/lib/nativePush/types.js +3 -0
- package/lib/objectTypes/analytics.js +1 -1
- package/lib/objectTypes/app.js +1 -1
- package/lib/objectTypes/bankAccount.js +1 -1
- package/lib/objectTypes/connection.js +1 -1
- package/lib/objectTypes/content.js +1 -1
- package/lib/objectTypes/contentGeneration.js +1 -1
- package/lib/objectTypes/conversation.js +1 -1
- package/lib/objectTypes/creditCard.js +1 -1
- package/lib/objectTypes/crm.js +1 -1
- package/lib/objectTypes/document.js +1 -1
- package/lib/objectTypes/error.js +1 -1
- package/lib/objectTypes/event.js +1 -1
- package/lib/objectTypes/external.js +1 -1
- package/lib/objectTypes/file.js +1 -1
- package/lib/objectTypes/filter.js +1 -1
- package/lib/objectTypes/flag.js +1 -1
- package/lib/objectTypes/group.js +1 -1
- package/lib/objectTypes/higgsfield.js +1 -1
- package/lib/objectTypes/iapSubscription.js +1 -1
- package/lib/objectTypes/image.js +1 -1
- package/lib/objectTypes/imageGeneration.js +1 -1
- package/lib/objectTypes/index.js +1 -1
- package/lib/objectTypes/location.js +1 -1
- package/lib/objectTypes/message.js +1 -1
- package/lib/objectTypes/passcode.js +1 -1
- package/lib/objectTypes/persona.js +1 -1
- package/lib/objectTypes/plan.js +1 -1
- package/lib/objectTypes/post.js +1 -1
- package/lib/objectTypes/query.js +1 -1
- package/lib/objectTypes/reaction.js +1 -1
- package/lib/objectTypes/relation.js +1 -1
- package/lib/objectTypes/rum.js +1 -1
- package/lib/objectTypes/search.js +1 -1
- package/lib/objectTypes/statistics.js +1 -1
- package/lib/objectTypes/subscription.js +1 -1
- package/lib/objectTypes/tag.js +1 -1
- package/lib/objectTypes/user.js +1 -1
- package/lib/objectTypes/video.js +1 -1
- package/lib/objectTypes/videoGeneration.js +1 -1
- package/lib/organizations/accountLifecycle.d.ts +7 -0
- package/lib/organizations/accountLifecycle.js +106 -0
- package/lib/organizations/authorization.d.ts +9 -0
- package/lib/organizations/authorization.js +40 -0
- package/lib/organizations/billing.d.ts +38 -0
- package/lib/organizations/billing.js +277 -0
- package/lib/organizations/billingProvider.d.ts +4 -0
- package/lib/organizations/billingProvider.js +287 -0
- package/lib/organizations/billingUpdates.d.ts +9 -0
- package/lib/organizations/billingUpdates.js +388 -0
- package/lib/organizations/index.d.ts +10 -0
- package/lib/organizations/index.js +12 -0
- package/lib/organizations/mail.d.ts +10 -0
- package/lib/organizations/mail.js +60 -0
- package/lib/organizations/memberDirectory.d.ts +15 -0
- package/lib/organizations/memberDirectory.js +28 -0
- package/lib/organizations/membership.d.ts +19 -0
- package/lib/organizations/membership.js +248 -0
- package/lib/organizations/passwordRecovery.d.ts +9 -0
- package/lib/organizations/passwordRecovery.js +50 -0
- package/lib/organizations/plans.d.ts +6 -0
- package/lib/organizations/plans.js +40 -0
- package/lib/organizations/providerPagination.d.ts +6 -0
- package/lib/organizations/providerPagination.js +23 -0
- package/lib/organizations/reconciliation.d.ts +11 -0
- package/lib/organizations/reconciliation.js +400 -0
- package/lib/organizations/signup.d.ts +25 -0
- package/lib/organizations/signup.js +169 -0
- package/lib/organizations/store.d.ts +25 -0
- package/lib/organizations/store.js +167 -0
- package/lib/organizations/types.d.ts +138 -0
- package/lib/organizations/types.js +3 -0
- package/lib/organizations/verification.d.ts +3 -0
- package/lib/organizations/verification.js +51 -0
- package/lib/queries/analytics/analytics.js +1 -1
- package/lib/queries/content/content.js +1 -1
- package/lib/queries/crm/crm.js +1 -1
- package/lib/queries/events/events.js +1 -1
- package/lib/queries/flags/flags.js +1 -1
- package/lib/queries/groups/groups.js +1 -1
- package/lib/queries/higgsfield/higgsfield.js +1 -1
- package/lib/queries/images/images.js +1 -1
- package/lib/queries/index.js +1 -1
- package/lib/queries/locations/locations.js +1 -1
- package/lib/queries/messages/messages.js +1 -1
- package/lib/queries/personas/personas.js +1 -1
- package/lib/queries/posts/posts.js +1 -1
- package/lib/queries/query/query.js +1 -1
- package/lib/queries/reactions/reactions.js +1 -1
- package/lib/queries/statistics/statistics.js +1 -1
- package/lib/queries/subscriptions/subscriptions.js +1 -1
- package/lib/queries/tags/tags.js +1 -1
- package/lib/queries/users/users.js +1 -1
- package/lib/queries/videos/videos.js +1 -1
- package/lib/templates/email/layout.js +1 -1
- package/lib/templates/email/passwordForgot.js +1 -1
- package/lib/templates/email/passwordRecovery.js +1 -1
- package/lib/templates/email/verifyEmail.js +1 -1
- package/lib/templates/email/welcome.js +1 -1
- package/lib/templates/sms/passwordForgot.js +1 -1
- package/lib/templates/sms/passwordRecovery.js +1 -1
- package/lib/templates/sms/verifyEmail.js +1 -1
- package/lib/templates/sms/verifyPhone.js +1 -1
- package/lib/templates/sms/welcome.js +1 -1
- package/lib/types/analytics.types.js +1 -1
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.js +1 -1
- package/lib/types/auth.types.js +1 -1
- package/lib/types/connections.types.js +1 -1
- package/lib/types/content.types.js +1 -1
- package/lib/types/conversations.types.js +1 -1
- package/lib/types/crm.types.js +1 -1
- package/lib/types/databaseCredentials.types.js +1 -1
- package/lib/types/email.types.js +1 -1
- package/lib/types/error.types.js +1 -1
- package/lib/types/files.types.js +1 -1
- package/lib/types/flags.types.js +1 -1
- package/lib/types/google.types.js +1 -1
- package/lib/types/groups.types.js +1 -1
- package/lib/types/images.types.js +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/locations.types.js +1 -1
- package/lib/types/messages.types.js +1 -1
- package/lib/types/notifications.types.js +1 -1
- package/lib/types/payments.types.js +1 -1
- package/lib/types/personas.types.js +1 -1
- package/lib/types/posts.types.js +1 -1
- package/lib/types/rum.types.js +1 -1
- package/lib/types/statistics.types.js +1 -1
- package/lib/types/tags.types.js +1 -1
- package/lib/types/users.types.js +1 -1
- package/lib/types/videos.types.js +1 -1
- package/lib/types/websockets.types.js +1 -1
- package/lib/upload.js +1 -1
- package/lib/utils/adapterUtils.js +1 -1
- package/lib/utils/analyticsUtils.js +1 -1
- package/lib/utils/appContext.js +1 -1
- package/lib/utils/aqlHelpers.js +1 -1
- package/lib/utils/arangodbUtils.js +1 -1
- package/lib/utils/authUtils.js +1 -1
- package/lib/utils/awsUtils.js +1 -1
- package/lib/utils/collectionRegistry.js +1 -1
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/databaseCredentials.js +1 -1
- package/lib/utils/dbI18n.example.js +1 -1
- package/lib/utils/dbI18n.js +1 -1
- package/lib/utils/generationCallback.js +1 -1
- package/lib/utils/googleTranslate.js +1 -1
- package/lib/utils/graphqlUtils.js +1 -1
- package/lib/utils/imageUtils.js +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.example.js +1 -1
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/mediaAccess.js +1 -1
- package/lib/utils/middlewareUtils.js +1 -1
- package/lib/utils/nodeRealtime.js +1 -1
- package/lib/utils/opaqueToken.js +1 -1
- package/lib/utils/queryBuilder.js +1 -1
- package/lib/utils/schemaUtils.js +1 -1
- package/lib/utils/secretDatabase.js +1 -1
- package/lib/utils/sessionUtils.js +1 -1
- package/lib/utils/stripeUtils.js +1 -1
- package/lib/utils/stripeUtils.ts.bak +1 -1
- package/lib/utils/templateUtils.js +1 -1
- package/lib/utils/testUtils.js +1 -1
- package/lib/utils/translationQueue.example.js +1 -1
- package/lib/utils/translationQueue.js +1 -1
- package/lib/videoProcessing.js +1 -1
- package/package.json +16 -3
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { buildNativePushPayload } from './payload.js';
|
|
3
|
+
import { createSnsPushProvider, NativePushProviderError } from './snsProvider.js';
|
|
4
|
+
const validId = (value)=>typeof value === 'string' && value.length > 0 && value.length <= 256;
|
|
5
|
+
const checkActor = (actor)=>{
|
|
6
|
+
if (!validId(actor?.userId) || !validId(actor?.sessionId)) {
|
|
7
|
+
throw new Error('Authenticated push session required');
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
export const createNativePushService = (options)=>{
|
|
11
|
+
const { canDeliver, isSessionEligible, repository, scope } = options;
|
|
12
|
+
if (!validId(scope?.appId) || !validId(scope?.environment)) {
|
|
13
|
+
throw new Error('Invalid push scope');
|
|
14
|
+
}
|
|
15
|
+
const provider = createSnsPushProvider(options);
|
|
16
|
+
const now = options.now ?? (()=>new Date());
|
|
17
|
+
const sessionRequired = async (actor)=>{
|
|
18
|
+
checkActor(actor);
|
|
19
|
+
if (!await isSessionEligible(scope, actor)) {
|
|
20
|
+
throw new Error('Active push session required');
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
register: async (actor, input)=>{
|
|
25
|
+
await sessionRequired(actor);
|
|
26
|
+
if (!validId(input?.installationId) || !validId(input?.platform) || typeof input.token !== 'string' || !input.token || input.token.length > 8192) {
|
|
27
|
+
throw new Error('Invalid push registration');
|
|
28
|
+
}
|
|
29
|
+
const { token } = input;
|
|
30
|
+
const safeInput = {
|
|
31
|
+
...input.platform === 'IOS' && {
|
|
32
|
+
apnsEnvironment: input.apnsEnvironment
|
|
33
|
+
},
|
|
34
|
+
installationId: input.installationId,
|
|
35
|
+
platform: input.platform
|
|
36
|
+
};
|
|
37
|
+
const tokenHash = createHash('sha256').update(token).digest('hex');
|
|
38
|
+
const revision = await repository.reserveBinding(scope, actor, safeInput, tokenHash);
|
|
39
|
+
// Create/reconcile by token, never retarget an installation's previous endpoint.
|
|
40
|
+
// A delayed old operation must not change the token on a newer SNS binding.
|
|
41
|
+
const arn = await provider.ensureEndpoint(input);
|
|
42
|
+
await sessionRequired(actor);
|
|
43
|
+
const registration = await repository.replaceBinding(scope, actor, safeInput, arn, tokenHash, revision);
|
|
44
|
+
try {
|
|
45
|
+
await sessionRequired(actor);
|
|
46
|
+
return registration;
|
|
47
|
+
} catch (error) {
|
|
48
|
+
await repository.disableBinding(scope, actor, registration.registrationId, registration.revision);
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
send: async (userId, notification, pushOptions = {})=>{
|
|
53
|
+
if (!validId(userId)) {
|
|
54
|
+
throw new Error('Invalid push recipient');
|
|
55
|
+
}
|
|
56
|
+
const results = [];
|
|
57
|
+
const records = await repository.listEnabled(scope, userId);
|
|
58
|
+
// Sequential dispatch bounds provider load and keeps eligibility checks near each publish.
|
|
59
|
+
/* eslint-disable no-await-in-loop */ for (const registration of records){
|
|
60
|
+
const result = {
|
|
61
|
+
registrationId: registration.registrationId,
|
|
62
|
+
status: 'SKIPPED'
|
|
63
|
+
};
|
|
64
|
+
results.push(result);
|
|
65
|
+
if (!registration.enabled || registration.appId !== scope.appId || registration.environment !== scope.environment || registration.userId !== userId) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
if (canDeliver && !await canDeliver(registration, notification)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (!await isSessionEligible(scope, registration) || !await repository.isCurrent(registration)) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const payload = buildNativePushPayload(registration.platform, registration.apnsEnvironment, {
|
|
76
|
+
notification,
|
|
77
|
+
recipientUserId: userId,
|
|
78
|
+
scope
|
|
79
|
+
}, pushOptions, now());
|
|
80
|
+
const response = await provider.publish(registration.endpointArn, payload);
|
|
81
|
+
result.status = 'ACCEPTED';
|
|
82
|
+
result.providerMessageId = response.messageId;
|
|
83
|
+
} catch (error) {
|
|
84
|
+
const code = error instanceof NativePushProviderError ? error.code : 'DeliveryFailed';
|
|
85
|
+
result.code = code;
|
|
86
|
+
if ([
|
|
87
|
+
'EndpointDisabledException',
|
|
88
|
+
'NotFoundException'
|
|
89
|
+
].includes(code)) {
|
|
90
|
+
result.status = 'INVALID_ENDPOINT';
|
|
91
|
+
await repository.disableBinding(scope, registration, registration.registrationId, registration.revision);
|
|
92
|
+
} else {
|
|
93
|
+
result.status = error instanceof NativePushProviderError && error.transient ? 'TRANSIENT_FAILURE' : 'PERMANENT_FAILURE';
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/* eslint-enable no-await-in-loop */ return results;
|
|
98
|
+
},
|
|
99
|
+
unregister: async (actor, registrationId, revision)=>{
|
|
100
|
+
checkActor(actor);
|
|
101
|
+
if (!validId(registrationId) || revision !== undefined && (!Number.isInteger(revision) || revision < 1)) {
|
|
102
|
+
throw new Error('Invalid push registration identity');
|
|
103
|
+
}
|
|
104
|
+
// Local binding only: shared SNS endpoints must not be disabled by logout.
|
|
105
|
+
return repository.disableBinding(scope, actor, registrationId, revision);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvbmF0aXZlUHVzaC9zZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlSGFzaH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuXG5pbXBvcnQge2J1aWxkTmF0aXZlUHVzaFBheWxvYWR9IGZyb20gJy4vcGF5bG9hZC5qcyc7XG5pbXBvcnQge2NyZWF0ZVNuc1B1c2hQcm92aWRlciwgTmF0aXZlUHVzaFByb3ZpZGVyRXJyb3J9IGZyb20gJy4vc25zUHJvdmlkZXIuanMnO1xuXG5pbXBvcnQgdHlwZSB7RGVsaXZlcnlPdXRjb21lLCBOYXRpdmVQdXNoU2VydmljZSwgTmF0aXZlUHVzaFNlcnZpY2VPcHRpb25zLCBQdXNoQWN0b3J9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5jb25zdCB2YWxpZElkID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMCAmJiB2YWx1ZS5sZW5ndGggPD0gMjU2O1xuY29uc3QgY2hlY2tBY3RvciA9IChhY3RvcjogUHVzaEFjdG9yKTogdm9pZCA9PiB7XG4gIGlmKCF2YWxpZElkKGFjdG9yPy51c2VySWQpIHx8ICF2YWxpZElkKGFjdG9yPy5zZXNzaW9uSWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdXRoZW50aWNhdGVkIHB1c2ggc2Vzc2lvbiByZXF1aXJlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTmF0aXZlUHVzaFNlcnZpY2UgPSAob3B0aW9uczogTmF0aXZlUHVzaFNlcnZpY2VPcHRpb25zKTogTmF0aXZlUHVzaFNlcnZpY2UgPT4ge1xuICBjb25zdCB7Y2FuRGVsaXZlciwgaXNTZXNzaW9uRWxpZ2libGUsIHJlcG9zaXRvcnksIHNjb3BlfSA9IG9wdGlvbnM7XG4gIGlmKCF2YWxpZElkKHNjb3BlPy5hcHBJZCkgfHwgIXZhbGlkSWQoc2NvcGU/LmVudmlyb25tZW50KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwdXNoIHNjb3BlJyk7XG4gIH1cbiAgY29uc3QgcHJvdmlkZXIgPSBjcmVhdGVTbnNQdXNoUHJvdmlkZXIob3B0aW9ucyk7XG4gIGNvbnN0IG5vdyA9IG9wdGlvbnMubm93ID8/ICgoKSA9PiBuZXcgRGF0ZSgpKTtcbiAgY29uc3Qgc2Vzc2lvblJlcXVpcmVkID0gYXN5bmMgKGFjdG9yOiBQdXNoQWN0b3IpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjaGVja0FjdG9yKGFjdG9yKTtcbiAgICBpZighYXdhaXQgaXNTZXNzaW9uRWxpZ2libGUoc2NvcGUsIGFjdG9yKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3RpdmUgcHVzaCBzZXNzaW9uIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9O1xuICByZXR1cm4ge1xuICAgIHJlZ2lzdGVyOiBhc3luYyAoYWN0b3IsIGlucHV0KSA9PiB7XG4gICAgICBhd2FpdCBzZXNzaW9uUmVxdWlyZWQoYWN0b3IpO1xuICAgICAgaWYoIXZhbGlkSWQoaW5wdXQ/Lmluc3RhbGxhdGlvbklkKSB8fCAhdmFsaWRJZChpbnB1dD8ucGxhdGZvcm0pIHx8XG4gICAgICAgIHR5cGVvZiBpbnB1dC50b2tlbiAhPT0gJ3N0cmluZycgfHwgIWlucHV0LnRva2VuIHx8IGlucHV0LnRva2VuLmxlbmd0aCA+IDgxOTIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHB1c2ggcmVnaXN0cmF0aW9uJyk7XG4gICAgICB9XG4gICAgICBjb25zdCB7dG9rZW59ID0gaW5wdXQ7XG4gICAgICBjb25zdCBzYWZlSW5wdXQgPSB7XG4gICAgICAgIC4uLihpbnB1dC5wbGF0Zm9ybSA9PT0gJ0lPUycgJiYge2FwbnNFbnZpcm9ubWVudDogaW5wdXQuYXBuc0Vudmlyb25tZW50fSksXG4gICAgICAgIGluc3RhbGxhdGlvbklkOiBpbnB1dC5pbnN0YWxsYXRpb25JZCxcbiAgICAgICAgcGxhdGZvcm06IGlucHV0LnBsYXRmb3JtXG4gICAgICB9O1xuICAgICAgY29uc3QgdG9rZW5IYXNoID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHRva2VuKS5kaWdlc3QoJ2hleCcpO1xuICAgICAgY29uc3QgcmV2aXNpb24gPSBhd2FpdCByZXBvc2l0b3J5LnJlc2VydmVCaW5kaW5nKHNjb3BlLCBhY3Rvciwgc2FmZUlucHV0LCB0b2tlbkhhc2gpO1xuICAgICAgLy8gQ3JlYXRlL3JlY29uY2lsZSBieSB0b2tlbiwgbmV2ZXIgcmV0YXJnZXQgYW4gaW5zdGFsbGF0aW9uJ3MgcHJldmlvdXMgZW5kcG9pbnQuXG4gICAgICAvLyBBIGRlbGF5ZWQgb2xkIG9wZXJhdGlvbiBtdXN0IG5vdCBjaGFuZ2UgdGhlIHRva2VuIG9uIGEgbmV3ZXIgU05TIGJpbmRpbmcuXG4gICAgICBjb25zdCBhcm4gPSBhd2FpdCBwcm92aWRlci5lbnN1cmVFbmRwb2ludChpbnB1dCk7XG4gICAgICBhd2FpdCBzZXNzaW9uUmVxdWlyZWQoYWN0b3IpO1xuICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgcmVwb3NpdG9yeS5yZXBsYWNlQmluZGluZyhzY29wZSwgYWN0b3IsIHNhZmVJbnB1dCwgYXJuLFxuICAgICAgICB0b2tlbkhhc2gsIHJldmlzaW9uKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNlc3Npb25SZXF1aXJlZChhY3Rvcik7XG4gICAgICAgIHJldHVybiByZWdpc3RyYXRpb247XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGF3YWl0IHJlcG9zaXRvcnkuZGlzYWJsZUJpbmRpbmcoc2NvcGUsIGFjdG9yLCByZWdpc3RyYXRpb24ucmVnaXN0cmF0aW9uSWQsIHJlZ2lzdHJhdGlvbi5yZXZpc2lvbik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VuZDogYXN5bmMgKHVzZXJJZCwgbm90aWZpY2F0aW9uLCBwdXNoT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICBpZighdmFsaWRJZCh1c2VySWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwdXNoIHJlY2lwaWVudCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0czogRGVsaXZlcnlPdXRjb21lW10gPSBbXTtcbiAgICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCByZXBvc2l0b3J5Lmxpc3RFbmFibGVkKHNjb3BlLCB1c2VySWQpO1xuICAgICAgLy8gU2VxdWVudGlhbCBkaXNwYXRjaCBib3VuZHMgcHJvdmlkZXIgbG9hZCBhbmQga2VlcHMgZWxpZ2liaWxpdHkgY2hlY2tzIG5lYXIgZWFjaCBwdWJsaXNoLlxuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuICAgICAgZm9yKGNvbnN0IHJlZ2lzdHJhdGlvbiBvZiByZWNvcmRzKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogRGVsaXZlcnlPdXRjb21lID0ge3JlZ2lzdHJhdGlvbklkOiByZWdpc3RyYXRpb24ucmVnaXN0cmF0aW9uSWQsIHN0YXR1czogJ1NLSVBQRUQnfTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIGlmKCFyZWdpc3RyYXRpb24uZW5hYmxlZCB8fCByZWdpc3RyYXRpb24uYXBwSWQgIT09IHNjb3BlLmFwcElkIHx8XG4gICAgICAgICAgcmVnaXN0cmF0aW9uLmVudmlyb25tZW50ICE9PSBzY29wZS5lbnZpcm9ubWVudCB8fCByZWdpc3RyYXRpb24udXNlcklkICE9PSB1c2VySWQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmKGNhbkRlbGl2ZXIgJiYgIWF3YWl0IGNhbkRlbGl2ZXIocmVnaXN0cmF0aW9uLCBub3RpZmljYXRpb24pKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYoIWF3YWl0IGlzU2Vzc2lvbkVsaWdpYmxlKHNjb3BlLCByZWdpc3RyYXRpb24pIHx8ICFhd2FpdCByZXBvc2l0b3J5LmlzQ3VycmVudChyZWdpc3RyYXRpb24pKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGJ1aWxkTmF0aXZlUHVzaFBheWxvYWQocmVnaXN0cmF0aW9uLnBsYXRmb3JtLCByZWdpc3RyYXRpb24uYXBuc0Vudmlyb25tZW50LFxuICAgICAgICAgICAge25vdGlmaWNhdGlvbiwgcmVjaXBpZW50VXNlcklkOiB1c2VySWQsIHNjb3BlfSwgcHVzaE9wdGlvbnMsIG5vdygpKTtcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHByb3ZpZGVyLnB1Ymxpc2gocmVnaXN0cmF0aW9uLmVuZHBvaW50QXJuLCBwYXlsb2FkKTtcbiAgICAgICAgICByZXN1bHQuc3RhdHVzID0gJ0FDQ0VQVEVEJztcbiAgICAgICAgICByZXN1bHQucHJvdmlkZXJNZXNzYWdlSWQgPSByZXNwb25zZS5tZXNzYWdlSWQ7XG4gICAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBjb2RlID0gZXJyb3IgaW5zdGFuY2VvZiBOYXRpdmVQdXNoUHJvdmlkZXJFcnJvciA/IGVycm9yLmNvZGUgOiAnRGVsaXZlcnlGYWlsZWQnO1xuICAgICAgICAgIHJlc3VsdC5jb2RlID0gY29kZTtcbiAgICAgICAgICBpZihbJ0VuZHBvaW50RGlzYWJsZWRFeGNlcHRpb24nLCAnTm90Rm91bmRFeGNlcHRpb24nXS5pbmNsdWRlcyhjb2RlKSkge1xuICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9ICdJTlZBTElEX0VORFBPSU5UJztcbiAgICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkuZGlzYWJsZUJpbmRpbmcoc2NvcGUsIHJlZ2lzdHJhdGlvbiwgcmVnaXN0cmF0aW9uLnJlZ2lzdHJhdGlvbklkLCByZWdpc3RyYXRpb24ucmV2aXNpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuc3RhdHVzID0gZXJyb3IgaW5zdGFuY2VvZiBOYXRpdmVQdXNoUHJvdmlkZXJFcnJvciAmJiBlcnJvci50cmFuc2llbnRcbiAgICAgICAgICAgICAgPyAnVFJBTlNJRU5UX0ZBSUxVUkUnIDogJ1BFUk1BTkVOVF9GQUlMVVJFJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfSxcbiAgICB1bnJlZ2lzdGVyOiBhc3luYyAoYWN0b3IsIHJlZ2lzdHJhdGlvbklkLCByZXZpc2lvbikgPT4ge1xuICAgICAgY2hlY2tBY3RvcihhY3Rvcik7XG4gICAgICBpZighdmFsaWRJZChyZWdpc3RyYXRpb25JZCkgfHwgKHJldmlzaW9uICE9PSB1bmRlZmluZWQgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKHJldmlzaW9uKSB8fCByZXZpc2lvbiA8IDEpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHVzaCByZWdpc3RyYXRpb24gaWRlbnRpdHknKTtcbiAgICAgIH1cbiAgICAgIC8vIExvY2FsIGJpbmRpbmcgb25seTogc2hhcmVkIFNOUyBlbmRwb2ludHMgbXVzdCBub3QgYmUgZGlzYWJsZWQgYnkgbG9nb3V0LlxuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuZGlzYWJsZUJpbmRpbmcoc2NvcGUsIGFjdG9yLCByZWdpc3RyYXRpb25JZCwgcmV2aXNpb24pO1xuICAgIH1cbiAgfTtcbn07XG4iXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsImJ1aWxkTmF0aXZlUHVzaFBheWxvYWQiLCJjcmVhdGVTbnNQdXNoUHJvdmlkZXIiLCJOYXRpdmVQdXNoUHJvdmlkZXJFcnJvciIsInZhbGlkSWQiLCJ2YWx1ZSIsImxlbmd0aCIsImNoZWNrQWN0b3IiLCJhY3RvciIsInVzZXJJZCIsInNlc3Npb25JZCIsIkVycm9yIiwiY3JlYXRlTmF0aXZlUHVzaFNlcnZpY2UiLCJvcHRpb25zIiwiY2FuRGVsaXZlciIsImlzU2Vzc2lvbkVsaWdpYmxlIiwicmVwb3NpdG9yeSIsInNjb3BlIiwiYXBwSWQiLCJlbnZpcm9ubWVudCIsInByb3ZpZGVyIiwibm93IiwiRGF0ZSIsInNlc3Npb25SZXF1aXJlZCIsInJlZ2lzdGVyIiwiaW5wdXQiLCJpbnN0YWxsYXRpb25JZCIsInBsYXRmb3JtIiwidG9rZW4iLCJzYWZlSW5wdXQiLCJhcG5zRW52aXJvbm1lbnQiLCJ0b2tlbkhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJyZXZpc2lvbiIsInJlc2VydmVCaW5kaW5nIiwiYXJuIiwiZW5zdXJlRW5kcG9pbnQiLCJyZWdpc3RyYXRpb24iLCJyZXBsYWNlQmluZGluZyIsImVycm9yIiwiZGlzYWJsZUJpbmRpbmciLCJyZWdpc3RyYXRpb25JZCIsInNlbmQiLCJub3RpZmljYXRpb24iLCJwdXNoT3B0aW9ucyIsInJlc3VsdHMiLCJyZWNvcmRzIiwibGlzdEVuYWJsZWQiLCJyZXN1bHQiLCJzdGF0dXMiLCJwdXNoIiwiZW5hYmxlZCIsImlzQ3VycmVudCIsInBheWxvYWQiLCJyZWNpcGllbnRVc2VySWQiLCJyZXNwb25zZSIsInB1Ymxpc2giLCJlbmRwb2ludEFybiIsInByb3ZpZGVyTWVzc2FnZUlkIiwibWVzc2FnZUlkIiwiY29kZSIsImluY2x1ZGVzIiwidHJhbnNpZW50IiwidW5yZWdpc3RlciIsInVuZGVmaW5lZCIsIk51bWJlciIsImlzSW50ZWdlciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsVUFBVSxRQUFPLGNBQWM7QUFFdkMsU0FBUUMsc0JBQXNCLFFBQU8sZUFBZTtBQUNwRCxTQUFRQyxxQkFBcUIsRUFBRUMsdUJBQXVCLFFBQU8sbUJBQW1CO0FBSWhGLE1BQU1DLFVBQVUsQ0FBQ0MsUUFBb0MsT0FBT0EsVUFBVSxZQUFZQSxNQUFNQyxNQUFNLEdBQUcsS0FBS0Qs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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { NativePushPayload, NativePushRegistrationInput, PlatformApplicationArns, SnsSender } from './types.js';
|
|
2
|
+
export declare class NativePushProviderError extends Error {
|
|
3
|
+
readonly code: string;
|
|
4
|
+
readonly transient: boolean;
|
|
5
|
+
constructor(code: string, transient?: boolean);
|
|
6
|
+
}
|
|
7
|
+
export declare const createSnsPushProvider: ({ sns, platformApplicationArns, delay }: {
|
|
8
|
+
delay?: (milliseconds: number) => Promise<void>;
|
|
9
|
+
platformApplicationArns: PlatformApplicationArns;
|
|
10
|
+
sns: SnsSender;
|
|
11
|
+
}) => {
|
|
12
|
+
disableEndpoint: (endpointArn: string) => Promise<void>;
|
|
13
|
+
ensureEndpoint: (input: NativePushRegistrationInput, existingEndpointArn?: string) => Promise<string>;
|
|
14
|
+
publish: (endpointArn: string, payload: NativePushPayload) => Promise<{
|
|
15
|
+
messageId: string;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { CreatePlatformEndpointCommand, GetEndpointAttributesCommand, PublishCommand, SetEndpointAttributesCommand } from '@aws-sdk/client-sns';
|
|
2
|
+
export class NativePushProviderError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
transient;
|
|
5
|
+
constructor(code, transient = false){
|
|
6
|
+
super(`Native push provider error: ${code}`);
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.name = 'NativePushProviderError';
|
|
9
|
+
this.transient = transient;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const errorCode = (error)=>{
|
|
13
|
+
const name = error?.name;
|
|
14
|
+
return typeof name === 'string' && /^[A-Za-z]{1,80}$/.test(name) ? name : 'UnknownProviderError';
|
|
15
|
+
};
|
|
16
|
+
const transientCodes = new Set([
|
|
17
|
+
'ThrottledException',
|
|
18
|
+
'ThrottlingException',
|
|
19
|
+
'InternalErrorException',
|
|
20
|
+
'ServiceUnavailableException',
|
|
21
|
+
'TimeoutError',
|
|
22
|
+
'NetworkingError'
|
|
23
|
+
]);
|
|
24
|
+
export const createSnsPushProvider = ({ sns, platformApplicationArns, delay = (ms)=>new Promise((resolve)=>setTimeout(resolve, ms)) })=>{
|
|
25
|
+
const applicationFor = (input)=>{
|
|
26
|
+
let arn;
|
|
27
|
+
let expected;
|
|
28
|
+
if (input.platform === 'ANDROID') {
|
|
29
|
+
arn = platformApplicationArns.android;
|
|
30
|
+
expected = 'GCM';
|
|
31
|
+
} else if (input.platform === 'IOS' && input.apnsEnvironment === 'sandbox') {
|
|
32
|
+
arn = platformApplicationArns.iosSandbox;
|
|
33
|
+
expected = 'APNS_SANDBOX';
|
|
34
|
+
} else if (input.platform === 'IOS' && input.apnsEnvironment === 'production') {
|
|
35
|
+
arn = platformApplicationArns.iosProduction;
|
|
36
|
+
expected = 'APNS';
|
|
37
|
+
}
|
|
38
|
+
if (!arn || !new RegExp(`^arn:[a-z0-9-]+:sns:[a-z0-9-]+:[0-9]{12}:app/${expected}/[A-Za-z0-9_.-]+$`).test(arn)) {
|
|
39
|
+
throw new NativePushProviderError('InvalidApplicationConfiguration');
|
|
40
|
+
}
|
|
41
|
+
return arn;
|
|
42
|
+
};
|
|
43
|
+
const endpointMatches = (arn, application)=>{
|
|
44
|
+
const prefix = `${application.replace(':app/', ':endpoint/')}/`;
|
|
45
|
+
return arn.startsWith(prefix) && /^[A-Za-z0-9-]+$/.test(arn.slice(prefix.length));
|
|
46
|
+
};
|
|
47
|
+
const endpointAllowed = (arn)=>Object.values(platformApplicationArns).some((application)=>application && endpointMatches(arn, application));
|
|
48
|
+
const call = async (command)=>{
|
|
49
|
+
for(let attempt = 0;; attempt++){
|
|
50
|
+
try {
|
|
51
|
+
// Sequential retries deliberately wait for the preceding attempt.
|
|
52
|
+
// eslint-disable-next-line no-await-in-loop
|
|
53
|
+
return await sns.send(command);
|
|
54
|
+
} catch (error) {
|
|
55
|
+
const code = errorCode(error);
|
|
56
|
+
if (transientCodes.has(code) && attempt < 2) {
|
|
57
|
+
// eslint-disable-next-line no-await-in-loop
|
|
58
|
+
await delay(100 * 2 ** attempt);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
throw new NativePushProviderError(code, transientCodes.has(code));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const ensureEndpoint = async (input, existingEndpointArn)=>{
|
|
66
|
+
const application = applicationFor(input);
|
|
67
|
+
if (!input.token || typeof input.token !== 'string' || input.token.length > 8192) {
|
|
68
|
+
throw new NativePushProviderError('InvalidDeviceToken');
|
|
69
|
+
}
|
|
70
|
+
if (existingEndpointArn && !endpointMatches(existingEndpointArn, application)) {
|
|
71
|
+
throw new NativePushProviderError('InvalidEndpointScope');
|
|
72
|
+
}
|
|
73
|
+
const create = async ()=>{
|
|
74
|
+
let arn;
|
|
75
|
+
for(let attempt = 0;; attempt++){
|
|
76
|
+
try {
|
|
77
|
+
// Keep the AWS duplicate-endpoint diagnostic local; never expose it or its token.
|
|
78
|
+
// eslint-disable-next-line no-await-in-loop
|
|
79
|
+
const result = await sns.send(new CreatePlatformEndpointCommand({
|
|
80
|
+
PlatformApplicationArn: application,
|
|
81
|
+
Token: input.token
|
|
82
|
+
}));
|
|
83
|
+
arn = result.EndpointArn;
|
|
84
|
+
break;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
if (errorCode(error) === 'InvalidParameterException') {
|
|
87
|
+
const diagnostic = error.message ?? '';
|
|
88
|
+
arn = diagnostic.match(/Endpoint (arn:[^\s]+) already exists with the same Token/)?.[1];
|
|
89
|
+
}
|
|
90
|
+
if (arn) {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
if (transientCodes.has(errorCode(error)) && attempt < 2) {
|
|
94
|
+
// eslint-disable-next-line no-await-in-loop
|
|
95
|
+
await delay(100 * 2 ** attempt);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
throw new NativePushProviderError(errorCode(error), transientCodes.has(errorCode(error)));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (!arn || !endpointMatches(arn, application)) {
|
|
102
|
+
throw new NativePushProviderError('InvalidEndpointScope');
|
|
103
|
+
}
|
|
104
|
+
return arn;
|
|
105
|
+
};
|
|
106
|
+
let arn = existingEndpointArn ?? await create();
|
|
107
|
+
let result;
|
|
108
|
+
try {
|
|
109
|
+
result = await call(new GetEndpointAttributesCommand({
|
|
110
|
+
EndpointArn: arn
|
|
111
|
+
}));
|
|
112
|
+
} catch (error) {
|
|
113
|
+
if (error.code !== 'NotFoundException') {
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
arn = await create();
|
|
117
|
+
result = await call(new GetEndpointAttributesCommand({
|
|
118
|
+
EndpointArn: arn
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
if (result.Attributes?.Token !== input.token || result.Attributes?.Enabled !== 'true') {
|
|
122
|
+
await call(new SetEndpointAttributesCommand({
|
|
123
|
+
Attributes: {
|
|
124
|
+
Enabled: 'true',
|
|
125
|
+
Token: input.token
|
|
126
|
+
},
|
|
127
|
+
EndpointArn: arn
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
return arn;
|
|
131
|
+
};
|
|
132
|
+
return {
|
|
133
|
+
disableEndpoint: async (endpointArn)=>{
|
|
134
|
+
if (!endpointAllowed(endpointArn)) {
|
|
135
|
+
throw new NativePushProviderError('InvalidEndpointScope');
|
|
136
|
+
}
|
|
137
|
+
await call(new SetEndpointAttributesCommand({
|
|
138
|
+
Attributes: {
|
|
139
|
+
Enabled: 'false'
|
|
140
|
+
},
|
|
141
|
+
EndpointArn: endpointArn
|
|
142
|
+
}));
|
|
143
|
+
},
|
|
144
|
+
ensureEndpoint,
|
|
145
|
+
publish: async (endpointArn, payload)=>{
|
|
146
|
+
if (!endpointAllowed(endpointArn)) {
|
|
147
|
+
throw new NativePushProviderError('InvalidEndpointScope');
|
|
148
|
+
}
|
|
149
|
+
const result = await call(new PublishCommand({
|
|
150
|
+
Message: payload.message,
|
|
151
|
+
MessageAttributes: payload.attributes,
|
|
152
|
+
MessageStructure: 'json',
|
|
153
|
+
TargetArn: endpointArn
|
|
154
|
+
}));
|
|
155
|
+
if (!result.MessageId) {
|
|
156
|
+
throw new NativePushProviderError('MissingProviderMessageId');
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
messageId: result.MessageId
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvbmF0aXZlUHVzaC9zbnNQcm92aWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZCwgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCwgUHVibGlzaENvbW1hbmQsIFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNucyc7XG5cbmltcG9ydCB0eXBlIHtOYXRpdmVQdXNoUGF5bG9hZCwgTmF0aXZlUHVzaFJlZ2lzdHJhdGlvbklucHV0LCBQbGF0Zm9ybUFwcGxpY2F0aW9uQXJucywgU25zU2VuZGVyfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIE5hdGl2ZVB1c2hQcm92aWRlckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRyYW5zaWVudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihjb2RlOiBzdHJpbmcsIHRyYW5zaWVudCA9IGZhbHNlKSB7XG4gICAgc3VwZXIoYE5hdGl2ZSBwdXNoIHByb3ZpZGVyIGVycm9yOiAke2NvZGV9YCk7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICB0aGlzLm5hbWUgPSAnTmF0aXZlUHVzaFByb3ZpZGVyRXJyb3InO1xuICAgIHRoaXMudHJhbnNpZW50ID0gdHJhbnNpZW50O1xuICB9XG59XG5cbmNvbnN0IGVycm9yQ29kZSA9IChlcnJvcjogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5hbWUgPSAoZXJyb3IgYXMge25hbWU/OiBzdHJpbmd9KT8ubmFtZTtcbiAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyAmJiAvXltBLVphLXpdezEsODB9JC8udGVzdChuYW1lKSA/IG5hbWUgOiAnVW5rbm93blByb3ZpZGVyRXJyb3InO1xufTtcbmNvbnN0IHRyYW5zaWVudENvZGVzID0gbmV3IFNldChbXG4gICdUaHJvdHRsZWRFeGNlcHRpb24nLCAnVGhyb3R0bGluZ0V4Y2VwdGlvbicsICdJbnRlcm5hbEVycm9yRXhjZXB0aW9uJyxcbiAgJ1NlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbicsICdUaW1lb3V0RXJyb3InLCAnTmV0d29ya2luZ0Vycm9yJ1xuXSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTbnNQdXNoUHJvdmlkZXIgPSAoe1xuICBzbnMsIHBsYXRmb3JtQXBwbGljYXRpb25Bcm5zLCBkZWxheSA9IChtcykgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKVxufToge1xuICBkZWxheT86IChtaWxsaXNlY29uZHM6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcGxhdGZvcm1BcHBsaWNhdGlvbkFybnM6IFBsYXRmb3JtQXBwbGljYXRpb25Bcm5zO1xuICBzbnM6IFNuc1NlbmRlcjtcbn0pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25Gb3IgPSAoaW5wdXQ6IE5hdGl2ZVB1c2hSZWdpc3RyYXRpb25JbnB1dCk6IHN0cmluZyA9PiB7XG4gICAgbGV0IGFybjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBleHBlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmKGlucHV0LnBsYXRmb3JtID09PSAnQU5EUk9JRCcpIHtcbiAgICAgIGFybiA9IHBsYXRmb3JtQXBwbGljYXRpb25Bcm5zLmFuZHJvaWQ7XG4gICAgICBleHBlY3RlZCA9ICdHQ00nO1xuICAgIH0gZWxzZSBpZihpbnB1dC5wbGF0Zm9ybSA9PT0gJ0lPUycgJiYgaW5wdXQuYXBuc0Vudmlyb25tZW50ID09PSAnc2FuZGJveCcpIHtcbiAgICAgIGFybiA9IHBsYXRmb3JtQXBwbGljYXRpb25Bcm5zLmlvc1NhbmRib3g7XG4gICAgICBleHBlY3RlZCA9ICdBUE5TX1NBTkRCT1gnO1xuICAgIH0gZWxzZSBpZihpbnB1dC5wbGF0Zm9ybSA9PT0gJ0lPUycgJiYgaW5wdXQuYXBuc0Vudmlyb25tZW50ID09PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGFybiA9IHBsYXRmb3JtQXBwbGljYXRpb25Bcm5zLmlvc1Byb2R1Y3Rpb247XG4gICAgICBleHBlY3RlZCA9ICdBUE5TJztcbiAgICB9XG4gICAgaWYoIWFybiB8fCAhbmV3IFJlZ0V4cChgXmFybjpbYS16MC05LV0rOnNuczpbYS16MC05LV0rOlswLTldezEyfTphcHAvJHtleHBlY3RlZH0vW0EtWmEtejAtOV8uLV0rJGApLnRlc3QoYXJuKSkge1xuICAgICAgdGhyb3cgbmV3IE5hdGl2ZVB1c2hQcm92aWRlckVycm9yKCdJbnZhbGlkQXBwbGljYXRpb25Db25maWd1cmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiBhcm47XG4gIH07XG4gIGNvbnN0IGVuZHBvaW50TWF0Y2hlcyA9IChhcm46IHN0cmluZywgYXBwbGljYXRpb246IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHByZWZpeCA9IGAke2FwcGxpY2F0aW9uLnJlcGxhY2UoJzphcHAvJywgJzplbmRwb2ludC8nKX0vYDtcbiAgICByZXR1cm4gYXJuLnN0YXJ0c1dpdGgocHJlZml4KSAmJiAvXltBLVphLXowLTktXSskLy50ZXN0KGFybi5zbGljZShwcmVmaXgubGVuZ3RoKSk7XG4gIH07XG4gIGNvbnN0IGVuZHBvaW50QWxsb3dlZCA9IChhcm46IHN0cmluZyk6IGJvb2xlYW4gPT4gT2JqZWN0LnZhbHVlcyhwbGF0Zm9ybUFwcGxpY2F0aW9uQXJucylcbiAgICAuc29tZSgoYXBwbGljYXRpb24pID0+IGFwcGxpY2F0aW9uICYmIGVuZHBvaW50TWF0Y2hlcyhhcm4sIGFwcGxpY2F0aW9uKSk7XG4gIGNvbnN0IGNhbGwgPSBhc3luYyAoY29tbWFuZDogUGFyYW1ldGVyczxTbnNTZW5kZXJbJ3NlbmQnXT5bMF0pOiBQcm9taXNlPGFueT4gPT4ge1xuICAgIGZvcihsZXQgYXR0ZW1wdCA9IDA7IDsgYXR0ZW1wdCsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBTZXF1ZW50aWFsIHJldHJpZXMgZGVsaWJlcmF0ZWx5IHdhaXQgZm9yIHRoZSBwcmVjZWRpbmcgYXR0ZW1wdC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgcmV0dXJuIGF3YWl0IHNucy5zZW5kKGNvbW1hbmQgYXMgYW55KTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IGVycm9yQ29kZShlcnJvcik7XG4gICAgICAgIGlmKHRyYW5zaWVudENvZGVzLmhhcyhjb2RlKSAmJiBhdHRlbXB0IDwgMikge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgYXdhaXQgZGVsYXkoMTAwICogKDIgKiogYXR0ZW1wdCkpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOYXRpdmVQdXNoUHJvdmlkZXJFcnJvcihjb2RlLCB0cmFuc2llbnRDb2Rlcy5oYXMoY29kZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgZW5zdXJlRW5kcG9pbnQgPSBhc3luYyAoaW5wdXQ6IE5hdGl2ZVB1c2hSZWdpc3RyYXRpb25JbnB1dCwgZXhpc3RpbmdFbmRwb2ludEFybj86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgY29uc3QgYXBwbGljYXRpb24gPSBhcHBsaWNhdGlvbkZvcihpbnB1dCk7XG4gICAgaWYoIWlucHV0LnRva2VuIHx8IHR5cGVvZiBpbnB1dC50b2tlbiAhPT0gJ3N0cmluZycgfHwgaW5wdXQudG9rZW4ubGVuZ3RoID4gODE5Mikge1xuICAgICAgdGhyb3cgbmV3IE5hdGl2ZVB1c2hQcm92aWRlckVycm9yKCdJbnZhbGlkRGV2aWNlVG9rZW4nKTtcbiAgICB9XG4gICAgaWYoZXhpc3RpbmdFbmRwb2ludEFybiAmJiAhZW5kcG9pbnRNYXRjaGVzKGV4aXN0aW5nRW5kcG9pbnRBcm4sIGFwcGxpY2F0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IE5hdGl2ZVB1c2hQcm92aWRlckVycm9yKCdJbnZhbGlkRW5kcG9pbnRTY29wZScpO1xuICAgIH1cbiAgICBjb25zdCBjcmVhdGUgPSBhc3luYyAoKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICAgIGxldCBhcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGZvcihsZXQgYXR0ZW1wdCA9IDA7IDsgYXR0ZW1wdCsrKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gS2VlcCB0aGUgQVdTIGR1cGxpY2F0ZS1lbmRwb2ludCBkaWFnbm9zdGljIGxvY2FsOyBuZXZlciBleHBvc2UgaXQgb3IgaXRzIHRva2VuLlxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc25zLnNlbmQobmV3IENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kKHtcbiAgICAgICAgICAgIFBsYXRmb3JtQXBwbGljYXRpb25Bcm46IGFwcGxpY2F0aW9uLCBUb2tlbjogaW5wdXQudG9rZW5cbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgYXJuID0gcmVzdWx0LkVuZHBvaW50QXJuO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgaWYoZXJyb3JDb2RlKGVycm9yKSA9PT0gJ0ludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFnbm9zdGljID0gKGVycm9yIGFzIHttZXNzYWdlPzogc3RyaW5nfSkubWVzc2FnZSA/PyAnJztcbiAgICAgICAgICAgIGFybiA9IGRpYWdub3N0aWMubWF0Y2goL0VuZHBvaW50IChhcm46W15cXHNdKykgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGUgc2FtZSBUb2tlbi8pPy5bMV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGFybikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHRyYW5zaWVudENvZGVzLmhhcyhlcnJvckNvZGUoZXJyb3IpKSAmJiBhdHRlbXB0IDwgMikge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICAgIGF3YWl0IGRlbGF5KDEwMCAqICgyICoqIGF0dGVtcHQpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBuZXcgTmF0aXZlUHVzaFByb3ZpZGVyRXJyb3IoZXJyb3JDb2RlKGVycm9yKSwgdHJhbnNpZW50Q29kZXMuaGFzKGVycm9yQ29kZShlcnJvcikpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoIWFybiB8fCAhZW5kcG9pbnRNYXRjaGVzKGFybiwgYXBwbGljYXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBOYXRpdmVQdXNoUHJvdmlkZXJFcnJvcignSW52YWxpZEVuZHBvaW50U2NvcGUnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcm47XG4gICAgfTtcbiAgICBsZXQgYXJuID0gZXhpc3RpbmdFbmRwb2ludEFybiA/PyBhd2FpdCBjcmVhdGUoKTtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjYWxsKG5ldyBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kKHtFbmRwb2ludEFybjogYXJufSkpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGlmKChlcnJvciBhcyBOYXRpdmVQdXNoUHJvdmlkZXJFcnJvcikuY29kZSAhPT0gJ05vdEZvdW5kRXhjZXB0aW9uJykge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIGFybiA9IGF3YWl0IGNyZWF0ZSgpO1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY2FsbChuZXcgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCh7RW5kcG9pbnRBcm46IGFybn0pKTtcbiAgICB9XG4gICAgaWYocmVzdWx0LkF0dHJpYnV0ZXM/LlRva2VuICE9PSBpbnB1dC50b2tlbiB8fCByZXN1bHQuQXR0cmlidXRlcz8uRW5hYmxlZCAhPT0gJ3RydWUnKSB7XG4gICAgICBhd2FpdCBjYWxsKG5ldyBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kKHtBdHRyaWJ1dGVzOiB7RW5hYmxlZDogJ3RydWUnLCBUb2tlbjogaW5wdXQudG9rZW59LCBFbmRwb2ludEFybjogYXJufSkpO1xuICAgIH1cbiAgICByZXR1cm4gYXJuO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGRpc2FibGVFbmRwb2ludDogYXN5bmMgKGVuZHBvaW50QXJuOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGlmKCFlbmRwb2ludEFsbG93ZWQoZW5kcG9pbnRBcm4pKSB7XG4gICAgICAgIHRocm93IG5ldyBOYXRpdmVQdXNoUHJvdmlkZXJFcnJvcignSW52YWxpZEVuZHBvaW50U2NvcGUnKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGNhbGwobmV3IFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmQoe0F0dHJpYnV0ZXM6IHtFbmFibGVkOiAnZmFsc2UnfSwgRW5kcG9pbnRBcm46IGVuZHBvaW50QXJufSkpO1xuICAgIH0sXG4gICAgZW5zdXJlRW5kcG9pbnQsXG4gICAgcHVibGlzaDogYXN5bmMgKGVuZHBvaW50QXJuOiBzdHJpbmcsIHBheWxvYWQ6IE5hdGl2ZVB1c2hQYXlsb2FkKTogUHJvbWlzZTx7bWVzc2FnZUlkOiBzdHJpbmd9PiA9PiB7XG4gICAgICBpZighZW5kcG9pbnRBbGxvd2VkKGVuZHBvaW50QXJuKSkge1xuICAgICAgICB0aHJvdyBuZXcgTmF0aXZlUHVzaFByb3ZpZGVyRXJyb3IoJ0ludmFsaWRFbmRwb2ludFNjb3BlJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWxsKG5ldyBQdWJsaXNoQ29tbWFuZCh7TWVzc2FnZTogcGF5bG9hZC5tZXNzYWdlLCBNZXNzYWdlQXR0cmlidXRlczogcGF5bG9hZC5hdHRyaWJ1dGVzLCBNZXNzYWdlU3RydWN0dXJlOiAnanNvbicsIFRhcmdldEFybjogZW5kcG9pbnRBcm59KSk7XG4gICAgICBpZighcmVzdWx0Lk1lc3NhZ2VJZCkge1xuICAgICAgICB0aHJvdyBuZXcgTmF0aXZlUHVzaFByb3ZpZGVyRXJyb3IoJ01pc3NpbmdQcm92aWRlck1lc3NhZ2VJZCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHttZXNzYWdlSWQ6IHJlc3VsdC5NZXNzYWdlSWR9O1xuICAgIH1cbiAgfTtcbn07XG4iXSwibmFtZXMiOlsiQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmQiLCJHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kIiwiUHVibGlzaENvbW1hbmQiLCJTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kIiwiTmF0aXZlUHVzaFByb3ZpZGVyRXJyb3IiLCJFcnJvciIsImNvZGUiLCJ0cmFuc2llbnQiLCJuYW1lIiwiZXJyb3JDb2RlIiwiZXJyb3IiLCJ0ZXN0IiwidHJhbnNpZW50Q29kZXMiLCJTZXQiLCJjcmVhdGVTbnNQdXNoUHJvdmlkZXIiLCJzbnMiLCJwbGF0Zm9ybUFwcGxpY2F0aW9uQXJucyIsImRlbGF5IiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJhcHBsaWNhdGlvbkZvciIsImlucHV0IiwiYXJuIiwiZXhwZWN0ZWQiLCJwbGF0Zm9ybSIsImFuZHJvaWQiLCJhcG5zRW52aXJvbm1lbnQiLCJpb3NTYW5kYm94IiwiaW9zUHJvZHVjdGlvbiIsIlJlZ0V4cCIsImVuZHBvaW50TWF0Y2hlcyIsImFwcGxpY2F0aW9uIiwicHJlZml4IiwicmVwbGFjZSIsInN0YXJ0c1dpdGgiLCJzbGljZSIsImxlbmd0aCIsImVuZHBvaW50QWxsb3dlZCIsIk9iamVjdCIsInZhbHVlcyIsInNvbWUiLCJjYWxsIiwiY29tbWFuZCIsImF0dGVtcHQiLCJzZW5kIiwiaGFzIiwiZW5zdXJlRW5kcG9pbnQiLCJleGlzdGluZ0VuZHBvaW50QXJuIiwidG9rZW4iLCJjcmVhdGUiLCJyZXN1bHQiLCJQbGF0Zm9ybUFwcGxpY2F0aW9uQXJuIiwiVG9rZW4iLCJFbmRwb2ludEFybiIsImRpYWdub3N0aWMiLCJtZXNzYWdlIiwibWF0Y2giLCJBdHRyaWJ1dGVzIiwiRW5hYmxlZCIsImRpc2FibGVFbmRwb2ludCIsImVuZHBvaW50QXJuIiwicHVibGlzaCIsInBheWxvYWQiLCJNZXNzYWdlIiwiTWVzc2FnZUF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVzIiwiTWVzc2FnZVN0cnVjdHVyZSIsIlRhcmdldEFybiIsIk1lc3NhZ2VJZCIsIm1lc3NhZ2VJZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsNkJBQTZCLEVBQUVDLDRCQUE0QixFQUFFQyxjQUFjLEVBQUVDLDRCQUE0QixRQUNwRyxzQkFBc0I7QUFJN0IsT0FBTyxNQUFNQyxnQ0FBZ0NDO0lBQ2xDQyxLQUFhO0lBQ2JDLFVBQW1CO0lBRTVCLFlBQVlELElBQVksRUFBRUMsWUFBWSxLQUFLLENBQUU7UUFDM0MsS0FBSyxDQUFDLENBQUMsNEJBQTRCLEVBQUVELE1BQU07UUFDM0MsSUFBSSxDQUFDQSxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDRSxJQUFJLEdBQUc7UUFDWixJQUFJLENBQUNELFNBQVMsR0FBR0E7SUFDbkI7QUFDRjtBQUVBLE1BQU1FLFlBQVksQ0FBQ0M7SUFDakIsTUFBTUYsT0FBUUUsT0FBMkJGO0lBQ3pDLE9BQU8sT0FBT0EsU0FBUyxZQUFZLG1CQUFtQkcsSUFBSSxDQUFDSCxRQUFRQSxPQUFPO0FBQzVFO0FBQ0EsTUFBTUksaUJBQWlCLElBQUlDLElBQUk7SUFDN0I7SUFBc0I7SUFBdUI7SUFDN0M7SUFBK0I7SUFB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
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { SNSClient } from '@aws-sdk/client-sns';
|
|
2
|
+
export type JsonValue = null | boolean | number | string | JsonValue[] | {
|
|
3
|
+
[key: string]: JsonValue;
|
|
4
|
+
};
|
|
5
|
+
export type PushScope = {
|
|
6
|
+
appId: string;
|
|
7
|
+
environment: string;
|
|
8
|
+
};
|
|
9
|
+
export type PushActor = {
|
|
10
|
+
sessionId: string;
|
|
11
|
+
userId: string;
|
|
12
|
+
};
|
|
13
|
+
export type NativePlatform = 'ANDROID' | 'IOS';
|
|
14
|
+
export type NativePushRegistrationInput = {
|
|
15
|
+
apnsEnvironment?: 'production' | 'sandbox';
|
|
16
|
+
installationId: string;
|
|
17
|
+
platform: NativePlatform;
|
|
18
|
+
token: string;
|
|
19
|
+
};
|
|
20
|
+
export type NativePushRegistration = PushScope & PushActor & Omit<NativePushRegistrationInput, 'token'> & {
|
|
21
|
+
createdAt: string;
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
endpointArn: string;
|
|
24
|
+
registrationId: string;
|
|
25
|
+
revision: number;
|
|
26
|
+
tokenHash: string;
|
|
27
|
+
updatedAt: string;
|
|
28
|
+
};
|
|
29
|
+
export type NativeNotification = {
|
|
30
|
+
body: string;
|
|
31
|
+
createdAt: string;
|
|
32
|
+
data?: Record<string, JsonValue>;
|
|
33
|
+
kind: string;
|
|
34
|
+
notificationId: string;
|
|
35
|
+
title: string;
|
|
36
|
+
version: 1;
|
|
37
|
+
};
|
|
38
|
+
export type NativePushEnvelope = {
|
|
39
|
+
notification: NativeNotification;
|
|
40
|
+
recipientUserId: string;
|
|
41
|
+
scope: PushScope;
|
|
42
|
+
};
|
|
43
|
+
export type NativePushOptions = {
|
|
44
|
+
badge?: number;
|
|
45
|
+
expiresAt?: string;
|
|
46
|
+
};
|
|
47
|
+
export type NativePushPayload = {
|
|
48
|
+
attributes: Record<string, {
|
|
49
|
+
DataType: string;
|
|
50
|
+
StringValue: string;
|
|
51
|
+
}>;
|
|
52
|
+
message: string;
|
|
53
|
+
};
|
|
54
|
+
export type PlatformApplicationArns = {
|
|
55
|
+
android?: string;
|
|
56
|
+
iosProduction?: string;
|
|
57
|
+
iosSandbox?: string;
|
|
58
|
+
};
|
|
59
|
+
export type SnsSender = Pick<SNSClient, 'send'>;
|
|
60
|
+
export type DeliveryOutcome = {
|
|
61
|
+
code?: string;
|
|
62
|
+
providerMessageId?: string;
|
|
63
|
+
registrationId: string;
|
|
64
|
+
status: 'ACCEPTED' | 'INVALID_ENDPOINT' | 'PERMANENT_FAILURE' | 'SKIPPED' | 'TRANSIENT_FAILURE';
|
|
65
|
+
};
|
|
66
|
+
export interface NativePushRepository {
|
|
67
|
+
disableBinding(scope: PushScope, actor: PushActor, registrationId: string, revision?: number): Promise<boolean>;
|
|
68
|
+
disableEndpoint(scope: PushScope, endpointArn: string): Promise<void>;
|
|
69
|
+
hasActiveEndpointBinding(scope: PushScope, endpointArn: string): Promise<boolean>;
|
|
70
|
+
isCurrent(registration: NativePushRegistration): Promise<boolean>;
|
|
71
|
+
listEnabled(scope: PushScope, userId: string): Promise<NativePushRegistration[]>;
|
|
72
|
+
reserveBinding(scope: PushScope, actor: PushActor, input: Omit<NativePushRegistrationInput, 'token'>, tokenHash: string): Promise<number>;
|
|
73
|
+
replaceBinding(scope: PushScope, actor: PushActor, input: Omit<NativePushRegistrationInput, 'token'>, endpointArn: string, tokenHash: string, expectedRevision?: number): Promise<NativePushRegistration>;
|
|
74
|
+
}
|
|
75
|
+
export type NativePushServiceOptions = {
|
|
76
|
+
canDeliver?: (registration: NativePushRegistration, notification: NativeNotification) => Promise<boolean>;
|
|
77
|
+
delay?: (milliseconds: number) => Promise<void>;
|
|
78
|
+
isSessionEligible: (scope: PushScope, actor: PushActor) => Promise<boolean>;
|
|
79
|
+
now?: () => Date;
|
|
80
|
+
platformApplicationArns: PlatformApplicationArns;
|
|
81
|
+
repository: NativePushRepository;
|
|
82
|
+
scope: PushScope;
|
|
83
|
+
sns: SnsSender;
|
|
84
|
+
};
|
|
85
|
+
export interface NativePushService {
|
|
86
|
+
register(actor: PushActor, input: NativePushRegistrationInput): Promise<NativePushRegistration>;
|
|
87
|
+
send(userId: string, notification: NativeNotification, options?: NativePushOptions): Promise<DeliveryOutcome[]>;
|
|
88
|
+
unregister(actor: PushActor, registrationId: string, revision?: number): Promise<boolean>;
|
|
89
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { };
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvbmF0aXZlUHVzaC90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7U05TQ2xpZW50fSBmcm9tICdAYXdzLXNkay9jbGllbnQtc25zJztcblxuZXhwb3J0IHR5cGUgSnNvblZhbHVlID0gbnVsbCB8IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcgfCBKc29uVmFsdWVbXSB8IHtba2V5OiBzdHJpbmddOiBKc29uVmFsdWV9O1xuZXhwb3J0IHR5cGUgUHVzaFNjb3BlID0ge2FwcElkOiBzdHJpbmc7IGVudmlyb25tZW50OiBzdHJpbmd9O1xuZXhwb3J0IHR5cGUgUHVzaEFjdG9yID0ge3Nlc3Npb25JZDogc3RyaW5nOyB1c2VySWQ6IHN0cmluZ307XG5leHBvcnQgdHlwZSBOYXRpdmVQbGF0Zm9ybSA9ICdBTkRST0lEJyB8ICdJT1MnO1xuZXhwb3J0IHR5cGUgTmF0aXZlUHVzaFJlZ2lzdHJhdGlvbklucHV0ID0ge1xuICBhcG5zRW52aXJvbm1lbnQ/OiAncHJvZHVjdGlvbicgfCAnc2FuZGJveCc7XG4gIGluc3RhbGxhdGlvbklkOiBzdHJpbmc7XG4gIHBsYXRmb3JtOiBOYXRpdmVQbGF0Zm9ybTtcbiAgdG9rZW46IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBOYXRpdmVQdXNoUmVnaXN0cmF0aW9uID0gUHVzaFNjb3BlICYgUHVzaEFjdG9yICYgT21pdDxOYXRpdmVQdXNoUmVnaXN0cmF0aW9uSW5wdXQsICd0b2tlbic+ICYge1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgZW5kcG9pbnRBcm46IHN0cmluZztcbiAgcmVnaXN0cmF0aW9uSWQ6IHN0cmluZztcbiAgcmV2aXNpb246IG51bWJlcjtcbiAgdG9rZW5IYXNoOiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE5hdGl2ZU5vdGlmaWNhdGlvbiA9IHtcbiAgYm9keTogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT47XG4gIGtpbmQ6IHN0cmluZztcbiAgbm90aWZpY2F0aW9uSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdmVyc2lvbjogMTtcbn07XG5leHBvcnQgdHlwZSBOYXRpdmVQdXNoRW52ZWxvcGUgPSB7bm90aWZpY2F0aW9uOiBOYXRpdmVOb3RpZmljYXRpb247IHJlY2lwaWVudFVzZXJJZDogc3RyaW5nOyBzY29wZTogUHVzaFNjb3BlfTtcbmV4cG9ydCB0eXBlIE5hdGl2ZVB1c2hPcHRpb25zID0ge2JhZGdlPzogbnVtYmVyOyBleHBpcmVzQXQ/OiBzdHJpbmd9O1xuZXhwb3J0IHR5cGUgTmF0aXZlUHVzaFBheWxvYWQgPSB7XG4gIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHtEYXRhVHlwZTogc3RyaW5nOyBTdHJpbmdWYWx1ZTogc3RyaW5nfT47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBQbGF0Zm9ybUFwcGxpY2F0aW9uQXJucyA9IHthbmRyb2lkPzogc3RyaW5nOyBpb3NQcm9kdWN0aW9uPzogc3RyaW5nOyBpb3NTYW5kYm94Pzogc3RyaW5nfTtcbmV4cG9ydCB0eXBlIFNuc1NlbmRlciA9IFBpY2s8U05TQ2xpZW50LCAnc2VuZCc+O1xuZXhwb3J0IHR5cGUgRGVsaXZlcnlPdXRjb21lID0ge1xuICBjb2RlPzogc3RyaW5nO1xuICBwcm92aWRlck1lc3NhZ2VJZD86IHN0cmluZztcbiAgcmVnaXN0cmF0aW9uSWQ6IHN0cmluZztcbiAgc3RhdHVzOiAnQUNDRVBURUQnIHwgJ0lOVkFMSURfRU5EUE9JTlQnIHwgJ1BFUk1BTkVOVF9GQUlMVVJFJyB8ICdTS0lQUEVEJyB8ICdUUkFOU0lFTlRfRkFJTFVSRSc7XG59O1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVQdXNoUmVwb3NpdG9yeSB7XG4gIGRpc2FibGVCaW5kaW5nKHNjb3BlOiBQdXNoU2NvcGUsIGFjdG9yOiBQdXNoQWN0b3IsIHJlZ2lzdHJhdGlvbklkOiBzdHJpbmcsIHJldmlzaW9uPzogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPjtcbiAgZGlzYWJsZUVuZHBvaW50KHNjb3BlOiBQdXNoU2NvcGUsIGVuZHBvaW50QXJuOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBoYXNBY3RpdmVFbmRwb2ludEJpbmRpbmcoc2NvcGU6IFB1c2hTY29wZSwgZW5kcG9pbnRBcm46IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGlzQ3VycmVudChyZWdpc3RyYXRpb246IE5hdGl2ZVB1c2hSZWdpc3RyYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+O1xuICBsaXN0RW5hYmxlZChzY29wZTogUHVzaFNjb3BlLCB1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8TmF0aXZlUHVzaFJlZ2lzdHJhdGlvbltdPjtcbiAgcmVzZXJ2ZUJpbmRpbmcoc2NvcGU6IFB1c2hTY29wZSwgYWN0b3I6IFB1c2hBY3RvciwgaW5wdXQ6IE9taXQ8TmF0aXZlUHVzaFJlZ2lzdHJhdGlvbklucHV0LCAndG9rZW4nPiwgdG9rZW5IYXNoOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj47XG4gIHJlcGxhY2VCaW5kaW5nKHNjb3BlOiBQdXNoU2NvcGUsIGFjdG9yOiBQdXNoQWN0b3IsIGlucHV0OiBPbWl0PE5hdGl2ZVB1c2hSZWdpc3RyYXRpb25JbnB1dCwgJ3Rva2VuJz4sIGVuZHBvaW50QXJuOiBzdHJpbmcsIHRva2VuSGFzaDogc3RyaW5nLCBleHBlY3RlZFJldmlzaW9uPzogbnVtYmVyKTogUHJvbWlzZTxOYXRpdmVQdXNoUmVnaXN0cmF0aW9uPjtcbn1cbmV4cG9ydCB0eXBlIE5hdGl2ZVB1c2hTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgY2FuRGVsaXZlcj86IChyZWdpc3RyYXRpb246IE5hdGl2ZVB1c2hSZWdpc3RyYXRpb24sIG5vdGlmaWNhdGlvbjogTmF0aXZlTm90aWZpY2F0aW9uKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBkZWxheT86IChtaWxsaXNlY29uZHM6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgaXNTZXNzaW9uRWxpZ2libGU6IChzY29wZTogUHVzaFNjb3BlLCBhY3RvcjogUHVzaEFjdG9yKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBub3c/OiAoKSA9PiBEYXRlO1xuICBwbGF0Zm9ybUFwcGxpY2F0aW9uQXJuczogUGxhdGZvcm1BcHBsaWNhdGlvbkFybnM7XG4gIHJlcG9zaXRvcnk6IE5hdGl2ZVB1c2hSZXBvc2l0b3J5O1xuICBzY29wZTogUHVzaFNjb3BlO1xuICBzbnM6IFNuc1NlbmRlcjtcbn07XG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZVB1c2hTZXJ2aWNlIHtcbiAgcmVnaXN0ZXIoYWN0b3I6IFB1c2hBY3RvciwgaW5wdXQ6IE5hdGl2ZVB1c2hSZWdpc3RyYXRpb25JbnB1dCk6IFByb21pc2U8TmF0aXZlUHVzaFJlZ2lzdHJhdGlvbj47XG4gIHNlbmQodXNlcklkOiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogTmF0aXZlTm90aWZpY2F0aW9uLCBvcHRpb25zPzogTmF0aXZlUHVzaE9wdGlvbnMpOiBQcm9taXNlPERlbGl2ZXJ5T3V0Y29tZVtdPjtcbiAgdW5yZWdpc3RlcihhY3RvcjogUHVzaEFjdG9yLCByZWdpc3RyYXRpb25JZDogc3RyaW5nLCByZXZpc2lvbj86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj47XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0RBLFdBSUMifQ==
|
|
@@ -144,4 +144,4 @@ export const analyticsDashboardType = schemaComposer.createObjectTC({
|
|
|
144
144
|
name: 'AnalyticsDashboard'
|
|
145
145
|
});
|
|
146
146
|
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvYW5hbHl0aWNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI2LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge3NjaGVtYUNvbXBvc2VyfSBmcm9tICdncmFwaHFsLWNvbXBvc2UnO1xuaW1wb3J0IHtpc0FkbWluVXNlcn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvblV0aWxzLmpzJztcblxuZXhwb3J0IGNvbnN0IGFuYWx5dGljc1R5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVPYmplY3RUQyh7XG4gIGZpZWxkczoge1xuICAgIGFkZGVkOiAnRmxvYXQnLFxuICAgIGFuYWx5dGljc0lkOiAnSUQhJyxcbiAgICBhcHBJZDogJ0lEIScsXG4gICAgYXBwTmFtZToge1xuICAgICAgcmVzb2x2ZTogKGl0ZW0pID0+IGl0ZW0uYXBwTmFtZSB8fCBpdGVtLm1vbml0b3JOYW1lIHx8IGl0ZW0uYXBwSWQsXG4gICAgICB0eXBlOiAnU3RyaW5nISdcbiAgICB9LFxuICAgIGNhbk1hbmFnZToge1xuICAgICAgcmVzb2x2ZTogKF9pdGVtLCBfYXJncywgY29udGV4dCkgPT4gaXNBZG1pblVzZXIoY29udGV4dD8uc2Vzc2lvbiksXG4gICAgICB0eXBlOiAnQm9vbGVhbiEnXG4gICAgfSxcbiAgICBkb21haW46ICdTdHJpbmchJyxcbiAgICBtb2RpZmllZDogJ0Zsb2F0JyxcbiAgICBtb25pdG9ySWQ6ICdJRCEnLFxuICAgIG1vbml0b3JOYW1lOiAnU3RyaW5nIScsXG4gICAgdXNlcklkczoge1xuICAgICAgcmVzb2x2ZTogKGl0ZW0sIF9hcmdzLCBjb250ZXh0KSA9PiBpc0FkbWluVXNlcihjb250ZXh0Py5zZXNzaW9uKSA/IGl0ZW0udXNlcklkcyB8fCBbXSA6IFtdLFxuICAgICAgdHlwZTogJ1tJRCFdISdcbiAgICB9XG4gIH0sXG4gIG5hbWU6ICdBbmFseXRpY3MnXG59KTtcblxuZXhwb3J0IGNvbnN0IGFuYWx5dGljc0NvbmZpZ3VyYXRpb25UeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBhbmFseXRpY3NJZDogJ0lEIScsXG4gICAgYXBwSWQ6ICdJRCEnXG4gIH0sXG4gIG5hbWU6ICdBbmFseXRpY3NDb25maWd1cmF0aW9uJ1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBbmFseXRpY3NNb25pdG9ySW5wdXRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlSW5wdXRUQyh7XG4gIGZpZWxkczoge1xuICAgIGFwcElkOiAnSUQhJyxcbiAgICBhcHBOYW1lOiAnU3RyaW5nJyxcbiAgICBkb21haW46ICdTdHJpbmchJyxcbiAgICBtb25pdG9yTmFtZTogJ1N0cmluZydcbiAgfSxcbiAgbmFtZTogJ0NyZWF0ZUFuYWx5dGljc01vbml0b3JJbnB1dCdcbn0pO1xuXG5leHBvcnQgY29uc3QgYW5hbHl0aWNzQnJlYWtkb3duVHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZU9iamVjdFRDKHtcbiAgZmllbGRzOiB7XG4gICAgY291bnQ6ICdJbnQhJyxcbiAgICBsYWJlbDogJ1N0cmluZyEnLFxuICAgIHBlcmNlbnRhZ2U6ICdGbG9hdCEnXG4gIH0sXG4gIG5hbWU6ICdBbmFseXRpY3NCcmVha2Rvd24nXG59KTtcblxuZXhwb3J0IGNvbnN0IGFuYWx5dGljc0V2ZW50VHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZU9iamVjdFRDKHtcbiAgZmllbGRzOiB7XG4gICAgYnJvd3Nlckxhbmd1YWdlOiAnU3RyaW5nIScsXG4gICAgYnJvd3Nlck5hbWU6ICdTdHJpbmchJyxcbiAgICBicm93c2VyVmVyc2lvbjogJ1N0cmluZyEnLFxuICAgIGRldmljZVR5cGU6ICdTdHJpbmchJyxcbiAgICBkdXJhdGlvbjogJ0Zsb2F0IScsXG4gICAgZXZlbnRJZDogJ0lEIScsXG4gICAgaW50ZXJhY3Rpb246ICdTdHJpbmchJyxcbiAgICBuYW1lOiAnU3RyaW5nIScsXG4gICAgb3NOYW1lOiAnU3RyaW5nIScsXG4gICAgb3NWZXJzaW9uOiAnU3RyaW5nIScsXG4gICAgb3V0Y29tZTogJ1N0cmluZyEnLFxuICAgIHBhZ2VJZDogJ1N0cmluZyEnLFxuICAgIHBhcmVudFBhZ2U6ICdTdHJpbmchJyxcbiAgICBwYXRoOiAnU3RyaW5nIScsXG4gICAgc2Vzc2lvbklkOiAnSUQhJyxcbiAgICB0aW1lc3RhbXA6ICdGbG9hdCEnLFxuICAgIHR5cGU6ICdTdHJpbmchJyxcbiAgICB2aWV3SWQ6ICdTdHJpbmchJ1xuICB9LFxuICBuYW1lOiAnQW5hbHl0aWNzRXZlbnQnXG59KTtcblxuZXhwb3J0IGNvbnN0IGFuYWx5dGljc1RpbWVQb2ludFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVPYmplY3RUQyh7XG4gIGZpZWxkczoge1xuICAgIGVycm9yczogJ0ludCEnLFxuICAgIGV2ZW50czogJ0ludCEnLFxuICAgIGludGVyYWN0aW9uczogJ0ludCEnLFxuICAgIHNlc3Npb25zOiAnSW50IScsXG4gICAgdGltZXN0YW1wOiAnRmxvYXQhJ1xuICB9LFxuICBuYW1lOiAnQW5hbHl0aWNzVGltZVBvaW50J1xufSk7XG5cbmV4cG9ydCBjb25zdCBhbmFseXRpY3NWaWV3UGVyZm9ybWFuY2VUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBmYWlsdXJlUmF0ZTogJ0Zsb2F0IScsXG4gICAgcDUwOiAnRmxvYXQhJyxcbiAgICBwNzU6ICdGbG9hdCEnLFxuICAgIHA5NTogJ0Zsb2F0IScsXG4gICAgc2FtcGxlQ291bnQ6ICdJbnQhJyxcbiAgICB0aW1lb3V0UmF0ZTogJ0Zsb2F0IScsXG4gICAgdmlld0lkOiAnU3RyaW5nISdcbiAgfSxcbiAgbmFtZTogJ0FuYWx5dGljc1ZpZXdQZXJmb3JtYW5jZSdcbn0pO1xuXG5leHBvcnQgY29uc3QgYW5hbHl0aWNzRGFzaGJvYXJkVHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZU9iamVjdFRDKHtcbiAgZmllbGRzOiB7XG4gICAgYW5hbHl0aWNzSWQ6ICdJRCEnLFxuICAgIGFwcElkOiAnSUQhJyxcbiAgICBhcHBOYW1lOiAnU3RyaW5nIScsXG4gICAgYXZlcmFnZUR1cmF0aW9uOiAnRmxvYXQhJyxcbiAgICBicm93c2VyczogW2FuYWx5dGljc0JyZWFrZG93blR5cGVdLFxuICAgIGRldmljZXM6IFthbmFseXRpY3NCcmVha2Rvd25UeXBlXSxcbiAgICBlbmRUaW1lOiAnRmxvYXQhJyxcbiAgICBlcnJvckNvdW50OiAnSW50IScsXG4gICAgZXZlbnRDb3VudDogJ0ludCEnLFxuICAgIGdlbmVyYXRlZEF0OiAnRmxvYXQhJyxcbiAgICBpbnRlcmFjdGlvbnM6IFthbmFseXRpY3NCcmVha2Rvd25UeXBlXSxcbiAgICBsYW5ndWFnZXM6IFthbmFseXRpY3NCcmVha2Rvd25UeXBlXSxcbiAgICBtb25pdG9ySWQ6ICdJRCEnLFxuICAgIG1vbml0b3JOYW1lOiAnU3RyaW5nIScsXG4gICAgb3BlcmF0aW5nU3lzdGVtczogW2FuYWx5dGljc0JyZWFrZG93blR5cGVdLFxuICAgIHBhZ2VzOiBbYW5hbHl0aWNzQnJlYWtkb3duVHlwZV0sXG4gICAgcGFnZVZpZXdDb3VudDogJ0ludCEnLFxuICAgIHBhcnRpYWw6ICdCb29sZWFuIScsXG4gICAgcGVyZm9ybWFuY2VTYW1wbGVzOiAnSW50IScsXG4gICAgcmVjZW50RXZlbnRzOiBbYW5hbHl0aWNzRXZlbnRUeXBlXSxcbiAgICBzZXNzaW9uQ291bnQ6ICdJbnQhJyxcbiAgICBzdGFydFRpbWU6ICdGbG9hdCEnLFxuICAgIHRpbWVsaW5lOiBbYW5hbHl0aWNzVGltZVBvaW50VHlwZV0sXG4gICAgdmlld1BlcmZvcm1hbmNlOiBbYW5hbHl0aWNzVmlld1BlcmZvcm1hbmNlVHlwZV1cbiAgfSxcbiAgbmFtZTogJ0FuYWx5dGljc0Rhc2hib2FyZCdcbn0pO1xuIl0sIm5hbWVzIjpbInNjaGVtYUNvbXBvc2VyIiwiaXNBZG1pblVzZXIiLCJhbmFseXRpY3NUeXBlIiwiY3JlYXRlT2JqZWN0VEMiLCJmaWVsZHMiLCJhZGRlZCIsImFuYWx5dGljc0lkIiwiYXBwSWQiLCJhcHBOYW1lIiwicmVzb2x2ZSIsIml0ZW0iLCJtb25pdG9yTmFtZSIsInR5cGUiLCJjYW5NYW5hZ2UiLCJfaXRlbSIsIl9hcmdzIiwiY29udGV4dCIsInNlc3Npb24iLCJkb21haW4iLCJtb2RpZmllZCIsIm1vbml0b3JJZCIsInVzZXJJZHMiLCJuYW1lIiwiYW5hbHl0aWNzQ29uZmlndXJhdGlvblR5cGUiLCJjcmVhdGVBbmFseXRpY3NNb25pdG9ySW5wdXRUeXBlIiwiY3JlYXRlSW5wdXRUQyIsImFuYWx5dGljc0JyZWFrZG93blR5cGUiLCJjb3VudCIsImxhYmVsIiwicGVyY2VudGFnZSIsImFuYWx5dGljc0V2ZW50VHlwZSIsImJyb3dzZXJMYW5ndWFnZSIsImJyb3dzZXJOYW1lIiwiYnJvd3NlclZlcnNpb24iLCJkZXZpY2VUeXBlIiwiZHVyYXRpb24iLCJldmVudElkIiwiaW50ZXJhY3Rpb24iLCJvc05hbWUiLCJvc1ZlcnNpb24iLCJvdXRjb21lIiwicGFnZUlkIiwicGFyZW50UGFnZSIsInBhdGgiLCJzZXNzaW9uSWQiLCJ0aW1lc3RhbXAiLCJ2aWV3SWQiLCJhbmFseXRpY3NUaW1lUG9pbnRUeXBlIiwiZXJyb3JzIiwiZXZlbnRzIiwiaW50ZXJhY3Rpb25zIiwic2Vzc2lvbnMiLCJhbmFseXRpY3NWaWV3UGVyZm9ybWFuY2VUeXBlIiwiZmFpbHVyZVJhdGUiLCJwNTAiLCJwNzUiLCJwOTUiLCJzYW1wbGVDb3VudCIsInRpbWVvdXRSYXRlIiwiYW5hbHl0aWNzRGFzaGJvYXJkVHlwZSIsImF2ZXJhZ2VEdXJhdGlvbiIsImJyb3dzZXJzIiwiZGV2aWNlcyIsImVuZFRpbWUiLCJlcnJvckNvdW50IiwiZXZlbnRDb3VudCIsImdlbmVyYXRlZEF0IiwibGFuZ3VhZ2VzIiwib3BlcmF0aW5nU3lzdGVtcyIsInBhZ2VzIiwicGFnZVZpZXdDb3VudCIsInBhcnRpYWwiLCJwZXJmb3JtYW5jZVNhbXBsZXMiLCJyZWNlbnRFdmVudHMiLCJzZXNzaW9uQ291bnQiLCJzdGFydFRpbWUiLCJ0aW1lbGluZSIsInZpZXdQZXJmb3JtYW5jZSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsY0FBYyxRQUFPLGtCQUFrQjtBQUMvQyxTQUFRQyxXQUFXLFFBQU8sMkJBQTJCO0FBRXJELE9BQU8sTUFBTUMsZ0JBQWdCRixlQUFlRyxjQUFjLENBQUM7SUFDekRDLFFBQVE7UUFDTkMsT0FBTztRQUNQQyxhQUFhO1FBQ2JDLE9BQU87UUFDUEMsU0FBUztZQUNQQyxTQUFTLENBQUNDLE9BQVNBLEtBQUtGLE9BQU8sSUFBSUUsS0FBS0MsV0FBVyxJQUFJRCxLQUFLSCxLQUFLO1lBQ2pFSyxNQUFNO1FBQ1I7UUFDQUMsV0FBVztZQUNUSixTQUFTLENBQUNLLE9BQU9DLE9BQU9DLFVBQVlmLFlBQVllLFNBQVNDO1lBQ3pETCxNQUFNO1FBQ1I7UUFDQU0sUUFBUTtRQUNSQyxVQUFVO1FBQ1ZDLFdBQVc7UUFDWFQsYUFBYTtRQUNiVSxTQUFTO1lBQ1BaLFNBQVMsQ0FBQ0MsTUFBTUssT0FBT0MsVUFBWWYsWUFBWWUsU0FBU0MsV0FBV1AsS0FBS1csT0FBTyxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQzFGVCxNQUFNO1FBQ1I7SUFDRjtJQUNBVSxNQUFNO0FBQ1IsR0FBRztBQUVILE9BQU8sTUFBTUMsNkJBQTZCdkIsZUFBZUcsY0FBYyxDQUFDO0lBQ3RFQyxRQUFRO1FBQ05FLGFBQWE7UUFDYkMsT0FBTztJQUNUO0lBQ0FlLE1BQU07QUFDUixHQUFHO0FBRUgsT0FBTyxNQUFNRSxrQ0FBa0N4QixlQUFleUIsYUFBYSxDQUFDO0lBQzFFckIsUUFBUTtRQUNORyxPQUFPO1FBQ1BDLFNBQVM7UUFDVFUsUUFBUTtRQUNSUCxhQUFhO0lBQ2Y7SUFDQVcsTUFBTTtBQUNSLEdBQUc7QUFFSCxPQUFPLE1BQU1JLHlCQUF5QjFCLGVBQWVHLGNBQWMsQ0FBQztJQUNsRUMsUUFBUTtRQUNOdUIsT0FBTztRQUNQQyxPQUFPO1FBQ1BDLFlBQVk7SUFDZDtJQUNBUCxNQUFNO0FBQ1IsR0FBRztBQUVILE9BQU8sTUFBTVEscUJBQXFCOUIsZUFBZUcsY0FBYyxDQUFDO0lBQzlEQyxRQUFRO1FBQ04yQixpQkFBaUI7UUFDakJDLGFBQWE7UUFDYkMsZ0JBQWdCO1FBQ2hCQyxZQUFZO1FBQ1pDLFVBQVU7UUFDVkMsU0FBUztRQUNUQyxhQUFhO1FBQ2JmLE1BQU07UUFDTmdCLFFBQVE7UUFDUkMsV0FBVztRQUNYQyxTQUFTO1FBQ1RDLFFBQVE7UUFDUkMsWUFBWTtRQUNaQyxNQUFNO1FBQ05DLFdBQVc7UUFDWEMsV0FBVztRQUNYakMsTUFBTTtRQUNOa0MsUUFBUTtJQUNWO0lBQ0F4QixNQUFNO0FBQ1IsR0FBRztBQUVILE9BQU8sTUFBTXlCLHlCQUF5Qi9DLGVBQWVHLGNBQWMsQ0FBQztJQUNsRUMsUUFBUTtRQUNONEMsUUFBUTtRQUNSQyxRQUFRO1FBQ1JDLGNBQWM7UUFDZEMsVUFBVTtRQUNWTixXQUFXO0lBQ2I7SUFDQXZCLE1BQU07QUFDUixHQUFHO0FBRUgsT0FBTyxNQUFNOEIsK0JBQStCcEQsZUFBZUcsY0FBYyxDQUFDO0lBQ3hFQyxRQUFRO1FBQ05pRCxhQUFhO1FBQ2JDLEtBQUs7UUFDTEMsS0FBSztRQUNMQyxLQUFLO1FBQ0xDLGFBQWE7UUFDYkMsYUFBYTtRQUNiWixRQUFRO0lBQ1Y7SUFDQXhCLE1BQU07QUFDUixHQUFHO0FBRUgsT0FBTyxNQUFNcUMseUJBQXlCM0QsZUFBZUcsY0FBYyxDQUFDO0lBQ2xFQyxRQUFRO1FBQ05FLGFBQWE7UUFDYkMsT0FBTztRQUNQQyxTQUFTO1FBQ1RvRCxpQkFBaUI7UUFDakJDLFVBQVU7WUFBQ25DO1NBQXVCO1FBQ2xDb0MsU0FBUztZQUFDcEM7U0FBdUI7UUFDakNxQyxTQUFTO1FBQ1RDLFlBQVk7UUFDWkMsWUFBWTtRQUNaQyxhQUFhO1FBQ2JoQixjQUFjO1lBQUN4QjtTQUF1QjtRQUN0Q3lDLFdBQVc7WUFBQ3pDO1NBQXVCO1FBQ25DTixXQUFXO1FBQ1hULGFBQWE7UUFDYnlELGtCQUFrQjtZQUFDMUM7U0FBdUI7UUFDMUMyQyxPQUFPO1lBQUMzQztTQUF1QjtRQUMvQjRDLGVBQWU7UUFDZkMsU0FBUztRQUNUQyxvQkFBb0I7UUFDcEJDLGNBQWM7WUFBQzNDO1NBQW1CO1FBQ2xDNEMsY0FBYztRQUNkQyxXQUFXO1FBQ1hDLFVBQVU7WUFBQzdCO1NBQXVCO1FBQ2xDOEIsaUJBQWlCO1lBQUN6QjtTQUE2QjtJQUNqRDtJQUNBOUIsTUFBTTtBQUNSLEdBQUcifQ==
|
package/lib/objectTypes/app.js
CHANGED
|
@@ -168,4 +168,4 @@ export const appInfoType = schemaComposer.createObjectTC({
|
|
|
168
168
|
});
|
|
169
169
|
appInfoType.addFields(document.getFields());
|
|
170
170
|
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvYXBwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge3NjaGVtYUNvbXBvc2VyfSBmcm9tICdncmFwaHFsLWNvbXBvc2UnO1xuXG5pbXBvcnQge2dldEltYWdlVXJsfSBmcm9tICcuLi9hY3Rpb25zL2ltYWdlcy5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7ZG9jdW1lbnR9IGZyb20gJy4vZG9jdW1lbnQuanMnO1xuXG5leHBvcnQgY29uc3QgYXBwVHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZU9iamVjdFRDKHtcbiAgZmllbGRzOiB7XG4gICAgYWNjZXNzVG9rZW46IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWNjZXNzIHRva2VuIGZvciB0aGUgYXBwLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICAgIGFjdGl2ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBhcHAgaXMgYWN0aXZlLicsXG4gICAgICB0eXBlOiAnQm9vbGVhbicsXG4gICAgfSxcbiAgICBhZGRlZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaW1lc3RhbXAgd2hlbiB0aGUgYXBwIHdhcyBhZGRlZC4nLFxuICAgICAgdHlwZTogJ0Zsb2F0JyxcbiAgICB9LFxuICAgIGNsaWVudFRva2VuOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0NsaWVudCB0b2tlbiBmb3IgdGhlIGFwcC4nLFxuICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgfSxcbiAgICBkaXNwbGF5TmFtZToge1xuICAgICAgZGVzY3JpcHRpb246ICdEaXNwbGF5IG5hbWUgb2YgdGhlIGFwcC4nLFxuICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgfSxcbiAgICBpZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGFwcC4nLFxuICAgICAgcmVzb2x2ZShpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgfHwgaXRlbS5fa2V5O1xuICAgICAgfSxcbiAgICAgIHR5cGU6ICdJRCcsXG4gICAgfSxcbiAgICBpbWFnZVVybDoge1xuICAgICAgZGVzY3JpcHRpb246ICdVUkwgb2YgdGhlIGFwcCBpbWFnZS4nLFxuICAgICAgcmVzb2x2ZSh7X2tleTogaW1hZ2VJZCwgaW1hZ2VUeXBlLCB1c2VySWR9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ2ltYWdlcycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICB0eXBlOiAnYXBwcycsXG4gICAgICAgICAgdHlwZUlkOiBDb25maWcuZ2V0KCdhcHAubmFtZScpLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICAgIG1vZGlmaWVkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RpbWVzdGFtcCB3aGVuIHRoZSBhcHAgd2FzIGxhc3QgbW9kaWZpZWQuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCcsXG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIGFwcC4nLFxuICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgfSxcbiAgICBzZWNyZXQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2VjcmV0IGtleSBmb3IgdGhlIGFwcC4nLFxuICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgfSxcbiAgICB0aHVtYlVybDoge1xuICAgICAgcmVzb2x2ZSh7X2tleTogaW1hZ2VJZCwgaW1hZ2VUeXBlLCB1c2VySWR9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ2ltYWdlcycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICB0eXBlOiAnYXBwcycsXG4gICAgICAgICAgdHlwZUlkOiBDb25maWcuZ2V0KCdhcHAubmFtZScpLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICB9LFxuICBuYW1lOiAnQXBwJ1xufSk7XG5hcHBUeXBlLmFkZEZpZWxkcyhkb2N1bWVudC5nZXRGaWVsZHMoKSk7XG5cbmV4cG9ydCBjb25zdCBhcHBJbnB1dFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVJbnB1dFRDKHtcbiAgZmllbGRzOiB7XG4gICAgYWN0aXZlOiB7IHR5cGU6ICdCb29sZWFuJywgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBhcHAgaXMgYWN0aXZlLicgfSxcbiAgICBkaXNwbGF5TmFtZTogeyB0eXBlOiAnU3RyaW5nJywgZGVzY3JpcHRpb246ICdEaXNwbGF5IG5hbWUgb2YgdGhlIGFwcC4nIH0sXG4gICAgaWQ6IHsgdHlwZTogJ0lEJywgZGVzY3JpcHRpb246ICdBcHAgSUQuJyB9LFxuICAgIG5hbWU6IHsgdHlwZTogJ1N0cmluZycsIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgYXBwLicgfSxcbiAgICBwaG90bzogeyB0eXBlOiAnSUQnLCBkZXNjcmlwdGlvbjogJ1Bob3RvL2ltYWdlIElEIGZvciB0aGUgYXBwLicgfVxuICB9LFxuICBuYW1lOiAnQXBwSW5wdXQnXG59KTtcblxuZXhwb3J0IGNvbnN0IGFwcEluZm9UeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBhY2Nlc3NUb2tlbjogeyB0eXBlOiAnU3RyaW5nJywgZGVzY3JpcHRpb246ICdBY2Nlc3MgdG9rZW4gZm9yIHRoZSBhcHAuJyB9LFxuICAgIGFkZGVkOiB7IHR5cGU6ICdGbG9hdCcsIGRlc2NyaXB0aW9uOiAnVGltZXN0YW1wIHdoZW4gdGhlIGFwcCB3YXMgYWRkZWQuJyB9LFxuICAgIGRpc3BsYXlOYW1lOiB7IHR5cGU6ICdTdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0Rpc3BsYXkgbmFtZSBvZiB0aGUgYXBwLicgfSxcbiAgICBlbWFpbDogeyB0eXBlOiAnU3RyaW5nJywgZGVzY3JpcHRpb246ICdFbWFpbCBhZGRyZXNzIGZvciB0aGUgYXBwLicgfSxcbiAgICBpZDoge1xuICAgICAgcmVzb2x2ZShpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgfHwgaXRlbS5fa2V5O1xuICAgICAgfSxcbiAgICAgIHR5cGU6ICdJRCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1VuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgYXBwLidcbiAgICB9LFxuICAgIGltYWdlVXJsOiB7XG4gICAgICByZXNvbHZlKHtfa2V5OiB0eXBlSWQsIGltYWdlSWR9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ2ltYWdlcycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICB0eXBlOiAnYXBwcycsXG4gICAgICAgICAgdHlwZUlkXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgZGVzY3JpcHRpb246ICdVUkwgb2YgdGhlIGFwcCBpbWFnZS4nXG4gICAgfSxcbiAgICBtb2RpZmllZDogeyB0eXBlOiAnRmxvYXQnLCBkZXNjcmlwdGlvbjogJ1RpbWVzdGFtcCB3aGVuIHRoZSBhcHAgd2FzIGxhc3QgbW9kaWZpZWQuJyB9LFxuICAgIG5hbWU6IHsgdHlwZTogJ1N0cmluZycsIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgYXBwLicgfSxcbiAgICBwaG9uZTogeyB0eXBlOiAnU3RyaW5nJywgZGVzY3JpcHRpb246ICdQaG9uZSBudW1iZXIgZm9yIHRoZSBhcHAuJyB9LFxuICAgIHRodW1iVXJsOiB7XG4gICAgICByZXNvbHZlKHtfa2V5OiB0eXBlSWQsIGltYWdlSWR9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ3RodW1icycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICB0eXBlOiAnYXBwcycsXG4gICAgICAgICAgdHlwZUlkXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgZGVzY3JpcHRpb246ICdVUkwgb2YgdGhlIGFwcCB0aHVtYm5haWwuJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ0FwcEluZm8nXG59KTtcbmFwcEluZm9UeXBlLmFkZEZpZWxkcyhkb2N1bWVudC5nZXRGaWVsZHMoKSk7XG4iXSwibmFtZXMiOlsic2NoZW1hQ29tcG9zZXIiLCJnZXRJbWFnZVVybCIsIkNvbmZpZyIsImRvY3VtZW50IiwiYXBwVHlwZSIsImNyZWF0ZU9iamVjdFRDIiwiZmllbGRzIiwiYWNjZXNzVG9rZW4iLCJkZXNjcmlwdGlvbiIsInR5cGUiLCJhY3RpdmUiLCJhZGRlZCIsImNsaWVudFRva2VuIiwiZGlzcGxheU5hbWUiLCJpZCIsInJlc29sdmUiLCJpdGVtIiwiX2tleSIsImltYWdlVXJsIiwiaW1hZ2VJZCIsImltYWdlVHlwZSIsInVzZXJJZCIsImJ1Y2tldCIsImdldCIsImltYWdlRGlyIiwidHlwZUlkIiwibW9kaWZpZWQiLCJuYW1lIiwic2VjcmV0IiwidGh1bWJVcmwiLCJhZGRGaWVsZHMiLCJnZXRGaWVsZHMiLCJhcHBJbnB1dFR5cGUiLCJjcmVhdGVJbnB1dFRDIiwicGhvdG8iLCJhcHBJbmZvVHlwZSIsImVtYWlsIiwicGhvbmUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLGNBQWMsUUFBTyxrQkFBa0I7QUFFL0MsU0FBUUMsV0FBVyxRQUFPLHVCQUF1QjtBQUNqRCxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUNwQyxTQUFRQyxRQUFRLFFBQU8sZ0JBQWdCO0FBRXZDLE9BQU8sTUFBTUMsVUFBVUosZUFBZUssY0FBYyxDQUFDO0lBQ25EQyxRQUFRO1FBQ05DLGFBQWE7WUFDWEMsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQUMsUUFBUTtZQUNORixhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBRSxPQUFPO1lBQ0xILGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FHLGFBQWE7WUFDWEosYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQUksYUFBYTtZQUNYTCxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBSyxJQUFJO1lBQ0ZOLGFBQWE7WUFDYk8sU0FBUUMsSUFBSTtnQkFDVixPQUFPQSxLQUFLRixFQUFFLElBQUlFLEtBQUtDLElBQUk7WUFDN0I7WUFDQVIsTUFBTTtRQUNSO1FBQ0FTLFVBQVU7WUFDUlYsYUFBYTtZQUNiTyxTQUFRLEVBQUNFLE1BQU1FLE9BQU8sRUFBRUMsU0FBUyxFQUFFQyxNQUFNLEVBQUM7Z0JBQ3hDLE9BQU9wQixZQUFZO29CQUNqQnFCLFFBQVFwQixPQUFPcUIsR0FBRyxDQUFDO29CQUNuQkMsVUFBVTtvQkFDVkw7b0JBQ0FWLE1BQU07b0JBQ05nQixRQUFRdkIsT0FBT3FCLEdBQUcsQ0FBQztnQkFDckI7WUFDRjtZQUNBZCxNQUFNO1FBQ1I7UUFDQWlCLFVBQVU7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
|
|
@@ -64,4 +64,4 @@ export const bankInputType = schemaComposer.createInputTC({
|
|
|
64
64
|
name: 'BankAccountInput'
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvYmFua0FjY291bnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7c2NoZW1hQ29tcG9zZXJ9IGZyb20gJ2dyYXBocWwtY29tcG9zZSc7XG5cbmV4cG9ydCBjb25zdCBiYW5rSW5wdXRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlSW5wdXRUQyh7XG4gIGZpZWxkczoge1xuICAgIGJhbmtBY2NvdW50OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0JhbmsgYWNjb3VudCBudW1iZXIuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgIH0sXG4gICAgYmFua0Z1bGxOYW1lOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Z1bGwgbmFtZSBvbiB0aGUgYmFuayBhY2NvdW50LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICAgIGJhbmtSb3V0aW5nOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Jhbmsgcm91dGluZyBudW1iZXIuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgIH0sXG4gICAgY2l0eToge1xuICAgICAgZGVzY3JpcHRpb246ICdDaXR5IG9mIHRoZSBiYW5rIGFjY291bnQgaG9sZGVyLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICAgIGNvdW50cnk6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ291bnRyeSBvZiB0aGUgYmFuayBhY2NvdW50LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICAgIGN1cnJlbmN5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0N1cnJlbmN5IG9mIHRoZSBiYW5rIGFjY291bnQuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgIH0sXG4gICAgZG9iOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0RhdGUgb2YgYmlydGggKHRpbWVzdGFtcCkuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCcsXG4gICAgfSxcbiAgICBlbWFpbDoge1xuICAgICAgZGVzY3JpcHRpb246ICdFbWFpbCBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IGhvbGRlci4nLFxuICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgfSxcbiAgICBmaXJzdDoge1xuICAgICAgZGVzY3JpcHRpb246ICdGaXJzdCBuYW1lIG9mIHRoZSBhY2NvdW50IGhvbGRlci4nLFxuICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgfSxcbiAgICBsYXN0OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0xhc3QgbmFtZSBvZiB0aGUgYWNjb3VudCBob2xkZXIuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgIH0sXG4gICAgc3NuOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1NvY2lhbCBTZWN1cml0eSBOdW1iZXIuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgIH0sXG4gICAgc3RyZWV0OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1N0cmVldCBhZGRyZXNzLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICAgIHVzZXJuYW1lOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VzZXJuYW1lIG9mIHRoZSBhY2NvdW50IGhvbGRlci4nLFxuICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgfSxcbiAgICB6aXA6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnWmlwIG9yIHBvc3RhbCBjb2RlLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICB9LFxuICB9LFxuICBuYW1lOiAnQmFua0FjY291bnRJbnB1dCdcbn0pO1xuIl0sIm5hbWVzIjpbInNjaGVtYUNvbXBvc2VyIiwiYmFua0lucHV0VHlwZSIsImNyZWF0ZUlucHV0VEMiLCJmaWVsZHMiLCJiYW5rQWNjb3VudCIsImRlc2NyaXB0aW9uIiwidHlwZSIsImJhbmtGdWxsTmFtZSIsImJhbmtSb3V0aW5nIiwiY2l0eSIsImNvdW50cnkiLCJjdXJyZW5jeSIsImRvYiIsImVtYWlsIiwiZmlyc3QiLCJsYXN0Iiwic3NuIiwic3RyZWV0IiwidXNlcm5hbWUiLCJ6aXAiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxjQUFjLFFBQU8sa0JBQWtCO0FBRS9DLE9BQU8sTUFBTUMsZ0JBQWdCRCxlQUFlRSxhQUFhLENBQUM7SUFDeERDLFFBQVE7UUFDTkMsYUFBYTtZQUNYQyxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBQyxjQUFjO1lBQ1pGLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FFLGFBQWE7WUFDWEgsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQUcsTUFBTTtZQUNKSixhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBSSxTQUFTO1lBQ1BMLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FLLFVBQVU7WUFDUk4sYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQU0sS0FBSztZQUNIUCxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBTyxPQUFPO1lBQ0xSLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FRLE9BQU87WUFDTFQsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQVMsTUFBTTtZQUNKVixhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBVSxLQUFLO1lBQ0hYLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FXLFFBQVE7WUFDTlosYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQVksVUFBVTtZQUNSYixhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBYSxLQUFLO1lBQ0hkLGFBQWE7WUFDYkMsTUFBTTtRQUNSO0lBQ0Y7SUFDQWMsTUFBTTtBQUNSLEdBQUcifQ==
|
|
@@ -25,4 +25,4 @@ export const connectionType = schemaComposer.createObjectTC({
|
|
|
25
25
|
});
|
|
26
26
|
connectionType.addFields(document.getFields());
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvY29ubmVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtzY2hlbWFDb21wb3Nlcn0gZnJvbSAnZ3JhcGhxbC1jb21wb3NlJztcblxuaW1wb3J0IHtkb2N1bWVudH0gZnJvbSAnLi9kb2N1bWVudC5qcyc7XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0aW9uVHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZU9iamVjdFRDKHtcbiAgZmllbGRzOiB7XG4gICAgaWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb25uZWN0aW9uLicsXG4gICAgICByZXNvbHZlKGl0ZW0pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZCB8fCBpdGVtLl9rZXk7XG4gICAgICB9LFxuICAgICAgdHlwZTogJ0lEIScsXG4gICAgfSxcbiAgICBpc0RpcmVjdDoge1xuICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBjb25uZWN0aW9uIGlzIGRpcmVjdC4nLFxuICAgICAgdHlwZTogJ0Jvb2xlYW4nLFxuICAgIH0sXG4gICAgdHlwZToge1xuICAgICAgZGVzY3JpcHRpb246ICdUeXBlL2NhdGVnb3J5IG9mIHRoZSBjb25uZWN0aW9uLicsXG4gICAgICB0eXBlOiAnU3RyaW5nIScsXG4gICAgfSxcbiAgfSxcbiAgbmFtZTogJ0Nvbm5lY3Rpb24nXG59KTtcbmNvbm5lY3Rpb25UeXBlLmFkZEZpZWxkcyhkb2N1bWVudC5nZXRGaWVsZHMoKSk7XG4iXSwibmFtZXMiOlsic2NoZW1hQ29tcG9zZXIiLCJkb2N1bWVudCIsImNvbm5lY3Rpb25UeXBlIiwiY3JlYXRlT2JqZWN0VEMiLCJmaWVsZHMiLCJpZCIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsIml0ZW0iLCJfa2V5IiwidHlwZSIsImlzRGlyZWN0IiwibmFtZSIsImFkZEZpZWxkcyIsImdldEZpZWxkcyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsY0FBYyxRQUFPLGtCQUFrQjtBQUUvQyxTQUFRQyxRQUFRLFFBQU8sZ0JBQWdCO0FBRXZDLE9BQU8sTUFBTUMsaUJBQWlCRixlQUFlRyxjQUFjLENBQUM7SUFDMURDLFFBQVE7UUFDTkMsSUFBSTtZQUNGQyxhQUFhO1lBQ2JDLFNBQVFDLElBQUk7Z0JBQ1YsT0FBT0EsS0FBS0gsRUFBRSxJQUFJRyxLQUFLQyxJQUFJO1lBQzdCO1lBQ0FDLE1BQU07UUFDUjtRQUNBQyxVQUFVO1lBQ1JMLGFBQWE7WUFDYkksTUFBTTtRQUNSO1FBQ0FBLE1BQU07WUFDSkosYUFBYTtZQUNiSSxNQUFNO1FBQ1I7SUFDRjtJQUNBRSxNQUFNO0FBQ1IsR0FBRztBQUNIVixlQUFlVyxTQUFTLENBQUNaLFNBQVNhLFNBQVMifQ==
|
|
@@ -93,4 +93,4 @@ export const contentInputType = schemaComposer.createInputTC({
|
|
|
93
93
|
name: 'ContentInput'
|
|
94
94
|
});
|
|
95
95
|
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvY29udGVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtzY2hlbWFDb21wb3Nlcn0gZnJvbSAnZ3JhcGhxbC1jb21wb3NlJztcblxuZXhwb3J0IGNvbnN0IGNvbnRlbnRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBhZGRlZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaW1lc3RhbXAgd2hlbiB0aGUgY29udGVudCB3YXMgYWRkZWQuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIGNhdGVnb3J5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0NhdGVnb3J5IG9mIHRoZSBjb250ZW50LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgY29udGVudDoge1xuICAgICAgZGVzY3JpcHRpb246ICdDb250ZW50IGJvZHkuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmchJ1xuICAgIH0sXG4gICAgY29udGVudElkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udGVudC4nLFxuICAgICAgcmVzb2x2ZShpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge19rZXk6IGtleSwgY29udGVudElkfSA9IGl0ZW07XG4gICAgICAgIHJldHVybiBrZXkgfHwgY29udGVudElkO1xuICAgICAgfSxcbiAgICAgIHR5cGU6ICdJRCEnXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiBvZiB0aGUgY29udGVudC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGlkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FyYW5nb0RCIGRvY3VtZW50IElEIGZvciB0aGUgY29udGVudC4nLFxuICAgICAgcmVzb2x2ZShpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge19pZDogaWQsIF9rZXk6IGtleSwgY29udGVudElkfSA9IGl0ZW07XG4gICAgICAgIHJldHVybiBpZCB8fCBgY29udGVudC8ke2tleSB8fCBjb250ZW50SWR9YDtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnSUQhJ1xuICAgIH0sXG4gICAgaXNBY3RpdmU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgY29udGVudCBpcyBhY3RpdmUuJyxcbiAgICAgIHR5cGU6ICdCb29sZWFuJ1xuICAgIH0sXG4gICAga2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0tleSBmb3IgdGhlIGNvbnRlbnQuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmchJ1xuICAgIH0sXG4gICAgbG9jYWxlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2FsZS9sYW5ndWFnZSBvZiB0aGUgY29udGVudC4nLFxuICAgICAgdHlwZTogJ1N0cmluZyEnXG4gICAgfSxcbiAgICBtb2RpZmllZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaW1lc3RhbXAgd2hlbiB0aGUgY29udGVudCB3YXMgbGFzdCBtb2RpZmllZC4nLFxuICAgICAgdHlwZTogJ0Zsb2F0J1xuICAgIH0sXG4gICAgdXNlcklkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgSUQgd2hvIGNyZWF0ZWQgdGhlIGNvbnRlbnQuJyxcbiAgICAgIHR5cGU6ICdJRCdcbiAgICB9XG4gIH0sXG4gIG5hbWU6ICdDb250ZW50J1xufSk7XG5cbmV4cG9ydCBjb25zdCBjb250ZW50SW5wdXRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlSW5wdXRUQyh7XG4gIGZpZWxkczoge1xuICAgIGNhdGVnb3J5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0NhdGVnb3J5IG9mIHRoZSBjb250ZW50LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgY29udGVudDoge1xuICAgICAgZGVzY3JpcHRpb246ICdDb250ZW50IGJvZHkuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmchJ1xuICAgIH0sXG4gICAgY29udGVudElkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udGVudC4nLFxuICAgICAgdHlwZTogJ0lEJ1xuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24gb2YgdGhlIGNvbnRlbnQuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBpc0FjdGl2ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRoZSBjb250ZW50IGlzIGFjdGl2ZS4nLFxuICAgICAgdHlwZTogJ0Jvb2xlYW4nXG4gICAgfSxcbiAgICBrZXk6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnS2V5IGZvciB0aGUgY29udGVudC4nLFxuICAgICAgdHlwZTogJ1N0cmluZyEnXG4gICAgfSxcbiAgICBsb2NhbGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYWxlL2xhbmd1YWdlIG9mIHRoZSBjb250ZW50LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ0NvbnRlbnRJbnB1dCdcbn0pO1xuIl0sIm5hbWVzIjpbInNjaGVtYUNvbXBvc2VyIiwiY29udGVudFR5cGUiLCJjcmVhdGVPYmplY3RUQyIsImZpZWxkcyIsImFkZGVkIiwiZGVzY3JpcHRpb24iLCJ0eXBlIiwiY2F0ZWdvcnkiLCJjb250ZW50IiwiY29udGVudElkIiwicmVzb2x2ZSIsIml0ZW0iLCJfa2V5Iiwia2V5IiwiaWQiLCJfaWQiLCJpc0FjdGl2ZSIsImxvY2FsZSIsIm1vZGlmaWVkIiwidXNlcklkIiwibmFtZSIsImNvbnRlbnRJbnB1dFR5cGUiLCJjcmVhdGVJbnB1dFRDIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxjQUFjLFFBQU8sa0JBQWtCO0FBRS9DLE9BQU8sTUFBTUMsY0FBY0QsZUFBZUUsY0FBYyxDQUFDO0lBQ3ZEQyxRQUFRO1FBQ05DLE9BQU87WUFDTEMsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQUMsVUFBVTtZQUNSRixhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBRSxTQUFTO1lBQ1BILGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FHLFdBQVc7WUFDVEosYUFBYTtZQUNiSyxTQUFRQyxJQUFJO2dCQUNWLE1BQU0sRUFBQ0MsTUFBTUMsR0FBRyxFQUFFSixTQUFTLEVBQUMsR0FBR0U7Z0JBQy9CLE9BQU9FLE9BQU9KO1lBQ2hCO1lBQ0FILE1BQU07UUFDUjtRQUNBRCxhQUFhO1lBQ1hBLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FRLElBQUk7WUFDRlQsYUFBYTtZQUNiSyxTQUFRQyxJQUFJO2dCQUNWLE1BQU0sRUFBQ0ksS0FBS0QsRUFBRSxFQUFFRixNQUFNQyxHQUFHLEVBQUVKLFNBQVMsRUFBQyxHQUFHRTtnQkFDeEMsT0FBT0csTUFBTSxDQUFDLFFBQVEsRUFBRUQsT0FBT0osV0FBVztZQUM1QztZQUNBSCxNQUFNO1FBQ1I7UUFDQVUsVUFBVTtZQUNSWCxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBTyxLQUFLO1lBQ0hSLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FXLFFBQVE7WUFDTlosYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQVksVUFBVTtZQUNSYixhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBYSxRQUFRO1lBQ05kLGFBQWE7WUFDYkMsTUFBTTtRQUNSO0lBQ0Y7SUFDQWMsTUFBTTtBQUNSLEdBQUc7QUFFSCxPQUFPLE1BQU1DLG1CQUFtQnJCLGVBQWVzQixhQUFhLENBQUM7SUFDM0RuQixRQUFRO1FBQ05JLFVBQVU7WUFDUkYsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQUUsU0FBUztZQUNQSCxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBRyxXQUFXO1lBQ1RKLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FELGFBQWE7WUFDWEEsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQVUsVUFBVTtZQUNSWCxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBTyxLQUFLO1lBQ0hSLGFBQWE7WUFDYkMsTUFBTTtRQUNSO1FBQ0FXLFFBQVE7WUFDTlosYUFBYTtZQUNiQyxNQUFNO1FBQ1I7SUFDRjtJQUNBYyxNQUFNO0FBQ1IsR0FBRyJ9
|