@zenstackhq/sdk 1.0.0-beta.7 → 1.0.0-beta.9

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/constants.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * @zenstackhq/runtime package name
3
3
  */
4
4
  export declare const RUNTIME_PACKAGE = "@zenstackhq/runtime";
5
- export { AUXILIARY_FIELDS, GUARD_FIELD_NAME, TRANSACTION_FIELD_NAME, CrudFailureReason, } from '@zenstackhq/runtime/constants';
5
+ export { AUXILIARY_FIELDS, GUARD_FIELD_NAME, TRANSACTION_FIELD_NAME, CrudFailureReason } from '@zenstackhq/runtime';
6
6
  /**
7
7
  * Expression context
8
8
  */
package/constants.js CHANGED
@@ -5,11 +5,11 @@ exports.ExpressionContext = exports.CrudFailureReason = exports.TRANSACTION_FIEL
5
5
  * @zenstackhq/runtime package name
6
6
  */
7
7
  exports.RUNTIME_PACKAGE = '@zenstackhq/runtime';
8
- var constants_1 = require("@zenstackhq/runtime/constants");
9
- Object.defineProperty(exports, "AUXILIARY_FIELDS", { enumerable: true, get: function () { return constants_1.AUXILIARY_FIELDS; } });
10
- Object.defineProperty(exports, "GUARD_FIELD_NAME", { enumerable: true, get: function () { return constants_1.GUARD_FIELD_NAME; } });
11
- Object.defineProperty(exports, "TRANSACTION_FIELD_NAME", { enumerable: true, get: function () { return constants_1.TRANSACTION_FIELD_NAME; } });
12
- Object.defineProperty(exports, "CrudFailureReason", { enumerable: true, get: function () { return constants_1.CrudFailureReason; } });
8
+ var runtime_1 = require("@zenstackhq/runtime");
9
+ Object.defineProperty(exports, "AUXILIARY_FIELDS", { enumerable: true, get: function () { return runtime_1.AUXILIARY_FIELDS; } });
10
+ Object.defineProperty(exports, "GUARD_FIELD_NAME", { enumerable: true, get: function () { return runtime_1.GUARD_FIELD_NAME; } });
11
+ Object.defineProperty(exports, "TRANSACTION_FIELD_NAME", { enumerable: true, get: function () { return runtime_1.TRANSACTION_FIELD_NAME; } });
12
+ Object.defineProperty(exports, "CrudFailureReason", { enumerable: true, get: function () { return runtime_1.CrudFailureReason; } });
13
13
  /**
14
14
  * Expression context
15
15
  */
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,eAAe,GAAG,qBAAqB,CAAC;AAErD,2DAKuC;AAJnC,6GAAA,gBAAgB,OAAA;AAChB,6GAAA,gBAAgB,OAAA;AAChB,mHAAA,sBAAsB,OAAA;AACtB,8GAAA,iBAAiB,OAAA;AAGrB;;GAEG;AACH,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;AACrC,CAAC,EAJW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAI5B"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,eAAe,GAAG,qBAAqB,CAAC;AAErD,+CAAoH;AAA3G,2GAAA,gBAAgB,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAEtF;;GAEG;AACH,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;AACrC,CAAC,EAJW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAI5B"}
@@ -1,4 +1,4 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  import { AggregateOperationSupport } from './types';
3
3
  export declare const isAggregateInputType: (name: string) => boolean;
4
4
  export declare function addMissingInputObjectTypesForAggregate(inputObjectTypes: DMMF.InputType[], outputObjectTypes: DMMF.OutputType[]): void;
@@ -1,2 +1,2 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  export declare function addMissingInputObjectTypesForInclude(inputObjectTypes: DMMF.InputType[], models: DMMF.Model[]): void;
@@ -1,2 +1,2 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  export declare function addMissingInputObjectTypes(inputObjectTypes: DMMF.InputType[], outputObjectTypes: DMMF.OutputType[], models: DMMF.Model[]): void;
@@ -1,4 +1,4 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  export declare function checkModelHasModelRelation(model: DMMF.Model): boolean;
3
3
  export declare function checkModelHasManyModelRelation(model: DMMF.Model): boolean;
4
4
  export declare function checkIsModelRelationField(modelField: DMMF.Field): boolean;
