From 62f2737b3321af995a1f80cb9023db225e79db6f Mon Sep 17 00:00:00 2001
From: danisharora099 <danisharora099@gmail.com>
Date: Tue, 30 May 2023 17:14:17 +0530
Subject: [PATCH 1/6] feat!(@waku/sdk): rename package from @waku/create to
 @waku/sdk

---
 .size-limit.cjs                               |   4 +-
 package-lock.json                             | 247 ++++++++++++------
 package.json                                  |   2 +-
 packages/core/src/lib/wait_for_remote_peer.ts |   2 +-
 packages/{create => sdk}/.eslintrc.cjs        |   0
 packages/{create => sdk}/CHANGELOG.md         |   0
 packages/{create => sdk}/package.json         |   8 +-
 packages/{create => sdk}/rollup.config.js     |   0
 packages/{create => sdk}/src/index.ts         |   0
 .../{create => sdk}/src/libp2p_components.ts  |   0
 packages/{create => sdk}/tsconfig.dev.json    |   0
 packages/{create => sdk}/tsconfig.json        |   0
 packages/tests/package.json                   |   2 +-
 .../tests/tests/dns-peer-discovery.spec.ts    |   2 +-
 packages/tests/tests/enr.node.spec.ts         |   2 +-
 packages/tests/tests/ephemeral.node.spec.ts   |   2 +-
 packages/tests/tests/filter_v1.node.spec.ts   |   2 +-
 packages/tests/tests/filter_v2.node.spec.ts   |   2 +-
 packages/tests/tests/light_push.node.spec.ts  |   2 +-
 .../tests/tests/peer_exchange.node.spec.ts    |   2 +-
 packages/tests/tests/relay.node.spec.ts       |   2 +-
 packages/tests/tests/store.node.spec.ts       |   2 +-
 packages/tests/tests/utils.spec.ts            |   2 +-
 .../tests/wait_for_remote_peer.node.spec.ts   |   2 +-
 packages/tests/tests/waku.node.spec.ts        |   2 +-
 25 files changed, 185 insertions(+), 104 deletions(-)
 rename packages/{create => sdk}/.eslintrc.cjs (100%)
 rename packages/{create => sdk}/CHANGELOG.md (100%)
 rename packages/{create => sdk}/package.json (95%)
 rename packages/{create => sdk}/rollup.config.js (100%)
 rename packages/{create => sdk}/src/index.ts (100%)
 rename packages/{create => sdk}/src/libp2p_components.ts (100%)
 rename packages/{create => sdk}/tsconfig.dev.json (100%)
 rename packages/{create => sdk}/tsconfig.json (100%)

diff --git a/.size-limit.cjs b/.size-limit.cjs
index 24553cab1f..32134cf361 100644
--- a/.size-limit.cjs
+++ b/.size-limit.cjs
@@ -6,9 +6,9 @@ module.exports = [
   },
   {
     name: "Waku default setup",
-    path: ["packages/create/bundle/index.js", "packages/core/bundle/index.js"],
+    path: ["packages/sdk/bundle/index.js", "packages/core/bundle/index.js"],
     import: {
-      "packages/create/bundle/index.js": "{ createLightNode }",
+      "packages/sdk/bundle/index.js": "{ createLightNode }",
       "packages/core/bundle/index.js":
         "{ waitForRemotePeer, createEncoder, createDecoder }",
     },
diff --git a/package-lock.json b/package-lock.json
index 0963b87444..a6677ce1d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
         "packages/peer-exchange",
         "packages/dns-discovery",
         "packages/message-encryption",
-        "packages/create",
+        "packages/sdk",
         "packages/tests",
         "packages/build-utils"
       ],
@@ -7114,10 +7114,6 @@
       "resolved": "packages/core",
       "link": true
     },
-    "node_modules/@waku/create": {
-      "resolved": "packages/create",
-      "link": true
-    },
     "node_modules/@waku/dns-discovery": {
       "resolved": "packages/dns-discovery",
       "link": true
@@ -7150,6 +7146,10 @@
       "resolved": "packages/relay",
       "link": true
     },
+    "node_modules/@waku/sdk": {
+      "resolved": "packages/sdk",
+      "link": true
+    },
     "node_modules/@waku/tests": {
       "resolved": "packages/tests",
       "link": true
@@ -30841,8 +30841,9 @@
       }
     },
     "packages/create": {
-      "name": "@waku/create",
-      "version": "0.0.14",
+      "name": "@waku/sdk",
+      "version": "0.0.15",
+      "extraneous": true,
       "license": "MIT OR Apache-2.0",
       "dependencies": {
         "@chainsafe/libp2p-noise": "^11.0.0",
@@ -30892,22 +30893,6 @@
         "node": ">=16"
       }
     },
-    "packages/create/node_modules/@libp2p/interface-dht": {
-      "version": "2.0.1",
-      "dev": true,
-      "license": "Apache-2.0 OR MIT",
-      "dependencies": {
-        "@libp2p/interface-peer-discovery": "^1.0.0",
-        "@libp2p/interface-peer-id": "^2.0.0",
-        "@libp2p/interface-peer-info": "^1.0.0",
-        "@libp2p/interfaces": "^3.0.0",
-        "multiformats": "^11.0.0"
-      },
-      "engines": {
-        "node": ">=16.0.0",
-        "npm": ">=7.0.0"
-      }
-    },
     "packages/dns-discovery": {
       "name": "@waku/dns-discovery",
       "version": "0.0.12",
@@ -31295,6 +31280,88 @@
         "node": ">=16"
       }
     },
