@zenstackhq/runtime 0.1.6 → 0.1.11

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/auth.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '.zenstack/auth';
package/auth.js ADDED
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ ...require('.zenstack/auth/index'),
3
+ };
package/hooks.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '.zenstack/hooks';
package/hooks.js ADDED
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ ...require('.zenstack/hooks/index'),
3
+ };
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from '.zenstack';
2
+ import service from '.zenstack';
3
+ export default service;
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('.zenstack/index').default;
package/package.json CHANGED
@@ -1,37 +1,13 @@
1
1
  {
2
2
  "name": "@zenstackhq/runtime",
3
- "version": "0.1.6",
4
- "description": "ZenStack runtime library",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
7
- "keywords": [],
8
- "author": "",
9
- "license": "ISC",
10
- "files": [
11
- "lib/**/*"
12
- ],
13
- "dependencies": {
14
- "deepcopy": "^2.1.0",
15
- "swr": "^1.3.0"
16
- },
3
+ "version": "0.1.11",
4
+ "description": "ZenStack generated runtime code",
5
+ "main": "index.js",
6
+ "types": "index.d.ts",
17
7
  "peerDependencies": {
18
- "next": "12.3.1",
19
- "react": "^17.0.2 || ^18",
20
- "react-dom": "^17.0.2 || ^18"
21
- },
22
- "devDependencies": {
23
- "@types/jest": "^29.0.3",
24
- "@types/node": "^14.18.29",
25
- "jest": "^29.0.3",
26
- "ts-jest": "^29.0.1",
27
- "ts-node": "^10.9.1",
28
- "tsc-alias": "^1.7.0",
29
- "tsconfig-paths-jest": "^0.0.1",
30
- "typescript": "^4.6.2"
8
+ "@zenstackhq/internal": "^0.1.0",
9
+ "bcryptjs": "^2.4.3"
31
10
  },
32
- "scripts": {
33
- "build": "tsc",
34
- "watch": "tsc --watch",
35
- "test": "jest"
36
- }
11
+ "author": "ZenStack",
12
+ "license": "MIT"
37
13
  }