@@ -1,2 +1,2 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  export declare function addMissingInputObjectTypesForModelArgs(inputObjectTypes: DMMF.InputType[], models: DMMF.Model[]): void;
@@ -1,2 +1,2 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  export declare function addMissingInputObjectTypesForSelect(inputObjectTypes: DMMF.InputType[], outputObjectTypes: DMMF.OutputType[], models: DMMF.Model[]): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenstackhq/sdk",
3
- "version": "1.0.0-beta.7",
3
+ "version": "1.0.0-beta.9",
4
4
  "description": "ZenStack plugin development SDK",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -11,13 +11,17 @@
11
11
  "author": "",
12
12
  "license": "MIT",
13
13
  "dependencies": {
14
- "@prisma/generator-helper": "4.10.0",
14
+ "@prisma/generator-helper": "^5.0.0",
15
+ "@prisma/internals": "4.10.0",
16
+ "@prisma/internals-v5": "npm:@prisma/internals@^5.0.0",
15
17
  "prettier": "^2.8.3",
18
+ "semver": "^7.3.8",
16
19
  "ts-morph": "^16.0.0",
17
- "@zenstackhq/language": "1.0.0-beta.7",
18
- "@zenstackhq/runtime": "1.0.0-beta.7"
20
+ "@zenstackhq/language": "1.0.0-beta.9",
21
+ "@zenstackhq/runtime": "1.0.0-beta.9"
19
22
  },