+    "packages/sdk": {
+      "version": "0.0.15",
+      "license": "MIT OR Apache-2.0",
+      "dependencies": {
+        "@chainsafe/libp2p-noise": "^11.0.0",
+        "@libp2p/mplex": "^7.1.1",
+        "@libp2p/websockets": "^5.0.3",
+        "@waku/core": "0.0.18",
+        "@waku/dns-discovery": "0.0.12",
+        "@waku/relay": "0.0.1",
+        "libp2p": "^0.42.2"
+      },
+      "devDependencies": {
+        "@libp2p/interface-address-manager": "^2.0.4",
+        "@libp2p/interface-connection": "^3.0.8",
+        "@libp2p/interface-connection-manager": "^1.3.7",
+        "@libp2p/interface-content-routing": "^2.1.1",
+        "@libp2p/interface-dht": "^2.0.1",
+        "@libp2p/interface-libp2p": "^1.1.2",
+        "@libp2p/interface-metrics": "^4.0.7",
+        "@libp2p/interface-peer-discovery": "^1.0.5",
+        "@libp2p/interface-peer-id": "^2.0.1",
+        "@libp2p/interface-peer-routing": "^1.0.8",
+        "@libp2p/interface-peer-store": "^1.2.8",
+        "@libp2p/interface-pubsub": "^3.0.6",
+        "@libp2p/interface-registrar": "^2.0.8",
+        "@libp2p/interface-transport": "^2.1.1",
+        "@rollup/plugin-commonjs": "^24.0.1",
+        "@rollup/plugin-json": "^6.0.0",
+        "@rollup/plugin-node-resolve": "^15.0.2",
+        "@typescript-eslint/eslint-plugin": "^5.57.0",
+        "@typescript-eslint/parser": "^5.51.0",
+        "@waku/build-utils": "*",
+        "@waku/interfaces": "0.0.13",
+        "cspell": "^6.31.1",
+        "eslint": "^8.35.0",
+        "eslint-config-prettier": "^8.6.0",
+        "eslint-plugin-eslint-comments": "^3.2.0",
+        "eslint-plugin-functional": "^5.0.4",
+        "eslint-plugin-import": "^2.27.5",
+        "eslint-plugin-prettier": "^4.2.1",
+        "interface-datastore": "^7.0.4",
+        "npm-run-all": "^4.1.5",
+        "prettier": "^2.8.8",
+        "rollup": "^3.21.3",
+        "typescript": "^5.0.4"
+      },
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "packages/sdk/node_modules/@libp2p/interface-dht": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@libp2p/interface-dht/-/interface-dht-2.0.3.tgz",
+      "integrity": "sha512-JAKbHvw3egaSeB7CHOf6PF/dLNim4kzAiXX+0IEz2lln8L32/Xf1T7KNOF/RSbSYqO9b7Xxc/b2fuSfyaMwwMQ==",
+      "dev": true,
+      "dependencies": {
+        "@libp2p/interface-peer-discovery": "^2.0.0",
+        "@libp2p/interface-peer-id": "^2.0.0",
+        "@libp2p/interface-peer-info": "^1.0.0",
+        "@libp2p/interfaces": "^3.0.0",
+        "multiformats": "^11.0.0"
+      },
+      "engines": {
+        "node": ">=16.0.0",
+        "npm": ">=7.0.0"
+      }
+    },
+    "packages/sdk/node_modules/@libp2p/interface-dht/node_modules/@libp2p/interface-peer-discovery": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@libp2p/interface-peer-discovery/-/interface-peer-discovery-2.0.0.tgz",
+      "integrity": "sha512-Mien5t3Tc+ntP5p50acKUYJN90ouMnq1lOTQDKQNvGcXoajG8A1AEYLocnzVia/MXiexuj6S/Q28WBBacoOlBg==",
+      "dev": true,
+      "dependencies": {
+        "@libp2p/interface-peer-info": "^1.0.0",
+        "@libp2p/interfaces": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=16.0.0",
+        "npm": ">=7.0.0"
+      }
+    },
     "packages/tests": {
       "name": "@waku/tests",
       "version": "0.0.1",
@@ -31323,10 +31390,10 @@
         "@types/tail": "^2.2.1",
         "@typescript-eslint/eslint-plugin": "^5.57.0",
         "@typescript-eslint/parser": "^5.51.0",
-        "@waku/create": "*",
         "@waku/dns-discovery": "*",
         "@waku/message-encryption": "*",
         "@waku/peer-exchange": "*",
+        "@waku/sdk": "*",
         "chai": "^4.3.7",
         "cspell": "^6.31.1",
         "debug": "^4.3.4",
@@ -36736,64 +36803,6 @@
         }
       }
     },
-    "@waku/create": {
-      "version": "file:packages/create",
-      "requires": {
-        "@chainsafe/libp2p-noise": "^11.0.0",
-        "@libp2p/interface-address-manager": "^2.0.4",
-        "@libp2p/interface-connection": "^3.0.8",
-        "@libp2p/interface-connection-manager": "^1.3.7",
-        "@libp2p/interface-content-routing": "^2.1.1",
-        "@libp2p/interface-dht": "^2.0.1",
-        "@libp2p/interface-libp2p": "^1.1.2",
-        "@libp2p/interface-metrics": "^4.0.7",
-        "@libp2p/interface-peer-discovery": "^1.0.5",
-        "@libp2p/interface-peer-id": "^2.0.1",
-        "@libp2p/interface-peer-routing": "^1.0.8",
-        "@libp2p/interface-peer-store": "^1.2.8",
-        "@libp2p/interface-pubsub": "^3.0.6",
-        "@libp2p/interface-registrar": "^2.0.8",
-        "@libp2p/interface-transport": "^2.1.1",
-        "@libp2p/mplex": "^7.1.1",
-        "@libp2p/websockets": "^5.0.3",
-        "@rollup/plugin-commonjs": "^24.0.1",
-        "@rollup/plugin-json": "^6.0.0",
-        "@rollup/plugin-node-resolve": "^15.0.2",
-        "@typescript-eslint/eslint-plugin": "^5.57.0",
-        "@typescript-eslint/parser": "^5.51.0",
-        "@waku/build-utils": "*",
-        "@waku/core": "0.0.18",
-        "@waku/dns-discovery": "0.0.12",
-        "@waku/interfaces": "0.0.13",
-        "@waku/relay": "0.0.1",
-        "cspell": "^6.31.1",
-        "eslint": "^8.35.0",
-        "eslint-config-prettier": "^8.6.0",
-        "eslint-plugin-eslint-comments": "^3.2.0",
-        "eslint-plugin-functional": "^5.0.4",
-        "eslint-plugin-import": "^2.27.5",
-        "eslint-plugin-prettier": "^4.2.1",
-        "interface-datastore": "^7.0.4",
-        "libp2p": "^0.42.2",
-        "npm-run-all": "^4.1.5",
-        "prettier": "^2.8.8",
-        "rollup": "^3.21.3",
-        "typescript": "^5.0.4"
-      },
-      "dependencies": {
-        "@libp2p/interface-dht": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "@libp2p/interface-peer-discovery": "^1.0.0",
-            "@libp2p/interface-peer-id": "^2.0.0",
-            "@libp2p/interface-peer-info": "^1.0.0",
-            "@libp2p/interfaces": "^3.0.0",
-            "multiformats": "^11.0.0"
-          }
-        }
-      }
-    },
     "@waku/dns-discovery": {
       "version": "file:packages/dns-discovery",
       "requires": {
@@ -37115,6 +37124,78 @@
         "typescript": "^5.0.4"
       }
     },
