@twin.org/nft-service 0.0.1-next.3 → 0.0.1-next.30

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.
@@ -38,7 +38,6 @@ function generateRestRoutesNft(baseRouteName, componentName) {
38
38
  id: "nftMintExample",
39
39
  request: {
40
40
  body: {
41
- issuer: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
42
41
  tag: "MY-NFT",
43
42
  immutableMetadata: {
44
43
  docName: "bill-of-lading",
@@ -98,8 +97,8 @@ function generateRestRoutesNft(baseRouteName, componentName) {
98
97
  id: "nftResolveResponseExample",
99
98
  response: {
100
99
  body: {
101
- issuer: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
102
- owner: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
100
+ issuer: "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
101
+ owner: "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
103
102
  tag: "MY-NFT",
104
103
  immutableMetadata: {
105
104
  docName: "bill-of-lading",
@@ -159,7 +158,8 @@ function generateRestRoutesNft(baseRouteName, componentName) {
159
158
  id: "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
160
159
  },
161
160
  body: {
162
- recipient: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
161
+ recipientIdentity: "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
162
+ recipientAddress: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
163
163
  metadata: {
164
164
  data: "AAAAA"
165
165
  }
@@ -217,10 +217,9 @@ function generateRestRoutesNft(baseRouteName, componentName) {
217
217
  async function nftMint(httpRequestContext, componentName, request) {
218
218
  core.Guards.object(ROUTES_SOURCE, "request", request);
219
219
  core.Guards.object(ROUTES_SOURCE, "request.body", request.body);
220
- core.Guards.stringValue(ROUTES_SOURCE, "request.body.issuer", request.body.issuer);
221
220
  core.Guards.stringValue(ROUTES_SOURCE, "request.body.tag", request.body.tag);
222
221
  const component = core.ComponentFactory.get(componentName);
223
- const id = await component.mint(request.body.issuer, request.body.tag, request.body.immutableMetadata, request.body.metadata, request.body.namespace, httpRequestContext.userIdentity);
222
+ const id = await component.mint(request.body.tag, request.body.immutableMetadata, request.body.metadata, request.body.namespace, httpRequestContext.userIdentity);
224
223
  return {
225
224
  statusCode: web.HttpStatusCode.created,
226
225
  headers: {
@@ -274,9 +273,10 @@ async function nftTransfer(httpRequestContext, componentName, request) {
274
273
  core.Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
275
274
  core.Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
276
275
  core.Guards.object(ROUTES_SOURCE, "request.body", request.body);
277
- core.Guards.stringValue(ROUTES_SOURCE, "request.body.recipient", request.body.recipient);
276
+ core.Guards.stringValue(ROUTES_SOURCE, "request.body.recipientAddress", request.body.recipientAddress);
277
+ core.Guards.stringValue(ROUTES_SOURCE, "request.body.recipientIdentity", request.body.recipientIdentity);
278
278
  const component = core.ComponentFactory.get(componentName);
279
- await component.transfer(request.pathParams.id, request.body.recipient, request.body.metadata, httpRequestContext.userIdentity);
279
+ await component.transfer(request.pathParams.id, request.body.recipientIdentity, request.body.recipientAddress, request.body.metadata, httpRequestContext.userIdentity);
280
280
  return {
281
281
  statusCode: web.HttpStatusCode.noContent
282
282
  };
@@ -323,7 +323,6 @@ class NftService {
323
323
  /**
324
324
  * Create a new instance of NftService.
325
325
  * @param options The options for the service.
326
- * @param options.config The configuration for the service.
327
326
  */
328
327
  constructor(options) {
329
328
  const names = nftModels.NftConnectorFactory.names();
@@ -334,7 +333,6 @@ class NftService {
334
333
  }
335
334
  /**
336
335
  * Mint an NFT.
337
- * @param issuer The issuer for the NFT, will also be the initial owner.
338
336
  * @param tag The tag for the NFT.
339
337
  * @param immutableMetadata The immutable metadata for the NFT.
340
338
  * @param metadata The metadata for the NFT.
@@ -342,14 +340,13 @@ class NftService {
342
340
  * @param identity The identity to perform the nft operation on.
343
341
  * @returns The id of the created NFT in urn format.
344
342
  */
345
- async mint(issuer, tag, immutableMetadata, metadata, namespace, identity) {
346
- core.Guards.stringValue(this.CLASS_NAME, "issuer", issuer);
343
+ async mint(tag, immutableMetadata, metadata, namespace, identity) {
347
344
  core.Guards.stringValue(this.CLASS_NAME, "tag", tag);
348
345
  core.Guards.stringValue(this.CLASS_NAME, "identity", identity);
349
346
  try {
350
347
  const connectorNamespace = namespace ?? this._defaultNamespace;
351
348
  const nftConnector = nftModels.NftConnectorFactory.get(connectorNamespace);
352
- const nftUrn = await nftConnector.mint(identity, issuer, tag, immutableMetadata, metadata);
349
+ const nftUrn = await nftConnector.mint(identity, tag, immutableMetadata, metadata);
353
350
  return nftUrn;
354
351
  }
355
352
  catch (error) {
@@ -392,18 +389,20 @@ class NftService {
392
389
  /**
393
390
  * Transfer an NFT.
394
391
  * @param id The id of the NFT to transfer in urn format.
395
- * @param recipient The recipient of the NFT.
392
+ * @param recipientIdentity The recipient identity for the NFT.
393
+ * @param recipientAddress The recipient address for the NFT.
396
394
  * @param metadata Optional mutable data to include during the transfer.
397
395
  * @param identity The identity to perform the nft operation on.
398
396
  * @returns Nothing.
399
397
  */
400
- async transfer(id, recipient, metadata, identity) {
398
+ async transfer(id, recipientIdentity, recipientAddress, metadata, identity) {
401
399
  core.Urn.guard(this.CLASS_NAME, "id", id);
402
- core.Guards.stringValue(this.CLASS_NAME, "recipient", recipient);
400
+ core.Guards.stringValue(this.CLASS_NAME, "recipientIdentity", recipientIdentity);
401
+ core.Guards.stringValue(this.CLASS_NAME, "recipientAddress", recipientAddress);
403
402
  core.Guards.stringValue(this.CLASS_NAME, "identity", identity);
404
403
  try {
405
404
  const nftConnector = this.getConnector(id);
406
- await nftConnector.transfer(identity, id, recipient, metadata);
405
+ await nftConnector.transfer(identity, id, recipientIdentity, recipientAddress, metadata);
407
406
  }
408
407
  catch (error) {
409
408
  throw new core.GeneralError(this.CLASS_NAME, "transferFailed", undefined, error);
@@ -36,7 +36,6 @@ function generateRestRoutesNft(baseRouteName, componentName) {
36
36
  id: "nftMintExample",
37
37
  request: {
38
38
  body: {
39
- issuer: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
40
39
  tag: "MY-NFT",
41
40
  immutableMetadata: {
42
41
  docName: "bill-of-lading",
@@ -96,8 +95,8 @@ function generateRestRoutesNft(baseRouteName, componentName) {
96
95
  id: "nftResolveResponseExample",
97
96
  response: {
98
97
  body: {
99
- issuer: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
100
- owner: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
98
+ issuer: "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
99
+ owner: "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
101
100
  tag: "MY-NFT",
102
101
  immutableMetadata: {
103
102
  docName: "bill-of-lading",
@@ -157,7 +156,8 @@ function generateRestRoutesNft(baseRouteName, componentName) {
157
156
  id: "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
158
157
  },
159
158
  body: {
160
- recipient: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
159
+ recipientIdentity: "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
160
+ recipientAddress: "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
161
161
  metadata: {
162
162
  data: "AAAAA"
163
163
  }
@@ -215,10 +215,9 @@ function generateRestRoutesNft(baseRouteName, componentName) {
215
215
  async function nftMint(httpRequestContext, componentName, request) {
216
216
  Guards.object(ROUTES_SOURCE, "request", request);
217
217
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
218
- Guards.stringValue(ROUTES_SOURCE, "request.body.issuer", request.body.issuer);
219
218
  Guards.stringValue(ROUTES_SOURCE, "request.body.tag", request.body.tag);
220
219
  const component = ComponentFactory.get(componentName);
221
- const id = await component.mint(request.body.issuer, request.body.tag, request.body.immutableMetadata, request.body.metadata, request.body.namespace, httpRequestContext.userIdentity);
220
+ const id = await component.mint(request.body.tag, request.body.immutableMetadata, request.body.metadata, request.body.namespace, httpRequestContext.userIdentity);
222
221
  return {
223
222
  statusCode: HttpStatusCode.created,
224
223
  headers: {
@@ -272,9 +271,10 @@ async function nftTransfer(httpRequestContext, componentName, request) {
272
271
  Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
273
272
  Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
274
273
  Guards.object(ROUTES_SOURCE, "request.body", request.body);
275
- Guards.stringValue(ROUTES_SOURCE, "request.body.recipient", request.body.recipient);
274
+ Guards.stringValue(ROUTES_SOURCE, "request.body.recipientAddress", request.body.recipientAddress);
275
+ Guards.stringValue(ROUTES_SOURCE, "request.body.recipientIdentity", request.body.recipientIdentity);
276
276
  const component = ComponentFactory.get(componentName);
277
- await component.transfer(request.pathParams.id, request.body.recipient, request.body.metadata, httpRequestContext.userIdentity);
277
+ await component.transfer(request.pathParams.id, request.body.recipientIdentity, request.body.recipientAddress, request.body.metadata, httpRequestContext.userIdentity);
278
278
  return {
279
279
  statusCode: HttpStatusCode.noContent
280
280
  };
@@ -321,7 +321,6 @@ class NftService {
321
321
  /**
322
322
  * Create a new instance of NftService.
323
323
  * @param options The options for the service.
324
- * @param options.config The configuration for the service.
325
324
  */
326
325
  constructor(options) {
327
326
  const names = NftConnectorFactory.names();
@@ -332,7 +331,6 @@ class NftService {
332
331
  }
333
332
  /**
334
333
  * Mint an NFT.
335
- * @param issuer The issuer for the NFT, will also be the initial owner.
336
334
  * @param tag The tag for the NFT.
337
335
  * @param immutableMetadata The immutable metadata for the NFT.
338
336
  * @param metadata The metadata for the NFT.
@@ -340,14 +338,13 @@ class NftService {
340
338
  * @param identity The identity to perform the nft operation on.
341
339
  * @returns The id of the created NFT in urn format.
342
340
  */
343
- async mint(issuer, tag, immutableMetadata, metadata, namespace, identity) {
344
- Guards.stringValue(this.CLASS_NAME, "issuer", issuer);
341
+ async mint(tag, immutableMetadata, metadata, namespace, identity) {
345
342
  Guards.stringValue(this.CLASS_NAME, "tag", tag);
346
343
  Guards.stringValue(this.CLASS_NAME, "identity", identity);
347
344
  try {
348
345
  const connectorNamespace = namespace ?? this._defaultNamespace;
349
346
  const nftConnector = NftConnectorFactory.get(connectorNamespace);
350
- const nftUrn = await nftConnector.mint(identity, issuer, tag, immutableMetadata, metadata);
347
+ const nftUrn = await nftConnector.mint(identity, tag, immutableMetadata, metadata);
351
348
  return nftUrn;
352
349
  }
353
350
  catch (error) {
@@ -390,18 +387,20 @@ class NftService {
390
387
  /**
391
388
  * Transfer an NFT.
392
389
  * @param id The id of the NFT to transfer in urn format.
393
- * @param recipient The recipient of the NFT.
390
+ * @param recipientIdentity The recipient identity for the NFT.
391
+ * @param recipientAddress The recipient address for the NFT.
394
392
  * @param metadata Optional mutable data to include during the transfer.
395
393
  * @param identity The identity to perform the nft operation on.
396
394
  * @returns Nothing.
397
395
  */
398
- async transfer(id, recipient, metadata, identity) {
396
+ async transfer(id, recipientIdentity, recipientAddress, metadata, identity) {
399
397
  Urn.guard(this.CLASS_NAME, "id", id);
400
- Guards.stringValue(this.CLASS_NAME, "recipient", recipient);
398
+ Guards.stringValue(this.CLASS_NAME, "recipientIdentity", recipientIdentity);
399
+ Guards.stringValue(this.CLASS_NAME, "recipientAddress", recipientAddress);
401
400
  Guards.stringValue(this.CLASS_NAME, "identity", identity);
402
401
  try {
403
402
  const nftConnector = this.getConnector(id);
404
- await nftConnector.transfer(identity, id, recipient, metadata);
403
+ await nftConnector.transfer(identity, id, recipientIdentity, recipientAddress, metadata);
405
404
  }
406
405
  catch (error) {
407
406
  throw new GeneralError(this.CLASS_NAME, "transferFailed", undefined, error);
@@ -1,4 +1,5 @@
1
1
  export * from "./models/INftServiceConfig";
2
+ export * from "./models/INftServiceConstructorOptions";
2
3
  export * from "./nftRoutes";
3
4
  export * from "./nftService";
4
5
  export * from "./restEntryPoints";
@@ -0,0 +1,10 @@
1
+ import type { INftServiceConfig } from "./INftServiceConfig";
2
+ /**
3
+ * Options for the nft service constructor.
4
+ */
5
+ export interface INftServiceConstructorOptions {
6
+ /**
7
+ * The configuration for the service.
8
+ */
9
+ config?: INftServiceConfig;
10
+ }
@@ -1,5 +1,5 @@
1
1
  import { type INftComponent } from "@twin.org/nft-models";
2
- import type { INftServiceConfig } from "./models/INftServiceConfig";
2
+ import type { INftServiceConstructorOptions } from "./models/INftServiceConstructorOptions";
3
3
  /**
4
4
  * Service for performing NFT operations to a connector.
5
5
  */
@@ -15,14 +15,10 @@ export declare class NftService implements INftComponent {
15
15
  /**
16
16
  * Create a new instance of NftService.
17
17
  * @param options The options for the service.
18
- * @param options.config The configuration for the service.
19
18
  */
20
- constructor(options?: {
21
- config?: INftServiceConfig;
22
- });
19
+ constructor(options?: INftServiceConstructorOptions);
23
20
  /**
24
21
  * Mint an NFT.
25
- * @param issuer The issuer for the NFT, will also be the initial owner.
26
22
  * @param tag The tag for the NFT.
27
23
  * @param immutableMetadata The immutable metadata for the NFT.
28
24
  * @param metadata The metadata for the NFT.
@@ -30,7 +26,7 @@ export declare class NftService implements INftComponent {
30
26
  * @param identity The identity to perform the nft operation on.
31
27
  * @returns The id of the created NFT in urn format.
32
28
  */
33
- mint<T = unknown, U = unknown>(issuer: string, tag: string, immutableMetadata?: T, metadata?: U, namespace?: string, identity?: string): Promise<string>;
29
+ mint<T = unknown, U = unknown>(tag: string, immutableMetadata?: T, metadata?: U, namespace?: string, identity?: string): Promise<string>;
34
30
  /**
35
31
  * Resolve an NFT.
36
32
  * @param id The id of the NFT to resolve.
@@ -54,12 +50,13 @@ export declare class NftService implements INftComponent {
54
50
  /**
55
51
  * Transfer an NFT.
56
52
  * @param id The id of the NFT to transfer in urn format.
57
- * @param recipient The recipient of the NFT.
53
+ * @param recipientIdentity The recipient identity for the NFT.
54
+ * @param recipientAddress The recipient address for the NFT.
58
55
  * @param metadata Optional mutable data to include during the transfer.
59
56
  * @param identity The identity to perform the nft operation on.
60
57
  * @returns Nothing.
61
58
  */
62
- transfer<T = unknown>(id: string, recipient: string, metadata?: T, identity?: string): Promise<void>;
59
+ transfer<U = unknown>(id: string, recipientIdentity: string, recipientAddress: string, metadata?: U, identity?: string): Promise<void>;
63
60
  /**
64
61
  * Update the data of the NFT.
65
62
  * @param id The id of the NFT to update in urn format.
@@ -67,5 +64,5 @@ export declare class NftService implements INftComponent {
67
64
  * @param identity The identity to perform the nft operation on.
68
65
  * @returns Nothing.
69
66
  */
70
- update<T = unknown>(id: string, metadata: T, identity?: string): Promise<void>;
67
+ update<U = unknown>(id: string, metadata: U, identity?: string): Promise<void>;
71
68
  }
package/docs/changelog.md CHANGED
@@ -1,5 +1,122 @@
1
1
  # @twin.org/nft-service - Changelog
2
2
 
3
- ## v0.0.1-next.3
3
+ ## [0.0.1-next.30](https://github.com/twinfoundation/nft/compare/nft-service-v0.0.1-next.29...nft-service-v0.0.1-next.30) (2025-05-22)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * **nft-service:** Synchronize repo versions
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/nft-models bumped from 0.0.1-next.29 to 0.0.1-next.30
16
+ * devDependencies
17
+ * @twin.org/nft-connector-entity-storage bumped from 0.0.1-next.29 to 0.0.1-next.30
18
+
19
+ ## [0.0.1-next.29](https://github.com/twinfoundation/nft/compare/nft-service-v0.0.1-next.28...nft-service-v0.0.1-next.29) (2025-05-21)
20
+
21
+
22
+ ### Miscellaneous Chores
23
+
24
+ * **nft-service:** Synchronize repo versions
25
+
26
+
27
+ ### Dependencies
28
+
29
+ * The following workspace dependencies were updated
30
+ * dependencies
31
+ * @twin.org/nft-models bumped from 0.0.1-next.28 to 0.0.1-next.29
32
+ * devDependencies
33
+ * @twin.org/nft-connector-entity-storage bumped from 0.0.1-next.28 to 0.0.1-next.29
34
+
35
+ ## [0.0.1-next.28](https://github.com/twinfoundation/nft/compare/nft-service-v0.0.1-next.27...nft-service-v0.0.1-next.28) (2025-05-06)
36
+
37
+
38
+ ### Features
39
+
40
+ * iota rebased release ([bfdd233](https://github.com/twinfoundation/nft/commit/bfdd23330e168962f7ad0a6fcd2c9c9a38a11697))
41
+
42
+
43
+ ### Bug Fixes
44
+
45
+ * params order modified ([#19](https://github.com/twinfoundation/nft/issues/19)) ([c2ceb30](https://github.com/twinfoundation/nft/commit/c2ceb3040c12286d4fac09d51db77465366ba89d))
46
+
47
+
48
+ ### Dependencies
49
+
50
+ * The following workspace dependencies were updated
51
+ * dependencies
52
+ * @twin.org/nft-models bumped from 0.0.1-next.27 to 0.0.1-next.28
53
+ * devDependencies
54
+ * @twin.org/nft-connector-entity-storage bumped from 0.0.1-next.27 to 0.0.1-next.28
55
+
56
+ ## [0.0.1-next.27](https://github.com/twinfoundation/nft/compare/nft-service-v0.0.1-next.26...nft-service-v0.0.1-next.27) (2025-04-24)
57
+
58
+
59
+ ### Miscellaneous Chores
60
+
61
+ * **nft-service:** Synchronize repo versions
62
+
63
+
64
+ ### Dependencies
65
+
66
+ * The following workspace dependencies were updated
67
+ * dependencies
68
+ * @twin.org/nft-models bumped from 0.0.1-next.26 to 0.0.1-next.27
69
+ * devDependencies
70
+ * @twin.org/nft-connector-entity-storage bumped from 0.0.1-next.26 to 0.0.1-next.27
71
+
72
+ ## [0.0.1-next.26](https://github.com/twinfoundation/nft/compare/nft-service-v0.0.1-next.25...nft-service-v0.0.1-next.26) (2025-04-17)
73
+
74
+
75
+ ### Features
76
+
77
+ * use shared store mechanism ([#16](https://github.com/twinfoundation/nft/issues/16)) ([897bc78](https://github.com/twinfoundation/nft/commit/897bc7805248ba1388b2dd03df24c33f1633f344))
78
+
79
+
80
+ ### Dependencies
81
+
82
+ * The following workspace dependencies were updated
83
+ * dependencies
84
+ * @twin.org/nft-models bumped from 0.0.1-next.25 to 0.0.1-next.26
85
+ * devDependencies
86
+ * @twin.org/nft-connector-entity-storage bumped from 0.0.1-next.25 to 0.0.1-next.26
87
+
88
+ ## [0.0.1-next.25](https://github.com/twinfoundation/nft/compare/nft-service-v0.0.1-next.24...nft-service-v0.0.1-next.25) (2025-04-17)
89
+
90
+
91
+ ### Miscellaneous Chores
92
+
93
+ * **nft-service:** Synchronize repo versions
94
+
95
+
96
+ ### Dependencies
97
+
98
+ * The following workspace dependencies were updated
99
+ * dependencies
100
+ * @twin.org/nft-models bumped from 0.0.1-next.24 to 0.0.1-next.25
101
+ * devDependencies
102
+ * @twin.org/nft-connector-entity-storage bumped from 0.0.1-next.24 to 0.0.1-next.25
103
+
104
+ ## [0.0.1-next.24](https://github.com/twinfoundation/nft/compare/nft-service-v0.0.1-next.23...nft-service-v0.0.1-next.24) (2025-03-28)
105
+
106
+
107
+ ### Miscellaneous Chores
108
+
109
+ * **nft-service:** Synchronize repo versions
110
+
111
+
112
+ ### Dependencies
113
+
114
+ * The following workspace dependencies were updated
115
+ * dependencies
116
+ * @twin.org/nft-models bumped from 0.0.1-next.23 to 0.0.1-next.24
117
+ * devDependencies
118
+ * @twin.org/nft-connector-entity-storage bumped from 0.0.1-next.23 to 0.0.1-next.24
119
+
120
+ ## v0.0.1-next.23
4
121
 
5
122
  - Initial Release