@arkstack/driver-h3 0.1.1 → 0.2.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.
package/dist/index.d.ts CHANGED
@@ -9,50 +9,14 @@ interface H3DriverOptions {
9
9
  mountPublicAssets: (app: H3, publicPath: string) => PromiseOrValue<void>;
10
10
  createApp?: () => H3;
11
11
  }
12
- /**
13
- * The H3Driver class implements the ArkstackKitDriver contract for the H3 framework.
14
- */
15
12
  declare class H3Driver extends ArkstackKitDriver<H3, H3Middleware> {
16
13
  readonly name = "h3";
17
14
  private readonly options;
18
- /**
19
- * Creates an instance of H3Driver.
20
- *
21
- * @param options
22
- */
23
15
  constructor(options: H3DriverOptions);
24
- /**
25
- * Creates an H3 application instance.
26
- *
27
- * @returns
28
- */
29
16
  createApp(): H3;
30
- /**
31
- * Mounts static assets from the specified public path to the H3 application.
32
- *
33
- * @param app
34
- * @param publicPath
35
- */
36
17
  mountPublicAssets(app: H3, publicPath: string): PromiseOrValue<void>;
37
- /**
38
- * Binds the router to the H3 application using the provided bindRouter function.
39
- *
40
- * @param app
41
- */
42
18
  bindRouter(app: H3): PromiseOrValue<void>;
43
- /**
44
- * Applies middleware to the H3 application.
45
- *
46
- * @param app
47
- * @param middleware
48
- */
49
19
  applyMiddleware(app: H3, middleware: H3Middleware): void;
50
- /**
51
- * Starts the H3 server on the specified port.
52
- *
53
- * @param app
54
- * @param port
55
- */
56
20
  start(app: H3, port: number): void;
57
21
  }