+    "@waku/sdk": {
+      "version": "file:packages/sdk",
+      "requires": {
+        "@chainsafe/libp2p-noise": "^11.0.0",
+        "@libp2p/interface-address-manager": "^2.0.4",
+        "@libp2p/interface-connection": "^3.0.8",
+        "@libp2p/interface-connection-manager": "^1.3.7",
+        "@libp2p/interface-content-routing": "^2.1.1",
+        "@libp2p/interface-dht": "^2.0.1",
+        "@libp2p/interface-libp2p": "^1.1.2",
+        "@libp2p/interface-metrics": "^4.0.7",
+        "@libp2p/interface-peer-discovery": "^1.0.5",
+        "@libp2p/interface-peer-id": "^2.0.1",
+        "@libp2p/interface-peer-routing": "^1.0.8",
+        "@libp2p/interface-peer-store": "^1.2.8",
+        "@libp2p/interface-pubsub": "^3.0.6",
+        "@libp2p/interface-registrar": "^2.0.8",
+        "@libp2p/interface-transport": "^2.1.1",
+        "@libp2p/mplex": "^7.1.1",
+        "@libp2p/websockets": "^5.0.3",
+        "@rollup/plugin-commonjs": "^24.0.1",
+        "@rollup/plugin-json": "^6.0.0",
+        "@rollup/plugin-node-resolve": "^15.0.2",
+        "@typescript-eslint/eslint-plugin": "^5.57.0",
+        "@typescript-eslint/parser": "^5.51.0",
+        "@waku/build-utils": "*",
+        "@waku/core": "0.0.18",
+        "@waku/dns-discovery": "0.0.12",
+        "@waku/interfaces": "0.0.13",
+        "@waku/relay": "0.0.1",
+        "cspell": "^6.31.1",
+        "eslint": "^8.35.0",
+        "eslint-config-prettier": "^8.6.0",
+        "eslint-plugin-eslint-comments": "^3.2.0",
+        "eslint-plugin-functional": "^5.0.4",
+        "eslint-plugin-import": "^2.27.5",
+        "eslint-plugin-prettier": "^4.2.1",
+        "interface-datastore": "^7.0.4",
+        "libp2p": "^0.42.2",
+        "npm-run-all": "^4.1.5",
+        "prettier": "^2.8.8",
+        "rollup": "^3.21.3",
+        "typescript": "^5.0.4"
+      },
+      "dependencies": {
+        "@libp2p/interface-dht": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/@libp2p/interface-dht/-/interface-dht-2.0.3.tgz",
+          "integrity": "sha512-JAKbHvw3egaSeB7CHOf6PF/dLNim4kzAiXX+0IEz2lln8L32/Xf1T7KNOF/RSbSYqO9b7Xxc/b2fuSfyaMwwMQ==",
+          "dev": true,
+          "requires": {
+            "@libp2p/interface-peer-discovery": "^2.0.0",
+            "@libp2p/interface-peer-id": "^2.0.0",
+            "@libp2p/interface-peer-info": "^1.0.0",
+            "@libp2p/interfaces": "^3.0.0",
+            "multiformats": "^11.0.0"
+          },
+          "dependencies": {
+            "@libp2p/interface-peer-discovery": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/@libp2p/interface-peer-discovery/-/interface-peer-discovery-2.0.0.tgz",
+              "integrity": "sha512-Mien5t3Tc+ntP5p50acKUYJN90ouMnq1lOTQDKQNvGcXoajG8A1AEYLocnzVia/MXiexuj6S/Q28WBBacoOlBg==",
+              "dev": true,
+              "requires": {
+                "@libp2p/interface-peer-info": "^1.0.0",
+                "@libp2p/interfaces": "^3.0.0"
+              }
+            }
+          }
+        }
+      }
+    },
     "@waku/tests": {
       "version": "file:packages/tests",
       "requires": {
@@ -37130,12 +37211,12 @@
         "@typescript-eslint/eslint-plugin": "^5.57.0",
         "@typescript-eslint/parser": "^5.51.0",
         "@waku/core": "*",
-        "@waku/create": "*",
         "@waku/dns-discovery": "*",
         "@waku/enr": "*",
         "@waku/interfaces": "*",
         "@waku/message-encryption": "*",
         "@waku/peer-exchange": "*",
+        "@waku/sdk": "*",
         "@waku/utils": "*",
         "app-root-path": "^3.1.0",
         "chai": "^4.3.7",
diff --git a/package.json b/package.json
index 3d65af5aec..514868454c 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
     "packages/peer-exchange",
     "packages/dns-discovery",
     "packages/message-encryption",
-    "packages/create",
+    "packages/sdk",
     "packages/tests",
     "packages/build-utils"
   ],
diff --git a/packages/core/src/lib/wait_for_remote_peer.ts b/packages/core/src/lib/wait_for_remote_peer.ts
index 3e90694c9c..222a5e981a 100644
--- a/packages/core/src/lib/wait_for_remote_peer.ts
+++ b/packages/core/src/lib/wait_for_remote_peer.ts
@@ -10,7 +10,7 @@ const log = debug("waku:wait-for-remote-peer");
  * Wait for a remote peer to be ready given the passed protocols.
  * Must be used after attempting to connect to nodes, using
  * {@link @waku/core.WakuNode.dial} or a bootstrap method with
- * {@link @waku/create.createLightNode}.
+ * {@link @waku/sdk.createLightNode}.
  *
  * If the passed protocols is a GossipSub protocol, then it resolves only once
  * a peer is in a mesh, to help ensure that other peers will send and receive
diff --git a/packages/create/.eslintrc.cjs b/packages/sdk/.eslintrc.cjs
similarity index 100%
rename from packages/create/.eslintrc.cjs
rename to packages/sdk/.eslintrc.cjs
diff --git a/packages/create/CHANGELOG.md b/packages/sdk/CHANGELOG.md
similarity index 100%
rename from packages/create/CHANGELOG.md
rename to packages/sdk/CHANGELOG.md
diff --git a/packages/create/package.json b/packages/sdk/package.json
similarity index 95%
rename from packages/create/package.json
rename to packages/sdk/package.json
index fc352b4156..7499223fd9 100644
--- a/packages/create/package.json
+++ b/packages/sdk/package.json
@@ -1,7 +1,7 @@
 {
-  "name": "@waku/create",
-  "version": "0.0.14",
-  "description": "Easily create a Waku node",
+  "name": "@waku/sdk",
+  "version": "0.0.15",
+  "description": "A unified SDK for easy creation and management of js-waku nodes.",
   "types": "./dist/index.d.ts",
   "module": "./dist/index.js",
   "exports": {
@@ -12,7 +12,7 @@
   },
   "type": "module",
   "author": "Waku Team",
-  "homepage": "https://github.com/waku-org/js-waku/tree/master/packages/create#readme",
+  "homepage": "https://github.com/waku-org/js-waku/tree/master/packages/sdk#readme",
   "repository": {
     "type": "git",
     "url": "https://github.com/waku-org/js-waku.git"
diff --git a/packages/create/rollup.config.js b/packages/sdk/rollup.config.js
similarity index 100%
rename from packages/create/rollup.config.js
rename to packages/sdk/rollup.config.js
diff --git a/packages/create/src/index.ts b/packages/sdk/src/index.ts
similarity index 100%
rename from packages/create/src/index.ts
rename to packages/sdk/src/index.ts
diff --git a/packages/create/src/libp2p_components.ts b/packages/sdk/src/libp2p_components.ts
similarity index 100%
rename from packages/create/src/libp2p_components.ts
rename to packages/sdk/src/libp2p_components.ts
diff --git a/packages/create/tsconfig.dev.json b/packages/sdk/tsconfig.dev.json
similarity index 100%
rename from packages/create/tsconfig.dev.json
rename to packages/sdk/tsconfig.dev.json
diff --git a/packages/create/tsconfig.json b/packages/sdk/tsconfig.json
similarity index 100%
rename from packages/create/tsconfig.json
rename to packages/sdk/tsconfig.json
diff --git a/packages/tests/package.json b/packages/tests/package.json
index 8beb794841..7a94c8c517 100644
--- a/packages/tests/package.json
+++ b/packages/tests/package.json
@@ -72,7 +72,7 @@
     "@types/tail": "^2.2.1",
     "@typescript-eslint/eslint-plugin": "^5.57.0",
     "@typescript-eslint/parser": "^5.51.0",
-    "@waku/create": "*",
+    "@waku/sdk": "*",
     "@waku/dns-discovery": "*",
     "@waku/message-encryption": "*",
     "@waku/peer-exchange": "*",
diff --git a/packages/tests/tests/dns-peer-discovery.spec.ts b/packages/tests/tests/dns-peer-discovery.spec.ts
index 4ddddde347..edfa9f3f75 100644
--- a/packages/tests/tests/dns-peer-discovery.spec.ts
+++ b/packages/tests/tests/dns-peer-discovery.spec.ts
@@ -3,13 +3,13 @@ import tests from "@libp2p/interface-peer-discovery-compliance-tests";
 import { Peer } from "@libp2p/interface-peer-store";
 import { createSecp256k1PeerId } from "@libp2p/peer-id-factory";
 import { PersistentPeerStore } from "@libp2p/peer-store";
-import { createLightNode } from "@waku/create";
 import {
   DnsNodeDiscovery,
   enrTree,
   PeerDiscoveryDns,
   wakuDnsDiscovery,
 } from "@waku/dns-discovery";
+import { createLightNode } from "@waku/sdk";
 import { expect } from "chai";
 import { MemoryDatastore } from "datastore-core";
 
diff --git a/packages/tests/tests/enr.node.spec.ts b/packages/tests/tests/enr.node.spec.ts
index ca843c5573..6c2c2812b6 100644
--- a/packages/tests/tests/enr.node.spec.ts
+++ b/packages/tests/tests/enr.node.spec.ts
@@ -1,8 +1,8 @@
 import { waitForRemotePeer } from "@waku/core";
-import { createRelayNode } from "@waku/create";
 import { EnrDecoder } from "@waku/enr";
 import type { RelayNode } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
+import { createRelayNode } from "@waku/sdk";
 import { expect } from "chai";
 
 import { makeLogFileName, NOISE_KEY_1 } from "../src/index.js";
diff --git a/packages/tests/tests/ephemeral.node.spec.ts b/packages/tests/tests/ephemeral.node.spec.ts
index 80e8fe884d..7dce782a06 100644
--- a/packages/tests/tests/ephemeral.node.spec.ts
+++ b/packages/tests/tests/ephemeral.node.spec.ts
@@ -4,7 +4,6 @@ import {
   DecodedMessage,
   waitForRemotePeer,
 } from "@waku/core";
-import { createLightNode } from "@waku/create";
 import { IFilterV2, IFilterV2Subscription, Protocols } from "@waku/interfaces";
 import type { LightNode } from "@waku/interfaces";
 import {
@@ -18,6 +17,7 @@ import {
   createDecoder as symDecoder,
   createEncoder as symEncoder,
 } from "@waku/message-encryption/symmetric";
+import { createLightNode } from "@waku/sdk";
 import { bytesToUtf8, utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
 import debug from "debug";
diff --git a/packages/tests/tests/filter_v1.node.spec.ts b/packages/tests/tests/filter_v1.node.spec.ts
index 630d20d2a6..6105582bcb 100644
--- a/packages/tests/tests/filter_v1.node.spec.ts
+++ b/packages/tests/tests/filter_v1.node.spec.ts
@@ -5,9 +5,9 @@ import {
   DefaultPubSubTopic,
   waitForRemotePeer,
 } from "@waku/core";
-import { createLightNode } from "@waku/create";
 import type { IFilter, LightNode } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
+import { createLightNode } from "@waku/sdk";
 import { bytesToUtf8, utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
 import debug from "debug";
diff --git a/packages/tests/tests/filter_v2.node.spec.ts b/packages/tests/tests/filter_v2.node.spec.ts
index fc6bf4f33d..7fd887f301 100644
--- a/packages/tests/tests/filter_v2.node.spec.ts
+++ b/packages/tests/tests/filter_v2.node.spec.ts
@@ -5,13 +5,13 @@ import {
   DefaultPubSubTopic,
   waitForRemotePeer,
 } from "@waku/core";
-import { createLightNode } from "@waku/create";
 import type {
   IFilterV2,
   IFilterV2Subscription,
   LightNode,
 } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
+import { createLightNode } from "@waku/sdk";
 import { bytesToUtf8, utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
 import debug from "debug";
diff --git a/packages/tests/tests/light_push.node.spec.ts b/packages/tests/tests/light_push.node.spec.ts
index 67c19ca135..81b534055e 100644
--- a/packages/tests/tests/light_push.node.spec.ts
+++ b/packages/tests/tests/light_push.node.spec.ts
@@ -1,7 +1,7 @@
 import { createEncoder, waitForRemotePeer } from "@waku/core";
-import { createLightNode } from "@waku/create";
 import { LightNode, SendError } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
+import { createLightNode } from "@waku/sdk";
 import { utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
 import debug from "debug";
diff --git a/packages/tests/tests/peer_exchange.node.spec.ts b/packages/tests/tests/peer_exchange.node.spec.ts
index 713d85a46f..55ae62b1cc 100644
--- a/packages/tests/tests/peer_exchange.node.spec.ts
+++ b/packages/tests/tests/peer_exchange.node.spec.ts
@@ -4,7 +4,6 @@ import {
   Fleet,
   getPredefinedBootstrapNodes,
 } from "@waku/core/lib/predefined_bootstrap_nodes";
-import { createLightNode, Libp2pComponents } from "@waku/create";
 import type { LightNode, PeerInfo } from "@waku/interfaces";
 import {
   PeerExchangeCodec,
@@ -12,6 +11,7 @@ import {
   WakuPeerExchange,
   wakuPeerExchangeDiscovery,
 } from "@waku/peer-exchange";
+import { createLightNode, Libp2pComponents } from "@waku/sdk";
 import { expect } from "chai";
 
 import { delay } from "../src/delay.js";
diff --git a/packages/tests/tests/relay.node.spec.ts b/packages/tests/tests/relay.node.spec.ts
index 0bf97ce7f9..49f7b515ac 100644
--- a/packages/tests/tests/relay.node.spec.ts
+++ b/packages/tests/tests/relay.node.spec.ts
@@ -6,7 +6,6 @@ import {
   DefaultPubSubTopic,
   waitForRemotePeer,
 } from "@waku/core";
-import { createRelayNode } from "@waku/create";
 import { RelayNode, SendError } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
 import {
@@ -20,6 +19,7 @@ import {
   createEncoder as createSymEncoder,
   generateSymmetricKey,
 } from "@waku/message-encryption/symmetric";
+import { createRelayNode } from "@waku/sdk";
 import { bytesToUtf8, utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
 import debug from "debug";
diff --git a/packages/tests/tests/store.node.spec.ts b/packages/tests/tests/store.node.spec.ts
index 2cbe5e3ebe..e4410f5d6f 100644
--- a/packages/tests/tests/store.node.spec.ts
+++ b/packages/tests/tests/store.node.spec.ts
@@ -6,7 +6,6 @@ import {
   PageDirection,
   waitForRemotePeer,
 } from "@waku/core";
-import { createLightNode } from "@waku/create";
 import type { IMessage, LightNode } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
 import {
@@ -20,6 +19,7 @@ import {
   createEncoder as createSymEncoder,
   generateSymmetricKey,
 } from "@waku/message-encryption/symmetric";
+import { createLightNode } from "@waku/sdk";
 import { bytesToUtf8, utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
 import debug from "debug";
diff --git a/packages/tests/tests/utils.spec.ts b/packages/tests/tests/utils.spec.ts
index f3bd2ca7b2..55c0a23b54 100644
--- a/packages/tests/tests/utils.spec.ts
+++ b/packages/tests/tests/utils.spec.ts
@@ -4,9 +4,9 @@ import {
   DefaultPubSubTopic,
   waitForRemotePeer,
 } from "@waku/core";
-import { createLightNode } from "@waku/create";
 import type { IFilter, IFilterV2, LightNode } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
+import { createLightNode } from "@waku/sdk";
 import { toAsyncIterator } from "@waku/utils";
 import { bytesToUtf8, utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
diff --git a/packages/tests/tests/wait_for_remote_peer.node.spec.ts b/packages/tests/tests/wait_for_remote_peer.node.spec.ts
index cb7a13874f..d8f7643e8b 100644
--- a/packages/tests/tests/wait_for_remote_peer.node.spec.ts
+++ b/packages/tests/tests/wait_for_remote_peer.node.spec.ts
@@ -1,7 +1,7 @@
 import { waitForRemotePeer } from "@waku/core";
-import { createLightNode, createRelayNode } from "@waku/create";
 import type { LightNode, RelayNode } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
+import { createLightNode, createRelayNode } from "@waku/sdk";
 import { expect } from "chai";
 
 import { delay, makeLogFileName, NOISE_KEY_1 } from "../src/index.js";
diff --git a/packages/tests/tests/waku.node.spec.ts b/packages/tests/tests/waku.node.spec.ts
index 4b64c5c4a3..99b006c680 100644
--- a/packages/tests/tests/waku.node.spec.ts
+++ b/packages/tests/tests/waku.node.spec.ts
@@ -5,7 +5,6 @@ import {
   DefaultUserAgent,
   waitForRemotePeer,
 } from "@waku/core";
-import { createLightNode, createRelayNode } from "@waku/create";
 import type { LightNode, RelayNode, Waku } from "@waku/interfaces";
 import { Protocols } from "@waku/interfaces";
 import {
@@ -13,6 +12,7 @@ import {
   createEncoder,
   generateSymmetricKey,
 } from "@waku/message-encryption/symmetric";
+import { createLightNode, createRelayNode } from "@waku/sdk";
 import { bytesToUtf8, utf8ToBytes } from "@waku/utils/bytes";
 import { expect } from "chai";
 

From 4a9c74e45427b7f93cf1a899dcf8441aaa03ac09 Mon Sep 17 00:00:00 2001
From: danisharora099 <danisharora099@gmail.com>
Date: Tue, 30 May 2023 17:24:44 +0530
Subject: [PATCH 2/6] feat: proxy @waku/core and @waku/utils through @waku/sdk

---
 package-lock.json          |   3 +
 packages/sdk/package.json  |   1 +
 packages/sdk/src/create.ts | 198 ++++++++++++++++++++++++++++++++++++
 packages/sdk/src/index.ts  | 201 +------------------------------------
 4 files changed, 205 insertions(+), 198 deletions(-)
 create mode 100644 packages/sdk/src/create.ts

diff --git a/package-lock.json b/package-lock.json
index a6677ce1d0..47ceaafc28 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31281,6 +31281,7 @@
       }
     },
     "packages/sdk": {
+      "name": "@waku/sdk",
       "version": "0.0.15",
       "license": "MIT OR Apache-2.0",
       "dependencies": {
@@ -31290,6 +31291,7 @@
         "@waku/core": "0.0.18",
         "@waku/dns-discovery": "0.0.12",
         "@waku/relay": "0.0.1",
+        "@waku/utils": "*",
         "libp2p": "^0.42.2"
       },
       "devDependencies": {
@@ -37154,6 +37156,7 @@
         "@waku/dns-discovery": "0.0.12",
         "@waku/interfaces": "0.0.13",
         "@waku/relay": "0.0.1",
+        "@waku/utils": "*",
         "cspell": "^6.31.1",
         "eslint": "^8.35.0",
         "eslint-config-prettier": "^8.6.0",
diff --git a/packages/sdk/package.json b/packages/sdk/package.json
index 7499223fd9..70ea846b19 100644
--- a/packages/sdk/package.json
+++ b/packages/sdk/package.json
@@ -53,6 +53,7 @@
     "@libp2p/websockets": "^5.0.3",
     "@waku/relay": "0.0.1",
     "@waku/core": "0.0.18",
+    "@waku/utils": "*",
     "@waku/dns-discovery": "0.0.12",
     "libp2p": "^0.42.2"
   },
diff --git a/packages/sdk/src/create.ts b/packages/sdk/src/create.ts
new file mode 100644
index 0000000000..22722ad625
--- /dev/null
+++ b/packages/sdk/src/create.ts
@@ -0,0 +1,198 @@
+import type { GossipSub } from "@chainsafe/libp2p-gossipsub";
+import { noise } from "@chainsafe/libp2p-noise";
+import type { Libp2p } from "@libp2p/interface-libp2p";
+import type { PeerDiscovery } from "@libp2p/interface-peer-discovery";
+import { mplex } from "@libp2p/mplex";
+import { webSockets } from "@libp2p/websockets";
+import { all as filterAll } from "@libp2p/websockets/filters";
+import {
+  DefaultUserAgent,
+  wakuFilterV1,
+  wakuFilterV2,
+  wakuLightPush,
+  WakuNode,
+  WakuOptions,
+  wakuStore,
+} from "@waku/core";
+import { enrTree, wakuDnsDiscovery } from "@waku/dns-discovery";
+import type {
+  FullNode,
+  IFilter,
+  IFilterV2,
+  LightNode,
+  ProtocolCreateOptions,
+  RelayNode,
+} from "@waku/interfaces";
+import { RelayCreateOptions, wakuGossipSub, wakuRelay } from "@waku/relay";
+import { createLibp2p, Libp2pOptions } from "libp2p";
+
+import type { Libp2pComponents } from "./libp2p_components.js";
+
+const DEFAULT_NODE_REQUIREMENTS = {
+  lightPush: 1,
+  filter: 1,
+  store: 1,
+};
+
+export { Libp2pComponents };
+
+/**
+ * Create a Waku node that uses Waku Light Push, Filter and Store to send and
+ * receive messages, enabling low resource consumption.
+ * If `useFilterV1` is set to true, the node will use Filter V1 protocol.
+ * If `useFilterV1` is set to false or undefined, the node will use Filter V2 protocol. (default behavior)
+ *
+ * **Note: This is NOT compatible with nwaku v0.11**
+ *
+ * @see https://github.com/status-im/nwaku/issues/1085
+ */
+export async function createLightNode(
+  options?: ProtocolCreateOptions & WakuOptions
+): Promise<LightNode> {
+  const libp2pOptions = options?.libp2p ?? {};
+  const peerDiscovery = libp2pOptions.peerDiscovery ?? [];
+  if (options?.defaultBootstrap) {
+    peerDiscovery.push(defaultPeerDiscovery());
+    Object.assign(libp2pOptions, { peerDiscovery });
+  }
+
+  const libp2p = await defaultLibp2p(
+    undefined,
+    libp2pOptions,
+    options?.userAgent
+  );
+
+  const store = wakuStore(options);
+  const lightPush = wakuLightPush(options);
+
+  let filter: (libp2p: Libp2p) => IFilter | IFilterV2;
+
+  if (options?.useFilterV1) {
+    filter = wakuFilterV1(options) as (libp2p: Libp2p) => IFilter;
+  } else {
+    filter = wakuFilterV2() as (libp2p: Libp2p) => IFilterV2;
+  }
+
+  return new WakuNode(
+    options ?? {},
+    libp2p,
+    store,
+    lightPush,
+    filter
+  ) as LightNode;
+}
+
+/**
+ * Create a Waku node that uses Waku Relay to send and receive messages,
+ * enabling some privacy preserving properties.
+ */
+export async function createRelayNode(
+  options?: ProtocolCreateOptions & WakuOptions & Partial<RelayCreateOptions>
+): Promise<RelayNode> {
+  const libp2pOptions = options?.libp2p ?? {};
+  const peerDiscovery = libp2pOptions.peerDiscovery ?? [];
+  if (options?.defaultBootstrap) {
+    peerDiscovery.push(defaultPeerDiscovery());
+    Object.assign(libp2pOptions, { peerDiscovery });
+  }
+
+  const libp2p = await defaultLibp2p(
+    wakuGossipSub(options),
+    libp2pOptions,
+    options?.userAgent
+  );
+
+  const relay = wakuRelay(options);
+
+  return new WakuNode(
+    options ?? {},
+    libp2p,
+    undefined,
+    undefined,
+    undefined,
+    relay
+  ) as RelayNode;
+}
+
+/**
+ * Create a Waku node that uses all Waku protocols.
+ * Implements generics to allow for conditional type checking for Filter V1 and V2 protocols.
+ * If `useFilterV1` is set to true, the node will use Filter V1 protocol.
+ * If `useFilterV1` is set to false or undefined, the node will use Filter V2 protocol. (default behavior)
+ *
+ * This helper is not recommended except if:
+ * - you are interfacing with nwaku v0.11 or below
+ * - you are doing some form of testing
+ *
+ * If you are building a full node, it is recommended to use
+ * [nwaku](github.com/status-im/nwaku) and its JSON RPC API or wip REST API.
+ *
+ * @see https://github.com/status-im/nwaku/issues/1085
+ * @internal
+ */
+export async function createFullNode(
+  options?: ProtocolCreateOptions & WakuOptions & Partial<RelayCreateOptions>
+): Promise<FullNode> {
+  const libp2pOptions = options?.libp2p ?? {};
+  const peerDiscovery = libp2pOptions.peerDiscovery ?? [];
+  if (options?.defaultBootstrap) {
+    peerDiscovery.push(defaultPeerDiscovery());
+    Object.assign(libp2pOptions, { peerDiscovery });
+  }
+
+  const libp2p = await defaultLibp2p(
+    wakuGossipSub(options),
+    libp2pOptions,
+    options?.userAgent
+  );
+
+  const store = wakuStore(options);
+  const lightPush = wakuLightPush(options);
+
+  let filter: (libp2p: Libp2p) => IFilter | IFilterV2;
+  if (!options?.useFilterV1) {
+    filter = wakuFilterV2();
+  } else {
+    filter = wakuFilterV1(options);
+  }
+
+  const relay = wakuRelay(options);
+
+  return new WakuNode(
+    options ?? {},
+    libp2p,
+    store,
+    lightPush,
+    filter,
+    relay
+  ) as FullNode;
+}
+
+export function defaultPeerDiscovery(): (
+  components: Libp2pComponents
+) => PeerDiscovery {
+  return wakuDnsDiscovery(enrTree["PROD"], DEFAULT_NODE_REQUIREMENTS);
+}
+
+export async function defaultLibp2p(
+  wakuGossipSub?: (components: Libp2pComponents) => GossipSub,
+  options?: Partial<Libp2pOptions>,
+  userAgent?: string
+): Promise<Libp2p> {
+  const libp2pOpts = Object.assign(
+    {
+      transports: [webSockets({ filter: filterAll })],
+      streamMuxers: [mplex()],
+      connectionEncryption: [noise()],
+      identify: {
+        host: {
+          agentVersion: userAgent ?? DefaultUserAgent,
+        },
+      },
+    } as Libp2pOptions,
+    wakuGossipSub ? { pubsub: wakuGossipSub } : {},
+    options ?? {}
+  );
+
+  return createLibp2p(libp2pOpts);
+}
diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts
index 22722ad625..53f98b63a7 100644
--- a/packages/sdk/src/index.ts
+++ b/packages/sdk/src/index.ts
@@ -1,198 +1,3 @@
-import type { GossipSub } from "@chainsafe/libp2p-gossipsub";
-import { noise } from "@chainsafe/libp2p-noise";
-import type { Libp2p } from "@libp2p/interface-libp2p";
-import type { PeerDiscovery } from "@libp2p/interface-peer-discovery";
-import { mplex } from "@libp2p/mplex";
-import { webSockets } from "@libp2p/websockets";
-import { all as filterAll } from "@libp2p/websockets/filters";
-import {
-  DefaultUserAgent,
-  wakuFilterV1,
-  wakuFilterV2,
-  wakuLightPush,
-  WakuNode,
-  WakuOptions,
-  wakuStore,
-} from "@waku/core";
-import { enrTree, wakuDnsDiscovery } from "@waku/dns-discovery";
-import type {
-  FullNode,
-  IFilter,
-  IFilterV2,
-  LightNode,
-  ProtocolCreateOptions,
-  RelayNode,
-} from "@waku/interfaces";
-import { RelayCreateOptions, wakuGossipSub, wakuRelay } from "@waku/relay";
-import { createLibp2p, Libp2pOptions } from "libp2p";
-
-import type { Libp2pComponents } from "./libp2p_components.js";
-
-const DEFAULT_NODE_REQUIREMENTS = {
-  lightPush: 1,
-  filter: 1,
-  store: 1,
-};
-
-export { Libp2pComponents };
-
-/**
- * Create a Waku node that uses Waku Light Push, Filter and Store to send and
- * receive messages, enabling low resource consumption.
- * If `useFilterV1` is set to true, the node will use Filter V1 protocol.
- * If `useFilterV1` is set to false or undefined, the node will use Filter V2 protocol. (default behavior)
- *
- * **Note: This is NOT compatible with nwaku v0.11**
- *
- * @see https://github.com/status-im/nwaku/issues/1085
- */
-export async function createLightNode(
-  options?: ProtocolCreateOptions & WakuOptions
-): Promise<LightNode> {
-  const libp2pOptions = options?.libp2p ?? {};
-  const peerDiscovery = libp2pOptions.peerDiscovery ?? [];
-  if (options?.defaultBootstrap) {
-    peerDiscovery.push(defaultPeerDiscovery());
-    Object.assign(libp2pOptions, { peerDiscovery });
-  }
-
-  const libp2p = await defaultLibp2p(
-    undefined,
-    libp2pOptions,
-    options?.userAgent
-  );
-
-  const store = wakuStore(options);
-  const lightPush = wakuLightPush(options);
-
-  let filter: (libp2p: Libp2p) => IFilter | IFilterV2;
-
-  if (options?.useFilterV1) {
-    filter = wakuFilterV1(options) as (libp2p: Libp2p) => IFilter;
-  } else {
-    filter = wakuFilterV2() as (libp2p: Libp2p) => IFilterV2;
-  }
-
-  return new WakuNode(
-    options ?? {},
-    libp2p,
-    store,
-    lightPush,
-    filter
-  ) as LightNode;
-}
-
-/**
- * Create a Waku node that uses Waku Relay to send and receive messages,
- * enabling some privacy preserving properties.
- */
-export async function createRelayNode(
-  options?: ProtocolCreateOptions & WakuOptions & Partial<RelayCreateOptions>
-): Promise<RelayNode> {
-  const libp2pOptions = options?.libp2p ?? {};
-  const peerDiscovery = libp2pOptions.peerDiscovery ?? [];
-  if (options?.defaultBootstrap) {
-    peerDiscovery.push(defaultPeerDiscovery());
-    Object.assign(libp2pOptions, { peerDiscovery });
-  }
-
-  const libp2p = await defaultLibp2p(
-    wakuGossipSub(options),
-    libp2pOptions,
-    options?.userAgent
-  );
-
-  const relay = wakuRelay(options);
-
-  return new WakuNode(
-    options ?? {},
-    libp2p,
-    undefined,
-    undefined,
-    undefined,
-    relay
-  ) as RelayNode;
-}
-
-/**
- * Create a Waku node that uses all Waku protocols.
- * Implements generics to allow for conditional type checking for Filter V1 and V2 protocols.
- * If `useFilterV1` is set to true, the node will use Filter V1 protocol.
- * If `useFilterV1` is set to false or undefined, the node will use Filter V2 protocol. (default behavior)
- *
- * This helper is not recommended except if:
- * - you are interfacing with nwaku v0.11 or below
- * - you are doing some form of testing
- *
- * If you are building a full node, it is recommended to use
- * [nwaku](github.com/status-im/nwaku) and its JSON RPC API or wip REST API.
- *
- * @see https://github.com/status-im/nwaku/issues/1085
- * @internal
- */
-export async function createFullNode(
-  options?: ProtocolCreateOptions & WakuOptions & Partial<RelayCreateOptions>
-): Promise<FullNode> {
-  const libp2pOptions = options?.libp2p ?? {};
-  const peerDiscovery = libp2pOptions.peerDiscovery ?? [];
-  if (options?.defaultBootstrap) {
-    peerDiscovery.push(defaultPeerDiscovery());
-    Object.assign(libp2pOptions, { peerDiscovery });
-  }
-
-  const libp2p = await defaultLibp2p(
-    wakuGossipSub(options),
-    libp2pOptions,
-    options?.userAgent
-  );
-
-  const store = wakuStore(options);
-  const lightPush = wakuLightPush(options);
-
-  let filter: (libp2p: Libp2p) => IFilter | IFilterV2;
-  if (!options?.useFilterV1) {
-    filter = wakuFilterV2();
-  } else {
-    filter = wakuFilterV1(options);
-  }
-
-  const relay = wakuRelay(options);
-
-  return new WakuNode(
-    options ?? {},
-    libp2p,
-    store,
-    lightPush,
-    filter,
-    relay
-  ) as FullNode;
-}
-
-export function defaultPeerDiscovery(): (
-  components: Libp2pComponents
-) => PeerDiscovery {
-  return wakuDnsDiscovery(enrTree["PROD"], DEFAULT_NODE_REQUIREMENTS);
-}
-
-export async function defaultLibp2p(
-  wakuGossipSub?: (components: Libp2pComponents) => GossipSub,
-  options?: Partial<Libp2pOptions>,
-  userAgent?: string
-): Promise<Libp2p> {
-  const libp2pOpts = Object.assign(
-    {
-      transports: [webSockets({ filter: filterAll })],
-      streamMuxers: [mplex()],
-      connectionEncryption: [noise()],
-      identify: {
-        host: {
-          agentVersion: userAgent ?? DefaultUserAgent,
-        },
-      },
-    } as Libp2pOptions,
-    wakuGossipSub ? { pubsub: wakuGossipSub } : {},
-    options ?? {}
-  );
-
-  return createLibp2p(libp2pOpts);
-}
+export * from "./create.js";
+export * as waku from "@waku/core";
+export * as utils from "@waku/utils";

From b5e913917a8a476244990aff8b09d55786649a97 Mon Sep 17 00:00:00 2001
From: danisharora099 <danisharora099@gmail.com>
Date: Sat, 3 Jun 2023 14:38:29 +0530
Subject: [PATCH 3/6] address comments

---
 .size-limit.cjs           |  7 +++----
 packages/sdk/src/index.ts | 14 ++++++++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/.size-limit.cjs b/.size-limit.cjs
index 32134cf361..fbba568040 100644
--- a/.size-limit.cjs
+++ b/.size-limit.cjs
@@ -5,12 +5,11 @@ module.exports = [
     import: "{ WakuNode }",
   },
   {
-    name: "Waku default setup",
+    name: "Waku Simple Light Node",
     path: ["packages/sdk/bundle/index.js", "packages/core/bundle/index.js"],
     import: {
-      "packages/sdk/bundle/index.js": "{ createLightNode }",
-      "packages/core/bundle/index.js":
-        "{ waitForRemotePeer, createEncoder, createDecoder }",
+      "packages/sdk/bundle/index.js":
+        "{ createLightNode, waitForRemotePeer, createEncoder, createDecoder, bytesToUtf8, utf8ToBytes,Decoder, Encoder, DecodedMessage, WakuNode  }",
     },
   },
   {
diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts
index 53f98b63a7..5be26e5a8c 100644
--- a/packages/sdk/src/index.ts
+++ b/packages/sdk/src/index.ts
@@ -1,3 +1,17 @@
+export {
+  waitForRemotePeer,
+  createEncoder,
+  createDecoder,
+  WakuNode,
+} from "@waku/core";
+export {
+  DecodedMessage,
+  Decoder,
+  Encoder,
+} from "@waku/core/lib/message/version_0";
+
+export { utf8ToBytes, bytesToUtf8 } from "@waku/utils/bytes";
+
 export * from "./create.js";
 export * as waku from "@waku/core";
 export * as utils from "@waku/utils";

From eda5f6b82520a019fa5d6ba78434fda6e47586fd Mon Sep 17 00:00:00 2001
From: danisharora099 <danisharora099@gmail.com>
Date: Sat, 3 Jun 2023 14:41:07 +0530
Subject: [PATCH 4/6] update package-lock

---
 package-lock.json | 82 +++++++----------------------------------------
 1 file changed, 12 insertions(+), 70 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 0a8e6536af..dc279d42f7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -30843,6 +30843,7 @@
     "packages/create": {
       "name": "@waku/create",
       "version": "0.0.15",
+      "extraneous": true,
       "license": "MIT OR Apache-2.0",
       "dependencies": {
         "@chainsafe/libp2p-noise": "^11.0.0",
@@ -31281,15 +31282,15 @@
     },
     "packages/sdk": {
       "name": "@waku/sdk",
-      "version": "0.0.15",
+      "version": "0.0.16",
       "license": "MIT OR Apache-2.0",
       "dependencies": {
         "@chainsafe/libp2p-noise": "^11.0.0",
         "@libp2p/mplex": "^7.1.1",
         "@libp2p/websockets": "^5.0.3",
-        "@waku/core": "0.0.18",
-        "@waku/dns-discovery": "0.0.12",
-        "@waku/relay": "0.0.1",
+        "@waku/core": "0.0.19",
+        "@waku/dns-discovery": "0.0.13",
+        "@waku/relay": "0.0.2",
         "@waku/utils": "*",
         "libp2p": "^0.42.2"
       },
@@ -31312,9 +31313,9 @@
         "@rollup/plugin-json": "^6.0.0",
         "@rollup/plugin-node-resolve": "^15.0.2",
         "@typescript-eslint/eslint-plugin": "^5.57.0",
-        "@typescript-eslint/parser": "^5.51.0",
+        "@typescript-eslint/parser": "^5.59.8",
         "@waku/build-utils": "*",
-        "@waku/interfaces": "0.0.13",
+        "@waku/interfaces": "0.0.14",
         "cspell": "^6.31.1",
         "eslint": "^8.35.0",
         "eslint-config-prettier": "^8.6.0",
@@ -31391,7 +31392,6 @@
         "@types/tail": "^2.2.1",
         "@typescript-eslint/eslint-plugin": "^5.57.0",
         "@typescript-eslint/parser": "^5.59.8",
-        "@waku/create": "*",
         "@waku/dns-discovery": "*",
         "@waku/message-encryption": "*",
         "@waku/peer-exchange": "*",
@@ -36805,64 +36805,6 @@
         }
       }
     },
-    "@waku/create": {
-      "version": "file:packages/create",
-      "requires": {
-        "@chainsafe/libp2p-noise": "^11.0.0",
-        "@libp2p/interface-address-manager": "^2.0.4",
-        "@libp2p/interface-connection": "^3.0.8",
-        "@libp2p/interface-connection-manager": "^1.3.7",
-        "@libp2p/interface-content-routing": "^2.1.1",
-        "@libp2p/interface-dht": "^2.0.1",
-        "@libp2p/interface-libp2p": "^1.1.2",
-        "@libp2p/interface-metrics": "^4.0.7",
-        "@libp2p/interface-peer-discovery": "^1.0.5",
-        "@libp2p/interface-peer-id": "^2.0.1",
-        "@libp2p/interface-peer-routing": "^1.0.8",
-        "@libp2p/interface-peer-store": "^1.2.8",
-        "@libp2p/interface-pubsub": "^3.0.6",
-        "@libp2p/interface-registrar": "^2.0.8",
-        "@libp2p/interface-transport": "^2.1.1",
-        "@libp2p/mplex": "^7.1.1",
-        "@libp2p/websockets": "^5.0.3",
-        "@rollup/plugin-commonjs": "^24.0.1",
-        "@rollup/plugin-json": "^6.0.0",
-        "@rollup/plugin-node-resolve": "^15.0.2",
-        "@typescript-eslint/eslint-plugin": "^5.57.0",
-        "@typescript-eslint/parser": "^5.59.8",
-        "@waku/build-utils": "*",
-        "@waku/core": "0.0.19",
-        "@waku/dns-discovery": "0.0.13",
-        "@waku/interfaces": "0.0.14",
-        "@waku/relay": "0.0.2",
-        "cspell": "^6.31.1",
-        "eslint": "^8.35.0",
-        "eslint-config-prettier": "^8.6.0",
-        "eslint-plugin-eslint-comments": "^3.2.0",
-        "eslint-plugin-functional": "^5.0.4",
-        "eslint-plugin-import": "^2.27.5",
-        "eslint-plugin-prettier": "^4.2.1",
-        "interface-datastore": "^7.0.4",
-        "libp2p": "^0.42.2",
-        "npm-run-all": "^4.1.5",
-        "prettier": "^2.8.8",
-        "rollup": "^3.21.3",
-        "typescript": "^5.0.4"
-      },
-      "dependencies": {
-        "@libp2p/interface-dht": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "@libp2p/interface-peer-discovery": "^1.0.0",
-            "@libp2p/interface-peer-id": "^2.0.0",
-            "@libp2p/interface-peer-info": "^1.0.0",
-            "@libp2p/interfaces": "^3.0.0",
-            "multiformats": "^11.0.0"
-          }
-        }
-      }
-    },
     "@waku/dns-discovery": {
       "version": "file:packages/dns-discovery",
       "requires": {
@@ -37208,12 +37150,12 @@
         "@rollup/plugin-json": "^6.0.0",
         "@rollup/plugin-node-resolve": "^15.0.2",
         "@typescript-eslint/eslint-plugin": "^5.57.0",
-        "@typescript-eslint/parser": "^5.51.0",
+        "@typescript-eslint/parser": "^5.59.8",
         "@waku/build-utils": "*",
-        "@waku/core": "0.0.18",
-        "@waku/dns-discovery": "0.0.12",
-        "@waku/interfaces": "0.0.13",
-        "@waku/relay": "0.0.1",
+        "@waku/core": "0.0.19",
+        "@waku/dns-discovery": "0.0.13",
+        "@waku/interfaces": "0.0.14",
+        "@waku/relay": "0.0.2",
         "@waku/utils": "*",
         "cspell": "^6.31.1",
         "eslint": "^8.35.0",

From a36c826d51940143ba08a63d0707f2fc29304d2f Mon Sep 17 00:00:00 2001
From: Sasha <118575614+weboko@users.noreply.github.com>
Date: Mon, 5 Jun 2023 13:06:10 +0200
Subject: [PATCH 5/6] Update .size-limit.cjs

Co-authored-by: fryorcraken.eth <110212804+fryorcraken@users.noreply.github.com>
---
 .size-limit.cjs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.size-limit.cjs b/.size-limit.cjs
index fbba568040..9b2554e32f 100644
--- a/.size-limit.cjs
+++ b/.size-limit.cjs
@@ -9,7 +9,7 @@ module.exports = [
     path: ["packages/sdk/bundle/index.js", "packages/core/bundle/index.js"],
     import: {
       "packages/sdk/bundle/index.js":
-        "{ createLightNode, waitForRemotePeer, createEncoder, createDecoder, bytesToUtf8, utf8ToBytes,Decoder, Encoder, DecodedMessage, WakuNode  }",
+        "{ createLightNode, waitForRemotePeer, createEncoder, createDecoder, bytesToUtf8, utf8ToBytes, Decoder, Encoder, DecodedMessage, WakuNode  }",
     },
   },
   {

From 90e37ac8641821fb8fc2ed954fa90aa5ae013321 Mon Sep 17 00:00:00 2001
From: Sasha <oleksandr@status.im>
Date: Mon, 5 Jun 2023 13:23:15 +0200
Subject: [PATCH 6/6] integrate to release please

---
 .release-please-manifest.json | 1 -
 release-please-config.json    | 4 +++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 45d8dc98f1..0bc8573814 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -8,6 +8,5 @@
   "packages/core": "0.0.19",
   "packages/dns-discovery": "0.0.13",
   "packages/message-encryption": "0.0.17",
-  "packages/create": "0.0.15",
   "packages/relay": "0.0.2"
 }
diff --git a/release-please-config.json b/release-please-config.json
index 11a1a1b27a..2b46a832ed 100644
--- a/release-please-config.json
+++ b/release-please-config.json
@@ -15,7 +15,9 @@
     "packages/core": {},
     "packages/dns-discovery": {},
     "packages/message-encryption": {},
-    "packages/create": {},
+    "packages/sdk": {
+      "release-as": "0.0.16"
+    },
     "packages/relay": {}
   }
 }