[
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)