@imtbl/webhook 2.0.0-alpha.7 → 2.0.0-alpha.8

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/dist/index.cjs CHANGED
@@ -1,138 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/handler.ts
2
- var _snsvalidator = require('sns-validator'); var _snsvalidator2 = _interopRequireDefault(_snsvalidator);
3
- var _config = require('@imtbl/config');
4
- var validator = new (0, _snsvalidator2.default)();
5
- var allowedTopicArnPrefix = {
6
- [_config.Environment.PRODUCTION]: "arn:aws:sns:us-east-2:362750628221:",
7
- [_config.Environment.SANDBOX]: "arn:aws:sns:us-east-2:783421985614:"
8
- };
9
- var handle = async (body, env, handlers) => {
10
- const msg = await new Promise((resolve, reject) => {
11
- validator.validate(body, (err, message) => {
12
- if (err) {
13
- return reject(err);
14
- }
15
- if (!message.TopicArn.startsWith(allowedTopicArnPrefix[env])) {
16
- throw new Error("Invalid topic arn");
17
- }
18
- if (_optionalChain([message, 'optionalAccess', _ => _.Type]) === "SubscriptionConfirmation") {
19
- fetch(message.SubscribeURL).then(() => {
20
- resolve(message);
21
- }).catch((e) => {
22
- reject(e);
23
- });
24
- }
25
- return resolve(message);
26
- });
27
- });
28
- if (msg.Type === "Notification") {
29
- const event = JSON.parse(msg.Message);
30
- switch (event.event_name) {
31
- case "imtbl_zkevm_mint_request_updated":
32
- if (_optionalChain([handlers, 'optionalAccess', _2 => _2.zkevmMintRequestUpdated])) {
33
- await _optionalChain([handlers, 'optionalAccess', _3 => _3.zkevmMintRequestUpdated, 'call', _4 => _4(event)]);
34
- }
35
- break;
36
- case "imtbl_zkevm_activity_mint":
37
- if (_optionalChain([handlers, 'optionalAccess', _5 => _5.zkEvmActivityMint])) {
38
- await _optionalChain([handlers, 'optionalAccess', _6 => _6.zkEvmActivityMint, 'call', _7 => _7(event)]);
39
- }
40
- break;
41
- case "imtbl_zkevm_activity_burn":
42
- if (_optionalChain([handlers, 'optionalAccess', _8 => _8.zkEvmActivityBurn])) {
43
- await _optionalChain([handlers, 'optionalAccess', _9 => _9.zkEvmActivityBurn, 'call', _10 => _10(event)]);
44
- }
45
- break;
46
- case "imtbl_zkevm_activity_transfer":
47
- if (_optionalChain([handlers, 'optionalAccess', _11 => _11.zkEvmActivityTransfer])) {
48
- await _optionalChain([handlers, 'optionalAccess', _12 => _12.zkEvmActivityTransfer, 'call', _13 => _13(event)]);
49
- }
50
- break;
51
- case "imtbl_zkevm_activity_sale":
52
- if (_optionalChain([handlers, 'optionalAccess', _14 => _14.zkEvmActivitySale])) {
53
- await _optionalChain([handlers, 'optionalAccess', _15 => _15.zkEvmActivitySale, 'call', _16 => _16(event)]);
54
- }
55
- break;
56
- case "imtbl_zkevm_activity_deposit":
57
- if (_optionalChain([handlers, 'optionalAccess', _17 => _17.zkEvmActivityDeposit])) {
58
- await _optionalChain([handlers, 'optionalAccess', _18 => _18.zkEvmActivityDeposit, 'call', _19 => _19(event)]);
59
- }
60
- break;
61
- case "imtbl_zkevm_activity_withdrawal":
62
- if (_optionalChain([handlers, 'optionalAccess', _20 => _20.zkEvmActivityWithdrawal])) {
63
- await _optionalChain([handlers, 'optionalAccess', _21 => _21.zkEvmActivityWithdrawal, 'call', _22 => _22(event)]);
64
- }
65
- break;
66
- case "imtbl_zkevm_collection_updated":
67
- if (_optionalChain([handlers, 'optionalAccess', _23 => _23.zkEvmCollectionUpdated])) {
68
- await _optionalChain([handlers, 'optionalAccess', _24 => _24.zkEvmCollectionUpdated, 'call', _25 => _25(event)]);
69
- }
70
- break;
71
- case "imtbl_zkevm_nft_updated":
72
- if (_optionalChain([handlers, 'optionalAccess', _26 => _26.zkEvmNftUpdated])) {
73
- await _optionalChain([handlers, 'optionalAccess', _27 => _27.zkEvmNftUpdated, 'call', _28 => _28(event)]);
74
- }
75
- break;
76
- case "imtbl_zkevm_metadata_updated":
77
- if (_optionalChain([handlers, 'optionalAccess', _29 => _29.zkEvmMetadataUpdated])) {
78
- await _optionalChain([handlers, 'optionalAccess', _30 => _30.zkEvmMetadataUpdated, 'call', _31 => _31(event)]);
79
- }
80
- break;
81
- case "imtbl_zkevm_token_updated":
82
- if (_optionalChain([handlers, 'optionalAccess', _32 => _32.zkEvmTokenUpdated])) {
83
- await _optionalChain([handlers, 'optionalAccess', _33 => _33.zkEvmTokenUpdated, 'call', _34 => _34(event)]);
84
- }
85
- break;
86
- case "imtbl_zkevm_order_updated":
87
- if (_optionalChain([handlers, 'optionalAccess', _35 => _35.zkEvmOrderUpdated])) {
88
- await _optionalChain([handlers, 'optionalAccess', _36 => _36.zkEvmOrderUpdated, 'call', _37 => _37(event)]);
89
- }
90
- break;
91
- case "imtbl_zkevm_trade_created":
92
- if (_optionalChain([handlers, 'optionalAccess', _38 => _38.zkEvmTradeCreated])) {
93
- await _optionalChain([handlers, 'optionalAccess', _39 => _39.zkEvmTradeCreated, 'call', _40 => _40(event)]);
94
- }
95
- break;
96
- case "imtbl_x_nft_created":
97
- if (_optionalChain([handlers, 'optionalAccess', _41 => _41.xNftCreated])) {
98
- await _optionalChain([handlers, 'optionalAccess', _42 => _42.xNftCreated, 'call', _43 => _43(event)]);
99
- }
100
- break;
101
- case "imtbl_x_nft_updated":
102
- if (_optionalChain([handlers, 'optionalAccess', _44 => _44.xNftUpdated])) {
103
- await _optionalChain([handlers, 'optionalAccess', _45 => _45.xNftUpdated, 'call', _46 => _46(event)]);
104
- }
105
- break;
106
- case "imtbl_x_order_accepted":
107
- if (_optionalChain([handlers, 'optionalAccess', _47 => _47.xOrderAccepted])) {
108
- await _optionalChain([handlers, 'optionalAccess', _48 => _48.xOrderAccepted, 'call', _49 => _49(event)]);
109
- }
110
- break;
111
- case "imtbl_x_order_filled":
112
- if (_optionalChain([handlers, 'optionalAccess', _50 => _50.xOrderFilled])) {
113
- await _optionalChain([handlers, 'optionalAccess', _51 => _51.xOrderFilled, 'call', _52 => _52(event)]);
114
- }
115
- break;
116
- case "imtbl_x_order_cancelled":
117
- if (_optionalChain([handlers, 'optionalAccess', _53 => _53.xOrderCancelled])) {
118
- await _optionalChain([handlers, 'optionalAccess', _54 => _54.xOrderCancelled, 'call', _55 => _55(event)]);
119
- }
120
- break;
121
- case "imtbl_x_transfer_created":
122
- if (_optionalChain([handlers, 'optionalAccess', _56 => _56.xTransferCreated])) {
123
- await _optionalChain([handlers, 'optionalAccess', _57 => _57.xTransferCreated, 'call', _58 => _58(event)]);
124
- }
125
- break;
126
- default:
127
- break;
128
- }
129
- if (_optionalChain([handlers, 'optionalAccess', _59 => _59.all])) {
130
- await _optionalChain([handlers, 'optionalAccess', _60 => _60.all, 'call', _61 => _61(event)]);
131
- }
132
- return event;
133
- }
134
- return null;
135
- };
136
-
137
-
138
- exports.handle = handle;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _snsvalidator = require('sns-validator'); var _snsvalidator2 = _interopRequireDefault(_snsvalidator);var _config = require('@imtbl/config');var n=new _snsvalidator2.default,p={[_config.Environment.PRODUCTION]:"arn:aws:sns:us-east-2:362750628221:",[_config.Environment.SANDBOX]:"arn:aws:sns:us-east-2:783421985614:"},f= exports.handle =async(m,k,e)=>{let a=await new Promise((t,v)=>{n.validate(m,(d,i)=>{if(d)return v(d);if(!i.TopicArn.startsWith(p[k]))throw new Error("Invalid topic arn");return _optionalChain([i, 'optionalAccess', _ => _.Type])==="SubscriptionConfirmation"&&fetch(i.SubscribeURL).then(()=>{t(i)}).catch(o=>{v(o)}),t(i)})});if(a.Type==="Notification"){let t=JSON.parse(a.Message);switch(t.event_name){case"imtbl_zkevm_mint_request_updated":_optionalChain([e, 'optionalAccess', _2 => _2.zkevmMintRequestUpdated])&&await _optionalChain([e, 'optionalAccess', _3 => _3.zkevmMintRequestUpdated, 'call', _4 => _4(t)]);break;case"imtbl_zkevm_activity_mint":_optionalChain([e, 'optionalAccess', _5 => _5.zkEvmActivityMint])&&await _optionalChain([e, 'optionalAccess', _6 => _6.zkEvmActivityMint, 'call', _7 => _7(t)]);break;case"imtbl_zkevm_activity_burn":_optionalChain([e, 'optionalAccess', _8 => _8.zkEvmActivityBurn])&&await _optionalChain([e, 'optionalAccess', _9 => _9.zkEvmActivityBurn, 'call', _10 => _10(t)]);break;case"imtbl_zkevm_activity_transfer":_optionalChain([e, 'optionalAccess', _11 => _11.zkEvmActivityTransfer])&&await _optionalChain([e, 'optionalAccess', _12 => _12.zkEvmActivityTransfer, 'call', _13 => _13(t)]);break;case"imtbl_zkevm_activity_sale":_optionalChain([e, 'optionalAccess', _14 => _14.zkEvmActivitySale])&&await _optionalChain([e, 'optionalAccess', _15 => _15.zkEvmActivitySale, 'call', _16 => _16(t)]);break;case"imtbl_zkevm_activity_deposit":_optionalChain([e, 'optionalAccess', _17 => _17.zkEvmActivityDeposit])&&await _optionalChain([e, 'optionalAccess', _18 => _18.zkEvmActivityDeposit, 'call', _19 => _19(t)]);break;case"imtbl_zkevm_activity_withdrawal":_optionalChain([e, 'optionalAccess', _20 => _20.zkEvmActivityWithdrawal])&&await _optionalChain([e, 'optionalAccess', _21 => _21.zkEvmActivityWithdrawal, 'call', _22 => _22(t)]);break;case"imtbl_zkevm_collection_updated":_optionalChain([e, 'optionalAccess', _23 => _23.zkEvmCollectionUpdated])&&await _optionalChain([e, 'optionalAccess', _24 => _24.zkEvmCollectionUpdated, 'call', _25 => _25(t)]);break;case"imtbl_zkevm_nft_updated":_optionalChain([e, 'optionalAccess', _26 => _26.zkEvmNftUpdated])&&await _optionalChain([e, 'optionalAccess', _27 => _27.zkEvmNftUpdated, 'call', _28 => _28(t)]);break;case"imtbl_zkevm_metadata_updated":_optionalChain([e, 'optionalAccess', _29 => _29.zkEvmMetadataUpdated])&&await _optionalChain([e, 'optionalAccess', _30 => _30.zkEvmMetadataUpdated, 'call', _31 => _31(t)]);break;case"imtbl_zkevm_token_updated":_optionalChain([e, 'optionalAccess', _32 => _32.zkEvmTokenUpdated])&&await _optionalChain([e, 'optionalAccess', _33 => _33.zkEvmTokenUpdated, 'call', _34 => _34(t)]);break;case"imtbl_zkevm_order_updated":_optionalChain([e, 'optionalAccess', _35 => _35.zkEvmOrderUpdated])&&await _optionalChain([e, 'optionalAccess', _36 => _36.zkEvmOrderUpdated, 'call', _37 => _37(t)]);break;case"imtbl_zkevm_trade_created":_optionalChain([e, 'optionalAccess', _38 => _38.zkEvmTradeCreated])&&await _optionalChain([e, 'optionalAccess', _39 => _39.zkEvmTradeCreated, 'call', _40 => _40(t)]);break;case"imtbl_x_nft_created":_optionalChain([e, 'optionalAccess', _41 => _41.xNftCreated])&&await _optionalChain([e, 'optionalAccess', _42 => _42.xNftCreated, 'call', _43 => _43(t)]);break;case"imtbl_x_nft_updated":_optionalChain([e, 'optionalAccess', _44 => _44.xNftUpdated])&&await _optionalChain([e, 'optionalAccess', _45 => _45.xNftUpdated, 'call', _46 => _46(t)]);break;case"imtbl_x_order_accepted":_optionalChain([e, 'optionalAccess', _47 => _47.xOrderAccepted])&&await _optionalChain([e, 'optionalAccess', _48 => _48.xOrderAccepted, 'call', _49 => _49(t)]);break;case"imtbl_x_order_filled":_optionalChain([e, 'optionalAccess', _50 => _50.xOrderFilled])&&await _optionalChain([e, 'optionalAccess', _51 => _51.xOrderFilled, 'call', _52 => _52(t)]);break;case"imtbl_x_order_cancelled":_optionalChain([e, 'optionalAccess', _53 => _53.xOrderCancelled])&&await _optionalChain([e, 'optionalAccess', _54 => _54.xOrderCancelled, 'call', _55 => _55(t)]);break;case"imtbl_x_transfer_created":_optionalChain([e, 'optionalAccess', _56 => _56.xTransferCreated])&&await _optionalChain([e, 'optionalAccess', _57 => _57.xTransferCreated, 'call', _58 => _58(t)]);break;default:break}return _optionalChain([e, 'optionalAccess', _59 => _59.all])&&await _optionalChain([e, 'optionalAccess', _60 => _60.all, 'call', _61 => _61(t)]),t}return null};exports.handle = f;
package/dist/index.js CHANGED
@@ -1,138 +1 @@
1
- // src/handler.ts
2
- import MessageValidator from "sns-validator";
3
- import { Environment } from "@imtbl/config";
4
- var validator = new MessageValidator();
5
- var allowedTopicArnPrefix = {
6
- [Environment.PRODUCTION]: "arn:aws:sns:us-east-2:362750628221:",
7
- [Environment.SANDBOX]: "arn:aws:sns:us-east-2:783421985614:"
8
- };
9
- var handle = async (body, env, handlers) => {
10
- const msg = await new Promise((resolve, reject) => {
11
- validator.validate(body, (err, message) => {
12
- if (err) {
13
- return reject(err);
14
- }
15
- if (!message.TopicArn.startsWith(allowedTopicArnPrefix[env])) {
16
- throw new Error("Invalid topic arn");
17
- }
18
- if (message?.Type === "SubscriptionConfirmation") {
19
- fetch(message.SubscribeURL).then(() => {
20
- resolve(message);
21
- }).catch((e) => {
22
- reject(e);
23
- });
24
- }
25
- return resolve(message);
26
- });
27
- });
28
- if (msg.Type === "Notification") {
29
- const event = JSON.parse(msg.Message);
30
- switch (event.event_name) {
31
- case "imtbl_zkevm_mint_request_updated":
32
- if (handlers?.zkevmMintRequestUpdated) {
33
- await handlers?.zkevmMintRequestUpdated(event);
34
- }
35
- break;
36
- case "imtbl_zkevm_activity_mint":
37
- if (handlers?.zkEvmActivityMint) {
38
- await handlers?.zkEvmActivityMint(event);
39
- }
40
- break;
41
- case "imtbl_zkevm_activity_burn":
42
- if (handlers?.zkEvmActivityBurn) {
43
- await handlers?.zkEvmActivityBurn(event);
44
- }
45
- break;
46
- case "imtbl_zkevm_activity_transfer":
47
- if (handlers?.zkEvmActivityTransfer) {
48
- await handlers?.zkEvmActivityTransfer(event);
49
- }
50
- break;
51
- case "imtbl_zkevm_activity_sale":
52
- if (handlers?.zkEvmActivitySale) {
53
- await handlers?.zkEvmActivitySale(event);
54
- }
55
- break;
56
- case "imtbl_zkevm_activity_deposit":
57
- if (handlers?.zkEvmActivityDeposit) {
58
- await handlers?.zkEvmActivityDeposit(event);
59
- }
60
- break;
61
- case "imtbl_zkevm_activity_withdrawal":
62
- if (handlers?.zkEvmActivityWithdrawal) {
63
- await handlers?.zkEvmActivityWithdrawal(event);
64
- }
65
- break;
66
- case "imtbl_zkevm_collection_updated":
67
- if (handlers?.zkEvmCollectionUpdated) {
68
- await handlers?.zkEvmCollectionUpdated(event);
69
- }
70
- break;
71
- case "imtbl_zkevm_nft_updated":
72
- if (handlers?.zkEvmNftUpdated) {
73
- await handlers?.zkEvmNftUpdated(event);
74
- }
75
- break;
76
- case "imtbl_zkevm_metadata_updated":
77
- if (handlers?.zkEvmMetadataUpdated) {
78
- await handlers?.zkEvmMetadataUpdated(event);
79
- }
80
- break;
81
- case "imtbl_zkevm_token_updated":
82
- if (handlers?.zkEvmTokenUpdated) {
83
- await handlers?.zkEvmTokenUpdated(event);
84
- }
85
- break;
86
- case "imtbl_zkevm_order_updated":
87
- if (handlers?.zkEvmOrderUpdated) {
88
- await handlers?.zkEvmOrderUpdated(event);
89
- }
90
- break;
91
- case "imtbl_zkevm_trade_created":
92
- if (handlers?.zkEvmTradeCreated) {
93
- await handlers?.zkEvmTradeCreated(event);
94
- }
95
- break;
96
- case "imtbl_x_nft_created":
97
- if (handlers?.xNftCreated) {
98
- await handlers?.xNftCreated(event);
99
- }
100
- break;
101
- case "imtbl_x_nft_updated":
102
- if (handlers?.xNftUpdated) {
103
- await handlers?.xNftUpdated(event);
104
- }
105
- break;
106
- case "imtbl_x_order_accepted":
107
- if (handlers?.xOrderAccepted) {
108
- await handlers?.xOrderAccepted(event);
109
- }
110
- break;
111
- case "imtbl_x_order_filled":
112
- if (handlers?.xOrderFilled) {
113
- await handlers?.xOrderFilled(event);
114
- }
115
- break;
116
- case "imtbl_x_order_cancelled":
117
- if (handlers?.xOrderCancelled) {
118
- await handlers?.xOrderCancelled(event);
119
- }
120
- break;
121
- case "imtbl_x_transfer_created":
122
- if (handlers?.xTransferCreated) {
123
- await handlers?.xTransferCreated(event);
124
- }
125
- break;
126
- default:
127
- break;
128
- }
129
- if (handlers?.all) {
130
- await handlers?.all(event);
131
- }
132
- return event;
133
- }
134
- return null;
135
- };
136
- export {
137
- handle
138
- };
1
+ import c from"sns-validator";import{Environment as r}from"@imtbl/config";var n=new c,p={[r.PRODUCTION]:"arn:aws:sns:us-east-2:362750628221:",[r.SANDBOX]:"arn:aws:sns:us-east-2:783421985614:"},f=async(m,k,e)=>{let a=await new Promise((t,v)=>{n.validate(m,(d,i)=>{if(d)return v(d);if(!i.TopicArn.startsWith(p[k]))throw new Error("Invalid topic arn");return i?.Type==="SubscriptionConfirmation"&&fetch(i.SubscribeURL).then(()=>{t(i)}).catch(o=>{v(o)}),t(i)})});if(a.Type==="Notification"){let t=JSON.parse(a.Message);switch(t.event_name){case"imtbl_zkevm_mint_request_updated":e?.zkevmMintRequestUpdated&&await e?.zkevmMintRequestUpdated(t);break;case"imtbl_zkevm_activity_mint":e?.zkEvmActivityMint&&await e?.zkEvmActivityMint(t);break;case"imtbl_zkevm_activity_burn":e?.zkEvmActivityBurn&&await e?.zkEvmActivityBurn(t);break;case"imtbl_zkevm_activity_transfer":e?.zkEvmActivityTransfer&&await e?.zkEvmActivityTransfer(t);break;case"imtbl_zkevm_activity_sale":e?.zkEvmActivitySale&&await e?.zkEvmActivitySale(t);break;case"imtbl_zkevm_activity_deposit":e?.zkEvmActivityDeposit&&await e?.zkEvmActivityDeposit(t);break;case"imtbl_zkevm_activity_withdrawal":e?.zkEvmActivityWithdrawal&&await e?.zkEvmActivityWithdrawal(t);break;case"imtbl_zkevm_collection_updated":e?.zkEvmCollectionUpdated&&await e?.zkEvmCollectionUpdated(t);break;case"imtbl_zkevm_nft_updated":e?.zkEvmNftUpdated&&await e?.zkEvmNftUpdated(t);break;case"imtbl_zkevm_metadata_updated":e?.zkEvmMetadataUpdated&&await e?.zkEvmMetadataUpdated(t);break;case"imtbl_zkevm_token_updated":e?.zkEvmTokenUpdated&&await e?.zkEvmTokenUpdated(t);break;case"imtbl_zkevm_order_updated":e?.zkEvmOrderUpdated&&await e?.zkEvmOrderUpdated(t);break;case"imtbl_zkevm_trade_created":e?.zkEvmTradeCreated&&await e?.zkEvmTradeCreated(t);break;case"imtbl_x_nft_created":e?.xNftCreated&&await e?.xNftCreated(t);break;case"imtbl_x_nft_updated":e?.xNftUpdated&&await e?.xNftUpdated(t);break;case"imtbl_x_order_accepted":e?.xOrderAccepted&&await e?.xOrderAccepted(t);break;case"imtbl_x_order_filled":e?.xOrderFilled&&await e?.xOrderFilled(t);break;case"imtbl_x_order_cancelled":e?.xOrderCancelled&&await e?.xOrderCancelled(t);break;case"imtbl_x_transfer_created":e?.xTransferCreated&&await e?.xTransferCreated(t);break;default:break}return e?.all&&await e?.all(t),t}return null};export{f as handle};
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@imtbl/webhook",
3
3
  "description": "Utility for interacting with Immutable's webhook",
4
- "version": "2.0.0-alpha.7",
4
+ "version": "2.0.0-alpha.8",
5
5
  "author": "Immutable",
6
6
  "bugs": "https://github.com/immutable/ts-immutable-sdk/issues",
7
7
  "dependencies": {
8
- "@imtbl/config": "2.0.0-alpha.7",
9
- "@imtbl/generated-clients": "2.0.0-alpha.7",
8
+ "@imtbl/config": "2.0.0-alpha.8",
9
+ "@imtbl/generated-clients": "2.0.0-alpha.8",
10
10
  "sns-validator": "^0.3.5"
11
11
  },
12
12
  "devDependencies": {