Skip to content

Commit 9ca8f26

Browse files
committed
chore(release): 3.0.0-alpha.8
1 parent a34f358 commit 9ca8f26

10 files changed

+348
-86
lines changed

Diff for: CHANGELOG.md

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
## [3.0.0-alpha.8](https://github.com/nuxt/vue-meta/compare/v3.0.0-alpha.7...v3.0.0-alpha.8) (2021-06-06)
6+
7+
8+
### Features
9+
10+
* add plugin for options api support ([0745f16](https://github.com/nuxt/vue-meta/commit/0745f1668388c85d9a4eb50a26a350f8278b490c))
11+
12+
13+
### Bug Fixes
14+
15+
* remove unsupported meta types from v2 ([1bf1184](https://github.com/nuxt/vue-meta/commit/1bf1184c6e1ffe488c17b75ac54b7711d84f8fd9))
16+
517
## [3.0.0-alpha.7](https://github.com/nuxt/vue-meta/compare/v3.0.0-alpha.6...v3.0.0-alpha.7) (2021-05-23)
618

719

Diff for: dist/vue-meta.cjs.js

+43-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* vue-meta v3.0.0-alpha.7
2+
* vue-meta v3.0.0-alpha.8
33
* (c) 2021
44
* - Pim (@pimlie)
55
* - All the amazing contributors
@@ -799,16 +799,32 @@ function addVnode(isSSR, teleports, to, vnodes) {
799799
}
800800
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
801801
class MetaManager {
802+
isSSR = false;
803+
config;
804+
target;
805+
resolver;
806+
ssrCleanedUp = false;
802807
constructor(isSSR, config, target, resolver) {
803-
this.isSSR = false;
804-
this.ssrCleanedUp = false;
805808
this.isSSR = isSSR;
806809
this.config = config;
807810
this.target = target;
808811
if (resolver && 'setup' in resolver && isFunction(resolver.setup)) {
809812
this.resolver = resolver;
810813
}
811814
}
815+
static create = (isSSR, config, resolver) => {
816+
const resolve = (options, contexts, active, key, pathSegments) => {
817+
if (isFunction(resolver)) {
818+
return resolver(options, contexts, active, key, pathSegments);
819+
}
820+
return resolver.resolve(options, contexts, active, key, pathSegments);
821+
};
822+
const active = vue.reactive({});
823+
const mergedObject = createMergedObject(resolve, active);
824+
// TODO: validate resolver
825+
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
826+
return manager;
827+
};
812828
install(app) {
813829
app.component('Metainfo', Metainfo);
814830
app.config.globalProperties.$metaManager = this;
@@ -932,25 +948,37 @@ class MetaManager {
932948
return vue.h(vue.Teleport, { to }, teleport);
933949
});
934950
}
935-
}
936-
MetaManager.create = (isSSR, config, resolver) => {
937-
const resolve = (options, contexts, active, key, pathSegments) => {
938-
if (isFunction(resolver)) {
939-
return resolver(options, contexts, active, key, pathSegments);
951+
}
952+
953+
const defaultOptions = {
954+
keyName: 'metaInfo'
955+
};
956+
const createMixin = options => ({
957+
created() {
958+
const instance = vue.getCurrentInstance();
959+
if (!instance?.type || !(options.keyName in instance.type)) {
960+
return;
940961
}
941-
return resolver.resolve(options, contexts, active, key, pathSegments);
942-
};
943-
const active = vue.reactive({});
944-
const mergedObject = createMergedObject(resolve, active);
945-
// TODO: validate resolver
946-
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
947-
return manager;
962+
const metaInfo = instance.type[options.keyName];
963+
if (isFunction(metaInfo)) {
964+
const computedMetaInfo = vue.computed(metaInfo);
965+
useMeta(computedMetaInfo);
966+
}
967+
else {
968+
useMeta(metaInfo);
969+
}
970+
}
971+
});
972+
const install = (app, _options = {}) => {
973+
const options = Object.assign({}, defaultOptions, _options);
974+
app.mixin(createMixin(options));
948975
};
949976

950977
exports.createMetaManager = createMetaManager;
951978
exports.deepestResolver = defaultResolver;
952979
exports.defaultConfig = defaultConfig;
953980
exports.getCurrentManager = getCurrentManager;
981+
exports.plugin = install;
954982
exports.resolveOption = resolveOption;
955983
exports.useActiveMeta = useActiveMeta;
956984
exports.useMeta = useMeta;

Diff for: dist/vue-meta.cjs.prod.js

+43-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* vue-meta v3.0.0-alpha.7
2+
* vue-meta v3.0.0-alpha.8
33
* (c) 2021
44
* - Pim (@pimlie)
55
* - All the amazing contributors
@@ -779,16 +779,32 @@ function addVnode(isSSR, teleports, to, vnodes) {
779779
}
780780
const createMetaManager = (isSSR = false, config, resolver) => MetaManager.create(isSSR, config || defaultConfig, resolver || defaultResolver);
781781
class MetaManager {
782+
isSSR = false;
783+
config;
784+
target;
785+
resolver;
786+
ssrCleanedUp = false;
782787
constructor(isSSR, config, target, resolver) {
783-
this.isSSR = false;
784-
this.ssrCleanedUp = false;
785788
this.isSSR = isSSR;
786789
this.config = config;
787790
this.target = target;
788791
if (resolver && 'setup' in resolver && isFunction(resolver.setup)) {
789792
this.resolver = resolver;
790793
}
791794
}
795+
static create = (isSSR, config, resolver) => {
796+
const resolve = (options, contexts, active, key, pathSegments) => {
797+
if (isFunction(resolver)) {
798+
return resolver(options, contexts, active, key, pathSegments);
799+
}
800+
return resolver.resolve(options, contexts, active, key, pathSegments);
801+
};
802+
const active = vue.reactive({});
803+
const mergedObject = createMergedObject(resolve, active);
804+
// TODO: validate resolver
805+
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
806+
return manager;
807+
};
792808
install(app) {
793809
app.component('Metainfo', Metainfo);
794810
app.config.globalProperties.$metaManager = this;
@@ -912,25 +928,37 @@ class MetaManager {
912928
return vue.h(vue.Teleport, { to }, teleport);
913929
});
914930
}
915-
}
916-
MetaManager.create = (isSSR, config, resolver) => {
917-
const resolve = (options, contexts, active, key, pathSegments) => {
918-
if (isFunction(resolver)) {
919-
return resolver(options, contexts, active, key, pathSegments);
931+
}
932+
933+
const defaultOptions = {
934+
keyName: 'metaInfo'
935+
};
936+
const createMixin = options => ({
937+
created() {
938+
const instance = vue.getCurrentInstance();
939+
if (!instance?.type || !(options.keyName in instance.type)) {
940+
return;
920941
}
921-
return resolver.resolve(options, contexts, active, key, pathSegments);
922-
};
923-
const active = vue.reactive({});
924-
const mergedObject = createMergedObject(resolve, active);
925-
// TODO: validate resolver
926-
const manager = new MetaManager(isSSR, config, mergedObject, resolver);
927-
return manager;
942+
const metaInfo = instance.type[options.keyName];
943+
if (isFunction(metaInfo)) {
944+
const computedMetaInfo = vue.computed(metaInfo);
945+
useMeta(computedMetaInfo);
946+
}
947+
else {
948+
useMeta(metaInfo);
949+
}
950+
}
951+
});
952+
const install = (app, _options = {}) => {
953+
const options = Object.assign({}, defaultOptions, _options);
954+
app.mixin(createMixin(options));
928955
};
929956

930957
exports.createMetaManager = createMetaManager;
931958
exports.deepestResolver = defaultResolver;
932959
exports.defaultConfig = defaultConfig;
933960
exports.getCurrentManager = getCurrentManager;
961+
exports.plugin = install;
934962
exports.resolveOption = resolveOption;
935963
exports.useActiveMeta = useActiveMeta;
936964
exports.useMeta = useMeta;

Diff for: dist/vue-meta.d.ts

+114-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* vue-meta v3.0.0-alpha.7
2+
* vue-meta v3.0.0-alpha.8
33
* (c) 2021
44
* - Pim (@pimlie)
55
* - All the amazing contributors
@@ -64,6 +64,110 @@ declare class MetaManager {
6464
}): VNode[];
6565
}
6666

67+
interface AttributeProperty {
68+
[key: string]: string | string[];
69+
}
70+
interface MetaDataProperty {
71+
vmid?: string;
72+
once?: boolean;
73+
skip?: boolean;
74+
body?: boolean;
75+
pbody?: boolean;
76+
[key: string]: any;
77+
}
78+
interface MetaPropertyCharset extends MetaDataProperty {
79+
charset: string;
80+
}
81+
interface MetaPropertyEquiv extends MetaDataProperty {
82+
httpEquiv: string;
83+
content: string;
84+
}
85+
interface MetaPropertyTrueEquiv extends MetaDataProperty {
86+
'http-equiv': string;
87+
content: string;
88+
}
89+
interface MetaPropertyName extends MetaDataProperty {
90+
name: string;
91+
content: string;
92+
}
93+
interface MetaPropertyMicrodata extends MetaDataProperty {
94+
itemprop: string;
95+
content: string;
96+
}
97+
interface MetaPropertyProperty extends MetaDataProperty {
98+
property: string;
99+
content: string;
100+
}
101+
interface LinkPropertyBase extends MetaDataProperty {
102+
rel: string;
103+
crossOrigin?: string | null;
104+
media?: string;
105+
nonce?: string;
106+
referrerPolicy?: string;
107+
rev?: string;
108+
type?: string;
109+
}
110+
interface LinkPropertyHref extends LinkPropertyBase {
111+
href?: string;
112+
hreflang?: string;
113+
callback?: void;
114+
}
115+
interface LinkPropertyHrefCallback extends LinkPropertyBase {
116+
vmid: string;
117+
href?: string;
118+
hreflang?: string;
119+
}
120+
interface StyleProperty extends MetaDataProperty {
121+
cssText: string;
122+
media?: string;
123+
nonce?: string;
124+
type?: string;
125+
}
126+
interface ScriptPropertyBase extends MetaDataProperty {
127+
type?: string;
128+
charset?: string;
129+
async?: boolean;
130+
defer?: boolean;
131+
crossOrigin?: string;
132+
nonce?: string;
133+
}
134+
interface ScriptPropertyText extends ScriptPropertyBase {
135+
innerHTML: string;
136+
}
137+
interface ScriptPropertySrc extends ScriptPropertyBase {
138+
src: string;
139+
callback?: void;
140+
}
141+
interface ScriptPropertySrcCallback extends ScriptPropertyBase {
142+
vmid: string;
143+
}
144+
declare type JsonVal = string | number | boolean | JsonObj | JsonObj[] | null;
145+
interface JsonObj {
146+
[key: string]: JsonVal | JsonVal[];
147+
}
148+
interface ScriptPropertyJson extends ScriptPropertyBase {
149+
json: JsonObj;
150+
}
151+
interface NoScriptProperty extends MetaDataProperty {
152+
innerHTML: string;
153+
}
154+
interface ComponentMetaInfo {
155+
title?: string;
156+
htmlAttrs?: AttributeProperty;
157+
headAttrs?: AttributeProperty;
158+
bodyAttrs?: AttributeProperty;
159+
base?: {
160+
target: string;
161+
href: string;
162+
};
163+
meta?: (MetaPropertyCharset | MetaPropertyEquiv | MetaPropertyTrueEquiv | MetaPropertyName | MetaPropertyMicrodata | MetaPropertyProperty)[];
164+
link?: (LinkPropertyBase | LinkPropertyHref | LinkPropertyHrefCallback)[];
165+
style?: StyleProperty[];
166+
script?: (ScriptPropertyText | ScriptPropertySrc | ScriptPropertySrcCallback | ScriptPropertyJson)[];
167+
noscript?: NoScriptProperty[];
168+
}
169+
declare type ComponentOptionsMetaInfo = ComponentMetaInfo | (() => ComponentMetaInfo);
170+
67171
declare type MetaConfigSectionKey = 'tag' | 'to' | 'keyAttribute' | 'valueAttribute' | 'nameless' | 'group' | 'namespaced' | 'namespacedAttribute' | 'attributesFor';
68172
interface MetaConfigSectionTag {
69173
tag?: string;
@@ -191,6 +295,9 @@ declare module '@vue/runtime-core' {
191295
$metaManager: MetaManager;
192296
$metaGuards: MetaGuards;
193297
}
298+
interface ComponentCustomOptions {
299+
metaInfo?: ComponentOptionsMetaInfo;
300+
}
194301
}
195302

196303
declare const setup: MetaResolveSetup;
@@ -207,6 +314,11 @@ declare namespace deepest_d {
207314

208315
declare const defaultConfig: MetaConfig;
209316

317+
declare type PluginOptions = {
318+
keyName: string;
319+
};
320+
declare const install: (app: App, _options?: Partial<PluginOptions>) => void;
321+
210322
interface ResolveOptionPredicament<T, U> {
211323
(currentValue: T | undefined, context: U): T;
212324
}
@@ -216,4 +328,4 @@ declare function getCurrentManager(vm?: ComponentInternalInstance): MetaManager
216328
declare function useMeta(source: MetaSource, manager?: MetaManager): MetaProxy;
217329
declare function useActiveMeta(): MetaActive;
218330

219-
export { ExcludesFalsy, MetaActive, MetaConfig, MetaConfigSection, MetaConfigSectionAttribute, MetaConfigSectionGroup, MetaConfigSectionKey, MetaConfigSectionTag, MetaGroupConfig, MetaGuardRemoved, MetaGuards, MetaProxy, MetaRenderContext, MetaRendered, MetaRenderedNode, MetaResolveContext, MetaResolveSetup, MetaResolver, MetaResolverSetup, MetaSource, MetaSourceProxy, MetaTagConfig, MetaTagConfigKey, MetaTagName, MetaTagsConfig, MetaTeleports, Modify, SlotScopeProperties, TODO, Truthy, createMetaManager, deepest_d as deepestResolver, defaultConfig, getCurrentManager, resolveOption, useActiveMeta, useMeta };
331+
export { ExcludesFalsy, MetaActive, MetaConfig, MetaConfigSection, MetaConfigSectionAttribute, MetaConfigSectionGroup, MetaConfigSectionKey, MetaConfigSectionTag, MetaGroupConfig, MetaGuardRemoved, MetaGuards, MetaProxy, MetaRenderContext, MetaRendered, MetaRenderedNode, MetaResolveContext, MetaResolveSetup, MetaResolver, MetaResolverSetup, MetaSource, MetaSourceProxy, MetaTagConfig, MetaTagConfigKey, MetaTagName, MetaTagsConfig, MetaTeleports, Modify, SlotScopeProperties, TODO, Truthy, createMetaManager, deepest_d as deepestResolver, defaultConfig, getCurrentManager, install as plugin, resolveOption, useActiveMeta, useMeta };

0 commit comments

Comments
 (0)