20
23
  "devDependencies": {
24
+ "@types/semver": "^7.3.13",
21
25
  "copyfiles": "^2.4.1",
22
26
  "rimraf": "^3.0.2",
23
27
  "typescript": "^4.9.4"
@@ -25,7 +29,7 @@
25
29
  "scripts": {
26
30
  "clean": "rimraf dist",
27
31
  "lint": "eslint src --ext ts",
28
- "build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./LICENSE ./README.md dist",
32
+ "build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./LICENSE ./README.md dist && pnpm pack dist --pack-destination '../../../.build'",
29
33
  "watch": "tsc --watch",
30
34
  "publish-dev": "pnpm build && pnpm publish --tag dev"
31
35
  }
package/prisma.d.ts CHANGED
@@ -1,5 +1,23 @@
1
+ import type { DMMF } from '@prisma/generator-helper';
1
2
  import { Model } from './ast';
2
3
  /**
3
4
  * Given a ZModel and an import context directory, compute the import spec for the Prisma Client.
4
5
  */
5
6
  export declare function getPrismaClientImportSpec(model: Model, importingFromDir: string): any;
7
+ /**
8
+ * Gets installed Prisma version by first checking "@prisma/client" and if not available,
9
+ * "prisma".
10
+ */
11
+ export declare function getPrismaVersion(): string | undefined;
12
+ export type GetDMMFOptions = {
13
+ datamodel?: string;
14
+ cwd?: string;
15
+ prismaPath?: string;
16
+ datamodelPath?: string;
17
+ retry?: number;
18
+ previewFeatures?: string[];
19
+ };
20
+ /**
21
+ * Loads Prisma DMMF with appropriate version
22
+ */
23
+ export declare function getDMMF(options: GetDMMFOptions): Promise<DMMF.Document>;
package/prisma.js CHANGED
@@ -1,12 +1,38 @@
1
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
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPrismaClientImportSpec = void 0;
29
+ exports.getDMMF = exports.getPrismaVersion = exports.getPrismaClientImportSpec = void 0;
30
+ const internals_1 = require("@prisma/internals");
31
+ const internals_v5_1 = require("@prisma/internals-v5");
32
+ const path_1 = __importDefault(require("path"));
33
+ const semver = __importStar(require("semver"));
7
34
  const ast_1 = require("./ast");
8
35
  const utils_1 = require("./utils");
9
- const path_1 = __importDefault(require("path"));
10
36
  /**
11
37
  * Given a ZModel and an import context directory, compute the import spec for the Prisma Client.
12
38
  */
@@ -48,7 +74,43 @@ function getPrismaClientImportSpec(model, importingFromDir) {
48
74
  // console.log('PRISMA CLIENT PATH:', resolvedPrismaClientOutput);
49
75
  // console.log('IMPORTING PATH:', importingFromDir);
50
76
  // compute prisma client absolute output dir relative to the importing file
51
- return path_1.default.relative(importingFromDir, resolvedPrismaClientOutput);
77
+ return normalizePath(path_1.default.relative(importingFromDir, resolvedPrismaClientOutput));
52
78
  }
53
79
  exports.getPrismaClientImportSpec = getPrismaClientImportSpec;
80
+ function normalizePath(p) {
81
+ return p ? p.split(path_1.default.sep).join(path_1.default.posix.sep) : p;
82
+ }
83
+ /**
84
+ * Gets installed Prisma version by first checking "@prisma/client" and if not available,
85
+ * "prisma".
86
+ */
87
+ function getPrismaVersion() {
88
+ try {
89
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
90
+ return require('@prisma/client/package.json').version;
91
+ }
92
+ catch (_a) {
93
+ try {
94
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
95
+ return require('prisma/package.json').version;
96
+ }
97
+ catch (_b) {
98
+ return undefined;
99
+ }
100
+ }
101
+ }
102
+ exports.getPrismaVersion = getPrismaVersion;
103
+ /**
104
+ * Loads Prisma DMMF with appropriate version
105
+ */
106
+ function getDMMF(options) {
107
+ const prismaVersion = getPrismaVersion();
108
+ if (prismaVersion && semver.gte(prismaVersion, '5.0.0')) {
109
+ return (0, internals_v5_1.getDMMF)(options);
110
+ }
111
+ else {
112
+ return (0, internals_1.getDMMF)(options);
113
+ }
114
+ }
115
+ exports.getDMMF = getDMMF;
54
116
  //# sourceMappingURL=prisma.js.map
package/prisma.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"prisma.js","sourceRoot":"","sources":["../src/prisma.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAgF;AAChF,mCAAqC;AACrC,gDAAwB;AAExB;;GAEG;AACH,SAAgB,yBAAyB,CAAC,KAAY,EAAE,gBAAwB;;IAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CACF,IAAA,qBAAe,EAAC,CAAC,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,CAC/E,CAAC;IAEnB,MAAM,iBAAiB,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,KAAK,CAAC,CAAC;IAE1D,IAAI,CAAC,YAAY,EAAE;QACf,iDAAiD;QACjD,OAAO,gBAAgB,CAAC;KAC3B;IAED,IAAI,cAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC/B,gBAAgB;QAChB,OAAO,YAAY,CAAC;KACvB;IAED,oEAAoE;IACpE,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5D,6CAA6C;IAC7C,IAAI,qBAAqB,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,cAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,CACpG,CAAC;IACZ,IAAI,YAAY,EAAE;QACd,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,MAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,0CAAE,KAAK,CAAC,CAAC;QACvF,IAAI,MAAM,EAAE;YACR,IAAI,cAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBACzB,qCAAqC;gBACrC,qBAAqB,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChD;iBAAM;gBACH,qBAAqB,GAAG,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;aACzE;SACJ;KACJ;IAED,gFAAgF;IAChF,MAAM,0BAA0B,GAAG,cAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;IAErF,SAAS;IACT,6DAA6D;IAC7D,kEAAkE;IAClE,oDAAoD;IAEpD,2EAA2E;IAC3E,OAAO,cAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;AACvE,CAAC;AAlDD,8DAkDC"}
1
+ {"version":3,"file":"prisma.js","sourceRoot":"","sources":["../src/prisma.ts"],"names":[],"mappings":"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"}
package/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DMMF } from '@prisma/generator-helper';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  import { Model } from '@zenstackhq/language/ast';
3
3
  /**
4
4
  * Plugin configuration option value type
package/utils.d.ts CHANGED
@@ -17,9 +17,13 @@ export declare function getAttributeArg(attr: DataModelAttribute | DataModelFiel
17
17
  export declare function getAttributeArgLiteral<T extends string | number | boolean>(attr: DataModelAttribute | DataModelFieldAttribute, name: string): T | undefined;
18
18
  export declare function isEnumFieldReference(node: AstNode): node is ReferenceExpr;
19
19
  /**
20
- * Gets id fields declared at the data model level
20
+ * Gets `@@id` fields declared at the data model level
21
21
  */
22
- export declare function getIdFields(model: DataModel): DataModelField[];
22
+ export declare function getModelIdFields(model: DataModel): DataModelField[];
23
+ /**
24
+ * Gets `@@unique` fields declared at the data model level
25
+ */
26
+ export declare function getModelUniqueFields(model: DataModel): DataModelField[];
23
27
  /**
24
28
  * Returns if the given field is declared as an id field.
25
29
  */
