@slicemachine/plugin-kit 0.4.82-beta.6 → 0.4.82-beta.8
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/_node_modules/fp-ts/es6/Either.cjs.map +1 -1
- package/dist/_node_modules/fp-ts/es6/Either.js.map +1 -1
- package/dist/_node_modules/fp-ts/es6/function.cjs +7 -9
- package/dist/_node_modules/fp-ts/es6/function.cjs.map +1 -1
- package/dist/_node_modules/fp-ts/es6/function.js +7 -9
- package/dist/_node_modules/fp-ts/es6/function.js.map +1 -1
- package/dist/_node_modules/fp-ts/es6/internal.cjs +7 -9
- package/dist/_node_modules/fp-ts/es6/internal.cjs.map +1 -1
- package/dist/_node_modules/fp-ts/es6/internal.js +7 -9
- package/dist/_node_modules/fp-ts/es6/internal.js.map +1 -1
- package/dist/_node_modules/lower-case/dist.es2015/index.cjs.map +1 -1
- package/dist/_node_modules/lower-case/dist.es2015/index.js.map +1 -1
- package/dist/_node_modules/no-case/dist.es2015/index.cjs.map +1 -1
- package/dist/_node_modules/no-case/dist.es2015/index.js.map +1 -1
- package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.cjs +11 -25
- package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.cjs.map +1 -1
- package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.js +11 -25
- package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.js.map +1 -1
- package/dist/_node_modules/p-limit/index.cjs.map +1 -1
- package/dist/_node_modules/p-limit/index.js.map +1 -1
- package/dist/_node_modules/pascal-case/dist.es2015/index.cjs.map +1 -1
- package/dist/_node_modules/pascal-case/dist.es2015/index.js.map +1 -1
- package/dist/_node_modules/tslib/tslib.es6.cjs +1 -3
- package/dist/_node_modules/tslib/tslib.es6.cjs.map +1 -1
- package/dist/_node_modules/tslib/tslib.es6.js +1 -3
- package/dist/_node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/createSliceMachineActions.cjs +1 -4
- package/dist/createSliceMachineActions.cjs.map +1 -1
- package/dist/createSliceMachineActions.js +1 -4
- package/dist/createSliceMachineActions.js.map +1 -1
- package/dist/createSliceMachineContext.cjs.map +1 -1
- package/dist/createSliceMachineContext.js.map +1 -1
- package/dist/createSliceMachineHelpers.cjs +1 -4
- package/dist/createSliceMachineHelpers.cjs.map +1 -1
- package/dist/createSliceMachineHelpers.js +1 -4
- package/dist/createSliceMachineHelpers.js.map +1 -1
- package/dist/createSliceMachineHookSystem.cjs.map +1 -1
- package/dist/createSliceMachineHookSystem.js.map +1 -1
- package/dist/createSliceMachinePluginRunner.cjs +1 -4
- package/dist/createSliceMachinePluginRunner.cjs.map +1 -1
- package/dist/createSliceMachinePluginRunner.js +1 -4
- package/dist/createSliceMachinePluginRunner.js.map +1 -1
- package/dist/defineSliceMachinePlugin.cjs.map +1 -1
- package/dist/defineSliceMachinePlugin.js.map +1 -1
- package/dist/fs/buildCustomTypeDirectoryPath.cjs.map +1 -1
- package/dist/fs/buildCustomTypeDirectoryPath.js.map +1 -1
- package/dist/fs/buildCustomTypeFilePath.cjs.map +1 -1
- package/dist/fs/buildCustomTypeFilePath.js.map +1 -1
- package/dist/fs/buildCustomTypeLibraryDirectoryPath.cjs.map +1 -1
- package/dist/fs/buildCustomTypeLibraryDirectoryPath.js.map +1 -1
- package/dist/fs/buildSliceDirectoryPath.cjs.map +1 -1
- package/dist/fs/buildSliceDirectoryPath.js.map +1 -1
- package/dist/fs/buildSliceFilePath.cjs.map +1 -1
- package/dist/fs/buildSliceFilePath.js.map +1 -1
- package/dist/fs/buildSliceLibraryDirectoryPath.cjs.map +1 -1
- package/dist/fs/buildSliceLibraryDirectoryPath.js.map +1 -1
- package/dist/fs/checkHasProjectFile.cjs.map +1 -1
- package/dist/fs/checkHasProjectFile.js.map +1 -1
- package/dist/fs/checkIsTypeScriptProject.cjs.map +1 -1
- package/dist/fs/checkIsTypeScriptProject.js.map +1 -1
- package/dist/fs/deleteCustomTypeDirectory.cjs.map +1 -1
- package/dist/fs/deleteCustomTypeDirectory.js.map +1 -1
- package/dist/fs/deleteCustomTypeFile.cjs.map +1 -1
- package/dist/fs/deleteCustomTypeFile.js.map +1 -1
- package/dist/fs/deleteProjectFile.cjs.map +1 -1
- package/dist/fs/deleteProjectFile.js.map +1 -1
- package/dist/fs/deleteSliceDirectory.cjs.map +1 -1
- package/dist/fs/deleteSliceDirectory.js.map +1 -1
- package/dist/fs/deleteSliceFile.cjs.map +1 -1
- package/dist/fs/deleteSliceFile.js.map +1 -1
- package/dist/fs/lib/checkPathExists.cjs.map +1 -1
- package/dist/fs/lib/checkPathExists.js.map +1 -1
- package/dist/fs/lib/fsLimit.cjs.map +1 -1
- package/dist/fs/lib/fsLimit.js.map +1 -1
- package/dist/fs/lib/pascalCase.cjs.map +1 -1
- package/dist/fs/lib/pascalCase.js.map +1 -1
- package/dist/fs/lib/readJSONFile.cjs.map +1 -1
- package/dist/fs/lib/readJSONFile.js.map +1 -1
- package/dist/fs/lib/resolveSliceModel.cjs.map +1 -1
- package/dist/fs/lib/resolveSliceModel.js.map +1 -1
- package/dist/fs/readCustomTypeFile.cjs.map +1 -1
- package/dist/fs/readCustomTypeFile.js.map +1 -1
- package/dist/fs/readCustomTypeLibrary.cjs.map +1 -1
- package/dist/fs/readCustomTypeLibrary.js.map +1 -1
- package/dist/fs/readCustomTypeModel.cjs.map +1 -1
- package/dist/fs/readCustomTypeModel.js.map +1 -1
- package/dist/fs/readProjectEnvironment.cjs.map +1 -1
- package/dist/fs/readProjectEnvironment.js.map +1 -1
- package/dist/fs/readSliceFile.cjs.map +1 -1
- package/dist/fs/readSliceFile.js.map +1 -1
- package/dist/fs/readSliceLibrary.cjs.map +1 -1
- package/dist/fs/readSliceLibrary.js.map +1 -1
- package/dist/fs/readSliceModel.cjs.map +1 -1
- package/dist/fs/readSliceModel.js.map +1 -1
- package/dist/fs/readSliceTemplateLibrary.cjs.map +1 -1
- package/dist/fs/readSliceTemplateLibrary.js.map +1 -1
- package/dist/fs/renameCustomType.cjs.map +1 -1
- package/dist/fs/renameCustomType.js.map +1 -1
- package/dist/fs/renameSlice.cjs.map +1 -1
- package/dist/fs/renameSlice.js.map +1 -1
- package/dist/fs/upsertGlobalTypeScriptTypes.cjs.map +1 -1
- package/dist/fs/upsertGlobalTypeScriptTypes.js.map +1 -1
- package/dist/fs/writeCustomTypeFile.cjs.map +1 -1
- package/dist/fs/writeCustomTypeFile.js.map +1 -1
- package/dist/fs/writeCustomTypeModel.cjs.map +1 -1
- package/dist/fs/writeCustomTypeModel.js.map +1 -1
- package/dist/fs/writeProjectEnvironment.cjs.map +1 -1
- package/dist/fs/writeProjectEnvironment.js.map +1 -1
- package/dist/fs/writeProjectFile.cjs.map +1 -1
- package/dist/fs/writeProjectFile.js.map +1 -1
- package/dist/fs/writeSliceFile.cjs.map +1 -1
- package/dist/fs/writeSliceFile.js.map +1 -1
- package/dist/fs/writeSliceModel.cjs.map +1 -1
- package/dist/fs/writeSliceModel.js.map +1 -1
- package/dist/lib/DecodeError.cjs +1 -4
- package/dist/lib/DecodeError.cjs.map +1 -1
- package/dist/lib/DecodeError.js +1 -4
- package/dist/lib/DecodeError.js.map +1 -1
- package/dist/lib/HookSystem.cjs +1 -4
- package/dist/lib/HookSystem.cjs.map +1 -1
- package/dist/lib/HookSystem.js +1 -4
- package/dist/lib/HookSystem.js.map +1 -1
- package/dist/lib/decode.cjs.map +1 -1
- package/dist/lib/decode.js.map +1 -1
- package/dist/lib/decodeSliceMachineConfig.cjs.map +1 -1
- package/dist/lib/decodeSliceMachineConfig.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeSliceModel.cjs","sources":["../../../src/fs/writeSliceModel.ts"],"sourcesContent":["import type { SharedSlice } from \"@prismicio/types-internal/lib/customtypes\";\n\nimport { SHARED_SLICE_MODEL_FILENAME } from \"./constants\";\nimport { writeSliceFile, WriteSliceFileArgs } from \"./writeSliceFile\";\n\nexport type WriteSliceModelArgs = Omit<\n\tWriteSliceFileArgs,\n\t\"filename\" | \"contents\" | \"sliceID\"\n> & {\n\tmodel: SharedSlice;\n};\n\n/**\n * Writes a Slice model to the file system in the Slice's Slice library.\n *\n * @returns The file path to the written model.\n */\nexport const writeSliceModel = async (\n\targs: WriteSliceModelArgs,\n): Promise<string> => {\n\treturn await writeSliceFile({\n\t\t...args,\n\t\tfilename: SHARED_SLICE_MODEL_FILENAME,\n\t\tcontents: JSON.stringify(args.model, null, 2),\n\t});\n};\n"],"names":["writeSliceFile","SHARED_SLICE_MODEL_FILENAME"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"writeSliceModel.cjs","sources":["../../../src/fs/writeSliceModel.ts"],"sourcesContent":["import type { SharedSlice } from \"@prismicio/types-internal/lib/customtypes\";\n\nimport { SHARED_SLICE_MODEL_FILENAME } from \"./constants\";\nimport { writeSliceFile, WriteSliceFileArgs } from \"./writeSliceFile\";\n\nexport type WriteSliceModelArgs = Omit<\n\tWriteSliceFileArgs,\n\t\"filename\" | \"contents\" | \"sliceID\"\n> & {\n\tmodel: SharedSlice;\n};\n\n/**\n * Writes a Slice model to the file system in the Slice's Slice library.\n *\n * @returns The file path to the written model.\n */\nexport const writeSliceModel = async (\n\targs: WriteSliceModelArgs,\n): Promise<string> => {\n\treturn await writeSliceFile({\n\t\t...args,\n\t\tfilename: SHARED_SLICE_MODEL_FILENAME,\n\t\tcontents: JSON.stringify(args.model, null, 2),\n\t});\n};\n"],"names":["writeSliceFile","SHARED_SLICE_MODEL_FILENAME"],"mappings":";;;;AAiBO,MAAM,kBAAkB,OAC9B,SACoB;AACpB,SAAO,MAAMA,eAAAA,eAAe;AAAA,IAC3B,GAAG;AAAA,IACH,UAAUC,UAAAA;AAAAA,IACV,UAAU,KAAK,UAAU,KAAK,OAAO,MAAM,CAAC;AAAA,EAAA,CAC5C;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeSliceModel.js","sources":["../../../src/fs/writeSliceModel.ts"],"sourcesContent":["import type { SharedSlice } from \"@prismicio/types-internal/lib/customtypes\";\n\nimport { SHARED_SLICE_MODEL_FILENAME } from \"./constants\";\nimport { writeSliceFile, WriteSliceFileArgs } from \"./writeSliceFile\";\n\nexport type WriteSliceModelArgs = Omit<\n\tWriteSliceFileArgs,\n\t\"filename\" | \"contents\" | \"sliceID\"\n> & {\n\tmodel: SharedSlice;\n};\n\n/**\n * Writes a Slice model to the file system in the Slice's Slice library.\n *\n * @returns The file path to the written model.\n */\nexport const writeSliceModel = async (\n\targs: WriteSliceModelArgs,\n): Promise<string> => {\n\treturn await writeSliceFile({\n\t\t...args,\n\t\tfilename: SHARED_SLICE_MODEL_FILENAME,\n\t\tcontents: JSON.stringify(args.model, null, 2),\n\t});\n};\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"writeSliceModel.js","sources":["../../../src/fs/writeSliceModel.ts"],"sourcesContent":["import type { SharedSlice } from \"@prismicio/types-internal/lib/customtypes\";\n\nimport { SHARED_SLICE_MODEL_FILENAME } from \"./constants\";\nimport { writeSliceFile, WriteSliceFileArgs } from \"./writeSliceFile\";\n\nexport type WriteSliceModelArgs = Omit<\n\tWriteSliceFileArgs,\n\t\"filename\" | \"contents\" | \"sliceID\"\n> & {\n\tmodel: SharedSlice;\n};\n\n/**\n * Writes a Slice model to the file system in the Slice's Slice library.\n *\n * @returns The file path to the written model.\n */\nexport const writeSliceModel = async (\n\targs: WriteSliceModelArgs,\n): Promise<string> => {\n\treturn await writeSliceFile({\n\t\t...args,\n\t\tfilename: SHARED_SLICE_MODEL_FILENAME,\n\t\tcontents: JSON.stringify(args.model, null, 2),\n\t});\n};\n"],"names":[],"mappings":";;AAiBO,MAAM,kBAAkB,OAC9B,SACoB;AACpB,SAAO,MAAM,eAAe;AAAA,IAC3B,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU,KAAK,UAAU,KAAK,OAAO,MAAM,CAAC;AAAA,EAAA,CAC5C;AACF;"}
|
package/dist/lib/DecodeError.cjs
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
-
var __publicField = (obj, key, value) =>
|
|
5
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
|
-
return value;
|
|
7
|
-
};
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
5
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
9
6
|
const ioTsReporters = require("io-ts-reporters");
|
|
10
7
|
class DecodeError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecodeError.cjs","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors;\n};\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tconst formattedErrors = formatValidationErrors(args.errors);\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":["formatValidationErrors"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DecodeError.cjs","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors;\n};\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tconst formattedErrors = formatValidationErrors(args.errors);\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":["formatValidationErrors"],"mappings":";;;;;;AAQM,MAAO,oBAAsC,MAAK;AAAA,EAKvD,YAAY,MAAwC;AACnD,UAAM,kBAAkBA,cAAAA,uBAAuB,KAAK,MAAM;AAE1D,UAAM,gBAAgB,KAAK,IAAI,CAAC;AAPjC,gCAAO;AACP;AACA;AAOC,SAAK,QAAQ,KAAK;AAClB,SAAK,SAAS;AAAA,EACf;AACA;;"}
|
package/dist/lib/DecodeError.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) =>
|
|
4
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
return value;
|
|
6
|
-
};
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
4
|
import { formatValidationErrors } from "io-ts-reporters";
|
|
8
5
|
class DecodeError extends Error {
|
|
9
6
|
constructor(args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecodeError.js","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors;\n};\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tconst formattedErrors = formatValidationErrors(args.errors);\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DecodeError.js","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors;\n};\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tconst formattedErrors = formatValidationErrors(args.errors);\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":[],"mappings":";;;;AAQM,MAAO,oBAAsC,MAAK;AAAA,EAKvD,YAAY,MAAwC;AACnD,UAAM,kBAAkB,uBAAuB,KAAK,MAAM;AAE1D,UAAM,gBAAgB,KAAK,IAAI,CAAC;AAPjC,gCAAO;AACP;AACA;AAOC,SAAK,QAAQ,KAAK;AAClB,SAAK,SAAS;AAAA,EACf;AACA;"}
|
package/dist/lib/HookSystem.cjs
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
-
var __publicField = (obj, key, value) =>
|
|
5
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
|
-
return value;
|
|
7
|
-
};
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
5
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
9
6
|
class HookError extends Error {
|
|
10
7
|
constructor(meta, cause) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HookSystem.cjs","sources":["../../../src/lib/HookSystem.ts"],"sourcesContent":["/**\n * Extends a function arguments with extra ones.\n */\ntype FnWithExtraArgs<\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tF extends (...args: any[]) => any,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTExtraArgs extends any[] = any[],\n> = (\n\t...args: [...args: Parameters<F>, ...extraArgs: TExtraArgs]\n) => ReturnType<F>;\n\n/**\n * Defines a hook handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type HookFn<TArgs extends any[] = any[], TReturn = any> = (\n\t...args: TArgs\n) => Promise<TReturn> | TReturn;\n\n/**\n * Generic hook metadata.\n */\ntype HookMeta = Record<string, unknown>;\n\n/**\n * Defines a hook, including its function handler and optional metadata.\n */\nexport type Hook<\n\tTHookFn extends HookFn = HookFn,\n\tTHookMeta extends HookMeta = HookMeta,\n> = {\n\tfn: THookFn;\n\tmeta?: THookMeta;\n};\n\n/**\n * Represents a map of hook types to hook functions and metas.\n */\ntype Hooks = Record<string, Hook>;\n\n/**\n * Builds hook meta arguments after hook meta requirements.\n */\ntype HookMetaArg<THookMeta extends Record<string, unknown> | undefined> =\n\tTHookMeta extends Record<string, unknown>\n\t\t? [meta: THookMeta]\n\t\t: [meta?: never];\n\n/**\n * Defines the return type of the {@link HookSystem.callHook} functions.\n *\n * @internal\n */\nexport type CallHookReturnType<THookFn extends HookFn = HookFn> = Promise<{\n\tdata: Awaited<ReturnType<THookFn>>[];\n\terrors: HookError[];\n}>;\n\n/**\n * Defines the return type of the {@link HookSystem.createScope} functions.\n *\n * @internal\n */\nexport type CreateScopeReturnType<\n\tTHooks extends Hooks = Record<string, { fn: HookFn }>,\n\tTExtraArgs extends unknown[] = never[],\n> = {\n\thook: <TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: FnWithExtraArgs<THooks[TType][\"fn\"], TExtraArgs>,\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t) => void;\n\tunhook: HookSystem<{\n\t\t[P in keyof THooks]: Omit<THooks[P], \"fn\"> & {\n\t\t\tfn: FnWithExtraArgs<THooks[P][\"fn\"], TExtraArgs>;\n\t\t};\n\t}>[\"unhook\"];\n};\n\ntype RegisteredHookMeta = {\n\tid: string;\n\ttype: string;\n\towner: string;\n\texternal?: HookFn;\n};\n\n/**\n * Represents a registered hook.\n */\ntype RegisteredHook<THook extends Hook = Hook> = {\n\tfn: THook[\"fn\"];\n\tmeta: THook[\"meta\"] extends Record<string, unknown>\n\t\t? RegisteredHookMeta & THook[\"meta\"]\n\t\t: RegisteredHookMeta;\n};\n\nexport class HookError<TError = Error | unknown> extends Error {\n\ttype: string;\n\towner: string;\n\trawMeta: RegisteredHookMeta;\n\trawCause: TError;\n\n\tconstructor(meta: RegisteredHookMeta, cause: TError) {\n\t\tsuper(\n\t\t\t`Error in \\`${meta.owner}\\` during \\`${meta.type}\\` hook: ${\n\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t}`,\n\t\t);\n\n\t\tthis.type = meta.type;\n\t\tthis.owner = meta.owner;\n\t\tthis.rawMeta = meta;\n\t\tthis.rawCause = cause;\n\t\tthis.cause = cause instanceof Error ? cause : undefined;\n\t}\n}\n\nconst uuid = (): string => {\n\treturn (++uuid.i).toString();\n};\nuuid.i = 0;\n\n/**\n * @internal\n */\nexport class HookSystem<THooks extends Hooks = Hooks> {\n\tprivate _registeredHooks: {\n\t\t[K in keyof THooks]?: RegisteredHook<THooks[K]>[];\n\t} = {};\n\n\thook<TType extends keyof THooks>(\n\t\towner: string,\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t): void {\n\t\tconst registeredHook = {\n\t\t\tfn: hookFn,\n\t\t\tmeta: {\n\t\t\t\t...meta,\n\t\t\t\towner,\n\t\t\t\ttype,\n\t\t\t\tid: uuid(),\n\t\t\t},\n\t\t} as RegisteredHook<THooks[TType]>;\n\n\t\tconst registeredHooksForType = this._registeredHooks[type];\n\n\t\tif (registeredHooksForType) {\n\t\t\tregisteredHooksForType.push(registeredHook);\n\t\t} else {\n\t\t\tthis._registeredHooks[type] = [registeredHook];\n\t\t}\n\t}\n\n\tunhook<TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t): void {\n\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t(registeredHook) => registeredHook.fn !== hookFn,\n\t\t);\n\t}\n\n\tasync callHook<TType extends Extract<keyof THooks, string>>(\n\t\ttypeOrTypeAndHookID: TType | { type: TType; hookID: string },\n\t\t...args: Parameters<THooks[TType][\"fn\"]>\n\t): CallHookReturnType<THooks[TType][\"fn\"]> {\n\t\tlet hooks: RegisteredHook<THooks[TType]>[];\n\n\t\tif (typeof typeOrTypeAndHookID === \"string\") {\n\t\t\thooks = this._registeredHooks[typeOrTypeAndHookID] ?? [];\n\t\t} else {\n\t\t\tconst hookForID = this._registeredHooks[typeOrTypeAndHookID.type]?.find(\n\t\t\t\t(hook) => hook.meta.id === typeOrTypeAndHookID.hookID,\n\t\t\t);\n\n\t\t\tif (hookForID) {\n\t\t\t\thooks = [hookForID];\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Hook of type \\`${typeOrTypeAndHookID.type}\\` with ID \\`${typeOrTypeAndHookID.hookID}\\` not found.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst promises = hooks.map(async (hook) => {\n\t\t\ttry {\n\t\t\t\treturn await hook.fn(...args);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new HookError(hook.meta, error);\n\t\t\t}\n\t\t});\n\n\t\tconst settledPromises = await Promise.allSettled(promises);\n\n\t\treturn settledPromises.reduce<{\n\t\t\tdata: Awaited<ReturnType<THooks[TType][\"fn\"]>>[];\n\t\t\terrors: HookError[];\n\t\t}>(\n\t\t\t(acc, settledPromise) => {\n\t\t\t\tif (settledPromise.status === \"fulfilled\") {\n\t\t\t\t\tacc.data.push(settledPromise.value);\n\t\t\t\t} else {\n\t\t\t\t\tacc.errors.push(settledPromise.reason);\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{ data: [], errors: [] },\n\t\t);\n\t}\n\n\t/**\n\t * Returns list of hooks for a given owner\n\t */\n\thooksForOwner(owner: string): RegisteredHook<THooks[string]>[] {\n\t\tconst hooks: RegisteredHook<THooks[string]>[] = [];\n\n\t\tfor (const hookType in this._registeredHooks) {\n\t\t\tconst registeredHooks = this._registeredHooks[hookType];\n\n\t\t\tif (Array.isArray(registeredHooks)) {\n\t\t\t\tfor (const registeredHook of registeredHooks) {\n\t\t\t\t\tif (registeredHook.meta.owner === owner) {\n\t\t\t\t\t\thooks.push(registeredHook);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn hooks;\n\t}\n\n\t/**\n\t * Returns list of hooks for a given type\n\t */\n\thooksForType<TType extends keyof THooks>(\n\t\ttype: TType,\n\t): RegisteredHook<THooks[TType]>[] {\n\t\treturn this._registeredHooks[type] ?? [];\n\t}\n\n\tcreateScope<TExtraArgs extends unknown[] = never[]>(\n\t\towner: string,\n\t\textraArgs: [...TExtraArgs],\n\t): CreateScopeReturnType<THooks, TExtraArgs> {\n\t\treturn {\n\t\t\thook: (type, hookFn, ...[meta]) => {\n\t\t\t\tconst internalHook = ((\n\t\t\t\t\t...args: Parameters<THooks[typeof type][\"fn\"]>\n\t\t\t\t) => {\n\t\t\t\t\treturn hookFn(...args, ...extraArgs);\n\t\t\t\t}) as THooks[typeof type][\"fn\"];\n\n\t\t\t\tconst resolvedMeta = {\n\t\t\t\t\t...meta,\n\t\t\t\t\texternal: hookFn,\n\t\t\t\t} as HookMetaArg<THooks[typeof type][\"meta\"]>[0];\n\n\t\t\t\treturn this.hook(\n\t\t\t\t\towner,\n\t\t\t\t\ttype,\n\t\t\t\t\tinternalHook,\n\t\t\t\t\t// @ts-expect-error - TypeScript fails to assert rest argument.\n\t\t\t\t\tresolvedMeta,\n\t\t\t\t);\n\t\t\t},\n\t\t\tunhook: (type, hookFn) => {\n\t\t\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t\t\t(registeredHook) => registeredHook.meta.external !== hookFn,\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HookSystem.cjs","sources":["../../../src/lib/HookSystem.ts"],"sourcesContent":["/**\n * Extends a function arguments with extra ones.\n */\ntype FnWithExtraArgs<\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tF extends (...args: any[]) => any,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTExtraArgs extends any[] = any[],\n> = (\n\t...args: [...args: Parameters<F>, ...extraArgs: TExtraArgs]\n) => ReturnType<F>;\n\n/**\n * Defines a hook handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type HookFn<TArgs extends any[] = any[], TReturn = any> = (\n\t...args: TArgs\n) => Promise<TReturn> | TReturn;\n\n/**\n * Generic hook metadata.\n */\ntype HookMeta = Record<string, unknown>;\n\n/**\n * Defines a hook, including its function handler and optional metadata.\n */\nexport type Hook<\n\tTHookFn extends HookFn = HookFn,\n\tTHookMeta extends HookMeta = HookMeta,\n> = {\n\tfn: THookFn;\n\tmeta?: THookMeta;\n};\n\n/**\n * Represents a map of hook types to hook functions and metas.\n */\ntype Hooks = Record<string, Hook>;\n\n/**\n * Builds hook meta arguments after hook meta requirements.\n */\ntype HookMetaArg<THookMeta extends Record<string, unknown> | undefined> =\n\tTHookMeta extends Record<string, unknown>\n\t\t? [meta: THookMeta]\n\t\t: [meta?: never];\n\n/**\n * Defines the return type of the {@link HookSystem.callHook} functions.\n *\n * @internal\n */\nexport type CallHookReturnType<THookFn extends HookFn = HookFn> = Promise<{\n\tdata: Awaited<ReturnType<THookFn>>[];\n\terrors: HookError[];\n}>;\n\n/**\n * Defines the return type of the {@link HookSystem.createScope} functions.\n *\n * @internal\n */\nexport type CreateScopeReturnType<\n\tTHooks extends Hooks = Record<string, { fn: HookFn }>,\n\tTExtraArgs extends unknown[] = never[],\n> = {\n\thook: <TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: FnWithExtraArgs<THooks[TType][\"fn\"], TExtraArgs>,\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t) => void;\n\tunhook: HookSystem<{\n\t\t[P in keyof THooks]: Omit<THooks[P], \"fn\"> & {\n\t\t\tfn: FnWithExtraArgs<THooks[P][\"fn\"], TExtraArgs>;\n\t\t};\n\t}>[\"unhook\"];\n};\n\ntype RegisteredHookMeta = {\n\tid: string;\n\ttype: string;\n\towner: string;\n\texternal?: HookFn;\n};\n\n/**\n * Represents a registered hook.\n */\ntype RegisteredHook<THook extends Hook = Hook> = {\n\tfn: THook[\"fn\"];\n\tmeta: THook[\"meta\"] extends Record<string, unknown>\n\t\t? RegisteredHookMeta & THook[\"meta\"]\n\t\t: RegisteredHookMeta;\n};\n\nexport class HookError<TError = Error | unknown> extends Error {\n\ttype: string;\n\towner: string;\n\trawMeta: RegisteredHookMeta;\n\trawCause: TError;\n\n\tconstructor(meta: RegisteredHookMeta, cause: TError) {\n\t\tsuper(\n\t\t\t`Error in \\`${meta.owner}\\` during \\`${meta.type}\\` hook: ${\n\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t}`,\n\t\t);\n\n\t\tthis.type = meta.type;\n\t\tthis.owner = meta.owner;\n\t\tthis.rawMeta = meta;\n\t\tthis.rawCause = cause;\n\t\tthis.cause = cause instanceof Error ? cause : undefined;\n\t}\n}\n\nconst uuid = (): string => {\n\treturn (++uuid.i).toString();\n};\nuuid.i = 0;\n\n/**\n * @internal\n */\nexport class HookSystem<THooks extends Hooks = Hooks> {\n\tprivate _registeredHooks: {\n\t\t[K in keyof THooks]?: RegisteredHook<THooks[K]>[];\n\t} = {};\n\n\thook<TType extends keyof THooks>(\n\t\towner: string,\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t): void {\n\t\tconst registeredHook = {\n\t\t\tfn: hookFn,\n\t\t\tmeta: {\n\t\t\t\t...meta,\n\t\t\t\towner,\n\t\t\t\ttype,\n\t\t\t\tid: uuid(),\n\t\t\t},\n\t\t} as RegisteredHook<THooks[TType]>;\n\n\t\tconst registeredHooksForType = this._registeredHooks[type];\n\n\t\tif (registeredHooksForType) {\n\t\t\tregisteredHooksForType.push(registeredHook);\n\t\t} else {\n\t\t\tthis._registeredHooks[type] = [registeredHook];\n\t\t}\n\t}\n\n\tunhook<TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t): void {\n\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t(registeredHook) => registeredHook.fn !== hookFn,\n\t\t);\n\t}\n\n\tasync callHook<TType extends Extract<keyof THooks, string>>(\n\t\ttypeOrTypeAndHookID: TType | { type: TType; hookID: string },\n\t\t...args: Parameters<THooks[TType][\"fn\"]>\n\t): CallHookReturnType<THooks[TType][\"fn\"]> {\n\t\tlet hooks: RegisteredHook<THooks[TType]>[];\n\n\t\tif (typeof typeOrTypeAndHookID === \"string\") {\n\t\t\thooks = this._registeredHooks[typeOrTypeAndHookID] ?? [];\n\t\t} else {\n\t\t\tconst hookForID = this._registeredHooks[typeOrTypeAndHookID.type]?.find(\n\t\t\t\t(hook) => hook.meta.id === typeOrTypeAndHookID.hookID,\n\t\t\t);\n\n\t\t\tif (hookForID) {\n\t\t\t\thooks = [hookForID];\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Hook of type \\`${typeOrTypeAndHookID.type}\\` with ID \\`${typeOrTypeAndHookID.hookID}\\` not found.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst promises = hooks.map(async (hook) => {\n\t\t\ttry {\n\t\t\t\treturn await hook.fn(...args);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new HookError(hook.meta, error);\n\t\t\t}\n\t\t});\n\n\t\tconst settledPromises = await Promise.allSettled(promises);\n\n\t\treturn settledPromises.reduce<{\n\t\t\tdata: Awaited<ReturnType<THooks[TType][\"fn\"]>>[];\n\t\t\terrors: HookError[];\n\t\t}>(\n\t\t\t(acc, settledPromise) => {\n\t\t\t\tif (settledPromise.status === \"fulfilled\") {\n\t\t\t\t\tacc.data.push(settledPromise.value);\n\t\t\t\t} else {\n\t\t\t\t\tacc.errors.push(settledPromise.reason);\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{ data: [], errors: [] },\n\t\t);\n\t}\n\n\t/**\n\t * Returns list of hooks for a given owner\n\t */\n\thooksForOwner(owner: string): RegisteredHook<THooks[string]>[] {\n\t\tconst hooks: RegisteredHook<THooks[string]>[] = [];\n\n\t\tfor (const hookType in this._registeredHooks) {\n\t\t\tconst registeredHooks = this._registeredHooks[hookType];\n\n\t\t\tif (Array.isArray(registeredHooks)) {\n\t\t\t\tfor (const registeredHook of registeredHooks) {\n\t\t\t\t\tif (registeredHook.meta.owner === owner) {\n\t\t\t\t\t\thooks.push(registeredHook);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn hooks;\n\t}\n\n\t/**\n\t * Returns list of hooks for a given type\n\t */\n\thooksForType<TType extends keyof THooks>(\n\t\ttype: TType,\n\t): RegisteredHook<THooks[TType]>[] {\n\t\treturn this._registeredHooks[type] ?? [];\n\t}\n\n\tcreateScope<TExtraArgs extends unknown[] = never[]>(\n\t\towner: string,\n\t\textraArgs: [...TExtraArgs],\n\t): CreateScopeReturnType<THooks, TExtraArgs> {\n\t\treturn {\n\t\t\thook: (type, hookFn, ...[meta]) => {\n\t\t\t\tconst internalHook = ((\n\t\t\t\t\t...args: Parameters<THooks[typeof type][\"fn\"]>\n\t\t\t\t) => {\n\t\t\t\t\treturn hookFn(...args, ...extraArgs);\n\t\t\t\t}) as THooks[typeof type][\"fn\"];\n\n\t\t\t\tconst resolvedMeta = {\n\t\t\t\t\t...meta,\n\t\t\t\t\texternal: hookFn,\n\t\t\t\t} as HookMetaArg<THooks[typeof type][\"meta\"]>[0];\n\n\t\t\t\treturn this.hook(\n\t\t\t\t\towner,\n\t\t\t\t\ttype,\n\t\t\t\t\tinternalHook,\n\t\t\t\t\t// @ts-expect-error - TypeScript fails to assert rest argument.\n\t\t\t\t\tresolvedMeta,\n\t\t\t\t);\n\t\t\t},\n\t\t\tunhook: (type, hookFn) => {\n\t\t\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t\t\t(registeredHook) => registeredHook.meta.external !== hookFn,\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t}\n}\n"],"names":[],"mappings":"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"}
|
package/dist/lib/HookSystem.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) =>
|
|
4
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
return value;
|
|
6
|
-
};
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
4
|
class HookError extends Error {
|
|
8
5
|
constructor(meta, cause) {
|
|
9
6
|
super(`Error in \`${meta.owner}\` during \`${meta.type}\` hook: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HookSystem.js","sources":["../../../src/lib/HookSystem.ts"],"sourcesContent":["/**\n * Extends a function arguments with extra ones.\n */\ntype FnWithExtraArgs<\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tF extends (...args: any[]) => any,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTExtraArgs extends any[] = any[],\n> = (\n\t...args: [...args: Parameters<F>, ...extraArgs: TExtraArgs]\n) => ReturnType<F>;\n\n/**\n * Defines a hook handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type HookFn<TArgs extends any[] = any[], TReturn = any> = (\n\t...args: TArgs\n) => Promise<TReturn> | TReturn;\n\n/**\n * Generic hook metadata.\n */\ntype HookMeta = Record<string, unknown>;\n\n/**\n * Defines a hook, including its function handler and optional metadata.\n */\nexport type Hook<\n\tTHookFn extends HookFn = HookFn,\n\tTHookMeta extends HookMeta = HookMeta,\n> = {\n\tfn: THookFn;\n\tmeta?: THookMeta;\n};\n\n/**\n * Represents a map of hook types to hook functions and metas.\n */\ntype Hooks = Record<string, Hook>;\n\n/**\n * Builds hook meta arguments after hook meta requirements.\n */\ntype HookMetaArg<THookMeta extends Record<string, unknown> | undefined> =\n\tTHookMeta extends Record<string, unknown>\n\t\t? [meta: THookMeta]\n\t\t: [meta?: never];\n\n/**\n * Defines the return type of the {@link HookSystem.callHook} functions.\n *\n * @internal\n */\nexport type CallHookReturnType<THookFn extends HookFn = HookFn> = Promise<{\n\tdata: Awaited<ReturnType<THookFn>>[];\n\terrors: HookError[];\n}>;\n\n/**\n * Defines the return type of the {@link HookSystem.createScope} functions.\n *\n * @internal\n */\nexport type CreateScopeReturnType<\n\tTHooks extends Hooks = Record<string, { fn: HookFn }>,\n\tTExtraArgs extends unknown[] = never[],\n> = {\n\thook: <TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: FnWithExtraArgs<THooks[TType][\"fn\"], TExtraArgs>,\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t) => void;\n\tunhook: HookSystem<{\n\t\t[P in keyof THooks]: Omit<THooks[P], \"fn\"> & {\n\t\t\tfn: FnWithExtraArgs<THooks[P][\"fn\"], TExtraArgs>;\n\t\t};\n\t}>[\"unhook\"];\n};\n\ntype RegisteredHookMeta = {\n\tid: string;\n\ttype: string;\n\towner: string;\n\texternal?: HookFn;\n};\n\n/**\n * Represents a registered hook.\n */\ntype RegisteredHook<THook extends Hook = Hook> = {\n\tfn: THook[\"fn\"];\n\tmeta: THook[\"meta\"] extends Record<string, unknown>\n\t\t? RegisteredHookMeta & THook[\"meta\"]\n\t\t: RegisteredHookMeta;\n};\n\nexport class HookError<TError = Error | unknown> extends Error {\n\ttype: string;\n\towner: string;\n\trawMeta: RegisteredHookMeta;\n\trawCause: TError;\n\n\tconstructor(meta: RegisteredHookMeta, cause: TError) {\n\t\tsuper(\n\t\t\t`Error in \\`${meta.owner}\\` during \\`${meta.type}\\` hook: ${\n\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t}`,\n\t\t);\n\n\t\tthis.type = meta.type;\n\t\tthis.owner = meta.owner;\n\t\tthis.rawMeta = meta;\n\t\tthis.rawCause = cause;\n\t\tthis.cause = cause instanceof Error ? cause : undefined;\n\t}\n}\n\nconst uuid = (): string => {\n\treturn (++uuid.i).toString();\n};\nuuid.i = 0;\n\n/**\n * @internal\n */\nexport class HookSystem<THooks extends Hooks = Hooks> {\n\tprivate _registeredHooks: {\n\t\t[K in keyof THooks]?: RegisteredHook<THooks[K]>[];\n\t} = {};\n\n\thook<TType extends keyof THooks>(\n\t\towner: string,\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t): void {\n\t\tconst registeredHook = {\n\t\t\tfn: hookFn,\n\t\t\tmeta: {\n\t\t\t\t...meta,\n\t\t\t\towner,\n\t\t\t\ttype,\n\t\t\t\tid: uuid(),\n\t\t\t},\n\t\t} as RegisteredHook<THooks[TType]>;\n\n\t\tconst registeredHooksForType = this._registeredHooks[type];\n\n\t\tif (registeredHooksForType) {\n\t\t\tregisteredHooksForType.push(registeredHook);\n\t\t} else {\n\t\t\tthis._registeredHooks[type] = [registeredHook];\n\t\t}\n\t}\n\n\tunhook<TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t): void {\n\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t(registeredHook) => registeredHook.fn !== hookFn,\n\t\t);\n\t}\n\n\tasync callHook<TType extends Extract<keyof THooks, string>>(\n\t\ttypeOrTypeAndHookID: TType | { type: TType; hookID: string },\n\t\t...args: Parameters<THooks[TType][\"fn\"]>\n\t): CallHookReturnType<THooks[TType][\"fn\"]> {\n\t\tlet hooks: RegisteredHook<THooks[TType]>[];\n\n\t\tif (typeof typeOrTypeAndHookID === \"string\") {\n\t\t\thooks = this._registeredHooks[typeOrTypeAndHookID] ?? [];\n\t\t} else {\n\t\t\tconst hookForID = this._registeredHooks[typeOrTypeAndHookID.type]?.find(\n\t\t\t\t(hook) => hook.meta.id === typeOrTypeAndHookID.hookID,\n\t\t\t);\n\n\t\t\tif (hookForID) {\n\t\t\t\thooks = [hookForID];\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Hook of type \\`${typeOrTypeAndHookID.type}\\` with ID \\`${typeOrTypeAndHookID.hookID}\\` not found.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst promises = hooks.map(async (hook) => {\n\t\t\ttry {\n\t\t\t\treturn await hook.fn(...args);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new HookError(hook.meta, error);\n\t\t\t}\n\t\t});\n\n\t\tconst settledPromises = await Promise.allSettled(promises);\n\n\t\treturn settledPromises.reduce<{\n\t\t\tdata: Awaited<ReturnType<THooks[TType][\"fn\"]>>[];\n\t\t\terrors: HookError[];\n\t\t}>(\n\t\t\t(acc, settledPromise) => {\n\t\t\t\tif (settledPromise.status === \"fulfilled\") {\n\t\t\t\t\tacc.data.push(settledPromise.value);\n\t\t\t\t} else {\n\t\t\t\t\tacc.errors.push(settledPromise.reason);\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{ data: [], errors: [] },\n\t\t);\n\t}\n\n\t/**\n\t * Returns list of hooks for a given owner\n\t */\n\thooksForOwner(owner: string): RegisteredHook<THooks[string]>[] {\n\t\tconst hooks: RegisteredHook<THooks[string]>[] = [];\n\n\t\tfor (const hookType in this._registeredHooks) {\n\t\t\tconst registeredHooks = this._registeredHooks[hookType];\n\n\t\t\tif (Array.isArray(registeredHooks)) {\n\t\t\t\tfor (const registeredHook of registeredHooks) {\n\t\t\t\t\tif (registeredHook.meta.owner === owner) {\n\t\t\t\t\t\thooks.push(registeredHook);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn hooks;\n\t}\n\n\t/**\n\t * Returns list of hooks for a given type\n\t */\n\thooksForType<TType extends keyof THooks>(\n\t\ttype: TType,\n\t): RegisteredHook<THooks[TType]>[] {\n\t\treturn this._registeredHooks[type] ?? [];\n\t}\n\n\tcreateScope<TExtraArgs extends unknown[] = never[]>(\n\t\towner: string,\n\t\textraArgs: [...TExtraArgs],\n\t): CreateScopeReturnType<THooks, TExtraArgs> {\n\t\treturn {\n\t\t\thook: (type, hookFn, ...[meta]) => {\n\t\t\t\tconst internalHook = ((\n\t\t\t\t\t...args: Parameters<THooks[typeof type][\"fn\"]>\n\t\t\t\t) => {\n\t\t\t\t\treturn hookFn(...args, ...extraArgs);\n\t\t\t\t}) as THooks[typeof type][\"fn\"];\n\n\t\t\t\tconst resolvedMeta = {\n\t\t\t\t\t...meta,\n\t\t\t\t\texternal: hookFn,\n\t\t\t\t} as HookMetaArg<THooks[typeof type][\"meta\"]>[0];\n\n\t\t\t\treturn this.hook(\n\t\t\t\t\towner,\n\t\t\t\t\ttype,\n\t\t\t\t\tinternalHook,\n\t\t\t\t\t// @ts-expect-error - TypeScript fails to assert rest argument.\n\t\t\t\t\tresolvedMeta,\n\t\t\t\t);\n\t\t\t},\n\t\t\tunhook: (type, hookFn) => {\n\t\t\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t\t\t(registeredHook) => registeredHook.meta.external !== hookFn,\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HookSystem.js","sources":["../../../src/lib/HookSystem.ts"],"sourcesContent":["/**\n * Extends a function arguments with extra ones.\n */\ntype FnWithExtraArgs<\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tF extends (...args: any[]) => any,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tTExtraArgs extends any[] = any[],\n> = (\n\t...args: [...args: Parameters<F>, ...extraArgs: TExtraArgs]\n) => ReturnType<F>;\n\n/**\n * Defines a hook handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type HookFn<TArgs extends any[] = any[], TReturn = any> = (\n\t...args: TArgs\n) => Promise<TReturn> | TReturn;\n\n/**\n * Generic hook metadata.\n */\ntype HookMeta = Record<string, unknown>;\n\n/**\n * Defines a hook, including its function handler and optional metadata.\n */\nexport type Hook<\n\tTHookFn extends HookFn = HookFn,\n\tTHookMeta extends HookMeta = HookMeta,\n> = {\n\tfn: THookFn;\n\tmeta?: THookMeta;\n};\n\n/**\n * Represents a map of hook types to hook functions and metas.\n */\ntype Hooks = Record<string, Hook>;\n\n/**\n * Builds hook meta arguments after hook meta requirements.\n */\ntype HookMetaArg<THookMeta extends Record<string, unknown> | undefined> =\n\tTHookMeta extends Record<string, unknown>\n\t\t? [meta: THookMeta]\n\t\t: [meta?: never];\n\n/**\n * Defines the return type of the {@link HookSystem.callHook} functions.\n *\n * @internal\n */\nexport type CallHookReturnType<THookFn extends HookFn = HookFn> = Promise<{\n\tdata: Awaited<ReturnType<THookFn>>[];\n\terrors: HookError[];\n}>;\n\n/**\n * Defines the return type of the {@link HookSystem.createScope} functions.\n *\n * @internal\n */\nexport type CreateScopeReturnType<\n\tTHooks extends Hooks = Record<string, { fn: HookFn }>,\n\tTExtraArgs extends unknown[] = never[],\n> = {\n\thook: <TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: FnWithExtraArgs<THooks[TType][\"fn\"], TExtraArgs>,\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t) => void;\n\tunhook: HookSystem<{\n\t\t[P in keyof THooks]: Omit<THooks[P], \"fn\"> & {\n\t\t\tfn: FnWithExtraArgs<THooks[P][\"fn\"], TExtraArgs>;\n\t\t};\n\t}>[\"unhook\"];\n};\n\ntype RegisteredHookMeta = {\n\tid: string;\n\ttype: string;\n\towner: string;\n\texternal?: HookFn;\n};\n\n/**\n * Represents a registered hook.\n */\ntype RegisteredHook<THook extends Hook = Hook> = {\n\tfn: THook[\"fn\"];\n\tmeta: THook[\"meta\"] extends Record<string, unknown>\n\t\t? RegisteredHookMeta & THook[\"meta\"]\n\t\t: RegisteredHookMeta;\n};\n\nexport class HookError<TError = Error | unknown> extends Error {\n\ttype: string;\n\towner: string;\n\trawMeta: RegisteredHookMeta;\n\trawCause: TError;\n\n\tconstructor(meta: RegisteredHookMeta, cause: TError) {\n\t\tsuper(\n\t\t\t`Error in \\`${meta.owner}\\` during \\`${meta.type}\\` hook: ${\n\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t}`,\n\t\t);\n\n\t\tthis.type = meta.type;\n\t\tthis.owner = meta.owner;\n\t\tthis.rawMeta = meta;\n\t\tthis.rawCause = cause;\n\t\tthis.cause = cause instanceof Error ? cause : undefined;\n\t}\n}\n\nconst uuid = (): string => {\n\treturn (++uuid.i).toString();\n};\nuuid.i = 0;\n\n/**\n * @internal\n */\nexport class HookSystem<THooks extends Hooks = Hooks> {\n\tprivate _registeredHooks: {\n\t\t[K in keyof THooks]?: RegisteredHook<THooks[K]>[];\n\t} = {};\n\n\thook<TType extends keyof THooks>(\n\t\towner: string,\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t\t...[meta]: HookMetaArg<THooks[TType][\"meta\"]>\n\t): void {\n\t\tconst registeredHook = {\n\t\t\tfn: hookFn,\n\t\t\tmeta: {\n\t\t\t\t...meta,\n\t\t\t\towner,\n\t\t\t\ttype,\n\t\t\t\tid: uuid(),\n\t\t\t},\n\t\t} as RegisteredHook<THooks[TType]>;\n\n\t\tconst registeredHooksForType = this._registeredHooks[type];\n\n\t\tif (registeredHooksForType) {\n\t\t\tregisteredHooksForType.push(registeredHook);\n\t\t} else {\n\t\t\tthis._registeredHooks[type] = [registeredHook];\n\t\t}\n\t}\n\n\tunhook<TType extends keyof THooks>(\n\t\ttype: TType,\n\t\thookFn: THooks[TType][\"fn\"],\n\t): void {\n\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t(registeredHook) => registeredHook.fn !== hookFn,\n\t\t);\n\t}\n\n\tasync callHook<TType extends Extract<keyof THooks, string>>(\n\t\ttypeOrTypeAndHookID: TType | { type: TType; hookID: string },\n\t\t...args: Parameters<THooks[TType][\"fn\"]>\n\t): CallHookReturnType<THooks[TType][\"fn\"]> {\n\t\tlet hooks: RegisteredHook<THooks[TType]>[];\n\n\t\tif (typeof typeOrTypeAndHookID === \"string\") {\n\t\t\thooks = this._registeredHooks[typeOrTypeAndHookID] ?? [];\n\t\t} else {\n\t\t\tconst hookForID = this._registeredHooks[typeOrTypeAndHookID.type]?.find(\n\t\t\t\t(hook) => hook.meta.id === typeOrTypeAndHookID.hookID,\n\t\t\t);\n\n\t\t\tif (hookForID) {\n\t\t\t\thooks = [hookForID];\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Hook of type \\`${typeOrTypeAndHookID.type}\\` with ID \\`${typeOrTypeAndHookID.hookID}\\` not found.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst promises = hooks.map(async (hook) => {\n\t\t\ttry {\n\t\t\t\treturn await hook.fn(...args);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new HookError(hook.meta, error);\n\t\t\t}\n\t\t});\n\n\t\tconst settledPromises = await Promise.allSettled(promises);\n\n\t\treturn settledPromises.reduce<{\n\t\t\tdata: Awaited<ReturnType<THooks[TType][\"fn\"]>>[];\n\t\t\terrors: HookError[];\n\t\t}>(\n\t\t\t(acc, settledPromise) => {\n\t\t\t\tif (settledPromise.status === \"fulfilled\") {\n\t\t\t\t\tacc.data.push(settledPromise.value);\n\t\t\t\t} else {\n\t\t\t\t\tacc.errors.push(settledPromise.reason);\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{ data: [], errors: [] },\n\t\t);\n\t}\n\n\t/**\n\t * Returns list of hooks for a given owner\n\t */\n\thooksForOwner(owner: string): RegisteredHook<THooks[string]>[] {\n\t\tconst hooks: RegisteredHook<THooks[string]>[] = [];\n\n\t\tfor (const hookType in this._registeredHooks) {\n\t\t\tconst registeredHooks = this._registeredHooks[hookType];\n\n\t\t\tif (Array.isArray(registeredHooks)) {\n\t\t\t\tfor (const registeredHook of registeredHooks) {\n\t\t\t\t\tif (registeredHook.meta.owner === owner) {\n\t\t\t\t\t\thooks.push(registeredHook);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn hooks;\n\t}\n\n\t/**\n\t * Returns list of hooks for a given type\n\t */\n\thooksForType<TType extends keyof THooks>(\n\t\ttype: TType,\n\t): RegisteredHook<THooks[TType]>[] {\n\t\treturn this._registeredHooks[type] ?? [];\n\t}\n\n\tcreateScope<TExtraArgs extends unknown[] = never[]>(\n\t\towner: string,\n\t\textraArgs: [...TExtraArgs],\n\t): CreateScopeReturnType<THooks, TExtraArgs> {\n\t\treturn {\n\t\t\thook: (type, hookFn, ...[meta]) => {\n\t\t\t\tconst internalHook = ((\n\t\t\t\t\t...args: Parameters<THooks[typeof type][\"fn\"]>\n\t\t\t\t) => {\n\t\t\t\t\treturn hookFn(...args, ...extraArgs);\n\t\t\t\t}) as THooks[typeof type][\"fn\"];\n\n\t\t\t\tconst resolvedMeta = {\n\t\t\t\t\t...meta,\n\t\t\t\t\texternal: hookFn,\n\t\t\t\t} as HookMetaArg<THooks[typeof type][\"meta\"]>[0];\n\n\t\t\t\treturn this.hook(\n\t\t\t\t\towner,\n\t\t\t\t\ttype,\n\t\t\t\t\tinternalHook,\n\t\t\t\t\t// @ts-expect-error - TypeScript fails to assert rest argument.\n\t\t\t\t\tresolvedMeta,\n\t\t\t\t);\n\t\t\t},\n\t\t\tunhook: (type, hookFn) => {\n\t\t\t\tthis._registeredHooks[type] = this._registeredHooks[type]?.filter(\n\t\t\t\t\t(registeredHook) => registeredHook.meta.external !== hookFn,\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\t}\n}\n"],"names":[],"mappings":"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"}
|
package/dist/lib/decode.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.cjs","sources":["../../../src/lib/decode.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as E from \"fp-ts/Either\";\nimport { pipe } from \"fp-ts/function\";\n\nimport { DecodeError } from \"./DecodeError\";\n\nexport type DecodeReturnType<A, _O, I> =\n\t| {\n\t\t\tvalue: A;\n\t\t\terror?: never;\n\t }\n\t| {\n\t\t\tvalue?: never;\n\t\t\terror: DecodeError<I>;\n\t };\n\nexport const decode = <A, O, I>(\n\tcodec: t.Type<A, O, I>,\n\tinput: I,\n): DecodeReturnType<A, O, I> => {\n\treturn pipe(\n\t\tcodec.decode(input),\n\t\tE.foldW(\n\t\t\t(errors) => {\n\t\t\t\treturn {\n\t\t\t\t\terror: new DecodeError({ input, errors }),\n\t\t\t\t};\n\t\t\t},\n\t\t\t(value) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t);\n};\n"],"names":["pipe","E.foldW","DecodeError"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"decode.cjs","sources":["../../../src/lib/decode.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as E from \"fp-ts/Either\";\nimport { pipe } from \"fp-ts/function\";\n\nimport { DecodeError } from \"./DecodeError\";\n\nexport type DecodeReturnType<A, _O, I> =\n\t| {\n\t\t\tvalue: A;\n\t\t\terror?: never;\n\t }\n\t| {\n\t\t\tvalue?: never;\n\t\t\terror: DecodeError<I>;\n\t };\n\nexport const decode = <A, O, I>(\n\tcodec: t.Type<A, O, I>,\n\tinput: I,\n): DecodeReturnType<A, O, I> => {\n\treturn pipe(\n\t\tcodec.decode(input),\n\t\tE.foldW(\n\t\t\t(errors) => {\n\t\t\t\treturn {\n\t\t\t\t\terror: new DecodeError({ input, errors }),\n\t\t\t\t};\n\t\t\t},\n\t\t\t(value) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t);\n};\n"],"names":["pipe","E.foldW","DecodeError"],"mappings":";;;;;AAgBO,MAAM,SAAS,CACrB,OACA,UAC8B;AAC9B,SAAOA,UAAAA,KACN,MAAM,OAAO,KAAK,GAClBC,OAAAA,MACC,CAAC,WAAU;AACV,WAAO;AAAA,MACN,OAAO,IAAIC,YAAAA,YAAY,EAAE,OAAO,QAAQ;AAAA,IAAA;AAAA,EAE1C,GACA,CAAC,UAAS;AACT,WAAO;AAAA,MACN;AAAA,IAAA;AAAA,EAEF,CAAC,CACD;AAEH;;"}
|
package/dist/lib/decode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sources":["../../../src/lib/decode.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as E from \"fp-ts/Either\";\nimport { pipe } from \"fp-ts/function\";\n\nimport { DecodeError } from \"./DecodeError\";\n\nexport type DecodeReturnType<A, _O, I> =\n\t| {\n\t\t\tvalue: A;\n\t\t\terror?: never;\n\t }\n\t| {\n\t\t\tvalue?: never;\n\t\t\terror: DecodeError<I>;\n\t };\n\nexport const decode = <A, O, I>(\n\tcodec: t.Type<A, O, I>,\n\tinput: I,\n): DecodeReturnType<A, O, I> => {\n\treturn pipe(\n\t\tcodec.decode(input),\n\t\tE.foldW(\n\t\t\t(errors) => {\n\t\t\t\treturn {\n\t\t\t\t\terror: new DecodeError({ input, errors }),\n\t\t\t\t};\n\t\t\t},\n\t\t\t(value) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t);\n};\n"],"names":["E.foldW"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"decode.js","sources":["../../../src/lib/decode.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as E from \"fp-ts/Either\";\nimport { pipe } from \"fp-ts/function\";\n\nimport { DecodeError } from \"./DecodeError\";\n\nexport type DecodeReturnType<A, _O, I> =\n\t| {\n\t\t\tvalue: A;\n\t\t\terror?: never;\n\t }\n\t| {\n\t\t\tvalue?: never;\n\t\t\terror: DecodeError<I>;\n\t };\n\nexport const decode = <A, O, I>(\n\tcodec: t.Type<A, O, I>,\n\tinput: I,\n): DecodeReturnType<A, O, I> => {\n\treturn pipe(\n\t\tcodec.decode(input),\n\t\tE.foldW(\n\t\t\t(errors) => {\n\t\t\t\treturn {\n\t\t\t\t\terror: new DecodeError({ input, errors }),\n\t\t\t\t};\n\t\t\t},\n\t\t\t(value) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t);\n};\n"],"names":["E.foldW"],"mappings":";;;AAgBO,MAAM,SAAS,CACrB,OACA,UAC8B;AAC9B,SAAO,KACN,MAAM,OAAO,KAAK,GAClBA,MACC,CAAC,WAAU;AACV,WAAO;AAAA,MACN,OAAO,IAAI,YAAY,EAAE,OAAO,QAAQ;AAAA,IAAA;AAAA,EAE1C,GACA,CAAC,UAAS;AACT,WAAO;AAAA,MACN;AAAA,IAAA;AAAA,EAEF,CAAC,CACD;AAEH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decodeSliceMachineConfig.cjs","sources":["../../../src/lib/decodeSliceMachineConfig.ts"],"sourcesContent":["import * as t from \"io-ts\";\n\nimport { SliceMachineConfig } from \"../types\";\n\nimport { decode, DecodeReturnType } from \"./decode\";\n\nconst SliceMachineConfigPluginRegistrationCodec = t.union([\n\tt.string,\n\tt.intersection([\n\t\tt.type({\n\t\t\tresolve: t.string,\n\t\t}),\n\t\tt.partial({\n\t\t\toptions: t.UnknownRecord,\n\t\t}),\n\t]),\n]);\n\nconst SliceMachineConfigCodec = t.intersection([\n\tt.type({\n\t\trepositoryName: t.string,\n\t\tadapter: SliceMachineConfigPluginRegistrationCodec,\n\t}),\n\tt.partial({\n\t\tapiEndpoint: t.string,\n\t\tlibraries: t.array(t.string),\n\t\tlocalSliceSimulatorURL: t.string,\n\t\tplugins: t.array(SliceMachineConfigPluginRegistrationCodec),\n\t\tlabs: t.partial({ legacySliceUpgrader: t.boolean }),\n\t}),\n]);\n\n// TODO: Maybe rename \"decode\" to \"validate\". \"decode\" exposes the `io-ts`\n// internals.\nexport const decodeSliceMachineConfig = (\n\tinput: unknown,\n): DecodeReturnType<SliceMachineConfig, SliceMachineConfig, unknown> => {\n\treturn decode(SliceMachineConfigCodec, input);\n};\n"],"names":["t","decode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,4CAA4CA,aAAE,MAAM;AAAA,EACzDA,aAAE;AAAA,EACFA,aAAE,aAAa;AAAA,IACdA,aAAE,KAAK;AAAA,MACN,SAASA,aAAE;AAAA,IAAA,CACX;AAAA,IACDA,aAAE,QAAQ;AAAA,MACT,SAASA,aAAE;AAAA,IAAA,CACX;AAAA,EAAA,CACD;AACD,CAAA;AAED,MAAM,0BAA0BA,aAAE,aAAa;AAAA,EAC9CA,aAAE,KAAK;AAAA,IACN,gBAAgBA,aAAE;AAAA,IAClB,SAAS;AAAA,EAAA,CACT;AAAA,EACDA,aAAE,QAAQ;AAAA,IACT,aAAaA,aAAE;AAAA,IACf,WAAWA,aAAE,MAAMA,aAAE,MAAM;AAAA,IAC3B,wBAAwBA,aAAE;AAAA,IAC1B,SAASA,aAAE,MAAM,yCAAyC;AAAA,IAC1D,MAAMA,aAAE,QAAQ,EAAE,qBAAqBA,aAAE,SAAS;AAAA,EAAA,CAClD;AACD,CAAA;
|
|
1
|
+
{"version":3,"file":"decodeSliceMachineConfig.cjs","sources":["../../../src/lib/decodeSliceMachineConfig.ts"],"sourcesContent":["import * as t from \"io-ts\";\n\nimport { SliceMachineConfig } from \"../types\";\n\nimport { decode, DecodeReturnType } from \"./decode\";\n\nconst SliceMachineConfigPluginRegistrationCodec = t.union([\n\tt.string,\n\tt.intersection([\n\t\tt.type({\n\t\t\tresolve: t.string,\n\t\t}),\n\t\tt.partial({\n\t\t\toptions: t.UnknownRecord,\n\t\t}),\n\t]),\n]);\n\nconst SliceMachineConfigCodec = t.intersection([\n\tt.type({\n\t\trepositoryName: t.string,\n\t\tadapter: SliceMachineConfigPluginRegistrationCodec,\n\t}),\n\tt.partial({\n\t\tapiEndpoint: t.string,\n\t\tlibraries: t.array(t.string),\n\t\tlocalSliceSimulatorURL: t.string,\n\t\tplugins: t.array(SliceMachineConfigPluginRegistrationCodec),\n\t\tlabs: t.partial({ legacySliceUpgrader: t.boolean }),\n\t}),\n]);\n\n// TODO: Maybe rename \"decode\" to \"validate\". \"decode\" exposes the `io-ts`\n// internals.\nexport const decodeSliceMachineConfig = (\n\tinput: unknown,\n): DecodeReturnType<SliceMachineConfig, SliceMachineConfig, unknown> => {\n\treturn decode(SliceMachineConfigCodec, input);\n};\n"],"names":["t","decode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,4CAA4CA,aAAE,MAAM;AAAA,EACzDA,aAAE;AAAA,EACFA,aAAE,aAAa;AAAA,IACdA,aAAE,KAAK;AAAA,MACN,SAASA,aAAE;AAAA,IAAA,CACX;AAAA,IACDA,aAAE,QAAQ;AAAA,MACT,SAASA,aAAE;AAAA,IAAA,CACX;AAAA,EAAA,CACD;AACD,CAAA;AAED,MAAM,0BAA0BA,aAAE,aAAa;AAAA,EAC9CA,aAAE,KAAK;AAAA,IACN,gBAAgBA,aAAE;AAAA,IAClB,SAAS;AAAA,EAAA,CACT;AAAA,EACDA,aAAE,QAAQ;AAAA,IACT,aAAaA,aAAE;AAAA,IACf,WAAWA,aAAE,MAAMA,aAAE,MAAM;AAAA,IAC3B,wBAAwBA,aAAE;AAAA,IAC1B,SAASA,aAAE,MAAM,yCAAyC;AAAA,IAC1D,MAAMA,aAAE,QAAQ,EAAE,qBAAqBA,aAAE,SAAS;AAAA,EAAA,CAClD;AACD,CAAA;AAIM,MAAM,2BAA2B,CACvC,UACsE;AACtE,SAAOC,OAAAA,OAAO,yBAAyB,KAAK;AAC7C;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decodeSliceMachineConfig.js","sources":["../../../src/lib/decodeSliceMachineConfig.ts"],"sourcesContent":["import * as t from \"io-ts\";\n\nimport { SliceMachineConfig } from \"../types\";\n\nimport { decode, DecodeReturnType } from \"./decode\";\n\nconst SliceMachineConfigPluginRegistrationCodec = t.union([\n\tt.string,\n\tt.intersection([\n\t\tt.type({\n\t\t\tresolve: t.string,\n\t\t}),\n\t\tt.partial({\n\t\t\toptions: t.UnknownRecord,\n\t\t}),\n\t]),\n]);\n\nconst SliceMachineConfigCodec = t.intersection([\n\tt.type({\n\t\trepositoryName: t.string,\n\t\tadapter: SliceMachineConfigPluginRegistrationCodec,\n\t}),\n\tt.partial({\n\t\tapiEndpoint: t.string,\n\t\tlibraries: t.array(t.string),\n\t\tlocalSliceSimulatorURL: t.string,\n\t\tplugins: t.array(SliceMachineConfigPluginRegistrationCodec),\n\t\tlabs: t.partial({ legacySliceUpgrader: t.boolean }),\n\t}),\n]);\n\n// TODO: Maybe rename \"decode\" to \"validate\". \"decode\" exposes the `io-ts`\n// internals.\nexport const decodeSliceMachineConfig = (\n\tinput: unknown,\n): DecodeReturnType<SliceMachineConfig, SliceMachineConfig, unknown> => {\n\treturn decode(SliceMachineConfigCodec, input);\n};\n"],"names":[],"mappings":";;AAMA,MAAM,4CAA4C,EAAE,MAAM;AAAA,EACzD,EAAE;AAAA,EACF,EAAE,aAAa;AAAA,IACd,EAAE,KAAK;AAAA,MACN,SAAS,EAAE;AAAA,IAAA,CACX;AAAA,IACD,EAAE,QAAQ;AAAA,MACT,SAAS,EAAE;AAAA,IAAA,CACX;AAAA,EAAA,CACD;AACD,CAAA;AAED,MAAM,0BAA0B,EAAE,aAAa;AAAA,EAC9C,EAAE,KAAK;AAAA,IACN,gBAAgB,EAAE;AAAA,IAClB,SAAS;AAAA,EAAA,CACT;AAAA,EACD,EAAE,QAAQ;AAAA,IACT,aAAa,EAAE;AAAA,IACf,WAAW,EAAE,MAAM,EAAE,MAAM;AAAA,IAC3B,wBAAwB,EAAE;AAAA,IAC1B,SAAS,EAAE,MAAM,yCAAyC;AAAA,IAC1D,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,SAAS;AAAA,EAAA,CAClD;AACD,CAAA;
|
|
1
|
+
{"version":3,"file":"decodeSliceMachineConfig.js","sources":["../../../src/lib/decodeSliceMachineConfig.ts"],"sourcesContent":["import * as t from \"io-ts\";\n\nimport { SliceMachineConfig } from \"../types\";\n\nimport { decode, DecodeReturnType } from \"./decode\";\n\nconst SliceMachineConfigPluginRegistrationCodec = t.union([\n\tt.string,\n\tt.intersection([\n\t\tt.type({\n\t\t\tresolve: t.string,\n\t\t}),\n\t\tt.partial({\n\t\t\toptions: t.UnknownRecord,\n\t\t}),\n\t]),\n]);\n\nconst SliceMachineConfigCodec = t.intersection([\n\tt.type({\n\t\trepositoryName: t.string,\n\t\tadapter: SliceMachineConfigPluginRegistrationCodec,\n\t}),\n\tt.partial({\n\t\tapiEndpoint: t.string,\n\t\tlibraries: t.array(t.string),\n\t\tlocalSliceSimulatorURL: t.string,\n\t\tplugins: t.array(SliceMachineConfigPluginRegistrationCodec),\n\t\tlabs: t.partial({ legacySliceUpgrader: t.boolean }),\n\t}),\n]);\n\n// TODO: Maybe rename \"decode\" to \"validate\". \"decode\" exposes the `io-ts`\n// internals.\nexport const decodeSliceMachineConfig = (\n\tinput: unknown,\n): DecodeReturnType<SliceMachineConfig, SliceMachineConfig, unknown> => {\n\treturn decode(SliceMachineConfigCodec, input);\n};\n"],"names":[],"mappings":";;AAMA,MAAM,4CAA4C,EAAE,MAAM;AAAA,EACzD,EAAE;AAAA,EACF,EAAE,aAAa;AAAA,IACd,EAAE,KAAK;AAAA,MACN,SAAS,EAAE;AAAA,IAAA,CACX;AAAA,IACD,EAAE,QAAQ;AAAA,MACT,SAAS,EAAE;AAAA,IAAA,CACX;AAAA,EAAA,CACD;AACD,CAAA;AAED,MAAM,0BAA0B,EAAE,aAAa;AAAA,EAC9C,EAAE,KAAK;AAAA,IACN,gBAAgB,EAAE;AAAA,IAClB,SAAS;AAAA,EAAA,CACT;AAAA,EACD,EAAE,QAAQ;AAAA,IACT,aAAa,EAAE;AAAA,IACf,WAAW,EAAE,MAAM,EAAE,MAAM;AAAA,IAC3B,wBAAwB,EAAE;AAAA,IAC1B,SAAS,EAAE,MAAM,yCAAyC;AAAA,IAC1D,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,SAAS;AAAA,EAAA,CAClD;AACD,CAAA;AAIM,MAAM,2BAA2B,CACvC,UACsE;AACtE,SAAO,OAAO,yBAAyB,KAAK;AAC7C;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slicemachine/plugin-kit",
|
|
3
|
-
"version": "0.4.82-beta.
|
|
3
|
+
"version": "0.4.82-beta.8",
|
|
4
4
|
"description": "A set of helpers to develop and run Slice Machine plugins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"prettier-plugin-jsdoc": "1.1.1",
|
|
95
95
|
"size-limit": "8.2.4",
|
|
96
96
|
"typescript": "4.9.5",
|
|
97
|
-
"vite": "4.
|
|
97
|
+
"vite": "5.4.20",
|
|
98
98
|
"vite-plugin-sdk": "0.1.1",
|
|
99
99
|
"vitest": "0.32.0"
|
|
100
100
|
},
|