58
22
  //#endregion
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { ArkstackKitDriver, PromiseOrValue } from \"@arkstack/contract\";\nimport { H3, serve } from \"h3\";\n\nimport { Middleware as H3BaseMiddleware } from \"clear-router/types/h3\";\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport type H3Middleware = H3BaseMiddleware | [H3BaseMiddleware, Record<string, any>];\n\nexport interface H3DriverOptions {\n bindRouter: (app: H3) => PromiseOrValue<void>;\n mountPublicAssets: (app: H3, publicPath: string) => PromiseOrValue<void>;\n createApp?: () => H3;\n}\n\n/**\n * The H3Driver class implements the ArkstackKitDriver contract for the H3 framework.\n */\nexport class H3Driver extends ArkstackKitDriver<H3, H3Middleware> {\n readonly name = \"h3\";\n private readonly options: H3DriverOptions;\n\n /**\n * Creates an instance of H3Driver.\n * \n * @param options \n */\n constructor(options: H3DriverOptions) {\n super();\n this.options = options;\n }\n\n /**\n * Creates an H3 application instance.\n * \n * @returns \n */\n createApp (): H3 {\n return this.options.createApp?.() ?? new H3();\n }\n\n /**\n * Mounts static assets from the specified public path to the H3 application.\n * \n * @param app \n * @param publicPath \n */\n mountPublicAssets (app: H3, publicPath: string): PromiseOrValue<void> {\n return this.options.mountPublicAssets(app, publicPath);\n }\n\n /**\n * Binds the router to the H3 application using the provided bindRouter function.\n * \n * @param app \n */\n bindRouter (app: H3): PromiseOrValue<void> {\n return this.options.bindRouter(app);\n }\n\n /**\n * Applies middleware to the H3 application.\n * \n * @param app \n * @param middleware \n */\n applyMiddleware (app: H3, middleware: H3Middleware): void {\n app.use(\n Array.isArray(middleware) ? middleware[0] : middleware,\n Array.isArray(middleware) ? middleware[1] : undefined,\n );\n }\n\n /**\n * Starts the H3 server on the specified port.\n * \n * @param app \n * @param port \n */\n start (app: H3, port: number): void {\n serve(app, { port });\n }\n}\n"],"mappings":";;;;;;;AAiBA,IAAa,WAAb,cAA8B,kBAAoC;CAC9D,AAAS,OAAO;CAChB,AAAiB;;;;;;CAOjB,YAAY,SAA0B;AAClC,SAAO;AACP,OAAK,UAAU;;;;;;;CAQnB,YAAiB;AACb,SAAO,KAAK,QAAQ,aAAa,IAAI,IAAI,IAAI;;;;;;;;CASjD,kBAAmB,KAAS,YAA0C;AAClE,SAAO,KAAK,QAAQ,kBAAkB,KAAK,WAAW;;;;;;;CAQ1D,WAAY,KAA+B;AACvC,SAAO,KAAK,QAAQ,WAAW,IAAI;;;;;;;;CASvC,gBAAiB,KAAS,YAAgC;AACtD,MAAI,IACA,MAAM,QAAQ,WAAW,GAAG,WAAW,KAAK,YAC5C,MAAM,QAAQ,WAAW,GAAG,WAAW,KAAK,OAC/C;;;;;;;;CASL,MAAO,KAAS,MAAoB;AAChC,QAAM,KAAK,EAAE,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { ArkstackKitDriver, PromiseOrValue } from '@arkstack/contract'\nimport { H3, serve } from 'h3'\n\nimport { Middleware as H3BaseMiddleware } from 'clear-router/types/h3'\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport type H3Middleware = H3BaseMiddleware | [H3BaseMiddleware, Record<string, any>];\n\nexport interface H3DriverOptions {\n bindRouter: (app: H3) => PromiseOrValue<void>;\n mountPublicAssets: (app: H3, publicPath: string) => PromiseOrValue<void>;\n createApp?: () => H3;\n}\n\n/**\n * The H3Driver class implements the ArkstackKitDriver contract for the H3 framework.\n */\nexport class H3Driver extends ArkstackKitDriver<H3, H3Middleware> {\n readonly name = 'h3'\n private readonly options: H3DriverOptions\n\n /**\n * Creates an instance of H3Driver.\n * \n * @param options \n */\n constructor(options: H3DriverOptions) {\n super()\n this.options = options\n }\n\n /**\n * Creates an H3 application instance.\n * \n * @returns \n */\n createApp (): H3 {\n return this.options.createApp?.() ?? new H3()\n }\n\n /**\n * Mounts static assets from the specified public path to the H3 application.\n * \n * @param app \n * @param publicPath \n */\n mountPublicAssets (app: H3, publicPath: string): PromiseOrValue<void> {\n return this.options.mountPublicAssets(app, publicPath)\n }\n\n /**\n * Binds the router to the H3 application using the provided bindRouter function.\n * \n * @param app \n */\n bindRouter (app: H3): PromiseOrValue<void> {\n return this.options.bindRouter(app)\n }\n\n /**\n * Applies middleware to the H3 application.\n * \n * @param app \n * @param middleware \n */\n applyMiddleware (app: H3, middleware: H3Middleware): void {\n app.use(\n Array.isArray(middleware) ? middleware[0] : middleware,\n Array.isArray(middleware) ? middleware[1] : undefined,\n )\n }\n\n /**\n * Starts the H3 server on the specified port.\n * \n * @param app \n * @param port \n */\n start (app: H3, port: number): void {\n serve(app, { port })\n }\n}\n"],"mappings":";;;;;;;AAiBA,IAAa,WAAb,cAA8B,kBAAoC;CAC9D,AAAS,OAAO;CAChB,AAAiB;;;;;;CAOjB,YAAY,SAA0B;AAClC,SAAO;AACP,OAAK,UAAU;;;;;;;CAQnB,YAAiB;AACb,SAAO,KAAK,QAAQ,aAAa,IAAI,IAAI,IAAI;;;;;;;;CASjD,kBAAmB,KAAS,YAA0C;AAClE,SAAO,KAAK,QAAQ,kBAAkB,KAAK,WAAW;;;;;;;CAQ1D,WAAY,KAA+B;AACvC,SAAO,KAAK,QAAQ,WAAW,IAAI;;;;;;;;CASvC,gBAAiB,KAAS,YAAgC;AACtD,MAAI,IACA,MAAM,QAAQ,WAAW,GAAG,WAAW,KAAK,YAC5C,MAAM,QAAQ,WAAW,GAAG,WAAW,KAAK,OAC/C;;;;;;;;CASL,MAAO,KAAS,MAAoB;AAChC,QAAM,KAAK,EAAE,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@arkstack/driver-h3",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "H3 driver package for Arkstack providing H3-specific implementations of core Arkstack features such as routing, middleware, and database integration.",
6
+ "homepage": "https://arkstack.toneflix.net",
6
7
  "repository": {
7
8
  "type": "git",
8
9
  "url": "git+https://github.com/arkstack-hq/arkstack.git",
@@ -34,14 +35,14 @@
34
35
  "./package.json": "./package.json"
35
36
  },
36
37
  "dependencies": {
37
- "@arkstack/contract": "^0.1.1"
38
+ "@arkstack/contract": "^0.2.0"
38
39
  },
39
40
  "peerDependencies": {
40
- "clear-router": "^2.1.6",
41
- "h3": "2.0.1-rc.14"
41
+ "clear-router": "^2.3.3",
42
+ "h3": "2.0.1-rc.16"
42
43
  },
