@arkstack/view 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +14 -6
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -36,11 +36,6 @@ function view(name, data = {}) {
|
|
|
36
36
|
if (name === void 0) return View.factoryInstance();
|
|
37
37
|
return View.make(name, data);
|
|
38
38
|
}
|
|
39
|
-
Object.defineProperty(globalThis, "view", {
|
|
40
|
-
value: view,
|
|
41
|
-
configurable: true,
|
|
42
|
-
writable: true
|
|
43
|
-
});
|
|
44
39
|
const isClass = (target) => {
|
|
45
40
|
return typeof target === "function" && /^class\s/.test(Function.prototype.toString.call(target));
|
|
46
41
|
};
|
|
@@ -225,8 +220,21 @@ var ViewFactory = class {
|
|
|
225
220
|
|
|
226
221
|
//#endregion
|
|
227
222
|
//#region src/View.ts
|
|
228
|
-
var View = class {
|
|
223
|
+
var View = class View {
|
|
229
224
|
static factory = new ViewFactory();
|
|
225
|
+
/**
|
|
226
|
+
* Bootstrap the view service
|
|
227
|
+
*/
|
|
228
|
+
static boot() {
|
|
229
|
+
Object.defineProperty(globalThis, "view", {
|
|
230
|
+
value: (name, data = {}) => {
|
|
231
|
+
if (name === void 0) return View.factoryInstance();
|
|
232
|
+
return View.make(name, data);
|
|
233
|
+
},
|
|
234
|
+
configurable: true,
|
|
235
|
+
writable: true
|
|
236
|
+
});
|
|
237
|
+
}
|
|
230
238
|
static configure(options = {}) {
|
|
231
239
|
this.factory = new ViewFactory(options);
|
|
232
240
|
return this.factory;
|
package/dist/index.d.ts
CHANGED
|
@@ -71,6 +71,7 @@ declare class ViewFactory {
|
|
|
71
71
|
//#region src/View.d.ts
|
|
72
72
|
declare class View {
|
|
73
73
|
private static factory;
|
|
74
|
+
static boot(): void;
|
|
74
75
|
static configure(options?: ViewFactoryOptions): ViewFactory;
|
|
75
76
|
static factoryInstance(): ViewFactory;
|
|
76
77
|
static make(name: ViewName, data?: ViewData): ViewInstance;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/ViewInstance.ts","../src/types.ts","../src/ViewFactory.ts","../src/View.ts","../src/helpers.ts","../src/packageViews.ts"],"mappings":";;;cAIa,YAAA,YAAwB,WAAA;EAAA,SAKpB,IAAA;EAAA,QAED,QAAA;EAAA,QAIA,YAAA;EAAA,QACA,gBAAA;EAAA,QACA,UAAA;EAAA,QAZJ,OAAA;EAAA,QACA,gBAAA;cAGK,IAAA,UACT,IAAA,EAAM,QAAA,cACE,QAAA;IACJ,MAAA,GAAS,IAAA,UAAc,IAAA,GAAO,QAAA,KAAa,OAAA;IAC3C,UAAA,GAAa,IAAA,UAAc,IAAA,GAAO,QAAA;EAAA,GAE9B,YAAA,EAAc,cAAA,EACd,gBAAA,EAAkB,kBAAA,EAClB,UAAA;EAAA,IAKR,IAAA,CAAA,GAAI,QAAA;EAIR,IAAA,CAAM,GAAA,UAAa,KAAA;EACnB,IAAA,CAAM,IAAA,EAAM,QAAA;EAON,MAAA,CAAA,GAAM,OAAA;EAMZ,UAAA,CAAA;EAMA,IAAA,qCAAA,CACI,WAAA,KAAgB,KAAA,aAAkB,QAAA,GAAW,WAAA,CAAY,QAAA,WACzD,UAAA,KAAe,MAAA,UAAgB,QAAA,GAAW,WAAA,CAAY,QAAA,YACvD,WAAA,CAAY,QAAA,GAAW,QAAA;EAAA,QAIZ,OAAA;EAAA,QASN,WAAA;AAAA;;;KC3DA,cAAA,IAAkB,IAAA,EAAM,YAAA,KAAiB,OAAA;AAAA,KAEzC,kBAAA,IAAsB,IAAA,EAAM,YAAA;AAAA,KAE5B,QAAA,GAAW,MAAA;AAAA,KAEX,QAAA;AAAA,KAEA,mBAAA,IAAuB,IAAA,EAAM,YAAA,YAAwB,OAAA;AAAA,UAEhD,kBAAA;EACb,OAAA,EAAS,mBAAA;AAAA;AAAA,KAGD,iBAAA,aAA8B,kBAAA;AAAA,KAE9B,YAAA,GAAe,mBAAA,GAAsB,kBAAA,GAAqB,iBAAA;AAAA,KAE1D,gBAAA,GAAmB,QAAA,GAAW,QAAA;AAAA,KAE9B,kBAAA;EACR,KAAA;EACA,SAAA,YAAqB,GAAA;EACrB,gBAAA;EACA,IAAA,GAAO,MAAA;AAAA;;;cClBE,WAAA;EAAA,SACA,IAAA,EAAM,MAAA;EAAA,QACP,UAAA;EAAA,QACA,SAAA;EAAA,QACA,eAAA;EAAA,QACA,gBAAA;cAEI,OAAA,GAAS,kBAAA;EAMrB,IAAA,CAAM,IAAA,EAAM,QAAA,EAAU,IAAA,GAAM,QAAA,GAAa,YAAA;EAazC,KAAA,CAAO,KAAA,EAAO,QAAA,IAAY,IAAA,GAAM,QAAA,GAAa,YAAA;EAU7C,MAAA,CAAQ,IAAA,EAAM,QAAA;EAcd,KAAA,CAAO,GAAA,UAAa,KAAA;EACpB,KAAA,CAAO,IAAA,EAAM,QAAA;EAOb,QAAA,CAAU,KAAA,EAAO,gBAAA,EAAkB,QAAA,EAAU,YAAA;EAW7C,KAAA,CAAO,cAAA,WAAyB,GAAA;EAChC,KAAA,CAAO,QAAA,UAAkB,cAAA,WAAyB,GAAA;EAalD,GAAA,CAAK,IAAA,EAAM,QAAA,EAAU,QAAA;EAMrB,WAAA,CAAA;EAMA,cAAA,CAAA;EAAA,QAMQ,YAAA;EAAA,QAUM,YAAA;EAAA,QAMN,gBAAA;EAAA,QAMA,WAAA;AAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/ViewInstance.ts","../src/types.ts","../src/ViewFactory.ts","../src/View.ts","../src/helpers.ts","../src/packageViews.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,11 +7,6 @@ function view(name, data = {}) {
|
|
|
7
7
|
if (name === void 0) return View.factoryInstance();
|
|
8
8
|
return View.make(name, data);
|
|
9
9
|
}
|
|
10
|
-
Object.defineProperty(globalThis, "view", {
|
|
11
|
-
value: view,
|
|
12
|
-
configurable: true,
|
|
13
|
-
writable: true
|
|
14
|
-
});
|
|
15
10
|
const isClass = (target) => {
|
|
16
11
|
return typeof target === "function" && /^class\s/.test(Function.prototype.toString.call(target));
|
|
17
12
|
};
|
|
@@ -196,8 +191,21 @@ var ViewFactory = class {
|
|
|
196
191
|
|
|
197
192
|
//#endregion
|
|
198
193
|
//#region src/View.ts
|
|
199
|
-
var View = class {
|
|
194
|
+
var View = class View {
|
|
200
195
|
static factory = new ViewFactory();
|
|
196
|
+
/**
|
|
197
|
+
* Bootstrap the view service
|
|
198
|
+
*/
|
|
199
|
+
static boot() {
|
|
200
|
+
Object.defineProperty(globalThis, "view", {
|
|
201
|
+
value: (name, data = {}) => {
|
|
202
|
+
if (name === void 0) return View.factoryInstance();
|
|
203
|
+
return View.make(name, data);
|
|
204
|
+
},
|
|
205
|
+
configurable: true,
|
|
206
|
+
writable: true
|
|
207
|
+
});
|
|
208
|
+
}
|
|
201
209
|
static configure(options = {}) {
|
|
202
210
|
this.factory = new ViewFactory(options);
|
|
203
211
|
return this.factory;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Edge"],"sources":["../src/helpers.ts","../src/packageViews.ts","../src/ViewInstance.ts","../src/ViewFactory.ts","../src/View.ts"],"sourcesContent":["import type { ViewComposer, ViewComposerObject, ViewData, ViewName } from './types'\n\nimport { View } from './View'\nimport { ViewFactory } from './ViewFactory'\nimport { ViewInstance } from './ViewInstance'\n\nexport function view (): ViewFactory\nexport function view (name: ViewName, data?: ViewData): ViewInstance\nexport function view (name?: ViewName, data: ViewData = {}) {\n if (name === undefined) {\n return View.factoryInstance()\n }\n\n return View.make(name, data)\n}\n\nObject.defineProperty(globalThis, 'view', {\n value: view,\n configurable: true,\n writable: true,\n})\n\nexport const isClass = <T = unknown> (\n target: unknown\n): target is new (...args: any[]) => T => {\n return typeof target === 'function'\n && /^class\\s/.test(Function.prototype.toString.call(target))\n}\n\nexport const mergeData = (target: ViewData, data: any[]) => {\n if (data.length === 0) {\n return target\n }\n\n if (typeof data[0] === 'string') {\n target[data[0]] = data[1]\n\n return target\n }\n\n for (const value of data) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n Object.assign(target, value)\n }\n }\n\n return target\n}\n\nexport const runComposerSync = (composer: ViewComposer, view: ViewInstance) => {\n const result = runComposer(composer, view)\n\n if (result && typeof result.then === 'function') {\n throw new Error('Async view composers cannot be used with renderSync.')\n }\n}\n\nexport const runComposer = (composer: ViewComposer, view: ViewInstance) => {\n if (typeof composer === 'function') {\n if (isClass<ViewComposerObject>(composer)) {\n return new composer().compose(view)\n }\n\n return composer(view)\n }\n\n return composer.compose(view)\n}\n","import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport type PackageViewReference = {\n source: string\n packageName: string\n nodePackageName: string\n diskName: string\n viewName: string\n edgeName: string\n}\n\nexport const parsePackageViewName = (name: string): PackageViewReference | null => {\n if (!name.startsWith('~')) {\n return null\n }\n\n const source = name.slice(1)\n const slashIndex = source.indexOf('/')\n const dotIndex = slashIndex === -1\n ? source.indexOf('.')\n : source.indexOf('.', slashIndex)\n\n if (dotIndex <= 0) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const packageName = source.slice(0, dotIndex)\n const viewName = source.slice(dotIndex + 1)\n\n if (!viewName) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const nodePackageName = slashIndex === -1\n ? packageName\n : `@${packageName}`\n const diskName = `package_${packageName.replace(/[^a-zA-Z0-9_-]/g, '_')}`\n\n return {\n source: name,\n packageName,\n nodePackageName,\n diskName,\n viewName,\n edgeName: `${diskName}::${viewName}`,\n }\n}\n\nexport const resolvePackageViewsPath = (\n nodePackageName: string,\n viewPath = 'resources/views',\n) => {\n const packageRoot = resolve(process.cwd(), 'node_modules', nodePackageName)\n const viewsPath = resolve(packageRoot, viewPath)\n\n if (!existsSync(viewsPath)) {\n throw new Error(`Package views directory not found: ${viewsPath}`)\n }\n\n return viewsPath\n}\n","import type { ComposerRunner, SyncComposerRunner, ViewData } from './types'\n\nimport { mergeData } from './helpers'\n\nexport class ViewInstance implements PromiseLike<string> {\n private payload: ViewData\n private composersHaveRun = false\n\n constructor(\n readonly name: string,\n data: ViewData = {},\n private renderer: {\n render: (name: string, data?: ViewData) => Promise<string>\n renderSync: (name: string, data?: ViewData) => string\n },\n private runComposers: ComposerRunner,\n private runComposersSync: SyncComposerRunner,\n private renderName = name,\n ) {\n this.payload = { ...data }\n }\n\n get data () {\n return this.payload\n }\n\n with (key: string, value: any): this\n with (data: ViewData): this\n with (...data: any[]): this {\n mergeData(this.payload, data)\n\n return this\n }\n\n async render () {\n await this.compose()\n\n return await this.renderer.render(this.renderName, this.payload)\n }\n\n renderSync () {\n this.composeSync()\n\n return this.renderer.renderSync(this.renderName, this.payload)\n }\n\n then<TResult1 = string, TResult2 = never> (\n onfulfilled?: ((value: string) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return this.render().then(onfulfilled, onrejected)\n }\n\n private async compose () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n await this.runComposers(this)\n }\n\n private composeSync () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n this.runComposersSync(this)\n }\n}\n","import type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\nimport { mergeData, runComposer, runComposerSync } from './helpers'\nimport { parsePackageViewName, resolvePackageViewsPath } from './packageViews'\n\nimport { Edge } from 'edge.js'\nimport { ViewInstance } from './ViewInstance'\nimport { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport class ViewFactory {\n readonly edge: Edge\n private sharedData: ViewData = {}\n private composers = new Map<ViewName, ViewComposer[]>()\n private mountedPackages = new Set<string>()\n private packageViewsPath: string\n\n constructor(options: ViewFactoryOptions = {}) {\n this.edge = options.edge ?? Edge.create({ cache: options.cache })\n this.packageViewsPath = options.packageViewsPath ?? 'resources/views'\n this.mount(options.viewsPath ?? resolve(process.cwd(), 'src', 'resources', 'views'))\n }\n\n make (name: ViewName, data: ViewData = {}) {\n const edgeName = this.resolveName(name)\n\n return new ViewInstance(\n name,\n { ...this.sharedData, ...data },\n this.edge,\n async view => await this.runComposers(name, view),\n view => this.runComposersSync(name, view),\n edgeName,\n )\n }\n\n first (names: ViewName[], data: ViewData = {}) {\n const name = names.find(candidate => this.exists(candidate))\n\n if (!name) {\n throw new Error(`None of the given views exist: ${names.join(', ')}`)\n }\n\n return this.make(name, data)\n }\n\n exists (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n if (this.edge.loader.templates[edgeName]) {\n return true\n }\n\n try {\n return existsSync(this.edge.loader.makePath(edgeName))\n } catch {\n return false\n }\n }\n\n share (key: string, value: any): this\n share (data: ViewData): this\n share (...data: any[]): this {\n mergeData(this.sharedData, data)\n\n return this\n }\n\n composer (names: ViewComposerName, composer: ViewComposer): this {\n for (const name of Array.isArray(names) ? names : [names]) {\n this.composers.set(name, [\n ...(this.composers.get(name) ?? []),\n composer,\n ])\n }\n\n return this\n }\n\n mount (viewsDirectory: string | URL): this\n mount (diskName: string, viewsDirectory: string | URL): this\n mount (diskName: string | URL, viewsDirectory?: string | URL): this {\n if (viewsDirectory === undefined) {\n this.edge.mount(diskName)\n\n return this\n }\n\n this.edge.mount(diskName as string, viewsDirectory)\n\n return this\n }\n\n raw (name: ViewName, contents: string): this {\n this.edge.registerTemplate(name, { template: contents })\n\n return this\n }\n\n flushShared () {\n this.sharedData = {}\n\n return this\n }\n\n flushComposers () {\n this.composers.clear()\n\n return this\n }\n\n private getComposers (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n return [\n ...(this.composers.get('*') ?? []),\n ...(this.composers.get(edgeName) ?? []),\n ...(this.composers.get(name) ?? []),\n ]\n }\n\n private async runComposers (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n await runComposer(composer, view)\n }\n }\n\n private runComposersSync (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n runComposerSync(composer, view)\n }\n }\n\n private resolveName (name: ViewName) {\n const packageView = parsePackageViewName(name)\n\n if (!packageView) {\n return name\n }\n\n if (!this.mountedPackages.has(packageView.diskName)) {\n this.mount(\n packageView.diskName,\n resolvePackageViewsPath(packageView.nodePackageName, this.packageViewsPath),\n )\n this.mountedPackages.add(packageView.diskName)\n }\n\n return packageView.edgeName\n }\n}\n","import { ViewFactory } from './ViewFactory'\nimport type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\nimport type { ViewInstance } from './ViewInstance'\n\nexport class View {\n private static factory = new ViewFactory()\n\n static configure (options: ViewFactoryOptions = {}) {\n this.factory = new ViewFactory(options)\n\n return this.factory\n }\n\n static factoryInstance () {\n return this.factory\n }\n\n static make (name: ViewName, data: ViewData = {}): ViewInstance {\n return this.factory.make(name, data)\n }\n\n static first (names: ViewName[], data: ViewData = {}): ViewInstance {\n return this.factory.first(names, data)\n }\n\n static exists (name: ViewName) {\n return this.factory.exists(name)\n }\n\n static share (key: string, value: any): typeof View\n static share (data: ViewData): typeof View\n static share (...data: any[]) {\n if (typeof data[0] === 'string') {\n this.factory.share(data[0], data[1])\n } else {\n this.factory.share(data[0] ?? {})\n }\n\n return this\n }\n\n static composer (names: ViewComposerName, composer: ViewComposer): typeof View {\n this.factory.composer(names, composer)\n\n return this\n }\n\n static mount (viewsDirectory: string | URL): typeof View\n static mount (diskName: string, viewsDirectory: string | URL): typeof View\n static mount (diskName: string | URL, viewsDirectory?: string | URL) {\n if (viewsDirectory === undefined) {\n this.factory.mount(diskName)\n } else {\n this.factory.mount(diskName as string, viewsDirectory)\n }\n\n return this\n }\n\n static raw (name: ViewName, contents: string) {\n this.factory.raw(name, contents)\n\n return this\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Edge"],"sources":["../src/helpers.ts","../src/packageViews.ts","../src/ViewInstance.ts","../src/ViewFactory.ts","../src/View.ts"],"sourcesContent":["import type { ViewComposer, ViewComposerObject, ViewData, ViewName } from './types'\n\nimport { View } from './View'\nimport { ViewFactory } from './ViewFactory'\nimport { ViewInstance } from './ViewInstance'\n\nexport function view (): ViewFactory\nexport function view (name: ViewName, data?: ViewData): ViewInstance\nexport function view (name?: ViewName, data: ViewData = {}) {\n if (name === undefined) {\n return View.factoryInstance()\n }\n\n return View.make(name, data)\n}\n\nexport const isClass = <T = unknown> (\n target: unknown\n): target is new (...args: any[]) => T => {\n return typeof target === 'function'\n && /^class\\s/.test(Function.prototype.toString.call(target))\n}\n\nexport const mergeData = (target: ViewData, data: any[]) => {\n if (data.length === 0) {\n return target\n }\n\n if (typeof data[0] === 'string') {\n target[data[0]] = data[1]\n\n return target\n }\n\n for (const value of data) {\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n Object.assign(target, value)\n }\n }\n\n return target\n}\n\nexport const runComposerSync = (composer: ViewComposer, view: ViewInstance) => {\n const result = runComposer(composer, view)\n\n if (result && typeof result.then === 'function') {\n throw new Error('Async view composers cannot be used with renderSync.')\n }\n}\n\nexport const runComposer = (composer: ViewComposer, view: ViewInstance) => {\n if (typeof composer === 'function') {\n if (isClass<ViewComposerObject>(composer)) {\n return new composer().compose(view)\n }\n\n return composer(view)\n }\n\n return composer.compose(view)\n}\n","import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport type PackageViewReference = {\n source: string\n packageName: string\n nodePackageName: string\n diskName: string\n viewName: string\n edgeName: string\n}\n\nexport const parsePackageViewName = (name: string): PackageViewReference | null => {\n if (!name.startsWith('~')) {\n return null\n }\n\n const source = name.slice(1)\n const slashIndex = source.indexOf('/')\n const dotIndex = slashIndex === -1\n ? source.indexOf('.')\n : source.indexOf('.', slashIndex)\n\n if (dotIndex <= 0) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const packageName = source.slice(0, dotIndex)\n const viewName = source.slice(dotIndex + 1)\n\n if (!viewName) {\n throw new Error(`Invalid package view name: ${name}`)\n }\n\n const nodePackageName = slashIndex === -1\n ? packageName\n : `@${packageName}`\n const diskName = `package_${packageName.replace(/[^a-zA-Z0-9_-]/g, '_')}`\n\n return {\n source: name,\n packageName,\n nodePackageName,\n diskName,\n viewName,\n edgeName: `${diskName}::${viewName}`,\n }\n}\n\nexport const resolvePackageViewsPath = (\n nodePackageName: string,\n viewPath = 'resources/views',\n) => {\n const packageRoot = resolve(process.cwd(), 'node_modules', nodePackageName)\n const viewsPath = resolve(packageRoot, viewPath)\n\n if (!existsSync(viewsPath)) {\n throw new Error(`Package views directory not found: ${viewsPath}`)\n }\n\n return viewsPath\n}\n","import type { ComposerRunner, SyncComposerRunner, ViewData } from './types'\n\nimport { mergeData } from './helpers'\n\nexport class ViewInstance implements PromiseLike<string> {\n private payload: ViewData\n private composersHaveRun = false\n\n constructor(\n readonly name: string,\n data: ViewData = {},\n private renderer: {\n render: (name: string, data?: ViewData) => Promise<string>\n renderSync: (name: string, data?: ViewData) => string\n },\n private runComposers: ComposerRunner,\n private runComposersSync: SyncComposerRunner,\n private renderName = name,\n ) {\n this.payload = { ...data }\n }\n\n get data () {\n return this.payload\n }\n\n with (key: string, value: any): this\n with (data: ViewData): this\n with (...data: any[]): this {\n mergeData(this.payload, data)\n\n return this\n }\n\n async render () {\n await this.compose()\n\n return await this.renderer.render(this.renderName, this.payload)\n }\n\n renderSync () {\n this.composeSync()\n\n return this.renderer.renderSync(this.renderName, this.payload)\n }\n\n then<TResult1 = string, TResult2 = never> (\n onfulfilled?: ((value: string) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return this.render().then(onfulfilled, onrejected)\n }\n\n private async compose () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n await this.runComposers(this)\n }\n\n private composeSync () {\n if (this.composersHaveRun) {\n return\n }\n\n this.composersHaveRun = true\n this.runComposersSync(this)\n }\n}\n","import type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\nimport { mergeData, runComposer, runComposerSync } from './helpers'\nimport { parsePackageViewName, resolvePackageViewsPath } from './packageViews'\n\nimport { Edge } from 'edge.js'\nimport { ViewInstance } from './ViewInstance'\nimport { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nexport class ViewFactory {\n readonly edge: Edge\n private sharedData: ViewData = {}\n private composers = new Map<ViewName, ViewComposer[]>()\n private mountedPackages = new Set<string>()\n private packageViewsPath: string\n\n constructor(options: ViewFactoryOptions = {}) {\n this.edge = options.edge ?? Edge.create({ cache: options.cache })\n this.packageViewsPath = options.packageViewsPath ?? 'resources/views'\n this.mount(options.viewsPath ?? resolve(process.cwd(), 'src', 'resources', 'views'))\n }\n\n make (name: ViewName, data: ViewData = {}) {\n const edgeName = this.resolveName(name)\n\n return new ViewInstance(\n name,\n { ...this.sharedData, ...data },\n this.edge,\n async view => await this.runComposers(name, view),\n view => this.runComposersSync(name, view),\n edgeName,\n )\n }\n\n first (names: ViewName[], data: ViewData = {}) {\n const name = names.find(candidate => this.exists(candidate))\n\n if (!name) {\n throw new Error(`None of the given views exist: ${names.join(', ')}`)\n }\n\n return this.make(name, data)\n }\n\n exists (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n if (this.edge.loader.templates[edgeName]) {\n return true\n }\n\n try {\n return existsSync(this.edge.loader.makePath(edgeName))\n } catch {\n return false\n }\n }\n\n share (key: string, value: any): this\n share (data: ViewData): this\n share (...data: any[]): this {\n mergeData(this.sharedData, data)\n\n return this\n }\n\n composer (names: ViewComposerName, composer: ViewComposer): this {\n for (const name of Array.isArray(names) ? names : [names]) {\n this.composers.set(name, [\n ...(this.composers.get(name) ?? []),\n composer,\n ])\n }\n\n return this\n }\n\n mount (viewsDirectory: string | URL): this\n mount (diskName: string, viewsDirectory: string | URL): this\n mount (diskName: string | URL, viewsDirectory?: string | URL): this {\n if (viewsDirectory === undefined) {\n this.edge.mount(diskName)\n\n return this\n }\n\n this.edge.mount(diskName as string, viewsDirectory)\n\n return this\n }\n\n raw (name: ViewName, contents: string): this {\n this.edge.registerTemplate(name, { template: contents })\n\n return this\n }\n\n flushShared () {\n this.sharedData = {}\n\n return this\n }\n\n flushComposers () {\n this.composers.clear()\n\n return this\n }\n\n private getComposers (name: ViewName) {\n const edgeName = this.resolveName(name)\n\n return [\n ...(this.composers.get('*') ?? []),\n ...(this.composers.get(edgeName) ?? []),\n ...(this.composers.get(name) ?? []),\n ]\n }\n\n private async runComposers (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n await runComposer(composer, view)\n }\n }\n\n private runComposersSync (name: ViewName, view: ViewInstance) {\n for (const composer of this.getComposers(name)) {\n runComposerSync(composer, view)\n }\n }\n\n private resolveName (name: ViewName) {\n const packageView = parsePackageViewName(name)\n\n if (!packageView) {\n return name\n }\n\n if (!this.mountedPackages.has(packageView.diskName)) {\n this.mount(\n packageView.diskName,\n resolvePackageViewsPath(packageView.nodePackageName, this.packageViewsPath),\n )\n this.mountedPackages.add(packageView.diskName)\n }\n\n return packageView.edgeName\n }\n}\n","import type { ViewComposer, ViewComposerName, ViewData, ViewFactoryOptions, ViewName } from './types'\n\nimport { ViewFactory } from './ViewFactory'\nimport type { ViewInstance } from './ViewInstance'\n\nexport class View {\n private static factory = new ViewFactory()\n\n /**\n * Bootstrap the view service\n */\n static boot () {\n Object.defineProperty(globalThis, 'view', {\n value: (name?: ViewName, data: ViewData = {}) => {\n if (name === undefined) {\n return View.factoryInstance()\n }\n\n return View.make(name, data)\n },\n configurable: true,\n writable: true,\n })\n }\n\n static configure (options: ViewFactoryOptions = {}) {\n this.factory = new ViewFactory(options)\n\n return this.factory\n }\n\n static factoryInstance () {\n return this.factory\n }\n\n static make (name: ViewName, data: ViewData = {}): ViewInstance {\n return this.factory.make(name, data)\n }\n\n static first (names: ViewName[], data: ViewData = {}): ViewInstance {\n return this.factory.first(names, data)\n }\n\n static exists (name: ViewName) {\n return this.factory.exists(name)\n }\n\n static share (key: string, value: any): typeof View\n static share (data: ViewData): typeof View\n static share (...data: any[]) {\n if (typeof data[0] === 'string') {\n this.factory.share(data[0], data[1])\n } else {\n this.factory.share(data[0] ?? {})\n }\n\n return this\n }\n\n static composer (names: ViewComposerName, composer: ViewComposer): typeof View {\n this.factory.composer(names, composer)\n\n return this\n }\n\n static mount (viewsDirectory: string | URL): typeof View\n static mount (diskName: string, viewsDirectory: string | URL): typeof View\n static mount (diskName: string | URL, viewsDirectory?: string | URL) {\n if (viewsDirectory === undefined) {\n this.factory.mount(diskName)\n } else {\n this.factory.mount(diskName as string, viewsDirectory)\n }\n\n return this\n }\n\n static raw (name: ViewName, contents: string) {\n this.factory.raw(name, contents)\n\n return this\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arkstack/view",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "View rendering package for Arkstack applications.",
|
|
6
6
|
"homepage": "https://arkstack.toneflix.net",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@h3ravel/musket": "^0.10.1",
|
|
46
|
-
"@arkstack/common": "^0.4.
|
|
46
|
+
"@arkstack/common": "^0.4.1"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|
|
49
49
|
"@h3ravel/musket": {
|