Skip to content

Commit

Permalink
feat: introduce nodejs_comlink package
Browse files Browse the repository at this point in the history
* also add bundler to comlink_language_server
  • Loading branch information
TheEdward162 committed Jan 26, 2024
1 parent 29e4316 commit 715c335
Show file tree
Hide file tree
Showing 21 changed files with 1,250 additions and 30 deletions.
20 changes: 15 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ WASI_SDK_URL="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk
CORE_DIST=core/dist
CORE_WASM=${CORE_DIST}/core.wasm
CORE_ASYNCIFY_WASM=${CORE_DIST}/core-async.wasm
CORE_COMLINK_WASM=${CORE_DIST}/comlink.wasm
# Test core
TEST_CORE_WASM=${CORE_DIST}/test-core.wasm
TEST_CORE_ASYNCIFY_WASM=${CORE_DIST}/test-core-async.wasm
Expand Down Expand Up @@ -97,6 +98,11 @@ ${CORE_ASYNCIFY_WASM}: ${CORE_WASM}
${TEST_CORE_ASYNCIFY_WASM}: ${TEST_CORE_WASM}
wasm-opt -Os --asyncify ${TEST_CORE_WASM} --output ${TEST_CORE_ASYNCIFY_WASM}

${CORE_COMLINK_WASM}:
mkdir -p ${CORE_DIST}
cd core; cargo build --package comlink_wasm --target wasm32-wasi ${CARGO_FLAGS}
wasm-opt -Os ${WASM_OPT_FLAGS} core/target/wasm32-wasi/${CARGO_PROFILE}/comlink_wasm.wasm --output ${CORE_COMLINK_WASM}

${WASI_SDK_FOLDER}:
wget -qO - ${WASI_SDK_URL} | tar xzvf - -C core

Expand Down Expand Up @@ -155,11 +161,18 @@ deps_nodejs_host:
build_nodejs_host: deps_nodejs_host ${CORE_ASYNCIFY_WASM}
mkdir -p ${NODEJS_HOST_ASSETS}
cp ${CORE_ASYNCIFY_WASM} ${NODEJS_HOST_ASSETS}/core-async.wasm
cd packages/nodejs_host && yarn build
cd packages/nodejs_host && yarn build
test_nodejs_host: build_nodejs_host ${TEST_CORE_ASYNCIFY_WASM}
cp ${TEST_CORE_ASYNCIFY_WASM} ${NODEJS_HOST_ASSETS}/test-core-async.wasm
cd packages/nodejs_host && yarn test

deps_nodejs_comlink:
cd packages/nodejs_comlink && yarn install
build_nodejs_comlink: deps_nodejs_host ${CORE_COMLINK_WASM}
mkdir -p packages/nodejs_comlink/assets
cp ${CORE_COMLINK_WASM} packages/nodejs_comlink/assets/comlink.wasm
cd packages/nodejs_comlink && yarn build

# Cloudflare worker Host
deps_cfw_host:
cd packages/cloudflare_worker_host && yarn install
Expand Down Expand Up @@ -187,10 +200,7 @@ test_python_host: build_python_host ${TEST_CORE_WASM}
build_map_std_package: ${MAP_STD}
cp -r core_js/map-std/types packages/map_std/

