pipewire 1.0.0 → 1.1.1
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.
- package/.vscode/settings.json +11 -0
- package/README.md +46 -0
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +12 -0
- package/dist/context.js.map +1 -0
- package/dist/core.d.ts +32 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +31 -0
- package/dist/core.js.map +1 -0
- package/dist/dict.d.ts +3 -0
- package/dist/dict.d.ts.map +1 -0
- package/dist/dict.js +11 -0
- package/dist/dict.js.map +1 -0
- package/dist/hook.d.ts +3 -0
- package/dist/hook.d.ts.map +1 -0
- package/dist/hook.js +14 -0
- package/dist/hook.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/list.d.ts +2 -0
- package/dist/list.d.ts.map +1 -0
- package/dist/list.js +7 -0
- package/dist/list.js.map +1 -0
- package/dist/loop.d.ts +6 -0
- package/dist/loop.d.ts.map +1 -0
- package/dist/loop.js +13 -0
- package/dist/loop.js.map +1 -0
- package/dist/main-loop.d.ts +47 -0
- package/dist/main-loop.d.ts.map +1 -0
- package/dist/main-loop.js +15 -0
- package/dist/main-loop.js.map +1 -0
- package/dist/pipewire.d.ts +19 -0
- package/dist/pipewire.d.ts.map +1 -0
- package/dist/pipewire.js +5 -0
- package/dist/pipewire.js.map +1 -0
- package/dist/properties.d.ts +2 -0
- package/dist/properties.d.ts.map +1 -0
- package/dist/properties.js +3 -0
- package/dist/properties.js.map +1 -0
- package/dist/proxy.d.ts +11 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +5 -0
- package/dist/proxy.js.map +1 -0
- package/dist/registry.d.ts +10 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +11 -0
- package/dist/registry.js.map +1 -0
- package/examples/event-registry.ts +45 -0
- package/package.json +24 -5
- package/tsconfig.json +5 -27
package/README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# node-pipewire
|
|
2
|
+
|
|
3
|
+
Node.js bindings for [PipeWire](https://pipewire.org/) using [koffi](https://koffi.dev/) FFI.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Node.js
|
|
8
|
+
- PipeWire (`libpipewire-0.3.so.0`)
|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Build
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm run build
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import * as pw from "pipewire";
|
|
26
|
+
|
|
27
|
+
pw.pipewire.pw_init(0, null);
|
|
28
|
+
|
|
29
|
+
const loop = pw.main_loop.pw_main_loop_new(null);
|
|
30
|
+
const context = pw.context.pw_context_new(pw.main_loop.pw_main_loop_get_loop(loop), null, 0);
|
|
31
|
+
const core = pw.core.pw_context_connect(context, null, 0);
|
|
32
|
+
const registry = pw.core.pw_core_get_registry(core, 3, 0);
|
|
33
|
+
|
|
34
|
+
// ...add listeners, then run the main loop
|
|
35
|
+
await new Promise((resolve) => pw.main_loop.pw_main_loop_run.async(loop, resolve));
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
See [`examples/event-registry.ts`](examples/event-registry.ts) for a complete example:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx tsx examples/event-registry.ts
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## License
|
|
45
|
+
|
|
46
|
+
ISC
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const pw_context: import("koffi").TypeObject;
|
|
2
|
+
export declare const pw_context_new: {
|
|
3
|
+
(...args: any[]): any;
|
|
4
|
+
async: (...args: any[]) => any;
|
|
5
|
+
info: {
|
|
6
|
+
name: string;
|
|
7
|
+
arguments: import("koffi").TypeObject[];
|
|
8
|
+
result: import("koffi").TypeObject;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare const pw_context_destroy: {
|
|
12
|
+
(...args: any[]): any;
|
|
13
|
+
async: (...args: any[]) => any;
|
|
14
|
+
info: {
|
|
15
|
+
name: string;
|
|
16
|
+
arguments: import("koffi").TypeObject[];
|
|
17
|
+
result: import("koffi").TypeObject;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,4BAA6B,CAAC;AAErD,eAAO,MAAM,cAAc;;;;;;;;CAIzB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;CAA2E,CAAC"}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
import { pw_loop } from "./loop.js";
|
|
3
|
+
import { pw_properties } from "./properties.js";
|
|
4
|
+
const pipewire = koffi.load("libpipewire-0.3.so.0");
|
|
5
|
+
export const pw_context = koffi.opaque("pw_context");
|
|
6
|
+
export const pw_context_new = pipewire.func("pw_context_new", koffi.pointer(pw_context), [
|
|
7
|
+
koffi.pointer(pw_loop),
|
|
8
|
+
koffi.pointer(pw_properties),
|
|
9
|
+
"size_t"
|
|
10
|
+
]);
|
|
11
|
+
export const pw_context_destroy = pipewire.func("pw_context_destroy", "void", [koffi.pointer(pw_context)]);
|
|
12
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;IACrF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IACtB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;IAC5B,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/core.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const pw_core: import("koffi").TypeObject;
|
|
2
|
+
export declare const pw_registry: import("koffi").TypeObject;
|
|
3
|
+
export declare const pw_context_connect: {
|
|
4
|
+
(...args: any[]): any;
|
|
5
|
+
async: (...args: any[]) => any;
|
|
6
|
+
info: {
|
|
7
|
+
name: string;
|
|
8
|
+
arguments: import("koffi").TypeObject[];
|
|
9
|
+
result: import("koffi").TypeObject;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare const pw_core_get_registry: {
|
|
13
|
+
(...args: any[]): any;
|
|
14
|
+
async: (...args: any[]) => any;
|
|
15
|
+
info: {
|
|
16
|
+
name: string;
|
|
17
|
+
arguments: import("koffi").TypeObject[];
|
|
18
|
+
result: import("koffi").TypeObject;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export declare const pw_registry_events_globals: import("koffi").TypeObject;
|
|
22
|
+
export declare const pw_registry_events: import("koffi").TypeObject;
|
|
23
|
+
export declare const pw_core_disconnect: {
|
|
24
|
+
(...args: any[]): any;
|
|
25
|
+
async: (...args: any[]) => any;
|
|
26
|
+
info: {
|
|
27
|
+
name: string;
|
|
28
|
+
arguments: import("koffi").TypeObject[];
|
|
29
|
+
result: import("koffi").TypeObject;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,4BAA0B,CAAC;AAC/C,eAAO,MAAM,WAAW,4BAA8B,CAAC;AAEvD,eAAO,MAAM,kBAAkB;;;;;;;;CAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;CAI/B,CAAC;AAEH,eAAO,MAAM,0BAA0B,4BAOrC,CAAC;AAEH,eAAO,MAAM,kBAAkB,4BAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;CAAuE,CAAC"}
|
package/dist/core.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
import { pw_context } from "./context.js";
|
|
3
|
+
import { pw_properties } from "./properties.js";
|
|
4
|
+
const pipewire = koffi.load("libpipewire-0.3.so.0");
|
|
5
|
+
export const pw_core = koffi.opaque("pw_core");
|
|
6
|
+
export const pw_registry = koffi.opaque("pw_registry");
|
|
7
|
+
export const pw_context_connect = pipewire.func("pw_context_connect", koffi.pointer(pw_core), [
|
|
8
|
+
koffi.pointer(pw_context),
|
|
9
|
+
koffi.pointer(pw_properties),
|
|
10
|
+
"size_t"
|
|
11
|
+
]);
|
|
12
|
+
export const pw_core_get_registry = pipewire.func("pw_core_get_registry", koffi.pointer(pw_registry), [
|
|
13
|
+
koffi.pointer(pw_core),
|
|
14
|
+
"uint32_t",
|
|
15
|
+
"size_t"
|
|
16
|
+
]);
|
|
17
|
+
export const pw_registry_events_globals = koffi.proto("void", [
|
|
18
|
+
"void*", // data
|
|
19
|
+
"uint32_t", // id
|
|
20
|
+
"uint32_t", // permissions
|
|
21
|
+
"const char*", // type
|
|
22
|
+
"uint32_t", // version
|
|
23
|
+
"void*" // props
|
|
24
|
+
]);
|
|
25
|
+
export const pw_registry_events = koffi.struct("pw_registry_events", {
|
|
26
|
+
vesion: "uint32_t",
|
|
27
|
+
global: "void*", // TODO
|
|
28
|
+
global_remove: "void*" // TODO
|
|
29
|
+
});
|
|
30
|
+
export const pw_core_disconnect = pipewire.func("pw_core_disconnect", "int", [koffi.pointer(pw_core)]);
|
|
31
|
+
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IAC1F,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;IAC5B,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;IAClG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IACtB,UAAU;IACV,QAAQ;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;IAC1D,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,cAAc;IAC1B,aAAa,EAAE,OAAO;IACtB,UAAU,EAAE,UAAU;IACtB,OAAO,CAAC,QAAQ;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE;IACjE,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,OAAO,EAAE,OAAO;IACxB,aAAa,EAAE,OAAO,CAAC,OAAO;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/dict.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../src/dict.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,4BAGxB,CAAC;AAEH,eAAO,MAAM,QAAQ,4BAInB,CAAC"}
|
package/dist/dict.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
export const spa_dict_item = koffi.struct("spa_dict_item", {
|
|
3
|
+
key: "const char*",
|
|
4
|
+
value: "const char*"
|
|
5
|
+
});
|
|
6
|
+
export const spa_dict = koffi.struct("spa_dict", {
|
|
7
|
+
flags: "uint32_t",
|
|
8
|
+
n_items: "uint32_t",
|
|
9
|
+
items: koffi.pointer(spa_dict_item)
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=dict.js.map
|
package/dist/dict.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dict.js","sourceRoot":"","sources":["../src/dict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE;IACvD,GAAG,EAAE,aAAa;IAClB,KAAK,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;IAC7C,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;CACtC,CAAC,CAAC"}
|
package/dist/hook.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,4BAGxB,CAAC;AAIH,eAAO,MAAM,QAAQ,4BAKnB,CAAC"}
|
package/dist/hook.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
import { spa_list } from "./list.js";
|
|
3
|
+
export const spa_callbacks = koffi.struct("spa_callbacks", {
|
|
4
|
+
funcs: "void*",
|
|
5
|
+
data: "void*"
|
|
6
|
+
});
|
|
7
|
+
const spa_hook_opaque = koffi.opaque("spa_hook");
|
|
8
|
+
export const spa_hook = koffi.struct(spa_hook_opaque, {
|
|
9
|
+
link: spa_list,
|
|
10
|
+
cb: spa_callbacks,
|
|
11
|
+
removed: koffi.pointer(koffi.proto("void", [koffi.pointer(spa_hook_opaque)])),
|
|
12
|
+
priv: "void*"
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=hook.js.map
|
package/dist/hook.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE;IACvD,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,OAAO;CAChB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE;IAClD,IAAI,EAAE,QAAQ;IACd,EAAE,EAAE,aAAa;IACjB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,EAAE,OAAO;CAChB,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as context from "./context.js";
|
|
2
|
+
import * as core from "./core.js";
|
|
3
|
+
import * as hook from "./hook.js";
|
|
4
|
+
import * as main_loop from "./main-loop.js";
|
|
5
|
+
import * as pipewire from "./pipewire.js";
|
|
6
|
+
import * as proxy from "./proxy.js";
|
|
7
|
+
import * as registry from "./registry.js";
|
|
8
|
+
export { context, core, hook, main_loop, pipewire, proxy, registry };
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as context from "./context.js";
|
|
2
|
+
import * as core from "./core.js";
|
|
3
|
+
import * as hook from "./hook.js";
|
|
4
|
+
import * as main_loop from "./main-loop.js";
|
|
5
|
+
import * as pipewire from "./pipewire.js";
|
|
6
|
+
import * as proxy from "./proxy.js";
|
|
7
|
+
import * as registry from "./registry.js";
|
|
8
|
+
export { context, core, hook, main_loop, pipewire, proxy, registry };
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/list.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,4BAGnB,CAAC"}
|
package/dist/list.js
ADDED
package/dist/list.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE;IAClD,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;IACpC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;CACvC,CAAC,CAAC"}
|
package/dist/loop.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const spa_system: import("koffi").TypeObject;
|
|
2
|
+
export declare const spa_loop: import("koffi").TypeObject;
|
|
3
|
+
export declare const spa_loop_control: import("koffi").TypeObject;
|
|
4
|
+
export declare const spa_loop_utils: import("koffi").TypeObject;
|
|
5
|
+
export declare const pw_loop: import("koffi").TypeObject;
|
|
6
|
+
//# sourceMappingURL=loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,4BAA6B,CAAC;AACrD,eAAO,MAAM,QAAQ,4BAA2B,CAAC;AACjD,eAAO,MAAM,gBAAgB,4BAAmC,CAAC;AAEjE,eAAO,MAAM,cAAc,4BAAiC,CAAC;AAE7D,eAAO,MAAM,OAAO,4BAMlB,CAAC"}
|
package/dist/loop.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
export const spa_system = koffi.opaque("spa_system");
|
|
3
|
+
export const spa_loop = koffi.opaque("spa_loop");
|
|
4
|
+
export const spa_loop_control = koffi.opaque("spa_loop_control");
|
|
5
|
+
export const spa_loop_utils = koffi.opaque("spa_loop_utils"); // TODO
|
|
6
|
+
export const pw_loop = koffi.struct("pw_loop", {
|
|
7
|
+
system: koffi.pointer(spa_system),
|
|
8
|
+
loop: koffi.pointer(spa_loop),
|
|
9
|
+
control: koffi.pointer(spa_loop_control),
|
|
10
|
+
utils: koffi.pointer(spa_loop_utils),
|
|
11
|
+
name: "const char*"
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=loop.js.map
|
package/dist/loop.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO;AAErE,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;IAC3C,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACxC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;IACpC,IAAI,EAAE,aAAa;CACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare const pw_main_loop: import("koffi").TypeObject;
|
|
2
|
+
export declare const pw_main_loop_new: {
|
|
3
|
+
(...args: any[]): any;
|
|
4
|
+
async: (...args: any[]) => any;
|
|
5
|
+
info: {
|
|
6
|
+
name: string;
|
|
7
|
+
arguments: import("koffi").TypeObject[];
|
|
8
|
+
result: import("koffi").TypeObject;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare const pw_main_loop_get_loop: {
|
|
12
|
+
(...args: any[]): any;
|
|
13
|
+
async: (...args: any[]) => any;
|
|
14
|
+
info: {
|
|
15
|
+
name: string;
|
|
16
|
+
arguments: import("koffi").TypeObject[];
|
|
17
|
+
result: import("koffi").TypeObject;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export declare const pw_main_loop_run: {
|
|
21
|
+
(...args: any[]): any;
|
|
22
|
+
async: (...args: any[]) => any;
|
|
23
|
+
info: {
|
|
24
|
+
name: string;
|
|
25
|
+
arguments: import("koffi").TypeObject[];
|
|
26
|
+
result: import("koffi").TypeObject;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export declare const pw_main_loop_quit: {
|
|
30
|
+
(...args: any[]): any;
|
|
31
|
+
async: (...args: any[]) => any;
|
|
32
|
+
info: {
|
|
33
|
+
name: string;
|
|
34
|
+
arguments: import("koffi").TypeObject[];
|
|
35
|
+
result: import("koffi").TypeObject;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export declare const pw_main_loop_destroy: {
|
|
39
|
+
(...args: any[]): any;
|
|
40
|
+
async: (...args: any[]) => any;
|
|
41
|
+
info: {
|
|
42
|
+
name: string;
|
|
43
|
+
arguments: import("koffi").TypeObject[];
|
|
44
|
+
result: import("koffi").TypeObject;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=main-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-loop.d.ts","sourceRoot":"","sources":["../src/main-loop.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,4BAA+B,CAAC;AAEzD,eAAO,MAAM,gBAAgB;;;;;;;;CAE3B,CAAC;AACH,eAAO,MAAM,qBAAqB;;;;;;;;CAEhC,CAAC;AACH,eAAO,MAAM,gBAAgB;;;;;;;;CAA0E,CAAC;AACxG,eAAO,MAAM,iBAAiB;;;;;;;;CAA2E,CAAC;AAC1G,eAAO,MAAM,oBAAoB;;;;;;;;CAA+E,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
import { spa_dict } from "./dict.js";
|
|
3
|
+
import { pw_loop } from "./loop.js";
|
|
4
|
+
const pipewire = koffi.load("libpipewire-0.3.so.0");
|
|
5
|
+
export const pw_main_loop = koffi.opaque("pw_main_loop");
|
|
6
|
+
export const pw_main_loop_new = pipewire.func("pw_main_loop_new", koffi.pointer(pw_main_loop), [
|
|
7
|
+
koffi.pointer(spa_dict)
|
|
8
|
+
]);
|
|
9
|
+
export const pw_main_loop_get_loop = pipewire.func("pw_main_loop_get_loop", koffi.pointer(pw_loop), [
|
|
10
|
+
koffi.pointer(pw_main_loop)
|
|
11
|
+
]);
|
|
12
|
+
export const pw_main_loop_run = pipewire.func("pw_main_loop_run", "int", [koffi.pointer(pw_main_loop)]);
|
|
13
|
+
export const pw_main_loop_quit = pipewire.func("pw_main_loop_quit", "int", [koffi.pointer(pw_main_loop)]);
|
|
14
|
+
export const pw_main_loop_destroy = pipewire.func("pw_main_loop_destroy", "void", [koffi.pointer(pw_main_loop)]);
|
|
15
|
+
//# sourceMappingURL=main-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-loop.js","sourceRoot":"","sources":["../src/main-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;IAC3F,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;CAC1B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IAChG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;CAC9B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACxG,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1G,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const pw_init: {
|
|
2
|
+
(...args: any[]): any;
|
|
3
|
+
async: (...args: any[]) => any;
|
|
4
|
+
info: {
|
|
5
|
+
name: string;
|
|
6
|
+
arguments: import("koffi").TypeObject[];
|
|
7
|
+
result: import("koffi").TypeObject;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare const pw_deinit: {
|
|
11
|
+
(...args: any[]): any;
|
|
12
|
+
async: (...args: any[]) => any;
|
|
13
|
+
info: {
|
|
14
|
+
name: string;
|
|
15
|
+
arguments: import("koffi").TypeObject[];
|
|
16
|
+
result: import("koffi").TypeObject;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=pipewire.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipewire.d.ts","sourceRoot":"","sources":["../src/pipewire.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO;;;;;;;;CAAyD,CAAC;AAC9E,eAAO,MAAM,SAAS;;;;;;;;CAAyC,CAAC"}
|
package/dist/pipewire.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipewire.js","sourceRoot":"","sources":["../src/pipewire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,4BAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../src/properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO"}
|
package/dist/proxy.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const pw_proxy: import("koffi").TypeObject;
|
|
2
|
+
export declare const pw_proxy_destroy: {
|
|
3
|
+
(...args: any[]): any;
|
|
4
|
+
async: (...args: any[]) => any;
|
|
5
|
+
info: {
|
|
6
|
+
name: string;
|
|
7
|
+
arguments: import("koffi").TypeObject[];
|
|
8
|
+
result: import("koffi").TypeObject;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,4BAA2B,CAAC;AAEjD,eAAO,MAAM,gBAAgB;;;;;;;;CAAuE,CAAC"}
|
package/dist/proxy.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
const pipewire = koffi.load("libpipewire-0.3.so.0");
|
|
3
|
+
export const pw_proxy = koffi.opaque("pw_proxy");
|
|
4
|
+
export const pw_proxy_destroy = pipewire.func("pw_proxy_destroy", "void", [koffi.pointer(pw_proxy)]);
|
|
5
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const pw_registry_add_listener: {
|
|
2
|
+
(...args: any[]): any;
|
|
3
|
+
async: (...args: any[]) => any;
|
|
4
|
+
info: {
|
|
5
|
+
name: string;
|
|
6
|
+
arguments: import("koffi").TypeObject[];
|
|
7
|
+
result: import("koffi").TypeObject;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,wBAAwB;;;;;;;;CAKnC,CAAC"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
import { pw_registry, pw_registry_events } from "./core.js";
|
|
3
|
+
import { spa_hook } from "./hook.js";
|
|
4
|
+
const pipewire = koffi.load("libpipewire-0.3.so.0");
|
|
5
|
+
export const pw_registry_add_listener = pipewire.func("pw_registry_add_listener", "int", [
|
|
6
|
+
koffi.pointer(pw_registry),
|
|
7
|
+
koffi.pointer(spa_hook),
|
|
8
|
+
koffi.pointer(pw_registry_events),
|
|
9
|
+
"void*"
|
|
10
|
+
]);
|
|
11
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE;IACrF,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;IAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvB,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACjC,OAAO;CACV,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import koffi from "koffi";
|
|
2
|
+
import * as pw from "../src/index.js";
|
|
3
|
+
|
|
4
|
+
(async () => {
|
|
5
|
+
pw.pipewire.pw_init(0, null);
|
|
6
|
+
|
|
7
|
+
const loop = pw.main_loop.pw_main_loop_new(null);
|
|
8
|
+
const context = pw.context.pw_context_new(pw.main_loop.pw_main_loop_get_loop(loop), null, 0);
|
|
9
|
+
const core = pw.core.pw_context_connect(context, null, 0);
|
|
10
|
+
const registry = pw.core.pw_core_get_registry(core, 3, 0);
|
|
11
|
+
const registry_listener = Buffer.alloc(koffi.sizeof(pw.hook.spa_hook));
|
|
12
|
+
|
|
13
|
+
const registry_event_global = (
|
|
14
|
+
data: Buffer,
|
|
15
|
+
id: number,
|
|
16
|
+
permissions: number,
|
|
17
|
+
type: string,
|
|
18
|
+
version: number,
|
|
19
|
+
props: Buffer
|
|
20
|
+
) => {
|
|
21
|
+
console.log(`object: id:${id} type:${type}/${version}`);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const registry_events = {
|
|
25
|
+
version: 0,
|
|
26
|
+
global: koffi.register(registry_event_global, koffi.pointer(pw.core.pw_registry_events_globals)),
|
|
27
|
+
global_remove: null
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
pw.registry.pw_registry_add_listener(registry, registry_listener, registry_events, null);
|
|
31
|
+
|
|
32
|
+
process.on("SIGINT", () => {
|
|
33
|
+
pw.main_loop.pw_main_loop_quit(loop);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
console.log("Starting PipeWire main loop...");
|
|
37
|
+
await new Promise((resolve) => pw.main_loop.pw_main_loop_run.async(loop, resolve));
|
|
38
|
+
|
|
39
|
+
pw.proxy.pw_proxy_destroy(registry);
|
|
40
|
+
pw.core.pw_core_disconnect(core);
|
|
41
|
+
pw.context.pw_context_destroy(context);
|
|
42
|
+
pw.main_loop.pw_main_loop_destroy(loop);
|
|
43
|
+
|
|
44
|
+
console.log("PipeWire main loop exited, cleanup done.");
|
|
45
|
+
})();
|
package/package.json
CHANGED
|
@@ -1,19 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pipewire",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "",
|
|
5
|
-
"main": "index.js",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"
|
|
7
|
+
"build": "tsc"
|
|
8
8
|
},
|
|
9
9
|
"keywords": [],
|
|
10
|
-
"author": "",
|
|
10
|
+
"author": "Raraph84",
|
|
11
11
|
"license": "ISC",
|
|
12
|
-
"type": "
|
|
12
|
+
"type": "module",
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"koffi": "^3.3.2"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
+
"@types/node": "^26.6.3",
|
|
18
|
+
"prettier": "^3.9.9",
|
|
17
19
|
"typescript": "^7.0.2"
|
|
20
|
+
},
|
|
21
|
+
"prettier": {
|
|
22
|
+
"tabWidth": 4,
|
|
23
|
+
"trailingComma": "none",
|
|
24
|
+
"printWidth": 120,
|
|
25
|
+
"overrides": [
|
|
26
|
+
{
|
|
27
|
+
"files": [
|
|
28
|
+
"package.json",
|
|
29
|
+
"package-lock.json",
|
|
30
|
+
"tsconfig.json"
|
|
31
|
+
],
|
|
32
|
+
"options": {
|
|
33
|
+
"tabWidth": 2
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
]
|
|
18
37
|
}
|
|
19
38
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,44 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
// Visit https://aka.ms/tsconfig to read more about this file
|
|
3
2
|
"compilerOptions": {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
// "outDir": "./dist",
|
|
7
|
-
|
|
8
|
-
// Environment Settings
|
|
9
|
-
// See also https://aka.ms/tsconfig/module
|
|
3
|
+
"rootDir": "./src",
|
|
4
|
+
"outDir": "./dist",
|
|
10
5
|
"module": "nodenext",
|
|
11
6
|
"target": "esnext",
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
// "lib": ["esnext"],
|
|
15
|
-
// "types": ["node"],
|
|
16
|
-
// and npm install -D @types/node
|
|
17
|
-
|
|
18
|
-
// Other Outputs
|
|
7
|
+
"lib": ["esnext"],
|
|
8
|
+
"types": ["node"],
|
|
19
9
|
"sourceMap": true,
|
|
20
10
|
"declaration": true,
|
|
21
11
|
"declarationMap": true,
|
|
22
|
-
|
|
23
|
-
// Stricter Typechecking Options
|
|
24
12
|
"noUncheckedIndexedAccess": true,
|
|
25
13
|
"exactOptionalPropertyTypes": true,
|
|
26
|
-
|
|
27
|
-
// Style Options
|
|
28
|
-
// "noImplicitReturns": true,
|
|
29
|
-
// "noImplicitOverride": true,
|
|
30
|
-
// "noUnusedLocals": true,
|
|
31
|
-
// "noUnusedParameters": true,
|
|
32
|
-
// "noFallthroughCasesInSwitch": true,
|
|
33
|
-
// "noPropertyAccessFromIndexSignature": true,
|
|
34
|
-
|
|
35
|
-
// Recommended Options
|
|
36
14
|
"strict": true,
|
|
37
15
|
"jsx": "react-jsx",
|
|
38
16
|
"verbatimModuleSyntax": true,
|
|
39
17
|
"isolatedModules": true,
|
|
40
18
|
"noUncheckedSideEffectImports": true,
|
|
41
19
|
"moduleDetection": "force",
|
|
42
|
-
"skipLibCheck": true
|
|
20
|
+
"skipLibCheck": true
|
|
43
21
|
}
|
|
44
22
|
}
|