// Copyright 2016-2018, Pulumi Corporation. All rights reserved. import * as pulumi from "@pulumi/pulumi"; class Provider implements pulumi.dynamic.ResourceProvider { public readonly create: (inputs: any) => Promise; constructor(num: number) { this.create = async (inputs: any) => { return { id: "0", outs: { value: num } } } } } class FirstResource extends pulumi.dynamic.Resource { public readonly value: pulumi.Output; private static provider: Provider = new Provider(42); constructor(name: string) { super(FirstResource.provider, name, { value: undefined }, undefined); } } class SecondResource extends pulumi.dynamic.Resource { public readonly dep: pulumi.Output; private static provider: Provider = new Provider(99); constructor(name: string, prop: pulumi.Input) { super(SecondResource.provider, name, {dep: prop}, undefined); } } const first = new FirstResource("first"); first.value.apply(v => { console.log(`first.value: ${v}`); }); const second = new SecondResource("second", first.value); second.dep.apply(d => { console.log(`second.dep: ${d}`); });