[ 
https://issues.apache.org/jira/browse/BEAM-1754?focusedWorklogId=762460&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-762460
 ]

ASF GitHub Bot logged work on BEAM-1754:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 26/Apr/22 18:05
            Start Date: 26/Apr/22 18:05
    Worklog Time Spent: 10m 
      Work Description: damccorm commented on code in PR #17341:
URL: https://github.com/apache/beam/pull/17341#discussion_r859006987


##########
sdks/typescript/src/apache_beam/internal/serialize.ts:
##########
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import * as serialize_closures from "serialize-closures";
+import Long from "long";
+
+import { requireForSerialization, registeredObjects } from "../serialization";
+
+const BIGINT_PREFIX = ":bigint:";
+
+const generator = function* () {};
+
+requireForSerialization("apache_beam", {
+  generator: generator,
+  generator_prototype: generator.prototype,
+  TextEncoder: TextEncoder,
+  TextDecoder: TextDecoder,
+  Long,
+});
+
+export function serializeFn(obj: unknown): Uint8Array {
+  return new TextEncoder().encode(
+    JSON.stringify(
+      serialize_closures.serialize(
+        obj,
+        serialize_closures.defaultBuiltins.concat(registeredObjects)
+      ),
+      (key, value) =>
+        typeof value === "bigint" ? `${BIGINT_PREFIX}${value}` : value
+    )
+  );
+}
+
+export function deserializeFn(s: Uint8Array): any {
+  return serialize_closures.deserialize(
+    JSON.parse(new TextDecoder().decode(s), (key, value) =>
+      typeof value === "string" && value.startsWith(BIGINT_PREFIX)
+        ? BigInt(value.substr(BIGINT_PREFIX.length))
+        : value
+    ),
+    serialize_closures.defaultBuiltins.concat(registeredObjects)
+  );
+}
+
+let fakeSerializeCounter = 0;
+const fakeSerializeMap = new Map<string, any>();
+
+function fakeSeralize(obj) {
+  fakeSerializeCounter += 1;
+  const id = "s_" + fakeSerializeCounter;
+  fakeSerializeMap.set(id, obj);
+  return new TextEncoder().encode(id);
+}
+
+function fakeDeserialize(s) {
+  return fakeSerializeMap.get(new TextDecoder().decode(s));
+}

Review Comment:
   ```suggestion
   ```
   
   None of this is used AFAIK and even if it is it probably should be in a 
separate file for mocks





Issue Time Tracking
-------------------

    Worklog Id:     (was: 762460)
    Time Spent: 5h  (was: 4h 50m)

> Will Dataflow ever support Node.js with an SDK similar to Java or Python?
> -------------------------------------------------------------------------
>
>                 Key: BEAM-1754
>                 URL: https://issues.apache.org/jira/browse/BEAM-1754
>             Project: Beam
>          Issue Type: New Feature
>          Components: sdk-ideas
>            Reporter: Diego Zuluaga
>            Assignee: Kerry Donny-Clark
>            Priority: P3
>              Labels: node.js
>          Time Spent: 5h
>  Remaining Estimate: 0h
>
> I like the philosophy behind DataFlow and found the Java and Python samples 
> highly comprehensible. However, I have to admit that for most Node.js 
> developers who have little background on typed languages and are used to get 
> up to speed with frameworks incredibly fast, learning Dataflow might take 
> some learning curve that they/we're not used to. So, I wonder if at any point 
> in time Dataflow will provide a Node.js SDK. Maybe this is out of the 
> question, but I wanted to run it by the team as it would be awesome to have 
> something along these lines!
> Thanks,
> Diego
> Question originaly posted in SO:
> http://stackoverflow.com/questions/42893436/will-dataflow-ever-support-node-js-with-and-sdk-similar-to-java-or-python



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to