@loke/http-rpc 5.1.0-beta.1 → 5.1.0-beta.2

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/README.md CHANGED
@@ -52,6 +52,69 @@ app.use(
52
52
  app.use(createErrorHandler({ log: (msg) => console.log(msg) }));
53
53
  ```
54
54
 
55
+ With Schema
56
+
57
+ ```ts
58
+ const { serviceWithSchema } = require("@loke/http-rpc");
59
+
60
+ const MY_SERVICE_META = {
61
+ service: "my-service", // display name
62
+ help: "Documentation goes here",
63
+ multiArg: false, // defaults to false. If true accepts an array for arguments, if false an array will be assumed to be the first (and only) argument.
64
+ expose: [
65
+ // The methods to be exposed publicly
66
+
67
+ {
68
+ methodName: "moreStuff",
69
+ methodTimeout: 15000,
70
+ paramNames: ["stuffs"],
71
+ help: "This is a silly method",
72
+ },
73
+ ],
74
+ };
75
+
76
+ const meta = { implementation: myService, meta: MY_SERVICE_META };
77
+
78
+ interface Thing {
79
+ name: string;
80
+ }
81
+
82
+ type Defs = { Thing: Thing };
83
+
84
+ // can now be...
85
+
86
+ // https://jsontypedef.com/docs/jtd-in-5-minutes/#empty-schemas
87
+
88
+ // instead of `typeof myService` you could also name a type like
89
+ // type Service = {}
90
+ const metaWithSchema = serviceWithSchema<typeof myService, Defs>(myService, {
91
+ name: "my-service",
92
+ // Record<string, JTD>
93
+ definitions: {
94
+ Thing: {
95
+ properties: {
96
+ name: { type: "string" },
97
+ },
98
+ },
99
+ },
100
+ methods: {
101
+ moreStuff: {
102
+ help: "This is a silly method",
103
+ // JTD
104
+ requestTypeDef: {
105
+ properties: {
106
+ stuffs: { type: "string" },
107
+ },
108
+ optionalProperties: {
109
+ thing: {},
110
+ },
111
+ },
112
+ responseTypeDef: { ref: "Thing" },
113
+ },
114
+ },
115
+ });
116
+ ```
117
+
55
118
  ## Implementation Guide
56
119
 
57
120
  ```js
package/dist/common.d.ts CHANGED
@@ -22,5 +22,5 @@ export interface Service {
22
22
  }
23
23
  export interface ServiceSet<S extends Service> {
24
24
  implementation: S;
25
- meta: ServiceDetails<S>;
25
+ meta: ServiceDetails<S, any>;
26
26
  }
package/dist/schema.d.ts CHANGED
@@ -15,5 +15,5 @@ export declare function serviceWithSchema<S extends Service, Def extends Record<
15
15
  [K in keyof Def]: JTDSchemaType<Def[K], Def>;
16
16
  };
17
17
  methods: Methods<S, Def>;
18
- }): ServiceSet<Service>;
18
+ }): ServiceSet<any>;
19
19
  export {};
package/dist/schema.js CHANGED
@@ -22,6 +22,7 @@ function serviceWithSchema(service, serviceMeta) {
22
22
  const implementation = {};
23
23
  const serviceDetails = {
24
24
  service: serviceMeta.name,
25
+ definitions: serviceMeta === null || serviceMeta === void 0 ? void 0 : serviceMeta.definitions,
25
26
  expose: [],
26
27
  };
27
28
  for (const [methodName, methodMeta] of Object.entries(serviceMeta.methods)) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAkD;AAQlD,MAAM,eAAgB,SAAQ,KAAK;IAMjC,YAAY,OAAe,EAAE,MAA6B;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,sDAAsD,CAAC;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AAwBD,SAAgB,iBAAiB,CAI/B,OAAU,EACV,WAMC;IAED,MAAM,GAAG,GAAG,IAAI,aAAG,EAAE,CAAC;IAEtB,MAAM,cAAc,GAEhB,EAAE,CAAC;IAEP,MAAM,cAAc,GAA2B;QAC7C,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,WAAW,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW;QACrC,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1E,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,iBAC/B,WAAW,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,IAClC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,EAC7B,CAAC;QAEH,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,iBAChC,WAAW,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,IAClC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,eAAe,EAC9B,CAAC;QAEH,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;YACzB,UAAU;YACV,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,eAAe,EAAE,UAAU,CAAC,eAAe;SAC5C,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gBACxB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;gBACpC,IAAI,GAAG,GAAG,iCAAiC,CAAC;gBAE5C,MAAM,MAAM,GAA0B,EAAE,CAAC;gBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACzB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,GAAG,EAAE;wBACP,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;wBACvC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;wBACnC,GAAG;4BACD,CAAC,GAAG,CAAC,YAAY;gCACf,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG;gCACrD,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;qBACzB;iBACF;gBAED,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aACxC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;aACrC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;KACH;IAED,OAAO;QACL,cAAc;QACd,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC;AAnFD,8CAmFC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loke/http-rpc",
3
- "version": "5.1.0-beta.1",
3
+ "version": "5.1.0-beta.2",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",