43
44
  "scripts": {
44
45
  "build": "tsdown",
45
- "version:patch": "pnpm version patch --no-git-tag-version"
46
+ "version:patch": "pnpm version patch"
46
47
  }
47
48
  }
@@ -1,15 +1,15 @@
1
- import BaseController from '@controllers/BaseController'
1
+ import { BaseController } from '@controllers/BaseController'
2
2
  import BaseController from '@controllers/BaseController'
3
3
  import { HttpContext } from 'clear-router/types/h3'
4
4
  import {{ResourceName}} from '@app/http/resources/{{ResourceName}}'
5
5
  import {{CollectionResourceName}} from '@app/http/resources/{{CollectionResourceName}}'
6
6
 
7
- import { Resource } from 'resora';
7
+ import { Resource } from 'resora'
8
8
 
9
9
  /**
10
10
  * {{ControllerName}}
11
11
  */
12
- export default class extends BaseController {
12
+ export default class {{ControllerName}} extends BaseController {
13
13
  /**
14
14
  * Get all resources
15
15
  *
@@ -24,7 +24,7 @@ export default class extends BaseController {
24
24
  code: 200,
25
25
  })
26
26
  .response(res)
27
- .setStatusCode(200);
27
+ .setStatusCode(200)
28
28
  }
29
29
 
30
30
  /**
@@ -41,7 +41,7 @@ export default class extends BaseController {
41
41
  code: 200,
42
42
  })
43
43
  .response(res)
44
- .setStatusCode(200);
44
+ .setStatusCode(200)
45
45
  }
46
46
 
47
47
  /**
@@ -58,7 +58,7 @@ export default class extends BaseController {
58
58
  code: 201,
59
59
  })
60
60
  .response(res)
61
- .setStatusCode(201);
61
+ .setStatusCode(201)
62
62
  }
63
63
 
64
64
  /**
@@ -75,7 +75,7 @@ export default class extends BaseController {
75
75
  code: 202,
76
76
  })
77
77
  .response(res)
78
- .setStatusCode(202);
78
+ .setStatusCode(202)
79
79
  }
80
80
 
81
81
  /**
@@ -92,6 +92,6 @@ export default class extends BaseController {
92
92
  code: 202,
93
93
  })
94
94
  .response(res)
95
- .setStatusCode(202);
95
+ .setStatusCode(202)
96
96
  }
97
97
  }
@@ -1,12 +1,12 @@
1
- import BaseController from '@controllers/BaseController';
1
+ import { BaseController } from '@controllers/BaseController'
2
2
  import { HttpContext } from 'clear-router/types/h3'
3
3
 
4
- import { Resource } from 'resora';
4
+ import { Resource } from 'resora'
5
5
 
6
6
  /**
7
7
  * {{ControllerName}}
8
8
  */
9
- export default class extends BaseController {
9
+ export default class {{ControllerName}} extends BaseController {
10
10
  /**
11
11
  * Get all resources
12
12
  *
@@ -21,7 +21,7 @@ export default class extends BaseController {
21
21
  code: 200,
22
22
  })
23
23
  .response(res)
24
- .setStatusCode(200);
24
+ .setStatusCode(200)
25
25
  }
26
26
 
27
27
  /**
@@ -38,7 +38,7 @@ export default class extends BaseController {
38
38
  code: 200,
39
39
  })
40
40
  .response(res)
41
- .setStatusCode(200);
41
+ .setStatusCode(200)
42
42
  }
43
43
 
44
44
  /**
@@ -55,7 +55,7 @@ export default class extends BaseController {
55
55
  code: 201,
56
56
  })
57
57
  .response(res)
58
- .setStatusCode(201);
58
+ .setStatusCode(201)
59
59
  }
60
60
 
61
61
  /**
@@ -72,7 +72,7 @@ export default class extends BaseController {
72
72
  code: 202,
73
73
  })
74
74
  .response(res)
75
- .setStatusCode(202);
75
+ .setStatusCode(202)
76
76
  }
77
77
 
78
78
  /**
@@ -89,6 +89,6 @@ export default class extends BaseController {
89
89
  code: 202,
90
90
  })
91
91
  .response(res)
92
- .setStatusCode(202);
92
+ .setStatusCode(202)
93
93
  }
94
94
  }
@@ -1,13 +1,13 @@
1
- import BaseController from '@controllers/BaseController'
1
+ import { BaseController } from '@controllers/BaseController'
2
2
  import { HttpContext } from 'clear-router/types/h3'
3
- import { Resource } from 'resora';
4
- import { prisma } from '@core/DB'
3
+ import { Resource } from 'resora'
4
+ import { {{Model}} } from 'src/models/{{Model}}'
5
5
  import { readBody } from 'h3'
6
6
 
7
7
  /**
8
8
  * {{ControllerName}}
9
9
  */
10
- export default class extends BaseController {
10
+ export default class {{ControllerName}} extends BaseController {
11
11
  /**
12
12
  * Get all resource from the database
13
13
  *
@@ -15,9 +15,7 @@ export default class extends BaseController {
15
15
  * @param res
16
16
  */
17
17
  index = async ({ res }: HttpContext) => {
18
- const data = await prisma.{{ModelName}}.findMany(
19
- { orderBy: { id: 'asc' } }
20
- )
18
+ const data = await {{Model}}.query().orderBy({ id: 'asc' }).get()
21
19
 
22
20
  return await new Resource({ data })
23
21
  .additional({
@@ -26,7 +24,7 @@ export default class extends BaseController {
26
24
  code: 200,
27
25
  })
28
26
  .response(res)
29
- .setStatusCode(200);
27
+ .setStatusCode(200)
30
28
  }
31
29
 
32
30
  /**
@@ -36,9 +34,7 @@ export default class extends BaseController {
36
34
  * @param res
37
35
  */
38
36
  show = async ({ res, context }: HttpContext) => {
39
- const data = await prisma.{{ModelName}}.findFirst(
40
- { where: { id: String(context.params?.id) } }
41
- )
37
+ const data = await {{Model}}.query().where({ id: String(context.params?.id) }).firstOrFail()
42
38
 
43
39
  return await new Resource({ data })
44
40
  .additional({
@@ -47,7 +43,7 @@ export default class extends BaseController {
47
43
  code: 200,
48
44
  })
49
45
  .response(res)
50
- .setStatusCode(200);
46
+ .setStatusCode(200)
51
47
  }
52
48
 
53
49
  /**
@@ -55,13 +51,13 @@ export default class extends BaseController {
55
51
  *
56
52
  * The calling route must recieve a multer.RequestHandler instance
57
53
  *
58
- * @example router.post('/{{ModelName}}s', upload.none(), new AdminController().create);
54
+ * @example router.post('/{{ModelName}}s', upload.none(), new AdminController().create)
59
55
  *
60
56
  * @param req
61
57
  * @param res
62
58
  */
63
59
  create = async (evt: HttpContext) => {
64
- const data = await prisma.{{ModelName}}.create({
60
+ const data = await {{Model}}.query().create({
65
61
  data: readBody(evt) as any,
66
62
  })
67
63
 
@@ -72,7 +68,7 @@ export default class extends BaseController {
72
68
  code: 201,
73
69
  })
74
70
  .response(evt.res)
75
- .setStatusCode(201);
71
+ .setStatusCode(201)
76
72
  }
77
73
 
78
74
  /**
@@ -82,10 +78,11 @@ export default class extends BaseController {
82
78
  * @param res
83
79
  */
84
80
  update = async (evt: HttpContext) => {
85
- const data = await prisma.{{ModelName}}.update({
86
- where: { id: String(evt.context.params?.id) },
87
- data: readBody(evt) as any,
88
- })
81
+ const data = await {{Model}}.query()
82
+ .where({ id: String(evt.context.params?.id) })
83
+ .update({
84
+ data: readBody(evt) as any,
85
+ })
89
86
 
90
87
  return await new Resource({ data })
91
88
  .additional({
@@ -94,7 +91,7 @@ export default class extends BaseController {
94
91
  code: 202,
95
92
  })
96
93
  .response(evt.res)
97
- .setStatusCode(202);
94
+ .setStatusCode(202)
98
95
  }
99
96
 
100
97
  /**
@@ -104,9 +101,7 @@ export default class extends BaseController {
104
101
  * @param res
105
102
  */
106
103
  destroy = async ({ res, context }: HttpContext) => {
107
- await prisma.{{ModelName}}.delete(
108
- { where: { id: String(context.params?.id) } }
109
- )
104
+ await {{Model}}.query().where({ id: String(context.params?.id) }).delete()
110
105
 
111
106
  return await new Resource({ data: null })
112
107
  .additional({
@@ -115,6 +110,6 @@ export default class extends BaseController {
115
110
  code: 202,
116
111
  })
117
112
  .response(res)
118
- .setStatusCode(202);
113
+ .setStatusCode(202)
119
114
  }
120
115
  }
@@ -1,10 +1,10 @@
1
- import BaseController from '@controllers/BaseController';
1
+ import { BaseController } from '@controllers/BaseController'
2
2
  import { HttpContext } from 'clear-router/types/h3'
3
3
 
4
4
  /**
5
5
  * {{ControllerName}}
6
6
  */
7
- export default class extends BaseController {
7
+ export default class {{ControllerName}} extends BaseController {
8
8
  index = async ({ req, res }: HttpContext) => {
9
9
  return '<p>Hello!</p>'
10
10
  }