package/utils.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getFunctionExpressionContext = exports.requireOption = exports.resolvePath = exports.isForeignKeyField = exports.isRelationshipField = exports.isIdField = exports.getIdFields = exports.isEnumFieldReference = exports.getAttributeArgLiteral = exports.getAttributeArg = exports.getAttributeArgs = exports.hasAttribute = exports.getObjectLiteral = exports.getLiteralArray = exports.getArray = exports.getLiteral = exports.resolved = exports.getDataModels = void 0;
6
+ exports.getFunctionExpressionContext = exports.requireOption = exports.resolvePath = exports.isForeignKeyField = exports.isRelationshipField = exports.isIdField = exports.getModelUniqueFields = exports.getModelIdFields = exports.isEnumFieldReference = exports.getAttributeArgLiteral = exports.getAttributeArg = exports.getAttributeArgs = exports.hasAttribute = exports.getObjectLiteral = exports.getLiteralArray = exports.getArray = exports.getLiteral = exports.resolved = exports.getDataModels = void 0;
7
7
  const ast_1 = require("@zenstackhq/language/ast");
8
8
  const path_1 = __importDefault(require("path"));
9
9
  /**
@@ -111,9 +111,9 @@ function isEnumFieldReference(node) {
111
111
  }
112
112
  exports.isEnumFieldReference = isEnumFieldReference;
113
113
  /**
114
- * Gets id fields declared at the data model level
114
+ * Gets `@@id` fields declared at the data model level
115
115
  */
116
- function getIdFields(model) {
116
+ function getModelIdFields(model) {
117
117
  const idAttr = model.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@id'; });
118
118
  if (!idAttr) {
119
119
  return [];
@@ -126,21 +126,52 @@ function getIdFields(model) {
126
126
  .filter((item) => (0, ast_1.isReferenceExpr)(item))
127
127
  .map((item) => resolved(item.target));
128
128
  }
129
- exports.getIdFields = getIdFields;
129
+ exports.getModelIdFields = getModelIdFields;
130
+ /**
131
+ * Gets `@@unique` fields declared at the data model level
132
+ */
133
+ function getModelUniqueFields(model) {
134
+ const uniqueAttr = model.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@unique'; });
135
+ if (!uniqueAttr) {
136
+ return [];
137
+ }
138
+ const fieldsArg = uniqueAttr.args.find((a) => { var _a; return ((_a = a.$resolvedParam) === null || _a === void 0 ? void 0 : _a.name) === 'fields'; });
139
+ if (!fieldsArg || !(0, ast_1.isArrayExpr)(fieldsArg.value)) {
140
+ return [];
141
+ }
142
+ return fieldsArg.value.items
143
+ .filter((item) => (0, ast_1.isReferenceExpr)(item))
144
+ .map((item) => resolved(item.target));
145
+ }
146
+ exports.getModelUniqueFields = getModelUniqueFields;
130
147
  /**
131
148
  * Returns if the given field is declared as an id field.
132
149
  */
133
150
  function isIdField(field) {
134
151
  // field-level @id attribute
135
- if (field.attributes.some((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@id'; })) {
152
+ if (hasAttribute(field, '@id')) {
136
153
  return true;
137
154
  }
138
- // model-level @@id attribute with a list of fields
139
155
  const model = field.$container;
140
- const modelLevelIds = getIdFields(model);
156
+ // model-level @@id attribute with a list of fields
157
+ const modelLevelIds = getModelIdFields(model);
141
158
  if (modelLevelIds.includes(field)) {
142
159
  return true;
143
160
  }
161
+ if (model.fields.some((f) => hasAttribute(f, '@id')) || modelLevelIds.length > 0) {
162
+ // the model already has id field, don't check @unique and @@unique
163
+ return false;
164
+ }
165
+ // then, the first field with @unique can be used as id
166
+ const firstUniqueField = model.fields.find((f) => hasAttribute(f, '@unique'));
167
+ if (firstUniqueField) {
168
+ return firstUniqueField === field;
169
+ }
170
+ // last, the first model level @@unique can be used as id
171
+ const modelLevelUnique = getModelUniqueFields(model);
172
+ if (modelLevelUnique.includes(field)) {
173
+ return true;
174
+ }
144
175
  return false;
145
176
  }
146
177
  exports.isIdField = isIdField;
package/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}