@matter/create 0.11.0 → 0.11.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/dist/esm/build.config.d.ts.map +1 -1
- package/dist/esm/build.config.ts.js +25 -5
- package/dist/esm/build.config.ts.js.map +1 -1
- package/dist/esm/config.d.ts +3 -1
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +7 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/new-project.d.ts.map +1 -1
- package/dist/esm/new-project.js +42 -7
- package/dist/esm/new-project.js.map +1 -1
- package/dist/templates/index.json +65 -28
- package/package.json +2 -2
- package/src/build.config.ts +35 -8
- package/src/config.ts +10 -2
- package/src/new-project.ts +49 -6
- /package/dist/templates/{controller-cli → controller}/ControllerNode.ts +0 -0
- /package/dist/templates/{device-onoff-bridge-cli → device-bridge-onoff}/BridgedDevicesNode.ts +0 -0
- /package/dist/templates/{device-onoff-composed-cli → device-composed-onoff}/ComposedDeviceNode.ts +0 -0
- /package/dist/templates/{device-window-covering-light-composed → device-composed-wc-light}/IlluminatedRollerShade.ts +0 -0
- /package/dist/templates/{device-socket-with-measurement → device-measuring-socket}/MeasuredSocketDevice.ts +0 -0
- /package/dist/templates/{device-onoff-multiple-devices-cli → device-multiple-onoff}/MultiDeviceNode.ts +0 -0
- /package/dist/templates/{device-onoff-cli → device-onoff}/DeviceNode.ts +0 -0
- /package/dist/templates/{device-onoff-advanced-cli → device-onoff-advanced}/DeviceNodeFull.ts +0 -0
- /package/dist/templates/{device-onoff-advanced-cli → device-onoff-advanced}/cluster/DummyThreadNetworkCommissioningServer.ts +0 -0
- /package/dist/templates/{device-onoff-advanced-cli → device-onoff-advanced}/cluster/DummyWifiNetworkCommissioningServer.ts +0 -0
- /package/dist/templates/{device-onoff-advanced-cli → device-onoff-advanced}/cluster/MyFancyOwnFunctionality.ts +0 -0
- /package/dist/templates/{device-temperature-humidity-sensor-cli → device-sensor}/SensorDeviceNode.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.config.d.ts","sourceRoot":"","sources":["../../src/build.config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKxC;;GAEG;AACH,wBAAsB,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"build.config.d.ts","sourceRoot":"","sources":["../../src/build.config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKxC;;GAEG;AACH,wBAAsB,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,OAAO,iBA6ExD"}
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* Copyright 2022-2024 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
7
7
|
import { basename, dirname } from "path";
|
|
8
8
|
async function before({ project }) {
|
|
9
9
|
const examplesPkg = project.pkg.findPackage("@matter/examples");
|
|
10
10
|
const createPkg = project.pkg.findPackage("@matter/create");
|
|
11
11
|
await mkdir(createPkg.resolve("dist/templates"), { recursive: true });
|
|
12
|
+
const matterJsVersion = `~${await readFile(project.pkg.workspace.resolve("version.txt"), "utf-8")}`;
|
|
12
13
|
const readmes = await examplesPkg.glob("src/*/README.md");
|
|
13
14
|
const templates = Array();
|
|
14
15
|
for (const readme of readmes) {
|
|
@@ -17,6 +18,7 @@ async function before({ project }) {
|
|
|
17
18
|
if (!match) {
|
|
18
19
|
continue;
|
|
19
20
|
}
|
|
21
|
+
const dependencies = {};
|
|
20
22
|
const baseLength = examplesPkg.resolve(`src/${name}`).length + 1;
|
|
21
23
|
const sources = await examplesPkg.glob(`src/${name}/**/*.ts`);
|
|
22
24
|
let entrypoint;
|
|
@@ -25,22 +27,40 @@ async function before({ project }) {
|
|
|
25
27
|
if (!entrypoint && filename.indexOf("/") === -1) {
|
|
26
28
|
entrypoint = filename;
|
|
27
29
|
}
|
|
28
|
-
await
|
|
30
|
+
const source = await readFile(file, "utf-8");
|
|
31
|
+
for (const [, pkgName] of source.matchAll(/import .* from "(@[^/"]+\/[^/"]+|[^/"]+)[^"]*";/g)) {
|
|
32
|
+
if (dependencies[pkgName]) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (pkgName.startsWith("@matter/") || pkgName.startsWith("@project-chip/")) {
|
|
36
|
+
dependencies[pkgName] = matterJsVersion;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const version = examplesPkg.json.dependencies[pkgName];
|
|
40
|
+
if (version !== void 0) {
|
|
41
|
+
dependencies[pkgName] = version;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const outFilename = createPkg.resolve("dist/templates", name, filename);
|
|
45
|
+
await mkdir(dirname(outFilename), { recursive: true });
|
|
46
|
+
await writeFile(outFilename, source);
|
|
29
47
|
}
|
|
30
48
|
if (!entrypoint) {
|
|
31
49
|
continue;
|
|
32
50
|
}
|
|
33
51
|
templates.push({
|
|
34
52
|
name,
|
|
53
|
+
dependencies,
|
|
35
54
|
description: match[1],
|
|
36
55
|
entrypoint
|
|
37
56
|
});
|
|
38
57
|
}
|
|
39
|
-
const
|
|
40
|
-
const typescriptVersion =
|
|
58
|
+
const tools = project.pkg.findPackage("@matter/tools").json;
|
|
59
|
+
const typescriptVersion = tools.dependencies.typescript;
|
|
60
|
+
const nodeTypesVersion = tools.devDependencies["@types/node"];
|
|
41
61
|
const config = {
|
|
42
|
-
matterJsVersion,
|
|
43
62
|
typescriptVersion,
|
|
63
|
+
nodeTypesVersion,
|
|
44
64
|
templates
|
|
45
65
|
};
|
|
46
66
|
await writeFile(createPkg.resolve("dist/templates/index.json"), JSON.stringify(config, void 0, 4));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/build.config.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,OAAO,UAAU,iBAAiB;AAC3C,SAAS,UAAU,eAAe;AAMlC,eAAsB,OAAO,EAAE,QAAQ,GAAoB;AACvD,QAAM,cAAc,QAAQ,IAAI,YAAY,kBAAkB;AAC9D,QAAM,YAAY,QAAQ,IAAI,YAAY,gBAAgB;AAE1D,QAAM,MAAM,UAAU,QAAQ,gBAAgB,GAAG,EAAE,WAAW,KAAK,CAAC;AAIpE,QAAM,kBAAkB,IAAI,MAAM,SAAS,QAAQ,IAAI,UAAU,QAAQ,aAAa,GAAG,OAAO,CAAC;AAEjG,QAAM,UAAU,MAAM,YAAY,KAAK,iBAAiB;AACxD,QAAM,YAAY,MAAgB;AAClC,aAAW,UAAU,SAAS;AAC1B,UAAM,OAAO,SAAS,QAAQ,MAAM,CAAC;AACrC,UAAM,SAAS,MAAM,SAAS,QAAQ,OAAO,GAAG,MAAM,SAAS;AAC/D,QAAI,CAAC,OAAO;AACR;AAAA,IACJ;AAEA,UAAM,eAAe,CAAC;AAEtB,UAAM,aAAa,YAAY,QAAQ,OAAO,IAAI,EAAE,EAAE,SAAS;AAC/D,UAAM,UAAU,MAAM,YAAY,KAAK,OAAO,IAAI,UAAU;AAC5D,QAAI;AACJ,eAAW,QAAQ,SAAS;AACxB,YAAM,WAAW,KAAK,MAAM,UAAU;AACtC,UAAI,CAAC,cAAc,SAAS,QAAQ,GAAG,MAAM,IAAI;AAC7C,qBAAa;AAAA,MACjB;AACA,YAAM,SAAS,MAAM,SAAS,MAAM,OAAO;AAI3C,iBAAW,CAAC,EAAE,OAAO,KAAK,OAAO,SAAS,kDAAkD,GAAG;AAC3F,YAAI,aAAa,OAAO,GAAG;AACvB;AAAA,QACJ;AAEA,YAAI,QAAQ,WAAW,UAAU,KAAK,QAAQ,WAAW,gBAAgB,GAAG;AACxE,uBAAa,OAAO,IAAI;AACxB;AAAA,QACJ;AAEA,cAAM,UAAU,YAAY,KAAK,aAAa,OAAO;AACrD,YAAI,YAAY,QAAW;AACvB,uBAAa,OAAO,IAAI;AAAA,QAC5B;AAAA,MACJ;AAEA,YAAM,cAAc,UAAU,QAAQ,kBAAkB,MAAM,QAAQ;AACtE,YAAM,MAAM,QAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AACrD,YAAM,UAAU,aAAa,MAAM;AAAA,IACvC;AAEA,QAAI,CAAC,YAAY;AACb;AAAA,IACJ;AAEA,cAAU,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA,aAAa,MAAM,CAAC;AAAA,MACpB;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,QAAM,QAAQ,QAAQ,IAAI,YAAY,eAAe,EAAE;AACvD,QAAM,oBAAoB,MAAM,aAAa;AAC7C,QAAM,mBAAmB,MAAM,gBAAgB,aAAa;AAE5D,QAAM,SAAiB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,UAAU,UAAU,QAAQ,2BAA2B,GAAG,KAAK,UAAU,QAAQ,QAAW,CAAC,CAAC;AACxG;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/config.d.ts
CHANGED
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
export declare const TEMPLATE_DIR: string;
|
|
7
7
|
export interface Template {
|
|
8
8
|
name: string;
|
|
9
|
+
dependencies: Record<string, string>;
|
|
9
10
|
description: string;
|
|
10
11
|
entrypoint: string;
|
|
12
|
+
matterJsPackages?: string[];
|
|
11
13
|
}
|
|
12
14
|
export interface Config {
|
|
13
|
-
matterJsVersion: string;
|
|
14
15
|
typescriptVersion: string;
|
|
16
|
+
nodeTypesVersion: string;
|
|
15
17
|
templates: Template[];
|
|
16
18
|
}
|
|
17
19
|
export declare function Config(): Promise<Config>;
|
package/dist/esm/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,YAAY,QAAwC,CAAC;AAElE,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,YAAY,QAAwC,CAAC;AAElE,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,MAAM;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACzB;AAID,wBAAsB,MAAM,oBAiB3B"}
|
package/dist/esm/config.js
CHANGED
|
@@ -14,7 +14,13 @@ async function Config() {
|
|
|
14
14
|
}
|
|
15
15
|
const packageJson = JSON.parse(await readFile(resolve(CREATE_DIR, "package.json"), "utf-8"));
|
|
16
16
|
if (packageJson.version !== "0.0.0-git") {
|
|
17
|
-
config.
|
|
17
|
+
for (const template of config.templates) {
|
|
18
|
+
for (const name in template.dependencies) {
|
|
19
|
+
if (name.startsWith("@matter/") || name.startsWith("@project-chip/")) {
|
|
20
|
+
template.dependencies[name] = packageJson.version;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
18
24
|
}
|
|
19
25
|
return config;
|
|
20
26
|
}
|
package/dist/esm/config.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/config.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AAExB,MAAM,aAAa,QAAQ,YAAY,SAAS,OAAO;AAChD,MAAM,eAAe,QAAQ,YAAY,gBAAgB;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AAExB,MAAM,aAAa,QAAQ,YAAY,SAAS,OAAO;AAChD,MAAM,eAAe,QAAQ,YAAY,gBAAgB;AAgBhE,IAAI;AAEJ,eAAsB,SAAS;AAC3B,MAAI,CAAC,QAAQ;AACT,aAAS,KAAK,MAAM,MAAM,SAAS,QAAQ,cAAc,YAAY,GAAG,OAAO,CAAC;AAAA,EACpF;AAEA,QAAM,cAAc,KAAK,MAAM,MAAM,SAAS,QAAQ,YAAY,cAAc,GAAG,OAAO,CAAC;AAC3F,MAAI,YAAY,YAAY,aAAa;AACrC,eAAW,YAAY,OAAO,WAAW;AACrC,iBAAW,QAAQ,SAAS,cAAc;AACtC,YAAI,KAAK,WAAW,UAAU,KAAK,KAAK,WAAW,gBAAgB,GAAG;AAClE,mBAAS,aAAa,IAAI,IAAI,YAAY;AAAA,QAC9C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-project.d.ts","sourceRoot":"","sources":["../../src/new-project.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAU,QAAQ,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"new-project.d.ts","sourceRoot":"","sources":["../../src/new-project.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAU,QAAQ,EAAgB,MAAM,aAAa,CAAC;AA6D7D,qBAAa,qBAAsB,SAAQ,KAAK;CAAG;AAEnD,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IAEb,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAchF;AAED,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,iBAmB5C"}
|
package/dist/esm/new-project.js
CHANGED
|
@@ -8,11 +8,10 @@ import { cp, mkdir, readdir, writeFile } from "fs/promises";
|
|
|
8
8
|
import { basename, resolve } from "path";
|
|
9
9
|
import { Config, TEMPLATE_DIR } from "./config.js";
|
|
10
10
|
const PACKAGE_JSON = {
|
|
11
|
-
dependencies: {
|
|
12
|
-
"@matter/main": "*"
|
|
13
|
-
},
|
|
11
|
+
dependencies: {},
|
|
14
12
|
devDependencies: {
|
|
15
|
-
typescript: "*"
|
|
13
|
+
typescript: "*",
|
|
14
|
+
"@types/node": "*"
|
|
16
15
|
},
|
|
17
16
|
name: "matter-app",
|
|
18
17
|
version: "0.1.0",
|
|
@@ -38,6 +37,28 @@ const TSCONFIG = {
|
|
|
38
37
|
},
|
|
39
38
|
include: ["./src/**/*.ts"]
|
|
40
39
|
};
|
|
40
|
+
const VS_CODE_LAUNCH = {
|
|
41
|
+
version: "0.2.0",
|
|
42
|
+
configurations: [
|
|
43
|
+
{
|
|
44
|
+
type: "node",
|
|
45
|
+
request: "launch",
|
|
46
|
+
name: "Launch Program",
|
|
47
|
+
skipFiles: ["<node_internals>/**"],
|
|
48
|
+
program: "",
|
|
49
|
+
// Never gotten it to work without this
|
|
50
|
+
console: "integratedTerminal",
|
|
51
|
+
// Doesn't seem to work
|
|
52
|
+
//sourceMaps: true,
|
|
53
|
+
env: {
|
|
54
|
+
NODE_OPTIONS: "--enable-source-maps"
|
|
55
|
+
},
|
|
56
|
+
preLaunchTask: "tsc: build - tsconfig.json",
|
|
57
|
+
outFiles: ["${workspaceFolder}/dist/**/*.js"]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
};
|
|
61
|
+
const GITIGNORE = "node_modules/\ndist/\n";
|
|
41
62
|
class TemplateNotFoundError extends Error {
|
|
42
63
|
}
|
|
43
64
|
async function NewProject(name, dest) {
|
|
@@ -69,15 +90,20 @@ async function create() {
|
|
|
69
90
|
}
|
|
70
91
|
await createPackageJson(this);
|
|
71
92
|
await createTsconfig(this);
|
|
93
|
+
await createGitignore(this);
|
|
94
|
+
await createVsCodeProject(this);
|
|
72
95
|
await installSources(this);
|
|
73
96
|
}
|
|
97
|
+
function entrypointFor(project) {
|
|
98
|
+
return "dist/" + project.template.entrypoint.replace(/\.ts$/, ".js");
|
|
99
|
+
}
|
|
74
100
|
async function createPackageJson(project) {
|
|
75
101
|
const pkg = PACKAGE_JSON;
|
|
76
102
|
const config = await Config();
|
|
77
|
-
|
|
78
|
-
pkg.
|
|
79
|
-
pkg.dependencies["@matter/main"] = config.matterJsVersion;
|
|
103
|
+
pkg.scripts.app = `node --enable-source-maps ${entrypointFor(project)}`;
|
|
104
|
+
pkg.dependencies = project.template.dependencies;
|
|
80
105
|
pkg.devDependencies["typescript"] = config.typescriptVersion;
|
|
106
|
+
pkg.devDependencies["@types/node"] = config.nodeTypesVersion;
|
|
81
107
|
pkg.description = project.template.description;
|
|
82
108
|
let author, authorEmail;
|
|
83
109
|
try {
|
|
@@ -105,6 +131,15 @@ async function createPackageJson(project) {
|
|
|
105
131
|
async function createTsconfig(project) {
|
|
106
132
|
await writeFile(resolve(project.dest, "tsconfig.json"), JSON.stringify(TSCONFIG, void 0, 4));
|
|
107
133
|
}
|
|
134
|
+
async function createGitignore(project) {
|
|
135
|
+
await writeFile(resolve(project.dest, ".gitignore"), GITIGNORE);
|
|
136
|
+
}
|
|
137
|
+
async function createVsCodeProject(project) {
|
|
138
|
+
const root = resolve(project.dest, ".vscode");
|
|
139
|
+
await mkdir(root);
|
|
140
|
+
VS_CODE_LAUNCH.configurations[0].program = `\${workspaceFolder}/${entrypointFor(project)}`;
|
|
141
|
+
await writeFile(resolve(root, "launch.json"), JSON.stringify(VS_CODE_LAUNCH, void 0, 4));
|
|
142
|
+
}
|
|
108
143
|
async function installSources(project) {
|
|
109
144
|
await cp(project.source, resolve(project.dest, "src"), {
|
|
110
145
|
recursive: true,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/new-project.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAAS,IAAI,OAAO,SAAS,iBAAiB;AAC9C,SAAS,UAAU,eAAe;AAClC,SAAS,QAAkB,oBAAoB;AAE/C,MAAM,eAAe;AAAA,EACjB,cAAc
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["template"]
|
|
6
6
|
}
|
|
@@ -1,61 +1,98 @@
|
|
|
1
1
|
{
|
|
2
|
-
"matterJsVersion": "~0.11.0",
|
|
3
2
|
"typescriptVersion": "~5.6.2",
|
|
3
|
+
"nodeTypesVersion": "^22.8.1",
|
|
4
4
|
"templates": [
|
|
5
5
|
{
|
|
6
|
-
"name": "controller
|
|
6
|
+
"name": "controller",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@matter/main": "~0.11.1",
|
|
9
|
+
"@matter/nodejs-ble": "~0.11.1",
|
|
10
|
+
"@project-chip/matter.js": "~0.11.1"
|
|
11
|
+
},
|
|
7
12
|
"description": "Controller example to commission and connect devices",
|
|
8
13
|
"entrypoint": "ControllerNode.ts"
|
|
9
14
|
},
|
|
10
15
|
{
|
|
11
|
-
"name": "device-onoff
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
{
|
|
16
|
-
"name": "device-onoff-bridge-cli",
|
|
16
|
+
"name": "device-bridge-onoff",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@matter/main": "~0.11.1"
|
|
19
|
+
},
|
|
17
20
|
"description": "Bridge for multiple OnOff light/sockets with a CLI command execution interface",
|
|
18
21
|
"entrypoint": "BridgedDevicesNode.ts"
|
|
19
22
|
},
|
|
20
23
|
{
|
|
21
|
-
"name": "device-onoff
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
"name": "device-onoff-composed-cli",
|
|
24
|
+
"name": "device-composed-onoff",
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@matter/main": "~0.11.1"
|
|
27
|
+
},
|
|
27
28
|
"description": "Composed device for multiple OnOff light/sockets with a CLI command execution interface",
|
|
28
29
|
"entrypoint": "ComposedDeviceNode.ts"
|
|
29
30
|
},
|
|
30
31
|
{
|
|
31
|
-
"name": "device-
|
|
32
|
-
"
|
|
33
|
-
|
|
32
|
+
"name": "device-composed-wc-light",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@matter/main": "~0.11.1"
|
|
35
|
+
},
|
|
36
|
+
"description": "Composed device with Window covering and a light endpoint that logs changes",
|
|
37
|
+
"entrypoint": "IlluminatedRollerShade.ts"
|
|
34
38
|
},
|
|
35
39
|
{
|
|
36
|
-
"name": "device-
|
|
40
|
+
"name": "device-measuring-socket",
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@matter/main": "~0.11.1"
|
|
43
|
+
},
|
|
44
|
+
"description": "Socket device that reports random Energy and Power measurements",
|
|
45
|
+
"entrypoint": "MeasuredSocketDevice.ts"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "device-multiple-onoff",
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@matter/main": "~0.11.1"
|
|
51
|
+
},
|
|
37
52
|
"description": "Multiple OnOff light/socket nodes in one process with a CLI command execution interface",
|
|
38
53
|
"entrypoint": "MultiDeviceNode.ts"
|
|
39
54
|
},
|
|
40
55
|
{
|
|
41
|
-
"name": "device-
|
|
42
|
-
"
|
|
43
|
-
|
|
56
|
+
"name": "device-onoff",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@matter/main": "~0.11.1"
|
|
59
|
+
},
|
|
60
|
+
"description": "OnOff light/socket device with a CLI command execution interface",
|
|
61
|
+
"entrypoint": "DeviceNode.ts"
|
|
44
62
|
},
|
|
45
63
|
{
|
|
46
|
-
"name": "device-
|
|
47
|
-
"
|
|
48
|
-
|
|
64
|
+
"name": "device-onoff-advanced",
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"@matter/main": "~0.11.1",
|
|
67
|
+
"@matter/nodejs": "~0.11.1",
|
|
68
|
+
"@matter/nodejs-ble": "~0.11.1"
|
|
69
|
+
},
|
|
70
|
+
"description": "OnOff light/socket device with BLE support and advanced API usage",
|
|
71
|
+
"entrypoint": "DeviceNodeFull.ts"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "device-onoff-light",
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"@matter/main": "~0.11.1"
|
|
77
|
+
},
|
|
78
|
+
"description": "OnOff light example which logs the state changes to the console",
|
|
79
|
+
"entrypoint": "LightDevice.ts"
|
|
49
80
|
},
|
|
50
81
|
{
|
|
51
|
-
"name": "device-
|
|
82
|
+
"name": "device-sensor",
|
|
83
|
+
"dependencies": {
|
|
84
|
+
"@matter/main": "~0.11.1"
|
|
85
|
+
},
|
|
52
86
|
"description": "Temperature/Humidity sensor with a CLI command interface to get the value",
|
|
53
87
|
"entrypoint": "SensorDeviceNode.ts"
|
|
54
88
|
},
|
|
55
89
|
{
|
|
56
|
-
"name": "device-
|
|
57
|
-
"
|
|
58
|
-
|
|
90
|
+
"name": "device-simple",
|
|
91
|
+
"dependencies": {
|
|
92
|
+
"@matter/main": "~0.11.1"
|
|
93
|
+
},
|
|
94
|
+
"description": "A simple on/off device",
|
|
95
|
+
"entrypoint": "main.ts"
|
|
59
96
|
}
|
|
60
97
|
]
|
|
61
98
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/create",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Matter.js skeleton project generator",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"homepage": "https://github.com/project-chip/matter.js#readme",
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@matter/tools": "0.11.
|
|
35
|
+
"@matter/tools": "0.11.1",
|
|
36
36
|
"@types/node": "^22.8.1",
|
|
37
37
|
"@types/tar-stream": "^3.1.3"
|
|
38
38
|
},
|
package/src/build.config.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Project } from "@matter/tools";
|
|
8
|
-
import {
|
|
8
|
+
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
9
9
|
import { basename, dirname } from "path";
|
|
10
10
|
import { Config, Template } from "./config.js";
|
|
11
11
|
|
|
@@ -18,6 +18,10 @@ export async function before({ project }: Project.Context) {
|
|
|
18
18
|
|
|
19
19
|
await mkdir(createPkg.resolve("dist/templates"), { recursive: true });
|
|
20
20
|
|
|
21
|
+
// We set the version after build so we don't know actual version here. This placeholder is just used in dev. We
|
|
22
|
+
// then replace with the "create" package version on init if it's not a git build
|
|
23
|
+
const matterJsVersion = `~${await readFile(project.pkg.workspace.resolve("version.txt"), "utf-8")}`;
|
|
24
|
+
|
|
21
25
|
const readmes = await examplesPkg.glob("src/*/README.md");
|
|
22
26
|
const templates = Array<Template>();
|
|
23
27
|
for (const readme of readmes) {
|
|
@@ -27,6 +31,8 @@ export async function before({ project }: Project.Context) {
|
|
|
27
31
|
continue;
|
|
28
32
|
}
|
|
29
33
|
|
|
34
|
+
const dependencies = {} as Record<string, string>;
|
|
35
|
+
|
|
30
36
|
const baseLength = examplesPkg.resolve(`src/${name}`).length + 1;
|
|
31
37
|
const sources = await examplesPkg.glob(`src/${name}/**/*.ts`);
|
|
32
38
|
let entrypoint;
|
|
@@ -35,7 +41,29 @@ export async function before({ project }: Project.Context) {
|
|
|
35
41
|
if (!entrypoint && filename.indexOf("/") === -1) {
|
|
36
42
|
entrypoint = filename;
|
|
37
43
|
}
|
|
38
|
-
await
|
|
44
|
+
const source = await readFile(file, "utf-8");
|
|
45
|
+
|
|
46
|
+
// Quick hack to pull out imports, assumes modules formatted by prettier. More than sufficient for current
|
|
47
|
+
// needs
|
|
48
|
+
for (const [, pkgName] of source.matchAll(/import .* from "(@[^/"]+\/[^/"]+|[^/"]+)[^"]*";/g)) {
|
|
49
|
+
if (dependencies[pkgName]) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (pkgName.startsWith("@matter/") || pkgName.startsWith("@project-chip/")) {
|
|
54
|
+
dependencies[pkgName] = matterJsVersion;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const version = examplesPkg.json.dependencies[pkgName];
|
|
59
|
+
if (version !== undefined) {
|
|
60
|
+
dependencies[pkgName] = version;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const outFilename = createPkg.resolve("dist/templates", name, filename);
|
|
65
|
+
await mkdir(dirname(outFilename), { recursive: true });
|
|
66
|
+
await writeFile(outFilename, source);
|
|
39
67
|
}
|
|
40
68
|
|
|
41
69
|
if (!entrypoint) {
|
|
@@ -44,20 +72,19 @@ export async function before({ project }: Project.Context) {
|
|
|
44
72
|
|
|
45
73
|
templates.push({
|
|
46
74
|
name,
|
|
75
|
+
dependencies,
|
|
47
76
|
description: match[1],
|
|
48
77
|
entrypoint,
|
|
49
78
|
});
|
|
50
79
|
}
|
|
51
80
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
const typescriptVersion = project.pkg.findPackage("@matter/tools").json.dependencies.typescript;
|
|
81
|
+
const tools = project.pkg.findPackage("@matter/tools").json;
|
|
82
|
+
const typescriptVersion = tools.dependencies.typescript;
|
|
83
|
+
const nodeTypesVersion = tools.devDependencies["@types/node"];
|
|
57
84
|
|
|
58
85
|
const config: Config = {
|
|
59
|
-
matterJsVersion,
|
|
60
86
|
typescriptVersion,
|
|
87
|
+
nodeTypesVersion,
|
|
61
88
|
templates,
|
|
62
89
|
};
|
|
63
90
|
|
package/src/config.ts
CHANGED
|
@@ -12,13 +12,15 @@ export const TEMPLATE_DIR = resolve(CREATE_DIR, "dist/templates");
|
|
|
12
12
|
|
|
13
13
|
export interface Template {
|
|
14
14
|
name: string;
|
|
15
|
+
dependencies: Record<string, string>;
|
|
15
16
|
description: string;
|
|
16
17
|
entrypoint: string;
|
|
18
|
+
matterJsPackages?: string[];
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
export interface Config {
|
|
20
|
-
matterJsVersion: string;
|
|
21
22
|
typescriptVersion: string;
|
|
23
|
+
nodeTypesVersion: string;
|
|
22
24
|
templates: Template[];
|
|
23
25
|
}
|
|
24
26
|
|
|
@@ -31,7 +33,13 @@ export async function Config() {
|
|
|
31
33
|
|
|
32
34
|
const packageJson = JSON.parse(await readFile(resolve(CREATE_DIR, "package.json"), "utf-8")) as { version: string };
|
|
33
35
|
if (packageJson.version !== "0.0.0-git") {
|
|
34
|
-
config.
|
|
36
|
+
for (const template of config.templates) {
|
|
37
|
+
for (const name in template.dependencies) {
|
|
38
|
+
if (name.startsWith("@matter/") || name.startsWith("@project-chip/")) {
|
|
39
|
+
template.dependencies[name] = packageJson.version;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
35
43
|
}
|
|
36
44
|
|
|
37
45
|
return config;
|
package/src/new-project.ts
CHANGED
|
@@ -10,11 +10,10 @@ import { basename, resolve } from "path";
|
|
|
10
10
|
import { Config, Template, TEMPLATE_DIR } from "./config.js";
|
|
11
11
|
|
|
12
12
|
const PACKAGE_JSON = {
|
|
13
|
-
dependencies: {
|
|
14
|
-
"@matter/main": "*",
|
|
15
|
-
},
|
|
13
|
+
dependencies: {} as Record<string, string>,
|
|
16
14
|
devDependencies: {
|
|
17
15
|
typescript: "*",
|
|
16
|
+
"@types/node": "*",
|
|
18
17
|
},
|
|
19
18
|
name: "matter-app",
|
|
20
19
|
version: "0.1.0",
|
|
@@ -42,6 +41,33 @@ const TSCONFIG = {
|
|
|
42
41
|
include: ["./src/**/*.ts"],
|
|
43
42
|
};
|
|
44
43
|
|
|
44
|
+
const VS_CODE_LAUNCH = {
|
|
45
|
+
version: "0.2.0",
|
|
46
|
+
configurations: [
|
|
47
|
+
{
|
|
48
|
+
type: "node",
|
|
49
|
+
request: "launch",
|
|
50
|
+
name: "Launch Program",
|
|
51
|
+
skipFiles: ["<node_internals>/**"],
|
|
52
|
+
program: "",
|
|
53
|
+
|
|
54
|
+
// Never gotten it to work without this
|
|
55
|
+
console: "integratedTerminal",
|
|
56
|
+
|
|
57
|
+
// Doesn't seem to work
|
|
58
|
+
//sourceMaps: true,
|
|
59
|
+
|
|
60
|
+
env: {
|
|
61
|
+
NODE_OPTIONS: "--enable-source-maps",
|
|
62
|
+
},
|
|
63
|
+
preLaunchTask: "tsc: build - tsconfig.json",
|
|
64
|
+
outFiles: ["${workspaceFolder}/dist/**/*.js"],
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const GITIGNORE = "node_modules/\ndist/\n";
|
|
70
|
+
|
|
45
71
|
export class TemplateNotFoundError extends Error {}
|
|
46
72
|
|
|
47
73
|
export interface NewProject {
|
|
@@ -87,19 +113,25 @@ export async function create(this: NewProject) {
|
|
|
87
113
|
|
|
88
114
|
await createPackageJson(this);
|
|
89
115
|
await createTsconfig(this);
|
|
116
|
+
await createGitignore(this);
|
|
117
|
+
await createVsCodeProject(this);
|
|
90
118
|
await installSources(this);
|
|
91
119
|
}
|
|
92
120
|
|
|
121
|
+
function entrypointFor(project: NewProject) {
|
|
122
|
+
return "dist/" + project.template.entrypoint.replace(/\.ts$/, ".js");
|
|
123
|
+
}
|
|
124
|
+
|
|
93
125
|
async function createPackageJson(project: NewProject) {
|
|
94
126
|
const pkg = PACKAGE_JSON;
|
|
95
127
|
|
|
96
128
|
const config = await Config();
|
|
97
129
|
|
|
98
|
-
|
|
99
|
-
pkg.scripts.app = `node --enable-source-maps ${entrypoint}`;
|
|
130
|
+
pkg.scripts.app = `node --enable-source-maps ${entrypointFor(project)}`;
|
|
100
131
|
|
|
101
|
-
pkg.dependencies
|
|
132
|
+
pkg.dependencies = project.template.dependencies;
|
|
102
133
|
pkg.devDependencies["typescript"] = config.typescriptVersion;
|
|
134
|
+
pkg.devDependencies["@types/node"] = config.nodeTypesVersion;
|
|
103
135
|
|
|
104
136
|
(pkg as any).description = project.template.description;
|
|
105
137
|
|
|
@@ -135,6 +167,17 @@ async function createTsconfig(project: NewProject) {
|
|
|
135
167
|
await writeFile(resolve(project.dest, "tsconfig.json"), JSON.stringify(TSCONFIG, undefined, 4));
|
|
136
168
|
}
|
|
137
169
|
|
|
170
|
+
async function createGitignore(project: NewProject) {
|
|
171
|
+
await writeFile(resolve(project.dest, ".gitignore"), GITIGNORE);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
async function createVsCodeProject(project: NewProject) {
|
|
175
|
+
const root = resolve(project.dest, ".vscode");
|
|
176
|
+
await mkdir(root);
|
|
177
|
+
VS_CODE_LAUNCH.configurations[0].program = `\${workspaceFolder}/${entrypointFor(project)}`;
|
|
178
|
+
await writeFile(resolve(root, "launch.json"), JSON.stringify(VS_CODE_LAUNCH, undefined, 4));
|
|
179
|
+
}
|
|
180
|
+
|
|
138
181
|
async function installSources(project: NewProject) {
|
|
139
182
|
await cp(project.source, resolve(project.dest, "src"), {
|
|
140
183
|
recursive: true,
|
|
File without changes
|
/package/dist/templates/{device-onoff-bridge-cli → device-bridge-onoff}/BridgedDevicesNode.ts
RENAMED
|
File without changes
|
/package/dist/templates/{device-onoff-composed-cli → device-composed-onoff}/ComposedDeviceNode.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/templates/{device-onoff-advanced-cli → device-onoff-advanced}/DeviceNodeFull.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/templates/{device-temperature-humidity-sensor-cli → device-sensor}/SensorDeviceNode.ts
RENAMED
|
File without changes
|