@mathrunet/masamune 3.1.1 → 3.2.1

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.
@@ -0,0 +1,9 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "WebFetch(domain:github.com)",
5
+ "WebFetch(domain:pub.dev)"
6
+ ],
7
+ "deny": []
8
+ }
9
+ }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [3.2.1](https://github.com/mathrunet/node_masamune/compare/v3.2.0...v3.2.1) (2025-08-19)
2
+
3
+
4
+ ### fix
5
+
6
+ * Fixed: Parameters were not passed. ([2e3a7ba](https://github.com/mathrunet/node_masamune/commit/2e3a7ba20e7808a29b6558501c913594da5f8d4e))
7
+
8
+
9
+
10
+ # [3.2.0](https://github.com/mathrunet/node_masamune/compare/v3.1.1...v3.2.0) (2025-08-19)
11
+
12
+
13
+ ### feat
14
+
15
+ * Supports iOS StoreKit 2 validation. ([62450c5](https://github.com/mathrunet/node_masamune/commit/62450c566e33f97b0112bb55b1e3f34ea0d3a25e))
16
+
17
+
18
+
1
19
  ## [3.1.1](https://github.com/mathrunet/node_masamune/compare/v3.1.0...v3.1.1) (2025-08-14)
2
20
 
3
21
 
@@ -84,12 +84,14 @@ module.exports = (regions, options, data) => {
84
84
  enforceAppCheck: (_c = options.enforceAppCheck) !== null && _c !== void 0 ? _c : undefined,
85
85
  consumeAppCheckToken: (_d = options.consumeAppCheckToken) !== null && _d !== void 0 ? _d : undefined,
86
86
  }, (query) => __awaiter(void 0, void 0, void 0, function* () {
87
- var _a, _b;
87
+ var _a, _b, _c;
88
88
  try {
89
89
  /* ==== IOS検証ここから ==== */
90
90
  const res = yield verifier.verifyIOS({
91
91
  receiptData: query.data.receiptData,
92
92
  password: (_a = process.env.PURCHASE_IOS_SHAREDSECRET) !== null && _a !== void 0 ? _a : "",
93
+ transactionId: query.data.transactionId,
94
+ storeKitVersion: (_b = query.data.storeKitVersion) !== null && _b !== void 0 ? _b : 1,
93
95
  });
94
96
  const status = res["status"];
95
97
  if (status !== 0) {
@@ -102,7 +104,7 @@ module.exports = (regions, options, data) => {
102
104
  }
103
105
  /* ==== Firestoreの更新ここから ==== */
104
106
  let error = null;
105
- const firestoreDatabaseIds = (_b = options.firestoreDatabaseIds) !== null && _b !== void 0 ? _b : [""];
107
+ const firestoreDatabaseIds = (_c = options.firestoreDatabaseIds) !== null && _c !== void 0 ? _c : [""];
106
108
  for (const databaseId of firestoreDatabaseIds) {
107
109
  try {
108
110
  const firestoreInstance = (0, firebase_loader_1.firestoreLoader)(databaseId);
@@ -1 +1 @@
1
- {"version":3,"file":"consumable_verify_ios.js","sourceRoot":"","sources":["../../src/functions/consumable_verify_ios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumable_verify_ios.js","sourceRoot":"","sources":["../../src/functions/consumable_verify_ios.ts"],"names":[],"mappings":"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"}
@@ -79,12 +79,14 @@ module.exports = (regions, options, data) => {
79
79
  enforceAppCheck: (_c = options.enforceAppCheck) !== null && _c !== void 0 ? _c : undefined,
80
80
  consumeAppCheckToken: (_d = options.consumeAppCheckToken) !== null && _d !== void 0 ? _d : undefined,
81
81
  }, (query) => __awaiter(void 0, void 0, void 0, function* () {
82
- var _a, _b;
82
+ var _a, _b, _c;
83
83
  try {
84
84
  /* ==== IOS検証ここから ==== */
85
85
  const res = yield verifier.verifyIOS({
86
86
  receiptData: query.data.receiptData,
87
87
  password: (_a = process.env.PURCHASE_IOS_SHAREDSECRET) !== null && _a !== void 0 ? _a : "",
88
+ transactionId: query.data.transactionId,
89
+ storeKitVersion: (_b = query.data.storeKitVersion) !== null && _b !== void 0 ? _b : 1,
88
90
  });
89
91
  const status = res["status"];
90
92
  if (status !== 0) {
@@ -97,7 +99,7 @@ module.exports = (regions, options, data) => {
97
99
  }
98
100
  /* ==== Firestoreの更新ここから ==== */
99
101
  let error = null;
100
- const firestoreDatabaseIds = (_b = options.firestoreDatabaseIds) !== null && _b !== void 0 ? _b : [""];
102
+ const firestoreDatabaseIds = (_c = options.firestoreDatabaseIds) !== null && _c !== void 0 ? _c : [""];
101
103
  for (const databaseId of firestoreDatabaseIds) {
102
104
  try {
103
105
  const firestoreInstance = (0, firebase_loader_1.firestoreLoader)(databaseId);
@@ -1 +1 @@
1
- {"version":3,"file":"nonconsumable_verify_ios.js","sourceRoot":"","sources":["../../src/functions/nonconsumable_verify_ios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nonconsumable_verify_ios.js","sourceRoot":"","sources":["../../src/functions/nonconsumable_verify_ios.ts"],"names":[],"mappings":"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"}
@@ -99,7 +99,7 @@ module.exports = (regions, options, data) => {
99
99
  enforceAppCheck: (_c = options.enforceAppCheck) !== null && _c !== void 0 ? _c : undefined,
100
100
  consumeAppCheckToken: (_d = options.consumeAppCheckToken) !== null && _d !== void 0 ? _d : undefined,
101
101
  }, (query) => __awaiter(void 0, void 0, void 0, function* () {
102
- var _a, _b, _c;
102
+ var _a, _b, _c, _d;
103
103
  try {
104
104
  /* ==== IOS検証ここから ==== */
105
105
  if (!query.data.userId) {
@@ -108,6 +108,8 @@ module.exports = (regions, options, data) => {
108
108
  const res = yield verifier.verifyIOS({
109
109
  receiptData: query.data.receiptData,
110
110
  password: (_a = process.env.PURCHASE_IOS_SHAREDSECRET) !== null && _a !== void 0 ? _a : "",
111
+ transactionId: query.data.transactionId,
112
+ storeKitVersion: (_b = query.data.storeKitVersion) !== null && _b !== void 0 ? _b : 1,
111
113
  });
112
114
  const status = res["status"];
113
115
  if (status !== 0) {
@@ -128,12 +130,12 @@ module.exports = (regions, options, data) => {
128
130
  /* ==== ここまでIOS検証 ==== */
129
131
  /* ==== Firestoreの更新ここから ==== */
130
132
  let error = null;
131
- const firestoreDatabaseIds = (_b = options.firestoreDatabaseIds) !== null && _b !== void 0 ? _b : [""];
133
+ const firestoreDatabaseIds = (_c = options.firestoreDatabaseIds) !== null && _c !== void 0 ? _c : [""];
132
134
  for (const databaseId of firestoreDatabaseIds) {
133
135
  try {
134
136
  const firestoreInstance = (0, firebase_loader_1.firestoreLoader)(databaseId);
135
137
  yield subscriber.updateSubscription({
136
- targetCollectionPath: (_c = query.data.path) !== null && _c !== void 0 ? _c : process.env.PURCHASE_SUBSCRIPTIONPATH,
138
+ targetCollectionPath: (_d = query.data.path) !== null && _d !== void 0 ? _d : process.env.PURCHASE_SUBSCRIPTIONPATH,
137
139
  targetDocumentId: info[info.length - 1]["original_transaction_id"],
138
140
  data: info[info.length - 1],
139
141
  additionalData: query.data,
@@ -1 +1 @@
1
- {"version":3,"file":"subscription_verify_ios.js","sourceRoot":"","sources":["../../src/functions/subscription_verify_ios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscription_verify_ios.js","sourceRoot":"","sources":["../../src/functions/subscription_verify_ios.ts"],"names":[],"mappings":"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"}
@@ -4,23 +4,70 @@
4
4
  * IOSの受信確認を実行します。
5
5
  *
6
6
  * @param {String} receiptData
7
- * Receipt data for purchases.
7
+ * Receipt data for purchases (for StoreKit1) or JWT token (for StoreKit2).
8
8
  *
9
- * 購入の際のレシートデータ。
9
+ * 購入の際のレシートデータ(StoreKit1の場合)またはJWTトークン(StoreKit2の場合)。
10
10
  *
11
11
  * @param {String} password
12
- * SharedSecret for AppStore, obtained from [Apps]->[App Info]->[Shared Secret for App] in the AppStore.
12
+ * SharedSecret for AppStore (for StoreKit1), obtained from [Apps]->[App Info]->[Shared Secret for App] in the AppStore.
13
+ * For StoreKit2, this can be an empty string.
13
14
  *
14
- * AppStoreのSharedSecretAppStoreの[アプリ]->[App情報]->[App用共有シークレット]から取得します。
15
+ * AppStoreのSharedSecret(StoreKit1の場合)。AppStoreの[アプリ]->[App情報]->[App用共有シークレット]から取得します。
16
+ * StoreKit2の場合は空文字列を渡すことができます。
17
+ *
18
+ * @param {Number} storeKitVersion
19
+ * StoreKit version (1 or 2). Defaults to 1.
20
+ *
21
+ * StoreKitのバージョン(1または2)。デフォルトは1。
22
+ *
23
+ * @param {String} transactionId
24
+ * Transaction ID (required for StoreKit2).
25
+ *
26
+ * トランザクションID(StoreKit2の場合は必須)。
15
27
  *
16
28
  * @return {Promise<{ [key: string]: any; }}
17
29
  * Receipt information for the item.
18
30
  *
19
31
  * アイテムの受領情報。
20
32
  */
21
- export declare function verifyIOS({ receiptData, password }: {
33
+ export declare function verifyIOS({ receiptData, password, storeKitVersion, transactionId }: {
22
34
  receiptData: string;
23
- password: string;
35
+ password?: string | null | undefined;
36
+ storeKitVersion?: number;
37
+ transactionId?: string | null | undefined;
24
38
  }): Promise<{
39
+ status: number;
40
+ environment: any;
41
+ receipt: {
42
+ bundle_id: any;
43
+ application_version: any;
44
+ in_app: {
45
+ quantity: any;
46
+ product_id: any;
47
+ transaction_id: any;
48
+ original_transaction_id: any;
49
+ purchase_date_ms: any;
50
+ original_purchase_date_ms: any;
51
+ expires_date_ms: any;
52
+ web_order_line_item_id: any;
53
+ is_trial_period: any;
54
+ is_in_intro_offer_period: any;
55
+ }[];
56
+ };
57
+ latest_receipt_info: {
58
+ quantity: any;
59
+ product_id: any;
60
+ transaction_id: any;
61
+ original_transaction_id: any;
62
+ purchase_date_ms: any;
63
+ original_purchase_date_ms: any;
64
+ expires_date_ms: any;
65
+ web_order_line_item_id: any;
66
+ is_trial_period: any;
67
+ is_in_intro_offer_period: any;
68
+ }[];
69
+ pending_renewal_info: never[];
70
+ decoded_payload: any;
71
+ } | {
25
72
  [key: string]: any;
26
73
  }>;
@@ -45,20 +45,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.verifyIOS = verifyIOS;
46
46
  const functions = __importStar(require("firebase-functions/v2"));
47
47
  const api_1 = require("../api");
48
+ const jwt = __importStar(require("jsonwebtoken"));
48
49
  /**
49
50
  * Perform IOS receipt verification.
50
51
  *
51
52
  * IOSの受信確認を実行します。
52
53
  *
53
54
  * @param {String} receiptData
54
- * Receipt data for purchases.
55
+ * Receipt data for purchases (for StoreKit1) or JWT token (for StoreKit2).
55
56
  *
56
- * 購入の際のレシートデータ。
57
+ * 購入の際のレシートデータ(StoreKit1の場合)またはJWTトークン(StoreKit2の場合)。
57
58
  *
58
59
  * @param {String} password
59
- * SharedSecret for AppStore, obtained from [Apps]->[App Info]->[Shared Secret for App] in the AppStore.
60
+ * SharedSecret for AppStore (for StoreKit1), obtained from [Apps]->[App Info]->[Shared Secret for App] in the AppStore.
61
+ * For StoreKit2, this can be an empty string.
60
62
  *
61
- * AppStoreのSharedSecretAppStoreの[アプリ]->[App情報]->[App用共有シークレット]から取得します。
63
+ * AppStoreのSharedSecret(StoreKit1の場合)。AppStoreの[アプリ]->[App情報]->[App用共有シークレット]から取得します。
64
+ * StoreKit2の場合は空文字列を渡すことができます。
65
+ *
66
+ * @param {Number} storeKitVersion
67
+ * StoreKit version (1 or 2). Defaults to 1.
68
+ *
69
+ * StoreKitのバージョン(1または2)。デフォルトは1。
70
+ *
71
+ * @param {String} transactionId
72
+ * Transaction ID (required for StoreKit2).
73
+ *
74
+ * トランザクションID(StoreKit2の場合は必須)。
62
75
  *
63
76
  * @return {Promise<{ [key: string]: any; }}
64
77
  * Receipt information for the item.
@@ -66,7 +79,16 @@ const api_1 = require("../api");
66
79
  * アイテムの受領情報。
67
80
  */
68
81
  function verifyIOS(_a) {
69
- return __awaiter(this, arguments, void 0, function* ({ receiptData, password }) {
82
+ return __awaiter(this, arguments, void 0, function* ({ receiptData, password, storeKitVersion = 1, transactionId }) {
83
+ if (storeKitVersion === 2) {
84
+ if (!transactionId) {
85
+ throw new functions.https.HttpsError("invalid-argument", "Transaction ID is required for StoreKit2 verification.");
86
+ }
87
+ return yield verifyIOSStoreKit2({ jwtToken: receiptData, transactionId });
88
+ }
89
+ if (!password) {
90
+ throw new functions.https.HttpsError("invalid-argument", "Password is required for StoreKit1 verification.");
91
+ }
70
92
  let res = yield api_1.Api.post("https://buy.itunes.apple.com/verifyReceipt", {
71
93
  timeout: 30 * 1000,
72
94
  headers: {
@@ -116,4 +138,90 @@ function verifyIOS(_a) {
116
138
  return json;
117
139
  });
118
140
  }
141
+ /**
142
+ * Verify iOS StoreKit2 transaction.
143
+ *
144
+ * iOS StoreKit2のトランザクションを検証します。
145
+ *
146
+ * @param {String} jwtToken
147
+ * JWT token from StoreKit2.
148
+ *
149
+ * StoreKit2からのJWTトークン。
150
+ *
151
+ *
152
+ * @return {Promise<{ [key: string]: any; }}
153
+ * Transaction information.
154
+ *
155
+ * トランザクション情報。
156
+ */
157
+ function verifyIOSStoreKit2(_a) {
158
+ return __awaiter(this, arguments, void 0, function* ({ jwtToken, transactionId }) {
159
+ var _b, _c, _d, _e, _f, _g;
160
+ if (!jwtToken) {
161
+ throw new functions.https.HttpsError("invalid-argument", "JWT token is required for StoreKit2 verification.");
162
+ }
163
+ try {
164
+ const decodedHeader = jwt.decode(jwtToken, { complete: true });
165
+ if (!decodedHeader) {
166
+ throw new functions.https.HttpsError("invalid-argument", "Invalid JWT token.");
167
+ }
168
+ const algorithm = decodedHeader.header.alg;
169
+ // const keyId = decodedHeader.header.kid; // May be used for future certificate validation
170
+ const x5c = decodedHeader.header.x5c;
171
+ if (!x5c || !Array.isArray(x5c) || x5c.length === 0) {
172
+ throw new functions.https.HttpsError("invalid-argument", "Missing x5c certificate chain in JWT header.");
173
+ }
174
+ const certificate = `-----BEGIN CERTIFICATE-----\n${x5c[0]}\n-----END CERTIFICATE-----`;
175
+ const verifiedPayload = jwt.verify(jwtToken, certificate, {
176
+ algorithms: [algorithm]
177
+ });
178
+ if (transactionId && verifiedPayload.transactionId !== transactionId) {
179
+ throw new functions.https.HttpsError("permission-denied", "Transaction ID mismatch.");
180
+ }
181
+ const result = {
182
+ status: 0,
183
+ environment: verifiedPayload.environment || "Production",
184
+ receipt: {
185
+ bundle_id: verifiedPayload.bundleId,
186
+ application_version: verifiedPayload.appVersion,
187
+ in_app: [{
188
+ quantity: verifiedPayload.quantity || "1",
189
+ product_id: verifiedPayload.productId,
190
+ transaction_id: verifiedPayload.transactionId,
191
+ original_transaction_id: verifiedPayload.originalTransactionId,
192
+ purchase_date_ms: (_b = verifiedPayload.purchaseDate) === null || _b === void 0 ? void 0 : _b.toString(),
193
+ original_purchase_date_ms: (_c = verifiedPayload.originalPurchaseDate) === null || _c === void 0 ? void 0 : _c.toString(),
194
+ expires_date_ms: (_d = verifiedPayload.expiresDate) === null || _d === void 0 ? void 0 : _d.toString(),
195
+ web_order_line_item_id: verifiedPayload.webOrderLineItemId,
196
+ is_trial_period: verifiedPayload.isTrialPeriod || "false",
197
+ is_in_intro_offer_period: verifiedPayload.isInIntroOfferPeriod || "false"
198
+ }]
199
+ },
200
+ latest_receipt_info: [{
201
+ quantity: verifiedPayload.quantity || "1",
202
+ product_id: verifiedPayload.productId,
203
+ transaction_id: verifiedPayload.transactionId,
204
+ original_transaction_id: verifiedPayload.originalTransactionId,
205
+ purchase_date_ms: (_e = verifiedPayload.purchaseDate) === null || _e === void 0 ? void 0 : _e.toString(),
206
+ original_purchase_date_ms: (_f = verifiedPayload.originalPurchaseDate) === null || _f === void 0 ? void 0 : _f.toString(),
207
+ expires_date_ms: (_g = verifiedPayload.expiresDate) === null || _g === void 0 ? void 0 : _g.toString(),
208
+ web_order_line_item_id: verifiedPayload.webOrderLineItemId,
209
+ is_trial_period: verifiedPayload.isTrialPeriod || "false",
210
+ is_in_intro_offer_period: verifiedPayload.isInIntroOfferPeriod || "false"
211
+ }],
212
+ pending_renewal_info: [],
213
+ decoded_payload: verifiedPayload
214
+ };
215
+ console.log("StoreKit2 verification successful:", result);
216
+ return result;
217
+ }
218
+ catch (error) {
219
+ console.error("StoreKit2 verification error:", error);
220
+ if (error instanceof jwt.JsonWebTokenError) {
221
+ throw new functions.https.HttpsError("invalid-argument", "Invalid JWT token: " + error.message);
222
+ }
223
+ throw new functions.https.HttpsError("internal", "Failed to verify StoreKit2 transaction.");
224
+ }
225
+ });
226
+ }
119
227
  //# sourceMappingURL=verify_ios.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify_ios.js","sourceRoot":"","sources":["../../../src/lib/functions/verify_ios.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,8BAqDC;AA5ED,iEAAmD;AACnD,gCAA6B;AAE7B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAsB,SAAS;yDAAC,EAC5B,WAAW,EACX,QAAQ,EAIX;QACG,IAAI,GAAG,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,4CAA4C,EAAE;YACnE,OAAO,EAAE,EAAE,GAAG,IAAI;YAClB,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,kBAAkB;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,cAAc,EAAE,WAAW;gBAC3B,UAAU,EAAE,QAAQ;gBACpB,0BAA0B,EAAE,IAAI;aACnC,CAAC;SACL,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACvC,GAAG,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE;gBACnE,OAAO,EAAE,EAAE,GAAG,IAAI;gBAClB,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;oBAClC,QAAQ,EAAE,kBAAkB;iBAC/B;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,cAAc,EAAE,WAAW;oBAC3B,UAAU,EAAE,QAAQ;oBACpB,0BAA0B,EAAE,IAAI;iBACnC,CAAC;aACL,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA"}
1
+ {"version":3,"file":"verify_ios.js","sourceRoot":"","sources":["../../../src/lib/functions/verify_ios.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mathrunet/masamune",
3
- "version": "3.1.1",
3
+ "version": "3.2.1",
4
4
  "description": "Manages packages for the server portion (NodeJS) of the Masamune framework.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",