package/server.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@zenstackhq/runtime';
package/server.js ADDED
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ ...require('@zenstackhq/runtime/request-handler'),
3
+ };
package/types.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '.zenstack/.prisma';
package/types.js ADDED
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ ...require('.zenstack/.prisma/index'),
3
+ };
@@ -1,16 +0,0 @@
1
- import { NextApiRequest, NextApiResponse } from 'next';
2
- import { RequestHandlerOptions } from '../../request-handler';
3
- import { Service } from '../../types';
4
- import { RequestHandler } from '../types';
5
- export default class DataHandler<DbClient> implements RequestHandler {
6
- private readonly service;
7
- private readonly options;
8
- private readonly queryProcessor;
9
- constructor(service: Service<DbClient>, options: RequestHandlerOptions);
10
- handle(req: NextApiRequest, res: NextApiResponse, path: string[]): Promise<void>;
11
- private get;
12
- private post;
13
- private put;
14
- private del;
15
- private ensureEntityPolicy;
16
- }
@@ -1,210 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const types_1 = require("../../types");
13
- const types_2 = require("../types");
14
- const query_processor_1 = require("./query-processor");
15
- const PRISMA_ERROR_MAPPING = {
16
- P2002: types_1.ServerErrorCode.UNIQUE_CONSTRAINT_VIOLATION,
17
- P2003: types_1.ServerErrorCode.REFERENCE_CONSTRAINT_VIOLATION,
18
- };
19
- class DataHandler {
20
- constructor(service, options) {
21
- this.service = service;
22
- this.options = options;
23
- this.queryProcessor = new query_processor_1.QueryProcessor(service);
24
- }
25
- handle(req, res, path) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- const [model, id] = path;
28
- const method = req.method;
29
- const context = { user: yield this.options.getServerUser(req, res) };
30
- try {
31
- switch (method) {
32
- case 'GET':
33
- yield this.get(req, res, model, id, context);
34
- break;
35
- case 'POST':
36
- yield this.post(req, res, model, context);
37
- break;
38
- case 'PUT':
39
- yield this.put(req, res, model, id, context);
40
- break;
41
- case 'DELETE':
42
- yield this.del(req, res, model, id, context);
43
- break;
44
- default:
45
- console.warn(`Unhandled method: ${method}`);
46
- res.status(200).send({});
47
- break;
48
- }
49
- }
50
- catch (err) {
51
- console.error(`Error handling ${method} ${model}: ${err}`);
52
- if (err instanceof types_2.RequestHandlerError) {
53
- switch (err.code) {
54
- case types_1.ServerErrorCode.DENIED_BY_POLICY:
55
- res.status(403).send({
56
- code: err.code,
57
- message: err.message,
58
- });
59
- break;
60
- case types_1.ServerErrorCode.ENTITY_NOT_FOUND:
61
- res.status(404).send({
62
- code: err.code,
63
- message: err.message,
64
- });
65
- break;
66
- default:
67
- res.status(400).send({
68
- code: err.code,
69
- message: err.message,
70
- });
71
- }
72
- }
73
- else if (err.code && PRISMA_ERROR_MAPPING[err.code]) {
74
- res.status(400).send({
75
- code: PRISMA_ERROR_MAPPING[err.code],
76
- message: 'database access error',
77
- });
78
- }
79
- else {
80
- console.error(`An unknown error occurred: ${JSON.stringify(err)}`);
81
- res.status(500).send({ error: types_1.ServerErrorCode.UNKNOWN });
82
- }
83
- }
84
- });
85
- }
86
- get(req, res, model, id, context) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- const db = this.service.db[model];
89
- const args = req.query.q ? JSON.parse(req.query.q) : {};
90
- const processedArgs = yield this.queryProcessor.processQueryArgs(model, args, 'read', context);
91
- let r;
92
- if (id) {
93
- if (processedArgs.where) {
94
- processedArgs.where = {
95
- AND: [args.where, { id }],
96
- };
97
- }
98
- else {
99
- processedArgs.where = { id };
100
- }
101
- r = yield db.findFirst(processedArgs);
102
- if (!r) {
103
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.ENTITY_NOT_FOUND, 'not found');
104
- }
105
- }
106
- else {
107
- r = yield db.findMany(processedArgs);
108
- }
109
- console.log(`Finding ${model}:\n${JSON.stringify(processedArgs, undefined, 2)}`);
110
- yield this.queryProcessor.postProcess(model, processedArgs, r, 'read', context);
111
- res.status(200).send(r);
112
- });
113
- }
114
- post(req, res, model, context) {
115
- return __awaiter(this, void 0, void 0, function* () {
116
- const args = req.body;
117
- if (!args) {
118
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.INVALID_REQUEST_PARAMS, 'body is required');
119
- }
120
- const db = this.service.db;
121
- const processedArgs = yield this.queryProcessor.processQueryArgs(model, args, 'create', context, false);
122
- const r = yield db.$transaction((tx) => __awaiter(this, void 0, void 0, function* () {
123
- console.log(`Create ${model}:\n${JSON.stringify(processedArgs, undefined, 2)}`);
124
- const created = yield tx[model].create(processedArgs);
125
- let queryArgs = {
126
- where: { id: created.id },
127
- include: args.include,
128
- select: args.select,
129
- };
130
- queryArgs = yield this.queryProcessor.processQueryArgs(model, queryArgs, 'create', context);
131
- console.log(`Finding created ${model}:\n${JSON.stringify(queryArgs, undefined, 2)}`);
132
- const found = yield tx[model].findFirst(queryArgs);
133
- if (!found) {
134
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.DENIED_BY_POLICY, 'denied by policy');
135
- }
136
- return created;
137
- }));
138
- yield this.queryProcessor.postProcess(model, processedArgs, r, 'create', context);
139
- res.status(201).send(r);
140
- });
141
- }
142
- put(req, res, model, id, context) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- if (!id) {
145
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.INVALID_REQUEST_PARAMS, 'missing "id" parameter');
146
- }
147
- // ensure entity passes policy check
148
- yield this.ensureEntityPolicy(id, model, 'update', context);
149
- const args = req.body;
150
- if (!args) {
151
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.INVALID_REQUEST_PARAMS, 'body is required');
152
- }
153
- const db = this.service.db;
154
- const updateArgs = yield this.queryProcessor.processQueryArgs(model, args, 'update', context, false);
155
- updateArgs.where = Object.assign(Object.assign({}, updateArgs.where), { id });
156
- const r = yield db.$transaction((tx) => __awaiter(this, void 0, void 0, function* () {
157
- console.log(`Update ${model}:\n${JSON.stringify(updateArgs, undefined, 2)}`);
158
- const updated = yield tx[model].update(updateArgs);
159
- // make sure after update, the entity passes policy check
160
- let queryArgs = {
161
- where: updateArgs.where,
162
- include: args.include,
163
- select: args.select,
164
- };
165
- queryArgs = yield this.queryProcessor.processQueryArgs(model, queryArgs, 'update', context);
166
- console.log(`Finding post-updated ${model}:\n${JSON.stringify(queryArgs, undefined, 2)}`);
167
- const found = yield tx[model].findFirst(queryArgs);
168
- if (!found) {
169
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.DENIED_BY_POLICY, 'post-update denied by policy');
170
- }
171
- return updated;
172
- }));
173
- yield this.queryProcessor.postProcess(model, updateArgs, r, 'update', context);
174
- res.status(200).send(r);
175
- });
176
- }
177
- del(req, res, model, id, context) {
178
- return __awaiter(this, void 0, void 0, function* () {
179
- if (!id) {
180
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.INVALID_REQUEST_PARAMS, 'missing "id" parameter');
181
- }
182
- // ensure entity passes policy check
183
- yield this.ensureEntityPolicy(id, model, 'delete', context);
184
- const args = req.query.q ? JSON.parse(req.query.q) : {};
185
- // proceed with deleting
186
- const delArgs = yield this.queryProcessor.processQueryArgs(model, args, 'delete', context, false);
187
- delArgs.where = Object.assign(Object.assign({}, delArgs.where), { id });
188
- console.log(`Deleting ${model}:\n${JSON.stringify(delArgs, undefined, 2)}`);
189
- const db = this.service.db[model];
190
- const r = yield db.delete(delArgs);
191
- yield this.queryProcessor.postProcess(model, delArgs, r, 'delete', context);
192
- res.status(200).send(r);
193
- });
194
- }
195
- ensureEntityPolicy(id, model, operation, context) {
196
- return __awaiter(this, void 0, void 0, function* () {
197
- const db = this.service.db[model];
198
- // check if the record is readable concerning "delete" policy
199
- const readArgs = yield this.queryProcessor.processQueryArgs(model, { where: { id } }, operation, context);
200
- console.log(`Finding to-be-deleted ${model}:\n${JSON.stringify(readArgs, undefined, 2)}`);
201
- const read = yield db.findFirst(readArgs);
202
- if (!read) {
203
- throw new types_2.RequestHandlerError(types_1.ServerErrorCode.DENIED_BY_POLICY, 'denied by policy');
204
- }
205
- return read;
206
- });
207
- }
208
- }
209
- exports.default = DataHandler;
210
- //# sourceMappingURL=handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handler/data/handler.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { PolicyOperationKind, QueryContext, Service } from '../../types';
2
- export declare class QueryProcessor {
3
- private readonly service;
4
- constructor(service: Service);
5
- processQueryArgs(model: string, args: any, operation: PolicyOperationKind, context: QueryContext, injectWhere?: boolean): Promise<any>;
6
- postProcess(model: string, queryArgs: any, data: any, operation: PolicyOperationKind, context: QueryContext): Promise<void>;
7
- }
@@ -1,66 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.QueryProcessor = void 0;
16
- const deepcopy_1 = __importDefault(require("deepcopy"));
17
- class QueryProcessor {
18
- constructor(service) {
19
- this.service = service;
20
- }
21
- processQueryArgs(model, args, operation, context, injectWhere = true) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- const r = args ? (0, deepcopy_1.default)(args) : {};
24
- if (injectWhere) {
25
- const guard = yield this.service.buildQueryGuard(model, operation, context);
26
- if (guard) {
27
- if (!r.where) {
28
- r.where = guard;
29
- }
30
- else {
31
- r.where = {
32
- AND: [guard, r.where],
33
- };
34
- }
35
- }
36
- }
37
- if (r.include || r.select) {
38
- // "include" and "select" are mutually exclusive
39
- const selector = r.include ? 'include' : 'select';
40
- for (const [field, value] of Object.entries(r[selector])) {
41
- const fieldInfo = yield this.service.resolveField(model, field);
42
- if (fieldInfo) {
43
- if (fieldInfo.isArray) {
44
- // note that Prisma only allows to attach filter for "to-many" relation
45
- // query, so we need to handle "to-one" filter separately in post-processing
46
- const fieldGuard = yield this.processQueryArgs(fieldInfo.type, value === true ? {} : value, operation, context);
47
- r[selector][field] = fieldGuard;
48
- }
49
- else {
50
- // make sure "id" field is included so that we can do post-process filtering
51
- if (selector === 'select') {
52
- r[selector].id = true;
53
- }
54
- }
55
- }
56
- }
57
- }
58
- return r;
59
- });
60
- }
61
- postProcess(model, queryArgs, data, operation, context) {
62
- return __awaiter(this, void 0, void 0, function* () { });
63
- }
64
- }
65
- exports.QueryProcessor = QueryProcessor;
66
- //# sourceMappingURL=query-processor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-processor.js","sourceRoot":"","sources":["../../../src/handler/data/query-processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wDAAgC;AAGhC,MAAa,cAAc;IACvB,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAE3C,gBAAgB,CAClB,KAAa,EACb,IAAS,EACT,SAA8B,EAC9B,OAAqB,EACrB,cAAuB,IAAI;;YAE3B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAErC,IAAI,WAAW,EAAE;gBACb,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAC5C,KAAK,EACL,SAAS,EACT,OAAO,CACV,CAAC;gBACF,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;wBACV,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;qBACnB;yBAAM;wBACH,CAAC,CAAC,KAAK,GAAG;4BACN,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;yBACxB,CAAC;qBACL;iBACJ;aACJ;YAED,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,EAAE;gBACvB,gDAAgD;gBAChD,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAClD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;oBACtD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAChE,IAAI,SAAS,EAAE;wBACX,IAAI,SAAS,CAAC,OAAO,EAAE;4BACnB,uEAAuE;4BACvE,4EAA4E;4BAC5E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,SAAS,CAAC,IAAI,EACd,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAC3B,SAAS,EACT,OAAO,CACV,CAAC;4BACF,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;yBACnC;6BAAM;4BACH,4EAA4E;4BAC5E,IAAI,QAAQ,KAAK,QAAQ,EAAE;gCACvB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;6BACzB;yBACJ;qBACJ;iBACJ;aACJ;YAED,OAAO,CAAC,CAAC;QACb,CAAC;KAAA;IAEK,WAAW,CACb,KAAa,EACb,SAAc,EACd,IAAS,EACT,SAA8B,EAC9B,OAAqB;8DACtB,CAAC;KAAA;CACP;AAjED,wCAiEC"}
@@ -1 +0,0 @@
1
- export { default as DataHandler } from './data/handler';
@@ -1,9 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DataHandler = void 0;
7
- var handler_1 = require("./data/handler");
8
- Object.defineProperty(exports, "DataHandler", { enumerable: true, get: function () { return __importDefault(handler_1).default; } });
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handler/index.ts"],"names":[],"mappings":";;;;;;AAAA,0CAAwD;AAA/C,uHAAA,OAAO,OAAe"}
@@ -1,10 +0,0 @@
1
- import { NextApiRequest, NextApiResponse } from 'next';
2
- import { ServerErrorCode } from '../types';
3
- export interface RequestHandler {
4
- handle(req: NextApiRequest, res: NextApiResponse, path: string[]): Promise<void>;
5
- }
6
- export declare class RequestHandlerError extends Error {
7
- readonly code: ServerErrorCode;
8
- constructor(code: ServerErrorCode, message: string);
9
- toString(): string;
10
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RequestHandlerError = void 0;
4
- class RequestHandlerError extends Error {
5
- constructor(code, message) {
6
- super(message);
7
- this.code = code;
8
- }
9
- toString() {
10
- return `Request handler error: ${this.code}, ${this.message}`;
11
- }
12
- }
13
- exports.RequestHandlerError = RequestHandlerError;
14
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/handler/types.ts"],"names":[],"mappings":";;;AAWA,MAAa,mBAAoB,SAAQ,KAAK;IAC1C,YAA4B,IAAqB,EAAE,OAAe;QAC9D,KAAK,CAAC,OAAO,CAAC,CAAC;QADS,SAAI,GAAJ,IAAI,CAAiB;IAEjD,CAAC;IAED,QAAQ;QACJ,OAAO,0BAA0B,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC;CACJ;AARD,kDAQC"}
package/lib/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './types';
2
- export * from './request-handler';
package/lib/index.js DELETED
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types"), exports);
18
- __exportStar(require("./request-handler"), exports);
19
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,oDAAkC"}
@@ -1,6 +0,0 @@
1
- import type { ScopedMutator } from 'swr/dist/types';
2
- export declare function get<Data, Error = any>(url: string, args?: unknown): import("swr").SWRResponse<Data, Error>;
3
- export declare function post<Data, Result>(url: string, data: Data, mutate: ScopedMutator<any>): Promise<Result>;
4
- export declare function put<Data, Result>(url: string, data: Data, mutate: ScopedMutator<any>): Promise<Result>;
5
- export declare function del<Result>(url: string, args: unknown, mutate: ScopedMutator<any>): Promise<Result>;
6
- export declare function getMutate(): ScopedMutator<any>;
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.getMutate = exports.del = exports.put = exports.post = exports.get = void 0;
36
- const swr_1 = __importStar(require("swr"));
37
- const fetcher = (url, options) => __awaiter(void 0, void 0, void 0, function* () {
38
- const res = yield fetch(url, options);
39
- if (!res.ok) {
40
- const error = new Error('An error occurred while fetching the data.');
41
- error.info = yield res.json();
42
- error.status = res.status;
43
- throw error;
44
- }
45
- return res.json();
46
- });
47
- function makeUrl(url, args) {
48
- return args ? url + `q=${encodeURIComponent(JSON.stringify(args))}` : url;
49
- }
50
- function get(url, args) {
51
- return (0, swr_1.default)(makeUrl(url, args), fetcher);
52
- }
53
- exports.get = get;
54
- function post(url, data, mutate) {
55
- return __awaiter(this, void 0, void 0, function* () {
56
- const r = yield fetcher(url, {
57
- method: 'POST',
58
- headers: {
59
- 'content-type': 'application/json',
60
- },
61
- body: JSON.stringify(data),
62
- });
63
- mutate(url);
64
- return r;
65
- });
66
- }
67
- exports.post = post;
68
- function put(url, data, mutate) {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const r = yield fetcher(url, {
71
- method: 'PUT',
72
- headers: {
73
- 'content-type': 'application/json',
74
- },
75
- body: JSON.stringify(data),
76
- });
77
- mutate(url, r);
78
- return r;
79
- });
80
- }
81
- exports.put = put;
82
- function del(url, args, mutate) {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- const reqUrl = makeUrl(url, args);
85
- const r = yield fetcher(reqUrl, {
86
- method: 'DELETE',
87
- });
88
- const path = url.split('/');
89
- path.pop();
90
- mutate(path.join('/'));
91
- return r;
92
- });
93
- }
94
- exports.del = del;
95
- function getMutate() {
96
- const { mutate } = (0, swr_1.useSWRConfig)();
97
- return mutate;
98
- }
99
- exports.getMutate = getMutate;
100
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA2C;AAG3C,MAAM,OAAO,GAAG,CAAO,GAAW,EAAE,OAAqB,EAAE,EAAE;IACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAA4C,IAAI,KAAK,CAC5D,4CAA4C,CAC/C,CAAC;QACF,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,KAAK,CAAC;KACf;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC,CAAA,CAAC;AAEF,SAAS,OAAO,CAAC,GAAW,EAAE,IAAa;IACvC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9E,CAAC;AAED,SAAgB,GAAG,CAAoB,GAAW,EAAE,IAAc;IAC9D,OAAO,IAAA,aAAM,EAAc,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAFD,kBAEC;AAED,SAAsB,IAAI,CACtB,GAAW,EACX,IAAU,EACV,MAA0B;;QAE1B,MAAM,CAAC,GAAW,MAAM,OAAO,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC;IACb,CAAC;CAAA;AAdD,oBAcC;AAED,SAAsB,GAAG,CACrB,GAAW,EACX,IAAU,EACV,MAA0B;;QAE1B,MAAM,CAAC,GAAW,MAAM,OAAO,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACf,OAAO,CAAC,CAAC;IACb,CAAC;CAAA;AAdD,kBAcC;AAED,SAAsB,GAAG,CACrB,GAAW,EACX,IAAa,EACb,MAA0B;;QAE1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,GAAW,MAAM,OAAO,CAAC,MAAM,EAAE;YACpC,MAAM,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACb,CAAC;CAAA;AAbD,kBAaC;AAED,SAAgB,SAAS;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAY,GAAE,CAAC;IAClC,OAAO,MAAM,CAAC;AAClB,CAAC;AAHD,8BAGC"}
@@ -1,6 +0,0 @@
1
- import { NextApiRequest, NextApiResponse } from 'next';
2
- import { AuthUser, Service } from './types';
3
- export declare type RequestHandlerOptions = {
4
- getServerUser: (req: NextApiRequest, res: NextApiResponse) => Promise<AuthUser | undefined>;
5
- };
6
- export declare function requestHandler<DbClient>(service: Service<DbClient>, options: RequestHandlerOptions): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.requestHandler = void 0;
13
- const handler_1 = require("./handler");
14
- function requestHandler(service, options) {
15
- const dataHandler = new handler_1.DataHandler(service, options);
16
- return (req, res) => __awaiter(this, void 0, void 0, function* () {
17
- const [route, ...rest] = req.query.path;
18
- switch (route) {
19
- case 'data':
20
- return dataHandler.handle(req, res, rest);
21
- default:
22
- res.status(404).json({ error: 'Unknown route: ' + route });
23
- }
24
- });
25
- }
26
- exports.requestHandler = requestHandler;
27
- //# sourceMappingURL=request-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../src/request-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCAAwC;AAUxC,SAAgB,cAAc,CAC1B,OAA0B,EAC1B,OAA8B;IAE9B,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAW,OAAO,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,CAAO,GAAmB,EAAE,GAAoB,EAAE,EAAE;QACvD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAgB,CAAC;QACpD,QAAQ,KAAK,EAAE;YACX,KAAK,MAAM;gBACP,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAE9C;gBACI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,GAAG,KAAK,EAAE,CAAC,CAAC;SAClE;IACL,CAAC,CAAA,CAAC;AACN,CAAC;AAfD,wCAeC"}
package/lib/request.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { ScopedMutator } from 'swr/dist/types';
2
- export declare function get<Data, Error = any>(url: string, args?: unknown): import("swr").SWRResponse<Data, Error>;
3
- export declare function post<Data, Result>(url: string, data: Data, mutate: ScopedMutator<any>): Promise<Result>;
4
- export declare function put<Data, Result>(url: string, data: Data, mutate: ScopedMutator<any>): Promise<Result>;
5
- export declare function del<Result>(url: string, args: unknown, mutate: ScopedMutator<any>): Promise<Result>;
6
- export declare function getMutate(): ScopedMutator<any>;
package/lib/request.js DELETED
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.getMutate = exports.del = exports.put = exports.post = exports.get = void 0;
36
- const swr_1 = __importStar(require("swr"));
37
- const fetcher = (url, options) => __awaiter(void 0, void 0, void 0, function* () {
38
- const res = yield fetch(url, options);
39
- if (!res.ok) {
40
- const error = new Error('An error occurred while fetching the data.');
41
- error.info = yield res.json();
42
- error.status = res.status;
43
- throw error;
44
- }
45
- return res.json();
46
- });
47
- function makeUrl(url, args) {
48
- return args ? url + `q=${encodeURIComponent(JSON.stringify(args))}` : url;
49
- }
50
- function get(url, args) {
51
- return (0, swr_1.default)(makeUrl(url, args), fetcher);
52
- }
53
- exports.get = get;
54
- function post(url, data, mutate) {
55
- return __awaiter(this, void 0, void 0, function* () {
56
- const r = yield fetcher(url, {
57
- method: 'POST',
58
- headers: {
59
- 'content-type': 'application/json',
60
- },
61
- body: JSON.stringify(data),
62
- });
63
- mutate(url);
64
- return r;
65
- });
66
- }
67
- exports.post = post;
68
- function put(url, data, mutate) {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const r = yield fetcher(url, {
71
- method: 'PUT',
72
- headers: {
73
- 'content-type': 'application/json',
74
- },
75
- body: JSON.stringify(data),
76
- });
77
- mutate(url, r);
78
- return r;
79
- });
80
- }
81
- exports.put = put;
82
- function del(url, args, mutate) {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- const reqUrl = makeUrl(url, args);
85
- const r = yield fetcher(reqUrl, {
86
- method: 'DELETE',
87
- });
88
- const path = url.split('/');
89
- path.pop();
90
- mutate(path.join('/'));
91
- return r;
92
- });
93
- }
94
- exports.del = del;
95
- function getMutate() {
96
- const { mutate } = (0, swr_1.useSWRConfig)();
97
- return mutate;
98
- }
99
- exports.getMutate = getMutate;
100
- //# sourceMappingURL=request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA2C;AAG3C,MAAM,OAAO,GAAG,CAAO,GAAW,EAAE,OAAqB,EAAE,EAAE;IACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAA4C,IAAI,KAAK,CAC5D,4CAA4C,CAC/C,CAAC;QACF,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,KAAK,CAAC;KACf;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC,CAAA,CAAC;AAEF,SAAS,OAAO,CAAC,GAAW,EAAE,IAAa;IACvC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9E,CAAC;AAED,SAAgB,GAAG,CAAoB,GAAW,EAAE,IAAc;IAC9D,OAAO,IAAA,aAAM,EAAc,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAFD,kBAEC;AAED,SAAsB,IAAI,CACtB,GAAW,EACX,IAAU,EACV,MAA0B;;QAE1B,MAAM,CAAC,GAAW,MAAM,OAAO,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC;IACb,CAAC;CAAA;AAdD,oBAcC;AAED,SAAsB,GAAG,CACrB,GAAW,EACX,IAAU,EACV,MAA0B;;QAE1B,MAAM,CAAC,GAAW,MAAM,OAAO,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACf,OAAO,CAAC,CAAC;IACb,CAAC;CAAA;AAdD,kBAcC;AAED,SAAsB,GAAG,CACrB,GAAW,EACX,IAAa,EACb,MAA0B;;QAE1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,GAAW,MAAM,OAAO,CAAC,MAAM,EAAE;YACpC,MAAM,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACb,CAAC;CAAA;AAbD,kBAaC;AAED,SAAgB,SAAS;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAY,GAAE,CAAC;IAClC,OAAO,MAAM,CAAC;AAClB,CAAC;AAHD,8BAGC"}
package/lib/types.d.ts DELETED
@@ -1,32 +0,0 @@
1
- export interface DbOperations {
2
- findMany(args: any): Promise<any[]>;
3
- findFirst(args: any): Promise<any>;
4
- create(args: any): Promise<any>;
5
- update(args: any): Promise<any>;
6
- delete(args: any): Promise<any>;
7
- }
8
- export declare type PolicyKind = 'allow' | 'deny';
9
- export declare type PolicyOperationKind = 'create' | 'update' | 'read' | 'delete';
10
- export declare type AuthUser = {
11
- id: string;
12
- } & Record<string, any>;
13
- export declare type QueryContext = {
14
- user?: AuthUser;
15
- };
16
- export declare type FieldInfo = {
17
- type: string;
18
- isArray: boolean;
19
- };
20
- export interface Service<DbClient = any> {
21
- get db(): DbClient;
22
- resolveField(model: string, field: string): Promise<FieldInfo | undefined>;
23
- buildQueryGuard(model: string, operation: PolicyOperationKind, context: QueryContext): any;
24
- }
25
- export declare enum ServerErrorCode {
26
- ENTITY_NOT_FOUND = "ENTITY_NOT_FOUND",
27
- INVALID_REQUEST_PARAMS = "INVALID_REQUEST_PARAMS",
28
- DENIED_BY_POLICY = "DENIED_BY_POLICY",
29
- UNIQUE_CONSTRAINT_VIOLATION = "UNIQUE_CONSTRAINT_VIOLATION",
30
- REFERENCE_CONSTRAINT_VIOLATION = "REFERENCE_CONSTRAINT_VIOLATION",
31
- UNKNOWN = "UNKNOWN"
32
- }
package/lib/types.js DELETED
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ServerErrorCode = void 0;
4
- var ServerErrorCode;
5
- (function (ServerErrorCode) {
6
- ServerErrorCode["ENTITY_NOT_FOUND"] = "ENTITY_NOT_FOUND";
7
- ServerErrorCode["INVALID_REQUEST_PARAMS"] = "INVALID_REQUEST_PARAMS";
8
- ServerErrorCode["DENIED_BY_POLICY"] = "DENIED_BY_POLICY";
9
- ServerErrorCode["UNIQUE_CONSTRAINT_VIOLATION"] = "UNIQUE_CONSTRAINT_VIOLATION";
10
- ServerErrorCode["REFERENCE_CONSTRAINT_VIOLATION"] = "REFERENCE_CONSTRAINT_VIOLATION";
11
- ServerErrorCode["UNKNOWN"] = "UNKNOWN";
12
- })(ServerErrorCode = exports.ServerErrorCode || (exports.ServerErrorCode = {}));
13
- //# sourceMappingURL=types.js.map
package/lib/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAgCA,IAAY,eAOX;AAPD,WAAY,eAAe;IACvB,wDAAqC,CAAA;IACrC,oEAAiD,CAAA;IACjD,wDAAqC,CAAA;IACrC,8EAA2D,CAAA;IAC3D,oFAAiE,CAAA;IACjE,sCAAmB,CAAA;AACvB,CAAC,EAPW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAO1B"}