create-celsian 0.1.1 → 0.3.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"full.js","sourceRoot":"","sources":["../../src/templates/full.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export declare const restApiTemplate: {
2
- 'package.json': string;
3
- 'tsconfig.json': string;
4
- 'src/index.ts': string;
2
+ "package.json": string;
3
+ "tsconfig.json": string;
4
+ "src/index.ts": string;
5
5
  };
6
6
  //# sourceMappingURL=rest-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rest-api.d.ts","sourceRoot":"","sources":["../../src/templates/rest-api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;CA6E3B,CAAC"}
1
+ {"version":3,"file":"rest-api.d.ts","sourceRoot":"","sources":["../../src/templates/rest-api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;CA2F3B,CAAC"}
@@ -1,40 +1,57 @@
1
1
  export const restApiTemplate = {
2
- 'package.json': JSON.stringify({
3
- name: '{{name}}',
4
- version: '0.0.1',
5
- type: 'module',
2
+ "package.json": JSON.stringify({
3
+ name: "{{name}}",
4
+ version: "0.0.1",
5
+ type: "module",
6
6
  scripts: {
7
- dev: 'npx celsian dev',
8
- build: 'tsc',
9
- start: 'node dist/index.js',
7
+ dev: "npx tsx --watch src/index.ts",
8
+ build: "tsc",
9
+ start: "node dist/index.js",
10
10
  },
11
11
  dependencies: {
12
- celsian: '^0.1.0',
13
- '@sinclair/typebox': '^0.34.0',
12
+ celsian: "latest",
13
+ "@sinclair/typebox": "^0.34.0",
14
14
  },
15
15
  devDependencies: {
16
- typescript: '^5.7.0',
17
- tsx: '^4.0.0',
16
+ typescript: "^5.7.0",
17
+ tsx: "^4.0.0",
18
18
  },
19
19
  }, null, 2),
20
- 'tsconfig.json': JSON.stringify({
20
+ "tsconfig.json": JSON.stringify({
21
21
  compilerOptions: {
22
- target: 'ES2022',
23
- module: 'ESNext',
24
- moduleResolution: 'bundler',
22
+ target: "ES2022",
23
+ module: "ESNext",
24
+ moduleResolution: "bundler",
25
25
  strict: true,
26
26
  esModuleInterop: true,
27
27
  skipLibCheck: true,
28
- outDir: 'dist',
29
- rootDir: 'src',
28
+ outDir: "dist",
29
+ rootDir: "src",
30
30
  },
31
- include: ['src'],
31
+ include: ["src"],
32
32
  }, null, 2),
33
- 'src/index.ts': `import { createApp, serve } from 'celsian';
33
+ "src/index.ts": `import { createApp, serve, cors, security } from 'celsian';
34
34
  import { Type } from '@sinclair/typebox';
35
35
 
36
36
  const app = createApp();
37
37
 
38
+ // ─── Security (CORS + security headers) ───
39
+
40
+ const CORS_ORIGIN = process.env.CORS_ORIGIN ?? 'http://localhost:3000';
41
+
42
+ await app.register(cors({
43
+ origin: CORS_ORIGIN,
44
+ credentials: true,
45
+ maxAge: 86400,
46
+ }));
47
+
48
+ await app.register(security({
49
+ hsts: { maxAge: 31536000, includeSubDomains: true },
50
+ referrerPolicy: 'strict-origin-when-cross-origin',
51
+ }));
52
+
53
+ // ─── Routes ───
54
+
38
55
  const CreateUserSchema = Type.Object({
39
56
  name: Type.String(),
40
57
  email: Type.String({ format: 'email' }),
@@ -47,16 +64,13 @@ app.get('/users', (req, reply) => {
47
64
  return reply.json(users);
48
65
  });
49
66
 
50
- app.route({
51
- method: 'POST',
52
- url: '/users',
67
+ app.post('/users', {
53
68
  schema: { body: CreateUserSchema },
54
- handler(req, reply) {
55
- const { name, email } = req.parsedBody as { name: string; email: string };
56
- const user = { id: nextId++, name, email };
57
- users.push(user);
58
- return reply.status(201).json(user);
59
- },
69
+ }, (req, reply) => {
70
+ const { name, email } = req.parsedBody;
71
+ const user = { id: nextId++, name, email };
72
+ users.push(user);
73
+ return reply.status(201).json(user);
60
74
  });
61
75
 
62
76
  app.get('/users/:id', (req, reply) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rest-api.js","sourceRoot":"","sources":["../../src/templates/rest-api.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc,EAAE,IAAI,CAAC,SAAS,CAC5B;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oBAAoB;SAC5B;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,QAAQ;YACjB,mBAAmB,EAAE,SAAS;SAC/B;QACD,eAAe,EAAE;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,QAAQ;SACd;KACF,EACD,IAAI,EACJ,CAAC,CACF;IACD,eAAe,EAAE,IAAI,CAAC,SAAS,CAC7B;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB,EACD,IAAI,EACJ,CAAC,CACF;IACD,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjB;CACA,CAAC"}
1
+ {"version":3,"file":"rest-api.js","sourceRoot":"","sources":["../../src/templates/rest-api.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc,EAAE,IAAI,CAAC,SAAS,CAC5B;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,8BAA8B;YACnC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oBAAoB;SAC5B;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,QAAQ;YACjB,mBAAmB,EAAE,SAAS;SAC/B;QACD,eAAe,EAAE;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,QAAQ;SACd;KACF,EACD,IAAI,EACJ,CAAC,CACF;IACD,eAAe,EAAE,IAAI,CAAC,SAAS,CAC7B;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB,EACD,IAAI,EACJ,CAAC,CACF;IACD,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDjB;CACA,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export declare const rpcApiTemplate: {
2
- 'package.json': string;
3
- 'tsconfig.json': string;
4
- 'src/index.ts': string;
2
+ "package.json": string;
3
+ "tsconfig.json": string;
4
+ "src/index.ts": string;
5
5
  };
6
6
  //# sourceMappingURL=rpc-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-api.d.ts","sourceRoot":"","sources":["../../src/templates/rpc-api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;CA8E1B,CAAC"}
1
+ {"version":3,"file":"rpc-api.d.ts","sourceRoot":"","sources":["../../src/templates/rpc-api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;CA+F1B,CAAC"}
@@ -1,42 +1,59 @@
1
1
  export const rpcApiTemplate = {
2
- 'package.json': JSON.stringify({
3
- name: '{{name}}',
4
- version: '0.0.1',
5
- type: 'module',
2
+ "package.json": JSON.stringify({
3
+ name: "{{name}}",
4
+ version: "0.0.1",
5
+ type: "module",
6
6
  scripts: {
7
- dev: 'npx celsian dev',
8
- build: 'tsc',
9
- start: 'node dist/index.js',
7
+ dev: "npx tsx --watch src/index.ts",
8
+ build: "tsc",
9
+ start: "node dist/index.js",
10
10
  },
11
11
  dependencies: {
12
- celsian: '^0.1.0',
13
- '@celsian/rpc': '^0.1.0',
14
- '@sinclair/typebox': '^0.34.0',
12
+ celsian: "latest",
13
+ "@celsian/rpc": "latest",
14
+ "@sinclair/typebox": "^0.34.0",
15
15
  },
16
16
  devDependencies: {
17
- typescript: '^5.7.0',
18
- tsx: '^4.0.0',
17
+ typescript: "^5.7.0",
18
+ tsx: "^4.0.0",
19
19
  },
20
20
  }, null, 2),
21
- 'tsconfig.json': JSON.stringify({
21
+ "tsconfig.json": JSON.stringify({
22
22
  compilerOptions: {
23
- target: 'ES2022',
24
- module: 'ESNext',
25
- moduleResolution: 'bundler',
23
+ target: "ES2022",
24
+ module: "ESNext",
25
+ moduleResolution: "bundler",
26
26
  strict: true,
27
27
  esModuleInterop: true,
28
28
  skipLibCheck: true,
29
- outDir: 'dist',
30
- rootDir: 'src',
29
+ outDir: "dist",
30
+ rootDir: "src",
31
31
  },
32
- include: ['src'],
32
+ include: ["src"],
33
33
  }, null, 2),
34
- 'src/index.ts': `import { createApp, serve } from 'celsian';
34
+ "src/index.ts": `import { createApp, serve, cors, security } from 'celsian';
35
35
  import { procedure, router, RPCHandler } from '@celsian/rpc';
36
36
  import { Type } from '@sinclair/typebox';
37
37
 
38
38
  const app = createApp();
39
39
 
40
+ // ─── Security (CORS + security headers) ───
41
+
42
+ const CORS_ORIGIN = process.env.CORS_ORIGIN ?? 'http://localhost:3000';
43
+
44
+ await app.register(cors({
45
+ origin: CORS_ORIGIN,
46
+ credentials: true,
47
+ maxAge: 86400,
48
+ }));
49
+
50
+ await app.register(security({
51
+ hsts: { maxAge: 31536000, includeSubDomains: true },
52
+ referrerPolicy: 'strict-origin-when-cross-origin',
53
+ }));
54
+
55
+ // ─── Routes ───
56
+
40
57
  const appRouter = router({
41
58
  greeting: {
42
59
  hello: procedure
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-api.js","sourceRoot":"","sources":["../../src/templates/rpc-api.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,IAAI,CAAC,SAAS,CAC5B;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oBAAoB;SAC5B;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,QAAQ;YACjB,cAAc,EAAE,QAAQ;YACxB,mBAAmB,EAAE,SAAS;SAC/B;QACD,eAAe,EAAE;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,QAAQ;SACd;KACF,EACD,IAAI,EACJ,CAAC,CACF;IACD,eAAe,EAAE,IAAI,CAAC,SAAS,CAC7B;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB,EACD,IAAI,EACJ,CAAC,CACF;IACD,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjB;CACA,CAAC"}
1
+ {"version":3,"file":"rpc-api.js","sourceRoot":"","sources":["../../src/templates/rpc-api.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,IAAI,CAAC,SAAS,CAC5B;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,8BAA8B;YACnC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oBAAoB;SAC5B;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,QAAQ;YACjB,cAAc,EAAE,QAAQ;YACxB,mBAAmB,EAAE,SAAS;SAC/B;QACD,eAAe,EAAE;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,QAAQ;SACd;KACF,EACD,IAAI,EACJ,CAAC,CACF;IACD,eAAe,EAAE,IAAI,CAAC,SAAS,CAC7B;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB,EACD,IAAI,EACJ,CAAC,CACF;IACD,cAAc,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDjB;CACA,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-celsian",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "create-celsian": "dist/index.js"
@@ -11,6 +11,9 @@
11
11
  "dist"
12
12
  ],
13
13
  "license": "MIT",
14
+ "engines": {
15
+ "node": ">=20"
16
+ },
14
17
  "scripts": {
15
18
  "build": "tsc -b"
16
19
  }