deps_comlink_language_server:
deps_comlink_language_server: build_nodejs_comlink
cd packages/comlink_language_server && yarn install
build_comlink_language_server: deps_comlink_language_server
mkdir -p packages/comlink_language_server/assets
cd core; cargo build --package comlink_wasm --target wasm32-wasi ${CARGO_FLAGS}
wasm-opt -Os ${WASM_OPT_FLAGS} core/target/wasm32-wasi/${CARGO_PROFILE}/comlink_wasm.wasm --output packages/comlink_language_server/assets/comlink.wasm
cd packages/comlink_language_server && yarn build
15 changes: 9 additions & 6 deletions packages/comlink_language_server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,25 @@
"version": "2.0.0",
"author": "Superface Team",
"license": "MIT",
"main": "dist/server/lib.js",
"main": "dist/server/server.js",
"files": [
"dist/**/*",
"assets/**/*"
],
"devDependencies": {
"@superfaceai/comlink": "link:../nodejs_comlink",
"@types/node": "^18",
"rimraf": "^5",
"typescript": "^5"
},
"dependencies": {
"ts-loader": "^9.5.1",
"typescript": "^5",
"vscode-languageserver": "^9",
"vscode-languageserver-textdocument": "^1"
"vscode-languageserver-textdocument": "^1",
"webpack": "^5.90.0",
"webpack-cli": "^5.1.4"
},
"scripts": {
"build": "tsc -p tsconfig.json",
"check": "tsc -p tsconfig.json --noEmit",
"build": "webpack",
"build:watch": "yarn build --watch",
"prebuild": "yarn clean",
"clean": "rimraf dist/",
Expand Down
2 changes: 1 addition & 1 deletion packages/comlink_language_server/src/document.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import {
TextDocumentContentChangeEvent,
} from 'vscode-languageserver';
import { Position, TextDocument } from 'vscode-languageserver-textdocument';
import { ComlinkParser } from '@superfaceai/comlink';

import { MapDocument, ProfileDocument } from './documents';
import { Context, ctxWorkWithProgress } from './lib';
import { listProfileSymbols } from './symbols';
import { ComlinkParser } from './parser';

export class ComlinkDocument implements TextDocument {
static PROFILE_EXTENSIONS = ['profile.ts'];
Expand Down
4 changes: 2 additions & 2 deletions packages/comlink_language_server/src/documents.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { promises as fsp } from 'fs';
import { promises as fsp } from 'node:fs';
import {
DocumentUri,
TextDocumentContentChangeEvent,
} from 'vscode-languageserver';

import { ComlinkDocument } from './document';
import { stripUriPrefix } from './lib';
import { Diagnostic, Profile, ProfileSpans } from './parser/model';
import { Diagnostic, Profile, ProfileSpans } from '@superfaceai/comlink';

export type ProfileDocument = {
kind: 'profile',
Expand Down
1 change: 0 additions & 1 deletion packages/comlink_language_server/src/parser/common_lib

This file was deleted.

2 changes: 1 addition & 1 deletion packages/comlink_language_server/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import {
SymbolInformation,
TextDocumentSyncKind
} from 'vscode-languageserver/node';
import { ComlinkParser } from '@superfaceai/comlink';

import { ComlinkDocument } from './document';
import { ComlinkDocuments } from './documents';
import { Logger, stripUriPrefix, WorkContext } from './lib';
import { listWorkspaceSymbols, loadWorkspaceDocuments } from './workspace';
import { ComlinkParser } from './parser'

/**
* Entry point class to the server.
Expand Down
2 changes: 1 addition & 1 deletion packages/comlink_language_server/src/workspace.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { DocumentSymbol, SymbolInformation } from 'vscode-languageserver-types';
import { ComlinkParser } from '@superfaceai/comlink';

import { ComlinkDocument } from './document';
import { ComlinkDocuments } from './documents';
import { Context, ctxWorkWithProgress, recursiveWalk, WalkEntry } from './lib';
import { ComlinkParser } from './parser';

/**
* Walks over the provided folders and ensures that all documents are loaded in the manager.
Expand Down
3 changes: 1 addition & 2 deletions packages/comlink_language_server/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"compilerOptions": {
"declaration": true,
"declarationDir": "dist/",
"declaration": false,
"downlevelIteration": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
Expand Down
27 changes: 27 additions & 0 deletions packages/comlink_language_server/webpack.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// esbuild src/server.ts --bundle --target=node18 --platform=node --format=esm --tree-shaking=true --loader:.wasm=file --outdir=dist
import path from 'node:path'
import { fileURLToPath } from 'node:url'

export default {
mode: 'production',
entry: './src/server.ts',
module: {
rules: [
{
test: /\.ts$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.ts', '.js'],
},
target: 'node18',
output: {
path: path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'dist/'),
filename: 'server.js',
}
}

//
Loading

0 comments on commit 715c335

Please sign in to comment.