zova-module-a-ssrserver 5.1.26 → 5.1.28

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.
@@ -1,5 +1,5 @@
1
1
  /** service: begin */
2
- export * from '../service/ssrHandler.js';
2
+ export * from '../service/ssrHandler.ts';
3
3
  import 'zova-module-a-bean';
4
4
  declare module 'zova-module-a-bean' {
5
5
  interface IServiceRecord {
@@ -16,7 +16,7 @@ declare module 'zova-module-a-ssrserver' {
16
16
  }
17
17
  /** service: end */
18
18
  /** service: begin */
19
- import { ServiceSsrHandler } from '../service/ssrHandler.js';
19
+ import type { ServiceSsrHandler } from '../service/ssrHandler.ts';
20
20
  import 'zova';
21
21
  declare module 'zova' {
22
22
  interface IBeanRecordGeneral {
@@ -25,7 +25,7 @@ declare module 'zova' {
25
25
  }
26
26
  /** service: end */
27
27
  /** monkeySys: begin */
28
- export * from '../monkeySys.js';
28
+ export * from '../monkeySys.ts';
29
29
  /** monkeySys: end */
30
30
  /** scope: begin */
31
31
  import { BeanScopeBase, type BeanScopeUtil } from 'zova';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,qBAAqB;AACrB,cAAc,0BAA0B,CAAC;AAEzC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,QAAQ,oBAAoB,CAAC;IAEhC,UAAiB,cAAc;QAC7B,wBAAwB,EAAE,KAAK,CAAC;KACjC;CAGJ;AACD,OAAO,QAAQ,yBAAyB,CAAC;IAEjC,UAAiB,iBAAiB;KAGjC;IAED,UAAiB,iBAAiB;QAChC,IAAI,aAAa,IAAI,gCAAgC,CAAC;QACtD,IAAI,UAAU,IAAI,wBAAwB,CAAC;KAE5C;CACR;AACD,mBAAmB;AACnB,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,gCAAgC,EAAE,iBAAiB,CAAC;KACrD;CACF;AACD,mBAAmB;AACnB,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAChC,qBAAqB;AACrB,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGzD,qBACa,qBAAsB,SAAQ,aAAa;CAAG;AAE3D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,aAAa,EAAE,qBAAqB,CAAC;KACtC;CAOF;AAED,iBAAiB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,qBAAqB;AACrB,cAAc,0BAA0B,CAAC;AAEzC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,QAAQ,oBAAoB,CAAC;IAEhC,UAAiB,cAAc;QAC7B,wBAAwB,EAAE,KAAK,CAAC;KACjC;CAGJ;AACD,OAAO,QAAQ,yBAAyB,CAAC;IAEjC,UAAiB,iBAAiB;KAGjC;IAED,UAAiB,iBAAiB;QAChC,IAAI,aAAa,IAAI,gCAAgC,CAAC;QACtD,IAAI,UAAU,IAAI,wBAAwB,CAAC;KAE5C;CACR;AACD,mBAAmB;AACnB,qBAAqB;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,gCAAgC,EAAE,iBAAiB,CAAC;KACrD;CACF;AACD,mBAAmB;AACnB,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAChC,qBAAqB;AACrB,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGzD,qBACa,qBAAsB,SAAQ,aAAa;CAAG;AAE3D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,aAAa,EAAE,qBAAqB,CAAC;KACtC;CAOF;AAED,iBAAiB"}
@@ -1,3 +1,3 @@
1
1
  export declare const __ThisModule__ = "a-ssrserver";
2
- export { ScopeModuleASsrserver as ScopeModule } from './index.js';
2
+ export { ScopeModuleASsrserver as ScopeModule } from './index.ts';
3
3
  //# sourceMappingURL=this.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './.metadata/index.js';
2
- export * from './types/index.js';
1
+ export * from './.metadata/index.ts';
2
+ export * from './types/index.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,13 +1,18 @@
1
1
  import { BeanBase, BeanInfo, BeanScopeBase, BeanSimple, Use, cast } from "zova";
2
2
  import { catchError } from "@cabloy/utils";
3
3
  import fse from "fs-extra";
4
- import ms from "ms";
5
4
  import path, { basename } from "node:path";
6
5
  import { pathToFileURL } from "node:url";
7
6
  import { Scope, Service } from "zova-module-a-bean";
8
- import { resolveSsrProfile, resolveSsrProfileOptions } from "zova-module-a-ssr";
7
+ import { resolveSsrProfile, resolveSsrProfileOptions, resolveSsrResponseCacheExpires } from "zova-module-a-ssr";
9
8
  //#region src/service/ssrHandler.ts
10
- var _dec$1, _dec2$1, _dec3, _dec4, _class$1, _class2, _descriptor;
9
+ var _dec$1;
10
+ var _dec2$1;
11
+ var _dec3;
12
+ var _dec4;
13
+ var _class$1;
14
+ var _class2;
15
+ var _descriptor;
11
16
  function _initializerDefineProperty(e, i, r, l) {
12
17
  r && Object.defineProperty(e, i, {
13
18
  enumerable: r.enumerable,
@@ -205,11 +210,9 @@ var ServiceSsrHandler = (_dec$1 = Service(), _dec2$1 = BeanInfo({ module: "a-ssr
205
210
  }
206
211
  async _renderPublicResponseCache(options, ssrProfileOptions) {
207
212
  const { res } = options;
208
- const responseCache = ssrProfileOptions.responseCache;
209
- if (responseCache === false) return;
210
- const responseCacheExpires = responseCache.expires ?? 0;
211
- const expires = typeof responseCacheExpires === "string" ? ms(responseCacheExpires) / 1e3 : responseCacheExpires;
212
- if (expires === 0 || this.sys.env.META_MODE === "development") res.setHeader("cache-control", "no-cache, no-store, must-revalidate");
213
+ const expires = resolveSsrResponseCacheExpires(ssrProfileOptions.responseCache, this.sys.env.META_MODE);
214
+ if (expires === false) return;
215
+ if (expires === 0) res.setHeader("cache-control", "no-cache, no-store, must-revalidate");
213
216
  else res.setHeader("cache-control", `public, max-age=${expires}`);
214
217
  }
215
218
  }, _descriptor = _applyDecoratedDescriptor(_class2.prototype, "$$sysRouter", [_dec3, _dec4], {
@@ -232,9 +235,9 @@ var MonkeySys = class extends BeanSimple {
232
235
  };
233
236
  //#endregion
234
237
  //#region src/.metadata/index.ts
235
- /** monkeySys: end */
236
- /** scope: begin */
237
- var _dec, _dec2, _class;
238
+ var _dec;
239
+ var _dec2;
240
+ var _class;
238
241
  var ScopeModuleASsrserver = (_dec = Scope(), _dec2 = BeanInfo({ module: "a-ssrserver" }), _dec(_class = _dec2(_class = class ScopeModuleASsrserver extends BeanScopeBase {}) || _class) || _class);
239
242
  /** scope: end */
240
243
  //#endregion
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/service/ssrHandler.ts","../src/monkeySys.ts","../src/.metadata/index.ts"],"sourcesContent":["var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { catchError } from '@cabloy/utils';\nimport fse from 'fs-extra';\nimport ms from 'ms';\nimport path, { basename } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { BeanBase, cast, Use } from 'zova';\nimport { Service } from 'zova-module-a-bean';\nimport { resolveSsrProfile, resolveSsrProfileOptions } from 'zova-module-a-ssr';\nconst jsRE = /\\.js$/;\nconst cssRE = /\\.css$/;\nconst woffRE = /\\.woff$/;\nconst woff2RE = /\\.woff2$/;\nconst gifRE = /\\.gif$/;\nconst jpgRE = /\\.jpe?g$/;\nconst pngRE = /\\.png$/;\nexport let ServiceSsrHandler = (_dec = Service(), _dec2 = __z_BeanInfo({\n module: \"a-ssrserver\"\n}), _dec3 = Use(\"a-router.sys.router\"), _dec4 = Reflect.metadata(\"design:type\", typeof SysRouter === \"undefined\" ? Object : SysRouter), _dec(_class = _dec2(_class = (_class2 = class ServiceSsrHandler extends BeanBase {\n constructor(...args) {\n super(...args);\n this._siteAssetDir = void 0;\n this._handlerPromise = void 0;\n this._handlerInstance = void 0;\n this._clientManifest = void 0;\n this._ssrModulesZovaCache = {};\n _initializerDefineProperty(this, \"$$sysRouter\", _descriptor, this);\n }\n __init__(siteAssetDir) {\n this._siteAssetDir = siteAssetDir;\n }\n __dispose__() {\n this.dispose();\n }\n dispose() {\n this.sys.close();\n this._handlerInstance = undefined;\n }\n async resolvePath(filename) {\n if (filename === '') filename = 'index.html';\n // assets\n const fileAsset = path.join(this._siteAssetDir, 'client', filename);\n if (await fse.exists(fileAsset)) return fileAsset;\n // not found\n return undefined;\n }\n async render(options) {\n // resolve route\n const pagePathFull = options.state?.pagePathFull ?? this.sys.util.getPagePathFromAbsoluteUrl(options.req.url);\n const route = await this.$$sysRouter.resolveRoute(pagePathFull, true, false);\n if (!route) return;\n const ssrProfile = resolveSsrProfile(route.meta.ssrProfile, this.sys.env.SSR_PROFILE);\n const ssrProfileOptions = resolveSsrProfileOptions(ssrProfile, this.sys.config.ssr.profiles, route.meta.ssrProfileOptions, route.meta.locale);\n if (ssrProfile === 'session') {\n options.res.setHeader('cache-control', 'private, no-store');\n }\n const state = {\n ...options.state\n };\n // handler\n const {\n serverEntry,\n renderToString,\n renderTemplate\n } = this._handlerInstance;\n // ssrContext\n const onRenderedList = [];\n const ssrContext = {\n ...options,\n state,\n _meta: {},\n onRendered: fn => {\n onRenderedList.push(fn);\n }\n };\n let renderFn;\n let runtimePageContent = '';\n let renderedError;\n let onRenderedFlushed = false;\n let renderedFinalized = false;\n try {\n // render\n renderFn = await serverEntry(ssrContext);\n const [runtimePageContentInner, err] = await catchError(() => {\n return renderToString(renderFn, ssrContext);\n });\n if (runtimePageContentInner) {\n runtimePageContent = runtimePageContentInner;\n }\n const error = ssrContext._meta.renderError ?? err;\n renderedError = error;\n onRenderedList.forEach(fn => {\n fn(error);\n });\n onRenderedFlushed = true;\n cast(ssrContext).rendered(error);\n renderedFinalized = true;\n if (error) {\n if (error instanceof Error) throw error;\n return error;\n }\n ssrContext._meta.runtimePageContent = runtimePageContent;\n\n // @vitejs/plugin-vue injects code into a component's setup() that registers\n // itself on ctx.modules. After the render, ctx.modules would contain all the\n // components that have been instantiated during this render call.\n const modules = cast(ssrContext).modules;\n if (modules) {\n ssrContext._meta.endingHeadTags += this._renderModulesPreload_zova(modules, {\n ssrContext\n });\n ssrContext._meta.endingHeadTags += this._renderModulesPreload(modules, {\n ssrContext\n });\n }\n const html = renderTemplate(ssrContext);\n\n // responseCache\n if (ssrProfile === 'public') {\n await this._renderPublicResponseCache(options, ssrProfileOptions);\n }\n\n // todo: ssg\n\n return html;\n } finally {\n const context = cast(ssrContext);\n if (!onRenderedFlushed) {\n onRenderedList.forEach(fn => {\n fn(renderedError);\n });\n }\n if (!renderedFinalized && typeof context.rendered === 'function') {\n context.rendered(renderedError);\n }\n onRenderedList.length = 0;\n this._clearSsrContext(context);\n renderFn = undefined;\n }\n }\n _clearSsrContext(context) {\n context.modules?.clear?.();\n if (context.__qMetaList?.length) {\n context.__qMetaList.length = 0;\n }\n context.state = undefined;\n context.stateDefer = undefined;\n context.performAction = undefined;\n context.rendered = undefined;\n context._meta = undefined;\n }\n async ensureReady(handlerNonce) {\n if (!this._handlerInstance) {\n if (!this._handlerPromise) {\n this._handlerPromise = this._prepareHandler(handlerNonce);\n }\n this._handlerInstance = await this._handlerPromise;\n }\n return this._handlerInstance;\n }\n async _prepareHandler(handlerNonce) {\n // handler\n const fileHandler = path.join(this._siteAssetDir, 'handler.js');\n const fileUrl = `${pathToHref(fileHandler)}?${handlerNonce}`;\n const handlerInstance = await import(/* @vite-ignore */fileUrl);\n // clientManifest\n const fileManifest = path.join(this._siteAssetDir, 'quasar.manifest.json');\n const contentManifest = await fse.readFile(fileManifest, {\n encoding: 'utf-8'\n });\n this._clientManifest = JSON.parse(contentManifest);\n // ok\n return handlerInstance;\n }\n _renderModulesPreload(modules, opts) {\n let links = '';\n const seen = new Set();\n modules.forEach(id => {\n const files = this._clientManifest[id];\n if (files === void 0) return;\n files.forEach(file => {\n if (seen.has(file) === true) return;\n seen.add(file);\n const filename = basename(file);\n if (this._clientManifest[filename] !== void 0) {\n for (const depFile of this._clientManifest[filename]) {\n if (seen.has(depFile) === false) {\n links += this._renderPreloadTag(depFile, opts);\n seen.add(depFile);\n }\n }\n }\n links += this._renderPreloadTag(file, opts);\n });\n });\n return links;\n }\n _renderModulesPreload_zova(modules2, opts) {\n let links = '';\n const seen = /* @__PURE__ */new Set();\n modules2.forEach(id => {\n if (!id.startsWith('@@')) return;\n if (seen.has(id) === true) return;\n let cache = this._ssrModulesZovaCache[id];\n if (!cache) {\n for (const key in this._clientManifest) {\n const prefix = `${id.substring(2)}-`;\n const postfix = '.js';\n if (key.startsWith(prefix) && key.endsWith(postfix)) {\n cache = this._resolveUrlPath(`/assets/${key}`);\n break;\n }\n }\n this._ssrModulesZovaCache[id] = cache;\n }\n links += this._renderPreloadTag(cache, opts);\n seen.add(id);\n });\n return links;\n }\n _resolveUrlPath(url) {\n let publicPath = this.sys.env.APP_PUBLIC_PATH;\n if (publicPath) publicPath = `/${publicPath}`;\n return publicPath + url;\n }\n _renderPreloadTag(file, _opts) {\n file = this.sys.util.getAbsoluteUrlFromPagePath(file, false, true);\n if (jsRE.test(file) === true) {\n return `<link rel=\"modulepreload\" href=\"${file}\" crossorigin>`;\n }\n if (cssRE.test(file) === true) {\n return `<link rel=\"stylesheet\" href=\"${file}\" crossorigin>`;\n }\n if (woffRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"font\" type=\"font/woff\" crossorigin>`;\n }\n if (woff2RE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"font\" type=\"font/woff2\" crossorigin>`;\n }\n if (gifRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"image\" type=\"image/gif\" crossorigin>`;\n }\n if (jpgRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"image\" type=\"image/jpeg\" crossorigin>`;\n }\n if (pngRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"image\" type=\"image/png\" crossorigin>`;\n }\n return '';\n }\n async _renderPublicResponseCache(options, ssrProfileOptions) {\n const {\n res\n } = options;\n const responseCache = ssrProfileOptions.responseCache;\n if (responseCache === false) return;\n // expires\n const responseCacheExpires = responseCache.expires ?? 0;\n const expires = typeof responseCacheExpires === 'string' ? ms(responseCacheExpires) / 1000 : responseCacheExpires;\n if (expires === 0 || this.sys.env.META_MODE === 'development') {\n res.setHeader('cache-control', 'no-cache, no-store, must-revalidate');\n } else {\n res.setHeader('cache-control', `public, max-age=${expires}`);\n }\n }\n}, _descriptor = _applyDecoratedDescriptor(_class2.prototype, \"$$sysRouter\", [_dec3, _dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class2)) || _class) || _class);\nexport function pathToHref(fileName) {\n return pathToFileURL(fileName).href;\n // return Path.sep === '\\\\' ? pathToFileURL(fileName).href : fileName;\n}","import { BeanSimple } from 'zova';\nimport { ServiceSsrHandler } from './service/ssrHandler.js';\nexport class MonkeySys extends BeanSimple {\n async sysInitialize() {\n this.sys.meta.$getSsrHandler = async siteAssetDir => {\n return await this.sys.bean._getBean(ServiceSsrHandler, false, siteAssetDir);\n };\n }\n}","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** service: begin */\nexport * from '../service/ssrHandler.js';\nimport 'zova-module-a-bean';\n/** service: end */\n/** service: begin */\nimport { ServiceSsrHandler } from '../service/ssrHandler.js';\nimport 'zova';\n/** service: end */\n/** monkeySys: begin */\nexport * from '../monkeySys.js';\n/** monkeySys: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleASsrserver = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-ssrserver\"\n}), _dec(_class = _dec2(_class = class ScopeModuleASsrserver extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_dec","_dec2","_class","__z_BeanInfo","__z_BeanInfo"],"sources":["../src/service/ssrHandler.ts","../src/monkeySys.ts","../src/.metadata/index.ts"],"sourcesContent":["var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\nimport { catchError } from '@cabloy/utils';\nimport fse from 'fs-extra';\nimport path, { basename } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { BeanBase, cast, Use } from 'zova';\nimport { Service } from 'zova-module-a-bean';\nimport { resolveSsrProfile, resolveSsrProfileOptions, resolveSsrResponseCacheExpires } from 'zova-module-a-ssr';\nconst jsRE = /\\.js$/;\nconst cssRE = /\\.css$/;\nconst woffRE = /\\.woff$/;\nconst woff2RE = /\\.woff2$/;\nconst gifRE = /\\.gif$/;\nconst jpgRE = /\\.jpe?g$/;\nconst pngRE = /\\.png$/;\nexport let ServiceSsrHandler = (_dec = Service(), _dec2 = __z_BeanInfo({\n module: \"a-ssrserver\"\n}), _dec3 = Use(\"a-router.sys.router\"), _dec4 = Reflect.metadata(\"design:type\", typeof SysRouter === \"undefined\" ? Object : SysRouter), _dec(_class = _dec2(_class = (_class2 = class ServiceSsrHandler extends BeanBase {\n constructor(...args) {\n super(...args);\n this._siteAssetDir = void 0;\n this._handlerPromise = void 0;\n this._handlerInstance = void 0;\n this._clientManifest = void 0;\n this._ssrModulesZovaCache = {};\n _initializerDefineProperty(this, \"$$sysRouter\", _descriptor, this);\n }\n __init__(siteAssetDir) {\n this._siteAssetDir = siteAssetDir;\n }\n __dispose__() {\n this.dispose();\n }\n dispose() {\n this.sys.close();\n this._handlerInstance = undefined;\n }\n async resolvePath(filename) {\n if (filename === '') filename = 'index.html';\n // assets\n const fileAsset = path.join(this._siteAssetDir, 'client', filename);\n if (await fse.exists(fileAsset)) return fileAsset;\n // not found\n return undefined;\n }\n async render(options) {\n // resolve route\n const pagePathFull = options.state?.pagePathFull ?? this.sys.util.getPagePathFromAbsoluteUrl(options.req.url);\n const route = await this.$$sysRouter.resolveRoute(pagePathFull, true, false);\n if (!route) return;\n const ssrProfile = resolveSsrProfile(route.meta.ssrProfile, this.sys.env.SSR_PROFILE);\n const ssrProfileOptions = resolveSsrProfileOptions(ssrProfile, this.sys.config.ssr.profiles, route.meta.ssrProfileOptions, route.meta.locale);\n if (ssrProfile === 'session') {\n options.res.setHeader('cache-control', 'private, no-store');\n }\n const state = {\n ...options.state\n };\n // handler\n const {\n serverEntry,\n renderToString,\n renderTemplate\n } = this._handlerInstance;\n // ssrContext\n const onRenderedList = [];\n const ssrContext = {\n ...options,\n state,\n _meta: {},\n onRendered: fn => {\n onRenderedList.push(fn);\n }\n };\n let renderFn;\n let runtimePageContent = '';\n let renderedError;\n let onRenderedFlushed = false;\n let renderedFinalized = false;\n try {\n // render\n renderFn = await serverEntry(ssrContext);\n const [runtimePageContentInner, err] = await catchError(() => {\n return renderToString(renderFn, ssrContext);\n });\n if (runtimePageContentInner) {\n runtimePageContent = runtimePageContentInner;\n }\n const error = ssrContext._meta.renderError ?? err;\n renderedError = error;\n onRenderedList.forEach(fn => {\n fn(error);\n });\n onRenderedFlushed = true;\n cast(ssrContext).rendered(error);\n renderedFinalized = true;\n if (error) {\n if (error instanceof Error) throw error;\n return error;\n }\n ssrContext._meta.runtimePageContent = runtimePageContent;\n\n // @vitejs/plugin-vue injects code into a component's setup() that registers\n // itself on ctx.modules. After the render, ctx.modules would contain all the\n // components that have been instantiated during this render call.\n const modules = cast(ssrContext).modules;\n if (modules) {\n ssrContext._meta.endingHeadTags += this._renderModulesPreload_zova(modules, {\n ssrContext\n });\n ssrContext._meta.endingHeadTags += this._renderModulesPreload(modules, {\n ssrContext\n });\n }\n const html = renderTemplate(ssrContext);\n\n // responseCache\n if (ssrProfile === 'public') {\n await this._renderPublicResponseCache(options, ssrProfileOptions);\n }\n\n // todo: ssg\n\n return html;\n } finally {\n const context = cast(ssrContext);\n if (!onRenderedFlushed) {\n onRenderedList.forEach(fn => {\n fn(renderedError);\n });\n }\n if (!renderedFinalized && typeof context.rendered === 'function') {\n context.rendered(renderedError);\n }\n onRenderedList.length = 0;\n this._clearSsrContext(context);\n renderFn = undefined;\n }\n }\n _clearSsrContext(context) {\n context.modules?.clear?.();\n if (context.__qMetaList?.length) {\n context.__qMetaList.length = 0;\n }\n context.state = undefined;\n context.stateDefer = undefined;\n context.performAction = undefined;\n context.rendered = undefined;\n context._meta = undefined;\n }\n async ensureReady(handlerNonce) {\n if (!this._handlerInstance) {\n if (!this._handlerPromise) {\n this._handlerPromise = this._prepareHandler(handlerNonce);\n }\n this._handlerInstance = await this._handlerPromise;\n }\n return this._handlerInstance;\n }\n async _prepareHandler(handlerNonce) {\n // handler\n const fileHandler = path.join(this._siteAssetDir, 'handler.js');\n const fileUrl = `${pathToHref(fileHandler)}?${handlerNonce}`;\n const handlerInstance = await import(/* @vite-ignore */fileUrl);\n // clientManifest\n const fileManifest = path.join(this._siteAssetDir, 'quasar.manifest.json');\n const contentManifest = await fse.readFile(fileManifest, {\n encoding: 'utf-8'\n });\n this._clientManifest = JSON.parse(contentManifest);\n // ok\n return handlerInstance;\n }\n _renderModulesPreload(modules, opts) {\n let links = '';\n const seen = new Set();\n modules.forEach(id => {\n const files = this._clientManifest[id];\n if (files === void 0) return;\n files.forEach(file => {\n if (seen.has(file) === true) return;\n seen.add(file);\n const filename = basename(file);\n if (this._clientManifest[filename] !== void 0) {\n for (const depFile of this._clientManifest[filename]) {\n if (seen.has(depFile) === false) {\n links += this._renderPreloadTag(depFile, opts);\n seen.add(depFile);\n }\n }\n }\n links += this._renderPreloadTag(file, opts);\n });\n });\n return links;\n }\n _renderModulesPreload_zova(modules2, opts) {\n let links = '';\n const seen = /* @__PURE__ */new Set();\n modules2.forEach(id => {\n if (!id.startsWith('@@')) return;\n if (seen.has(id) === true) return;\n let cache = this._ssrModulesZovaCache[id];\n if (!cache) {\n for (const key in this._clientManifest) {\n const prefix = `${id.substring(2)}-`;\n const postfix = '.js';\n if (key.startsWith(prefix) && key.endsWith(postfix)) {\n cache = this._resolveUrlPath(`/assets/${key}`);\n break;\n }\n }\n this._ssrModulesZovaCache[id] = cache;\n }\n links += this._renderPreloadTag(cache, opts);\n seen.add(id);\n });\n return links;\n }\n _resolveUrlPath(url) {\n let publicPath = this.sys.env.APP_PUBLIC_PATH;\n if (publicPath) publicPath = `/${publicPath}`;\n return publicPath + url;\n }\n _renderPreloadTag(file, _opts) {\n file = this.sys.util.getAbsoluteUrlFromPagePath(file, false, true);\n if (jsRE.test(file) === true) {\n return `<link rel=\"modulepreload\" href=\"${file}\" crossorigin>`;\n }\n if (cssRE.test(file) === true) {\n return `<link rel=\"stylesheet\" href=\"${file}\" crossorigin>`;\n }\n if (woffRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"font\" type=\"font/woff\" crossorigin>`;\n }\n if (woff2RE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"font\" type=\"font/woff2\" crossorigin>`;\n }\n if (gifRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"image\" type=\"image/gif\" crossorigin>`;\n }\n if (jpgRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"image\" type=\"image/jpeg\" crossorigin>`;\n }\n if (pngRE.test(file) === true) {\n return `<link rel=\"preload\" href=\"${file}\" as=\"image\" type=\"image/png\" crossorigin>`;\n }\n return '';\n }\n async _renderPublicResponseCache(options, ssrProfileOptions) {\n const {\n res\n } = options;\n const expires = resolveSsrResponseCacheExpires(ssrProfileOptions.responseCache, this.sys.env.META_MODE);\n if (expires === false) return;\n if (expires === 0) {\n res.setHeader('cache-control', 'no-cache, no-store, must-revalidate');\n } else {\n res.setHeader('cache-control', `public, max-age=${expires}`);\n }\n }\n}, _descriptor = _applyDecoratedDescriptor(_class2.prototype, \"$$sysRouter\", [_dec3, _dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class2)) || _class) || _class);\nexport function pathToHref(fileName) {\n return pathToFileURL(fileName).href;\n // return Path.sep === '\\\\' ? pathToFileURL(fileName).href : fileName;\n}","import { BeanSimple } from 'zova';\nimport { ServiceSsrHandler } from './service/ssrHandler.ts';\nexport class MonkeySys extends BeanSimple {\n async sysInitialize() {\n this.sys.meta.$getSsrHandler = async siteAssetDir => {\n return await this.sys.bean._getBean(ServiceSsrHandler, false, siteAssetDir);\n };\n }\n}","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** service: begin */\nexport * from '../service/ssrHandler.ts';\nimport 'zova-module-a-bean';\n/** service: end */\n/** service: begin */\n\nimport 'zova';\n/** service: end */\n/** monkeySys: begin */\nexport * from '../monkeySys.ts';\n/** monkeySys: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleASsrserver = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-ssrserver\"\n}), _dec(_class = _dec2(_class = class ScopeModuleASsrserver extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BeanBase } from 'zova';
2
2
  import { SysRouter } from 'zova-module-a-router';
3
- import { ISsrHandlerRenderOptionsInner, TypeEventResolvePathResult } from '../types/ssr.js';
3
+ import { ISsrHandlerRenderOptionsInner, TypeEventResolvePathResult } from '../types/ssr.ts';
4
4
  export declare class ServiceSsrHandler extends BeanBase {
5
5
  private _siteAssetDir;
6
6
  private _handlerPromise;
@@ -1 +1 @@
1
- {"version":3,"file":"ssrHandler.d.ts","sourceRoot":"","sources":["../../src/service/ssrHandler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAa,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAU5F,qBACa,iBAAkB,SAAQ,QAAQ;IAC7C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,oBAAoB,CAAW;IAGvC,WAAW,EAAE,SAAS,CAAC;IAEvB,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM;IAIvC,SAAS,CAAC,WAAW;IAId,OAAO;IAKR,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAS3D,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAoG/F,OAAO,CAAC,gBAAgB;IAYX,WAAW,CAAC,YAAY,EAAE,MAAM;YAU/B,eAAe;IAa7B,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,0BAA0B;IAwBlC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;YAiCX,0BAA0B;CAmBzC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGnD"}
1
+ {"version":3,"file":"ssrHandler.d.ts","sourceRoot":"","sources":["../../src/service/ssrHandler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAa,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOjD,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAU5F,qBACa,iBAAkB,SAAQ,QAAQ;IAC7C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,oBAAoB,CAAW;IAGvC,WAAW,EAAE,SAAS,CAAC;IAEvB,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM;IAIvC,SAAS,CAAC,WAAW;IAId,OAAO;IAKR,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAS3D,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAoG/F,OAAO,CAAC,gBAAgB;IAYX,WAAW,CAAC,YAAY,EAAE,MAAM;YAU/B,eAAe;IAa7B,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,0BAA0B;IAwBlC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;YAiCX,0BAA0B;CAgBzC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGnD"}
@@ -1,2 +1,2 @@
1
- export * from './ssr.js';
1
+ export * from './ssr.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import type http from 'node:http';
2
2
  import type { SSRContextState, TypeSsrSitePerformAction } from 'zova-module-a-ssr';
3
- import type { ServiceSsrHandler } from '../service/ssrHandler.js';
3
+ import type { ServiceSsrHandler } from '../service/ssrHandler.ts';
4
4
  import 'zova';
5
5
  export type TypeEventResolvePathResult = string | true | undefined;
6
6
  export interface ISsrHandlerRenderOptionsInner {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zova-module-a-ssrserver",
3
- "version": "5.1.26",
4
- "gitHead": "277a0c97020b27f5640d268f0c3516f8c3b81ae2",
3
+ "version": "5.1.28",
4
+ "gitHead": "d7aa87b8ca78e173f19522bac0e80ad02fea255f",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Zova Module"
@@ -1,6 +1,6 @@
1
1
  // eslint-disable
2
2
  /** service: begin */
3
- export * from '../service/ssrHandler.js';
3
+ export * from '../service/ssrHandler.ts';
4
4
 
5
5
  import 'zova-module-a-bean';
6
6
  declare module 'zova-module-a-bean' {
@@ -26,7 +26,7 @@ declare module 'zova-module-a-ssrserver' {
26
26
  }
27
27
  /** service: end */
28
28
  /** service: begin */
29
- import { ServiceSsrHandler } from '../service/ssrHandler.js';
29
+ import type { ServiceSsrHandler } from '../service/ssrHandler.ts';
30
30
  import 'zova';
31
31
  declare module 'zova' {
32
32
  export interface IBeanRecordGeneral {
@@ -35,7 +35,7 @@ declare module 'zova' {
35
35
  }
36
36
  /** service: end */
37
37
  /** monkeySys: begin */
38
- export * from '../monkeySys.js';
38
+ export * from '../monkeySys.ts';
39
39
  /** monkeySys: end */
40
40
  /** scope: begin */
41
41
  import { BeanScopeBase, type BeanScopeUtil } from 'zova';
@@ -1,2 +1,2 @@
1
1
  export const __ThisModule__ = 'a-ssrserver';
2
- export { ScopeModuleASsrserver as ScopeModule } from './index.js';
2
+ export { ScopeModuleASsrserver as ScopeModule } from './index.ts';
package/src/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './.metadata/index.js';
2
- export * from './types/index.js';
1
+ export * from './.metadata/index.ts';
2
+ export * from './types/index.ts';
package/src/monkeySys.ts CHANGED
@@ -2,7 +2,7 @@ import type { IMonkeySysInitialize } from 'zova';
2
2
 
3
3
  import { BeanSimple } from 'zova';
4
4
 
5
- import { ServiceSsrHandler } from './service/ssrHandler.js';
5
+ import { ServiceSsrHandler } from './service/ssrHandler.ts';
6
6
 
7
7
  export class MonkeySys extends BeanSimple implements IMonkeySysInitialize {
8
8
  async sysInitialize() {
@@ -2,15 +2,18 @@ import type { ISsrProfileOptions } from 'zova-module-a-ssr';
2
2
 
3
3
  import { catchError } from '@cabloy/utils';
4
4
  import fse from 'fs-extra';
5
- import ms from 'ms';
6
5
  import path, { basename } from 'node:path';
7
6
  import { pathToFileURL } from 'node:url';
8
7
  import { BeanBase, cast, Use } from 'zova';
9
8
  import { Service } from 'zova-module-a-bean';
10
9
  import { SysRouter } from 'zova-module-a-router';
11
- import { resolveSsrProfile, resolveSsrProfileOptions } from 'zova-module-a-ssr';
10
+ import {
11
+ resolveSsrProfile,
12
+ resolveSsrProfileOptions,
13
+ resolveSsrResponseCacheExpires,
14
+ } from 'zova-module-a-ssr';
12
15
 
13
- import { ISsrHandlerRenderOptionsInner, TypeEventResolvePathResult } from '../types/ssr.js';
16
+ import { ISsrHandlerRenderOptionsInner, TypeEventResolvePathResult } from '../types/ssr.ts';
14
17
 
15
18
  const jsRE = /\.js$/;
16
19
  const cssRE = /\.css$/;
@@ -286,15 +289,12 @@ export class ServiceSsrHandler extends BeanBase {
286
289
  ssrProfileOptions: Readonly<ISsrProfileOptions>,
287
290
  ) {
288
291
  const { res } = options;
289
- const responseCache = ssrProfileOptions.responseCache;
290
- if (responseCache === false) return;
291
- // expires
292
- const responseCacheExpires = responseCache.expires ?? 0;
293
- const expires =
294
- typeof responseCacheExpires === 'string'
295
- ? ms(responseCacheExpires) / 1000
296
- : responseCacheExpires;
297
- if (expires === 0 || this.sys.env.META_MODE === 'development') {
292
+ const expires = resolveSsrResponseCacheExpires(
293
+ ssrProfileOptions.responseCache,
294
+ this.sys.env.META_MODE,
295
+ );
296
+ if (expires === false) return;
297
+ if (expires === 0) {
298
298
  res.setHeader('cache-control', 'no-cache, no-store, must-revalidate');
299
299
  } else {
300
300
  res.setHeader('cache-control', `public, max-age=${expires}`);
@@ -1 +1 @@
1
- export * from './ssr.js';
1
+ export * from './ssr.ts';
package/src/types/ssr.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type http from 'node:http';
2
2
  import type { SSRContextState, TypeSsrSitePerformAction } from 'zova-module-a-ssr';
3
3
 
4
- import type { ServiceSsrHandler } from '../service/ssrHandler.js';
4
+ import type { ServiceSsrHandler } from '../service/ssrHandler.ts';
5
5
  import 'zova';
6
6
 
7
7
  export type TypeEventResolvePathResult = string | true | undefined;